From 2365a35a65ee7f87dd03036daf01dcbb85b34db1 Mon Sep 17 00:00:00 2001 From: Tobie Morgan Hitchcock Date: Tue, 12 Mar 2024 15:12:49 +0000 Subject: [PATCH] Upgrades and improvements (#398) Co-authored-by: ekwuno Co-authored-by: Dimitri Co-authored-by: Micha de Vries --- .nvmrc | 2 +- docusaurus.config.js | 166 +- package.json | 39 +- pnpm-lock.yaml | 6137 +++++------------ src/components/HomepageFeatures/index.tsx | 70 - .../HomepageFeatures/styles.module.css | 11 - .../SDK/{SDKClientBoxes.mdx => SDKBoxes.mdx} | 9 +- .../components/SDK/list.mdx | 34 +- src/components/Version/index.tsx | 3 +- src/css/custom.scss | 126 +- src/pages/index.tsx | 2 +- src/plugins/shiki/CHANGELOG.md | 178 - src/plugins/shiki/LICENSE | 17 - src/plugins/shiki/README.md | 42 - .../docusaurus-theme-shiki-twoslash/index.js | 15 - .../theme/CodeBlock/index.js | 62 - .../theme/CodeBlock/styles.css | 293 - .../theme/MDXComponents/index.js | 12 - src/plugins/shiki/index.js | 103 - src/plugins/shiki/package.json | 33 - src/theme/MDXComponents.js | 12 +- src/theme/NotFound.js | 52 +- src/theme/prism-include-languages.js | 2 +- tsconfig.json | 5 +- .../version-1.0.x/cli/_category_.json | 4 - versioned_docs/version-1.0.x/cli/export.mdx | 137 - versioned_docs/version-1.0.x/cli/help.mdx | 85 - versioned_docs/version-1.0.x/cli/overview.mdx | 16 - versioned_docs/version-1.0.x/cli/sql.mdx | 160 - versioned_docs/version-1.0.x/cli/start.mdx | 225 - versioned_docs/version-1.0.x/cli/upgrade.mdx | 110 - versioned_docs/version-1.0.x/cli/validate.mdx | 64 - versioned_docs/version-1.0.x/cli/version.mdx | 21 - .../version-1.0.x/deployment/_category_.json | 4 - .../version-1.0.x/deployment/amazon.mdx | 328 - .../version-1.0.x/deployment/azure.mdx | 370 - .../version-1.0.x/deployment/digitalocean.mdx | 22 - .../version-1.0.x/deployment/fly.mdx | 86 - .../version-1.0.x/deployment/google.mdx | 262 - .../version-1.0.x/deployment/heroku.mdx | 22 - .../version-1.0.x/deployment/kubernetes.mdx | 283 - .../version-1.0.x/deployment/overview.mdx | 157 - .../version-1.0.x/deployment/railway.mdx | 22 - .../version-1.0.x/embedding/_category_.json | 4 - .../version-1.0.x/embedding/javascript.mdx | 24 - .../version-1.0.x/embedding/node.mdx | 24 - .../version-1.0.x/embedding/rust.mdx | 1003 --- .../version-1.0.x/faqs/_category_.json | 4 - .../version-1.0.x/faqs/overview.mdx | 47 - .../version-1.0.x/how-to/_category_.json | 4 - .../connect-to-surrealdb-via-ngrok-tunnel.mdx | 80 - ...grate-auth0-as-authentication-provider.mdx | 301 - .../version-1.0.x/how-to/overview.mdx | 28 - .../installation/_category_.json | 8 - .../version-1.0.x/installation/linux.mdx | 86 - .../version-1.0.x/installation/macos.mdx | 104 - .../version-1.0.x/installation/overview.mdx | 24 - .../installation/running/_category_.json | 4 - .../installation/running/docker.mdx | 124 - .../installation/running/file.mdx | 45 - .../installation/upgrading/_category_.json | 4 - .../installation/upgrading/beta8-to-beta9.mdx | 88 - .../upgrading/beta9-to-beta10.mdx | 100 - .../version-1.0.x/installation/windows.mdx | 102 - .../version-1.0.x/integration/_category_.json | 4 - .../version-1.0.x/integration/http.mdx | 1291 ---- .../integration/sdks/_category_.json | 4 - .../version-1.0.x/integration/sdks/deno.mdx | 1404 ---- .../version-1.0.x/integration/sdks/dotnet.mdx | 1977 ------ .../version-1.0.x/integration/sdks/golang.mdx | 1059 --- .../version-1.0.x/integration/sdks/java.mdx | 813 --- .../integration/sdks/javascript.mdx | 1423 ---- .../version-1.0.x/integration/sdks/nodejs.mdx | 1131 --- .../integration/sdks/overview.mdx | 359 - .../version-1.0.x/integration/sdks/python.mdx | 975 --- .../version-1.0.x/integration/sdks/rust.mdx | 1051 --- .../version-1.0.x/integration/websocket.mdx | 1283 ---- versioned_docs/version-1.0.x/intro.mdx | 382 - .../introduction/_category_.json | 8 - .../version-1.0.x/introduction/concepts.mdx | 30 - .../version-1.0.x/introduction/mongo.mdx | 86 - .../version-1.0.x/introduction/neo4j.mdx | 86 - .../version-1.0.x/introduction/overview.mdx | 16 - .../version-1.0.x/introduction/sql.mdx | 72 - .../version-1.0.x/introduction/start.mdx | 163 - .../reference-guide/_category_.json | 4 - .../reference-guide/full-text-search.mdx | 102 - .../reference-guide/overview.mdx | 27 - .../version-1.0.x/security/_category_.json | 4 - .../version-1.0.x/security/authentication.mdx | 231 - .../version-1.0.x/security/overview.mdx | 25 - .../version-1.0.x/surrealql/_category_.json | 4 - .../surrealql/datamodel/_category_.json | 4 - .../surrealql/datamodel/arrays.mdx | 18 - .../surrealql/datamodel/casting.mdx | 196 - .../surrealql/datamodel/datetimes.mdx | 64 - .../surrealql/datamodel/formatters.mdx | 355 - .../surrealql/datamodel/futures.mdx | 42 - .../surrealql/datamodel/geometries.mdx | 230 - .../version-1.0.x/surrealql/datamodel/ids.mdx | 97 - .../surrealql/datamodel/numbers.mdx | 238 - .../surrealql/datamodel/objects.mdx | 29 - .../surrealql/datamodel/overview.mdx | 186 - .../surrealql/datamodel/records.mdx | 76 - .../surrealql/datamodel/simple.mdx | 47 - .../surrealql/datamodel/strings.mdx | 35 - .../version-1.0.x/surrealql/demo.mdx | 92 - .../surrealql/functions/_category_.json | 4 - .../surrealql/functions/count.mdx | 106 - .../surrealql/functions/crypto.mdx | 299 - .../surrealql/functions/duration.mdx | 382 - .../surrealql/functions/math.mdx | 503 -- .../surrealql/functions/meta.mdx | 62 - .../surrealql/functions/parse.mdx | 188 - .../surrealql/functions/rand.mdx | 378 - .../functions/script/_category_.json | 4 - .../surrealql/functions/script/argument.mdx | 21 - .../functions/script/built-in-functions.mdx | 203 - .../surrealql/functions/script/context.mdx | 28 - .../surrealql/functions/script/overview.mdx | 19 - .../functions/script/surrealql-functions.mdx | 16 - .../functions/script/type-conversion.mdx | 33 - .../surrealql/functions/search.mdx | 115 - .../surrealql/functions/session.mdx | 146 - .../surrealql/functions/sleep.mdx | 45 - .../surrealql/functions/string.mdx | 630 -- .../surrealql/functions/time.mdx | 489 -- .../surrealql/functions/type.mdx | 809 --- .../surrealql/functions/vector.mdx | 417 -- .../version-1.0.x/surrealql/operators.mdx | 780 --- .../version-1.0.x/surrealql/overview.mdx | 49 - .../version-1.0.x/surrealql/parameters.mdx | 131 - .../surrealql/statements/_category_.json | 8 - .../surrealql/statements/begin.mdx | 46 - .../surrealql/statements/cancel.mdx | 33 - .../surrealql/statements/commit.mdx | 33 - .../surrealql/statements/continue.mdx | 30 - .../surrealql/statements/create.mdx | 83 - .../statements/define/_category_.json | 4 - .../surrealql/statements/define/analyzer.mdx | 158 - .../surrealql/statements/define/database.mdx | 29 - .../surrealql/statements/define/event.mdx | 75 - .../surrealql/statements/define/field.mdx | 218 - .../surrealql/statements/define/function.mdx | 50 - .../surrealql/statements/define/indexes.mdx | 166 - .../surrealql/statements/define/namespace.mdx | 28 - .../surrealql/statements/define/overview.mdx | 52 - .../surrealql/statements/define/param.mdx | 31 - .../surrealql/statements/define/scope.mdx | 30 - .../surrealql/statements/define/table.mdx | 163 - .../surrealql/statements/define/token.mdx | 223 - .../surrealql/statements/define/user.mdx | 84 - .../surrealql/statements/for.mdx | 34 - .../surrealql/statements/info.mdx | 100 - .../surrealql/statements/insert.mdx | 66 - .../surrealql/statements/kill.mdx | 34 - .../surrealql/statements/live-select.mdx | 76 - .../surrealql/statements/relate.mdx | 254 - .../surrealql/statements/remove.mdx | 64 - .../surrealql/statements/select.mdx | 396 -- .../surrealql/statements/show.mdx | 39 - .../surrealql/statements/throw.mdx | 38 - .../surrealql/statements/update.mdx | 137 - .../surrealql/statements/use.mdx | 41 - .../version-1.0.x/surrealql/transactions.mdx | 85 - .../version-1.0.x/tutorials/overview.mdx | 25 - ...g-with-surrealdb-over-http-via-postman.mdx | 218 - .../version-1.1.x/cli/_category_.json | 4 - versioned_docs/version-1.1.x/cli/help.mdx | 85 - versioned_docs/version-1.1.x/cli/import.mdx | 139 - versioned_docs/version-1.1.x/cli/isready.mdx | 43 - .../version-1.1.x/cli/ml/_category_.json | 4 - versioned_docs/version-1.1.x/cli/sql.mdx | 162 - versioned_docs/version-1.1.x/cli/start.mdx | 225 - versioned_docs/version-1.1.x/cli/upgrade.mdx | 110 - versioned_docs/version-1.1.x/cli/version.mdx | 21 - .../version-1.1.x/deployment/_category_.json | 4 - .../version-1.1.x/deployment/amazon.mdx | 327 - .../version-1.1.x/deployment/azure.mdx | 370 - .../version-1.1.x/deployment/fly.mdx | 86 - .../version-1.1.x/deployment/google.mdx | 262 - .../version-1.1.x/deployment/kubernetes.mdx | 281 - .../version-1.1.x/deployment/overview.mdx | 157 - .../version-1.1.x/embedding/_category_.json | 4 - .../version-1.1.x/embedding/javascript.mdx | 24 - .../version-1.1.x/embedding/node.mdx | 24 - .../version-1.1.x/embedding/python.mdx | 24 - .../version-1.1.x/embedding/rust.mdx | 1003 --- .../version-1.1.x/faqs/_category_.json | 4 - .../version-1.1.x/faqs/overview.mdx | 53 - .../version-1.1.x/how-to/_category_.json | 4 - .../connect-to-surrealdb-via-ngrok-tunnel.mdx | 80 - ...grate-auth0-as-authentication-provider.mdx | 301 - .../version-1.1.x/how-to/overview.mdx | 28 - .../installation/_category_.json | 8 - .../version-1.1.x/installation/linux.mdx | 86 - .../version-1.1.x/installation/macos.mdx | 149 - .../version-1.1.x/installation/nightly.mdx | 53 - .../version-1.1.x/installation/overview.mdx | 24 - .../installation/running/_category_.json | 4 - .../installation/running/docker.mdx | 125 - .../installation/running/file.mdx | 45 - .../installation/running/memory.mdx | 49 - .../installation/running/tikv.mdx | 52 - .../installation/upgrading/_category_.json | 4 - .../upgrading/beta9-to-beta10.mdx | 100 - .../version-1.1.x/installation/windows.mdx | 102 - .../version-1.1.x/integration/_category_.json | 4 - .../version-1.1.x/integration/http.mdx | 1301 ---- .../version-1.1.x/integration/overview.mdx | 37 - .../integration/sdks/_category_.json | 4 - .../version-1.1.x/integration/sdks/deno.mdx | 1404 ---- .../version-1.1.x/integration/sdks/dotnet.mdx | 2087 ------ .../version-1.1.x/integration/sdks/golang.mdx | 1059 --- .../version-1.1.x/integration/sdks/java.mdx | 813 --- .../integration/sdks/javascript.mdx | 1446 ---- .../version-1.1.x/integration/sdks/nodejs.mdx | 1154 ---- .../integration/sdks/overview.mdx | 360 - .../version-1.1.x/integration/sdks/python.mdx | 975 --- .../version-1.1.x/integration/sdks/rust.mdx | 1053 --- .../version-1.1.x/integration/websocket.mdx | 1274 ---- versioned_docs/version-1.1.x/intro.mdx | 382 - .../introduction/_category_.json | 8 - .../introduction/architecture.mdx | 45 - .../version-1.1.x/introduction/concepts.mdx | 30 - .../version-1.1.x/introduction/mongo.mdx | 85 - .../version-1.1.x/introduction/neo4j.mdx | 86 - .../version-1.1.x/introduction/overview.mdx | 15 - .../version-1.1.x/introduction/sql.mdx | 72 - .../version-1.1.x/introduction/start.mdx | 154 - .../reference-guide/_category_.json | 4 - .../reference-guide/full-text-search.mdx | 101 - .../reference-guide/overview.mdx | 26 - .../version-1.1.x/security/_category_.json | 4 - .../version-1.1.x/security/authentication.mdx | 231 - .../version-1.1.x/security/capabilities.mdx | 114 - .../version-1.1.x/security/overview.mdx | 25 - .../version-1.1.x/surrealql/_category_.json | 4 - .../version-1.1.x/surrealql/comments.mdx | 28 - .../surrealql/datamodel/_category_.json | 4 - .../surrealql/datamodel/arrays.mdx | 18 - .../surrealql/datamodel/casting.mdx | 196 - .../surrealql/datamodel/datetimes.mdx | 64 - .../surrealql/datamodel/formatters.mdx | 355 - .../surrealql/datamodel/futures.mdx | 41 - .../surrealql/datamodel/geometries.mdx | 230 - .../version-1.1.x/surrealql/datamodel/ids.mdx | 97 - .../surrealql/datamodel/numbers.mdx | 238 - .../surrealql/datamodel/overview.mdx | 186 - .../surrealql/datamodel/simple.mdx | 47 - .../surrealql/datamodel/strings.mdx | 84 - .../version-1.1.x/surrealql/demo.mdx | 93 - .../surrealql/functions/_category_.json | 4 - .../surrealql/functions/array.mdx | 1024 --- .../surrealql/functions/count.mdx | 106 - .../surrealql/functions/crypto.mdx | 299 - .../surrealql/functions/duration.mdx | 382 - .../version-1.1.x/surrealql/functions/geo.mdx | 230 - .../surrealql/functions/http.mdx | 262 - .../surrealql/functions/math.mdx | 503 -- .../surrealql/functions/meta.mdx | 62 - .../version-1.1.x/surrealql/functions/ml.mdx | 137 - .../surrealql/functions/object.mdx | 146 - .../surrealql/functions/overview.mdx | 9 - .../surrealql/functions/parse.mdx | 188 - .../surrealql/functions/rand.mdx | 378 - .../functions/script/_category_.json | 4 - .../functions/script/built-in-functions.mdx | 203 - .../surrealql/functions/script/context.mdx | 28 - .../surrealql/functions/script/overview.mdx | 19 - .../functions/script/surrealql-functions.mdx | 16 - .../surrealql/functions/search.mdx | 115 - .../surrealql/functions/session.mdx | 146 - .../surrealql/functions/sleep.mdx | 45 - .../surrealql/functions/string.mdx | 630 -- .../surrealql/functions/time.mdx | 489 -- .../surrealql/functions/type.mdx | 836 --- .../surrealql/functions/vector.mdx | 417 -- .../version-1.1.x/surrealql/operators.mdx | 780 --- .../version-1.1.x/surrealql/overview.mdx | 49 - .../version-1.1.x/surrealql/parameters.mdx | 131 - .../surrealql/statements/_category_.json | 4 - .../surrealql/statements/begin.mdx | 46 - .../surrealql/statements/break.mdx | 31 - .../surrealql/statements/commit.mdx | 33 - .../surrealql/statements/continue.mdx | 30 - .../surrealql/statements/create.mdx | 82 - .../statements/define/_category_.json | 4 - .../surrealql/statements/define/analyzer.mdx | 158 - .../surrealql/statements/define/database.mdx | 29 - .../surrealql/statements/define/event.mdx | 75 - .../surrealql/statements/define/field.mdx | 199 - .../surrealql/statements/define/function.mdx | 74 - .../surrealql/statements/define/indexes.mdx | 167 - .../surrealql/statements/define/namespace.mdx | 28 - .../surrealql/statements/define/overview.mdx | 52 - .../surrealql/statements/define/param.mdx | 31 - .../surrealql/statements/define/scope.mdx | 30 - .../surrealql/statements/define/table.mdx | 163 - .../surrealql/statements/define/token.mdx | 259 - .../surrealql/statements/define/user.mdx | 84 - .../surrealql/statements/delete.mdx | 99 - .../surrealql/statements/for.mdx | 34 - .../surrealql/statements/ifelse.mdx | 75 - .../surrealql/statements/insert.mdx | 66 - .../surrealql/statements/kill.mdx | 38 - .../surrealql/statements/let.mdx | 35 - .../surrealql/statements/live-select.mdx | 76 - .../surrealql/statements/relate.mdx | 254 - .../surrealql/statements/remove.mdx | 64 - .../surrealql/statements/return.mdx | 101 - .../surrealql/statements/select.mdx | 414 -- .../surrealql/statements/show.mdx | 39 - .../surrealql/statements/sleep.mdx | 27 - .../surrealql/statements/throw.mdx | 38 - .../surrealql/statements/update.mdx | 138 - .../surrealql/statements/use.mdx | 41 - .../version-1.1.x/tutorials/_category_.json | 4 - .../version-1.1.x/tutorials/overview.mdx | 25 - ...g-with-surrealdb-over-http-via-postman.mdx | 218 - .../version-1.2.x/cli/_category_.json | 4 - versioned_docs/version-1.2.x/cli/export.mdx | 137 - versioned_docs/version-1.2.x/cli/import.mdx | 139 - versioned_docs/version-1.2.x/cli/isready.mdx | 43 - .../version-1.2.x/cli/ml/_category_.json | 4 - .../version-1.2.x/cli/ml/export.mdx | 153 - .../version-1.2.x/cli/ml/import.mdx | 133 - .../version-1.2.x/cli/ml/overview.mdx | 41 - versioned_docs/version-1.2.x/cli/overview.mdx | 16 - versioned_docs/version-1.2.x/cli/sql.mdx | 162 - versioned_docs/version-1.2.x/cli/start.mdx | 225 - versioned_docs/version-1.2.x/cli/upgrade.mdx | 121 - versioned_docs/version-1.2.x/cli/validate.mdx | 65 - .../version-1.2.x/deployment/_category_.json | 4 - .../version-1.2.x/deployment/digitalocean.mdx | 22 - .../version-1.2.x/deployment/heroku.mdx | 22 - .../version-1.2.x/deployment/railway.mdx | 22 - .../version-1.2.x/embedding/_category_.json | 4 - .../version-1.2.x/embedding/python.mdx | 24 - .../version-1.2.x/faqs/_category_.json | 4 - .../version-1.2.x/how-to/_category_.json | 4 - .../version-1.2.x/how-to/overview.mdx | 28 - .../installation/_category_.json | 8 - .../version-1.2.x/installation/linux.mdx | 86 - .../version-1.2.x/installation/nightly.mdx | 53 - .../installation/running/_category_.json | 4 - .../installation/running/docker.mdx | 124 - .../installation/running/file.mdx | 45 - .../installation/running/memory.mdx | 49 - .../installation/running/tikv.mdx | 52 - .../installation/upgrading/_category_.json | 4 - .../upgrading/beta9-to-beta10.mdx | 100 - .../version-1.2.x/integration/_category_.json | 4 - .../version-1.2.x/integration/overview.mdx | 37 - .../integration/sdks/_category_.json | 4 - versioned_docs/version-1.2.x/intro.mdx | 380 - .../introduction/_category_.json | 8 - .../introduction/architecture.mdx | 48 - .../reference-guide/_category_.json | 4 - .../version-1.2.x/security/_category_.json | 4 - .../version-1.2.x/security/capabilities.mdx | 114 - .../version-1.2.x/surrealql/_category_.json | 4 - .../version-1.2.x/surrealql/comments.mdx | 28 - .../surrealql/datamodel/_category_.json | 4 - .../surrealql/datamodel/datetimes.mdx | 64 - .../surrealql/datamodel/objects.mdx | 29 - .../surrealql/datamodel/records.mdx | 76 - .../surrealql/functions/_category_.json | 4 - .../surrealql/functions/array.mdx | 1024 --- .../surrealql/functions/count.mdx | 106 - .../version-1.2.x/surrealql/functions/geo.mdx | 230 - .../surrealql/functions/http.mdx | 262 - .../surrealql/functions/overview.mdx | 9 - .../surrealql/functions/parse.mdx | 188 - .../functions/script/_category_.json | 4 - .../surrealql/functions/script/argument.mdx | 21 - .../functions/script/surrealql-functions.mdx | 16 - .../functions/script/type-conversion.mdx | 33 - .../surrealql/functions/search.mdx | 115 - .../surrealql/functions/session.mdx | 146 - .../surrealql/functions/sleep.mdx | 45 - .../surrealql/functions/string.mdx | 842 --- .../surrealql/functions/type.mdx | 836 --- .../version-1.2.x/surrealql/operators.mdx | 780 --- .../surrealql/statements/_category_.json | 4 - .../surrealql/statements/break.mdx | 31 - .../surrealql/statements/cancel.mdx | 33 - .../statements/define/_category_.json | 4 - .../surrealql/statements/define/analyzer.mdx | 158 - .../surrealql/statements/define/database.mdx | 29 - .../surrealql/statements/define/event.mdx | 75 - .../surrealql/statements/define/field.mdx | 226 - .../surrealql/statements/define/function.mdx | 74 - .../surrealql/statements/define/namespace.mdx | 28 - .../surrealql/statements/define/overview.mdx | 52 - .../surrealql/statements/define/param.mdx | 31 - .../surrealql/statements/define/scope.mdx | 30 - .../surrealql/statements/define/table.mdx | 163 - .../surrealql/statements/define/token.mdx | 259 - .../surrealql/statements/define/user.mdx | 84 - .../surrealql/statements/delete.mdx | 99 - .../surrealql/statements/ifelse.mdx | 75 - .../surrealql/statements/info.mdx | 100 - .../surrealql/statements/kill.mdx | 34 - .../surrealql/statements/let.mdx | 35 - .../surrealql/statements/remove.mdx | 64 - .../surrealql/statements/return.mdx | 101 - .../surrealql/statements/select.mdx | 414 -- .../surrealql/statements/sleep.mdx | 27 - .../version-1.2.x/surrealql/transactions.mdx | 85 - .../version-1.2.x/tutorials/_category_.json | 4 - .../version-1.x/cli/_category_.json | 7 + versioned_docs/version-1.x/cli/backup.mdx | 121 + .../cli/export.mdx | 38 +- .../cli/help.mdx | 35 +- .../cli/import.mdx | 41 +- .../cli/index.mdx} | 8 +- .../cli/isready.mdx | 11 +- .../version-1.x/cli/ml/_category_.json | 7 + .../cli/ml/export.mdx | 8 +- .../cli/ml/import.mdx | 8 +- .../cli/ml/index.mdx} | 8 +- .../cli/sql.mdx | 20 +- .../cli/start.mdx | 26 +- .../cli/upgrade.mdx | 39 +- .../cli/validate.mdx | 14 +- .../cli/version.mdx | 11 +- .../version-1.x/deployment/_category_.json | 7 + .../deployment/amazon.mdx | 9 +- .../deployment/azure.mdx | 8 +- .../deployment/digitalocean.mdx | 5 +- .../deployment/fly.mdx | 5 +- .../deployment/google.mdx | 9 +- .../deployment/heroku.mdx | 5 +- .../deployment/index.mdx} | 15 +- .../deployment/kubernetes.mdx | 5 +- .../deployment/railway.mdx | 5 +- .../version-1.x/embedding/_category_.json | 7 + versioned_docs/version-1.x/embedding/deno.mdx | 25 + .../embedding/javascript.mdx | 5 +- .../embedding/node.mdx | 7 +- .../embedding/python.mdx | 7 +- .../embedding/rust.mdx | 17 +- .../version-1.x/faqs/_category_.json | 7 + .../faqs/index.mdx} | 12 +- versioned_docs/version-1.x/index.mdx | 44 + .../version-1.x/installation/_category_.json | 7 + .../installation/index.mdx} | 6 +- .../installation/linux.mdx | 8 +- .../installation/macos.mdx | 10 +- .../installation/nightly.mdx | 8 +- .../installation/running/_category_.json | 7 + .../installation/running/docker.mdx | 7 +- .../installation/running/file.mdx | 7 +- .../installation/running/memory.mdx | 7 +- .../installation/running/tikv.mdx | 9 +- .../installation/windows.mdx | 11 +- .../version-1.x/integration/_category_.json | 7 + .../integration/http.mdx | 7 +- .../integration/index.mdx} | 12 +- .../integration/sdks/_category_.json | 7 + .../integration/sdks/deno.mdx | 13 +- .../integration/sdks/dotnet.mdx | 15 +- .../integration/sdks/golang.mdx | 13 +- .../version-1.x/integration/sdks/index.mdx | 14 + .../integration/sdks/java.mdx | 7 +- .../integration/sdks/javascript.mdx | 15 +- .../integration/sdks/nodejs.mdx | 17 +- .../integration/sdks/python.mdx | 19 +- .../integration/sdks/rust.mdx | 19 +- .../integration/websocket.mdx | 5 +- .../version-1.x/introduction/_category_.json | 7 + .../introduction/architecture.mdx | 13 +- .../introduction/concepts.mdx | 9 +- .../introduction/index.mdx} | 7 +- .../introduction/mongo.mdx | 16 +- .../introduction/neo4j.mdx | 16 +- .../introduction/sql.mdx | 16 +- .../introduction/start.mdx | 11 +- .../reference-guide/_category_.json | 7 + .../reference-guide/full-text-search.mdx | 11 +- .../reference-guide/index.mdx} | 15 +- .../version-1.x/security/_category_.json | 7 + .../security/authentication.mdx | 18 +- .../security/capabilities.mdx | 15 +- .../security/index.mdx} | 9 +- .../version-1.x/surrealql/_category_.json | 7 + .../surrealql/comments.mdx | 5 +- .../surrealql/datamodel/_category_.json | 7 + .../surrealql/datamodel/arrays.mdx | 6 +- .../surrealql/datamodel/casting.mdx | 87 +- .../surrealql/datamodel/datetimes.mdx | 6 +- .../surrealql/datamodel/formatters.mdx | 6 +- .../surrealql/datamodel/futures.mdx | 6 +- .../surrealql/datamodel/geometries.mdx | 6 +- .../surrealql/datamodel/ids.mdx | 10 +- .../surrealql/datamodel/index.mdx} | 8 +- .../surrealql/datamodel/numbers.mdx | 6 +- .../surrealql/datamodel/objects.mdx | 6 +- .../surrealql/datamodel/records.mdx | 6 +- .../surrealql/datamodel/simple.mdx | 6 +- .../surrealql/datamodel/strings.mdx | 16 +- .../surrealql/demo.mdx | 7 +- .../surrealql/functions/_category_.json | 7 + .../surrealql/functions/array.mdx | 359 +- .../surrealql/functions/count.mdx | 31 +- .../surrealql/functions/crypto.mdx | 125 +- .../surrealql/functions/duration.mdx | 157 +- .../surrealql/functions/geo.mdx | 69 +- .../surrealql/functions/http.mdx | 69 +- .../surrealql/functions/index.mdx} | 5 +- .../surrealql/functions/math.mdx | 205 +- .../surrealql/functions/meta.mdx | 37 +- .../surrealql/functions/ml.mdx | 10 +- .../surrealql/functions/object.mdx | 27 +- .../surrealql/functions/parse.mdx | 85 +- .../surrealql/functions/rand.mdx | 117 +- .../functions/script/_category_.json | 7 + .../surrealql/functions/script/arguments.mdx} | 5 +- .../functions/script/built-in-functions.mdx | 49 +- .../surrealql/functions/script/context.mdx | 5 +- .../surrealql/functions/script/index.mdx} | 6 +- .../functions/script/surrealql-functions.mdx | 17 + .../functions/script/type-conversion.mdx | 7 +- .../surrealql/functions/search.mdx | 45 +- .../surrealql/functions/session.mdx | 69 +- .../version-1.x/surrealql/functions/sleep.mdx | 46 + .../surrealql/functions/string.mdx | 353 +- .../surrealql/functions/time.mdx | 209 +- .../surrealql/functions/type.mdx | 318 +- .../surrealql/functions/vector.mdx | 165 +- .../surrealql/index.mdx} | 6 +- .../version-1.x/surrealql/operators.mdx | 787 +++ .../surrealql/parameters.mdx | 5 +- .../surrealql/statements/_category_.json | 7 + .../surrealql/statements/begin.mdx | 7 +- .../surrealql/statements/break.mdx | 7 +- .../surrealql/statements/cancel.mdx | 7 +- .../surrealql/statements/commit.mdx | 7 +- .../surrealql/statements/continue.mdx | 7 +- .../surrealql/statements/create.mdx | 5 +- .../statements/define/_category_.json | 7 + .../surrealql/statements/define/analyzer.mdx | 13 +- .../surrealql/statements/define/database.mdx | 12 +- .../surrealql/statements/define/event.mdx | 8 +- .../surrealql/statements/define/field.mdx | 18 +- .../surrealql/statements/define/function.mdx | 8 +- .../surrealql/statements/define/index.mdx} | 5 +- .../surrealql/statements/define/indexes.mdx | 30 +- .../surrealql/statements/define/namespace.mdx | 10 +- .../surrealql/statements/define/param.mdx | 10 +- .../surrealql/statements/define/scope.mdx | 8 +- .../surrealql/statements/define/table.mdx | 8 +- .../surrealql/statements/define/token.mdx | 13 +- .../surrealql/statements/define/user.mdx | 14 +- .../surrealql/statements/delete.mdx | 7 +- .../surrealql/statements/for.mdx | 7 +- .../surrealql/statements/ifelse.mdx | 5 +- .../surrealql/statements/info.mdx | 10 +- .../surrealql/statements/insert.mdx | 5 +- .../surrealql/statements/kill.mdx | 5 +- .../surrealql/statements/let.mdx | 7 +- .../surrealql/statements/live.mdx} | 9 +- .../surrealql/statements/relate.mdx | 6 +- .../surrealql/statements/remove.mdx | 34 +- .../surrealql/statements/return.mdx | 5 +- .../surrealql/statements/select.mdx | 7 +- .../surrealql/statements/show.mdx | 5 +- .../surrealql/statements/sleep.mdx | 5 +- .../surrealql/statements/throw.mdx | 5 +- .../surrealql/statements/update.mdx | 5 +- .../surrealql/statements/use.mdx | 5 +- .../surrealql/transactions.mdx | 5 +- .../tutorials/_category_.json | 5 +- .../connect-to-surrealdb-via-ngrok-tunnel.mdx | 7 +- .../tutorials/index.mdx} | 14 +- ...grate-auth0-as-authentication-provider.mdx | 7 +- ...aws-cognito-as-authentication-provider.mdx | 9 +- ...g-with-surrealdb-over-http-via-postman.mdx | 15 +- .../version-nightly/cli/_category_.json | 4 - versioned_docs/version-nightly/cli/export.mdx | 137 - versioned_docs/version-nightly/cli/help.mdx | 85 - versioned_docs/version-nightly/cli/import.mdx | 139 - .../version-nightly/cli/isready.mdx | 43 - .../version-nightly/cli/ml/_category_.json | 4 - .../version-nightly/cli/ml/export.mdx | 153 - .../version-nightly/cli/ml/import.mdx | 133 - .../version-nightly/cli/ml/overview.mdx | 41 - .../version-nightly/cli/overview.mdx | 16 - .../version-nightly/cli/validate.mdx | 65 - .../version-nightly/cli/version.mdx | 21 - .../deployment/_category_.json | 4 - .../version-nightly/deployment/amazon.mdx | 327 - .../version-nightly/deployment/azure.mdx | 370 - .../deployment/digitalocean.mdx | 22 - .../version-nightly/deployment/fly.mdx | 86 - .../version-nightly/deployment/google.mdx | 262 - .../version-nightly/deployment/heroku.mdx | 22 - .../version-nightly/deployment/kubernetes.mdx | 282 - .../version-nightly/deployment/overview.mdx | 157 - .../version-nightly/deployment/railway.mdx | 22 - .../version-nightly/embedding/_category_.json | 4 - .../version-nightly/embedding/javascript.mdx | 24 - .../version-nightly/embedding/node.mdx | 24 - .../version-nightly/embedding/python.mdx | 24 - .../version-nightly/embedding/rust.mdx | 1003 --- .../version-nightly/faqs/_category_.json | 4 - .../version-nightly/faqs/overview.mdx | 52 - .../version-nightly/how-to/_category_.json | 4 - .../connect-to-surrealdb-via-ngrok-tunnel.mdx | 79 - ...grate-auth0-as-authentication-provider.mdx | 261 - ...aws-cognito-as-authentication-provider.mdx | 197 - .../version-nightly/how-to/overview.mdx | 28 - .../installation/_category_.json | 8 - .../version-nightly/installation/macos.mdx | 149 - .../version-nightly/installation/nightly.mdx | 53 - .../version-nightly/installation/overview.mdx | 24 - .../installation/running/_category_.json | 4 - .../installation/running/memory.mdx | 49 - .../installation/running/tikv.mdx | 52 - .../installation/upgrading/_category_.json | 4 - .../upgrading/beta9-to-beta10.mdx | 100 - .../version-nightly/installation/windows.mdx | 102 - .../integration/_category_.json | 4 - .../version-nightly/integration/http.mdx | 1303 ---- .../version-nightly/integration/overview.mdx | 37 - .../integration/sdks/_category_.json | 4 - .../version-nightly/integration/sdks/deno.mdx | 1404 ---- .../integration/sdks/dotnet.mdx | 2087 ------ .../integration/sdks/golang.mdx | 1059 --- .../version-nightly/integration/sdks/java.mdx | 813 --- .../integration/sdks/javascript.mdx | 1446 ---- .../integration/sdks/nodejs.mdx | 1154 ---- .../integration/sdks/overview.mdx | 360 - .../integration/sdks/python.mdx | 975 --- .../version-nightly/integration/sdks/rust.mdx | 1052 --- .../version-nightly/integration/websocket.mdx | 1274 ---- versioned_docs/version-nightly/intro.mdx | 382 - .../introduction/_category_.json | 8 - .../introduction/architecture.mdx | 48 - .../version-nightly/introduction/concepts.mdx | 30 - .../version-nightly/introduction/mongo.mdx | 85 - .../version-nightly/introduction/neo4j.mdx | 86 - .../version-nightly/introduction/overview.mdx | 15 - .../version-nightly/introduction/sql.mdx | 73 - .../version-nightly/introduction/start.mdx | 154 - .../reference-guide/_category_.json | 4 - .../reference-guide/full-text-search.mdx | 101 - .../reference-guide/overview.mdx | 26 - .../version-nightly/security/_category_.json | 4 - .../security/authentication.mdx | 231 - .../version-nightly/security/capabilities.mdx | 114 - .../version-nightly/security/overview.mdx | 25 - .../version-nightly/surrealql/_category_.json | 4 - .../version-nightly/surrealql/comments.mdx | 28 - .../surrealql/datamodel/_category_.json | 4 - .../surrealql/datamodel/arrays.mdx | 18 - .../surrealql/datamodel/casting.mdx | 196 - .../surrealql/datamodel/formatters.mdx | 355 - .../surrealql/datamodel/futures.mdx | 42 - .../surrealql/datamodel/geometries.mdx | 230 - .../surrealql/datamodel/ids.mdx | 99 - .../surrealql/datamodel/numbers.mdx | 238 - .../surrealql/datamodel/objects.mdx | 29 - .../surrealql/datamodel/overview.mdx | 186 - .../surrealql/datamodel/records.mdx | 76 - .../surrealql/datamodel/simple.mdx | 47 - .../surrealql/datamodel/strings.mdx | 84 - .../version-nightly/surrealql/demo.mdx | 94 - .../surrealql/functions/_category_.json | 4 - .../surrealql/functions/array.mdx | 1024 --- .../surrealql/functions/crypto.mdx | 299 - .../surrealql/functions/duration.mdx | 382 - .../surrealql/functions/geo.mdx | 230 - .../surrealql/functions/http.mdx | 262 - .../surrealql/functions/math.mdx | 503 -- .../surrealql/functions/meta.mdx | 62 - .../surrealql/functions/ml.mdx | 137 - .../surrealql/functions/object.mdx | 146 - .../surrealql/functions/overview.mdx | 9 - .../surrealql/functions/rand.mdx | 378 - .../functions/script/_category_.json | 4 - .../surrealql/functions/script/argument.mdx | 21 - .../functions/script/built-in-functions.mdx | 203 - .../surrealql/functions/script/context.mdx | 28 - .../surrealql/functions/script/overview.mdx | 19 - .../functions/script/surrealql-functions.mdx | 16 - .../functions/script/type-conversion.mdx | 33 - .../surrealql/functions/sleep.mdx | 45 - .../surrealql/functions/time.mdx | 489 -- .../surrealql/functions/vector.mdx | 417 -- .../version-nightly/surrealql/operators.mdx | 784 --- .../version-nightly/surrealql/overview.mdx | 49 - .../version-nightly/surrealql/parameters.mdx | 131 - .../surrealql/statements/_category_.json | 4 - .../surrealql/statements/begin.mdx | 46 - .../surrealql/statements/break.mdx | 31 - .../surrealql/statements/cancel.mdx | 33 - .../surrealql/statements/commit.mdx | 33 - .../surrealql/statements/continue.mdx | 30 - .../surrealql/statements/create.mdx | 82 - .../statements/define/_category_.json | 4 - .../surrealql/statements/define/indexes.mdx | 175 - .../surrealql/statements/delete.mdx | 99 - .../surrealql/statements/for.mdx | 34 - .../surrealql/statements/ifelse.mdx | 75 - .../surrealql/statements/info.mdx | 100 - .../surrealql/statements/insert.mdx | 66 - .../surrealql/statements/let.mdx | 35 - .../surrealql/statements/live-select.mdx | 76 - .../surrealql/statements/relate.mdx | 254 - .../surrealql/statements/return.mdx | 101 - .../surrealql/statements/show.mdx | 39 - .../surrealql/statements/sleep.mdx | 27 - .../surrealql/statements/throw.mdx | 38 - .../surrealql/statements/update.mdx | 137 - .../surrealql/statements/use.mdx | 41 - .../surrealql/transactions.mdx | 85 - .../version-nightly/tutorials/_category_.json | 4 - .../version-nightly/tutorials/overview.mdx | 25 - ...g-with-surrealdb-over-http-via-postman.mdx | 218 - .../version-1.1.x-sidebars.json | 8 - .../version-1.2.x-sidebars.json | 8 - ...idebars.json => version-1.x-sidebars.json} | 0 .../version-nightly-sidebars.json | 8 - versions.json | 7 +- 726 files changed, 5207 insertions(+), 106274 deletions(-) delete mode 100644 src/components/HomepageFeatures/index.tsx delete mode 100644 src/components/HomepageFeatures/styles.module.css rename src/components/SDK/{SDKClientBoxes.mdx => SDKBoxes.mdx} (77%) rename versioned_docs/version-1.2.x/integration/sdks/overview.mdx => src/components/SDK/list.mdx (93%) delete mode 100644 src/plugins/shiki/CHANGELOG.md delete mode 100644 src/plugins/shiki/LICENSE delete mode 100644 src/plugins/shiki/README.md delete mode 100644 src/plugins/shiki/docusaurus-theme-shiki-twoslash/index.js delete mode 100644 src/plugins/shiki/docusaurus-theme-shiki-twoslash/theme/CodeBlock/index.js delete mode 100644 src/plugins/shiki/docusaurus-theme-shiki-twoslash/theme/CodeBlock/styles.css delete mode 100644 src/plugins/shiki/docusaurus-theme-shiki-twoslash/theme/MDXComponents/index.js delete mode 100644 src/plugins/shiki/index.js delete mode 100644 src/plugins/shiki/package.json delete mode 100644 versioned_docs/version-1.0.x/cli/_category_.json delete mode 100644 versioned_docs/version-1.0.x/cli/export.mdx delete mode 100644 versioned_docs/version-1.0.x/cli/help.mdx delete mode 100644 versioned_docs/version-1.0.x/cli/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/cli/sql.mdx delete mode 100644 versioned_docs/version-1.0.x/cli/start.mdx delete mode 100644 versioned_docs/version-1.0.x/cli/upgrade.mdx delete mode 100644 versioned_docs/version-1.0.x/cli/validate.mdx delete mode 100644 versioned_docs/version-1.0.x/cli/version.mdx delete mode 100644 versioned_docs/version-1.0.x/deployment/_category_.json delete mode 100644 versioned_docs/version-1.0.x/deployment/amazon.mdx delete mode 100644 versioned_docs/version-1.0.x/deployment/azure.mdx delete mode 100644 versioned_docs/version-1.0.x/deployment/digitalocean.mdx delete mode 100644 versioned_docs/version-1.0.x/deployment/fly.mdx delete mode 100644 versioned_docs/version-1.0.x/deployment/google.mdx delete mode 100644 versioned_docs/version-1.0.x/deployment/heroku.mdx delete mode 100644 versioned_docs/version-1.0.x/deployment/kubernetes.mdx delete mode 100644 versioned_docs/version-1.0.x/deployment/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/deployment/railway.mdx delete mode 100644 versioned_docs/version-1.0.x/embedding/_category_.json delete mode 100644 versioned_docs/version-1.0.x/embedding/javascript.mdx delete mode 100644 versioned_docs/version-1.0.x/embedding/node.mdx delete mode 100644 versioned_docs/version-1.0.x/embedding/rust.mdx delete mode 100644 versioned_docs/version-1.0.x/faqs/_category_.json delete mode 100644 versioned_docs/version-1.0.x/faqs/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/how-to/_category_.json delete mode 100644 versioned_docs/version-1.0.x/how-to/connect-to-surrealdb-via-ngrok-tunnel.mdx delete mode 100644 versioned_docs/version-1.0.x/how-to/integrate-auth0-as-authentication-provider.mdx delete mode 100644 versioned_docs/version-1.0.x/how-to/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/installation/_category_.json delete mode 100644 versioned_docs/version-1.0.x/installation/linux.mdx delete mode 100644 versioned_docs/version-1.0.x/installation/macos.mdx delete mode 100644 versioned_docs/version-1.0.x/installation/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/installation/running/_category_.json delete mode 100644 versioned_docs/version-1.0.x/installation/running/docker.mdx delete mode 100644 versioned_docs/version-1.0.x/installation/running/file.mdx delete mode 100644 versioned_docs/version-1.0.x/installation/upgrading/_category_.json delete mode 100644 versioned_docs/version-1.0.x/installation/upgrading/beta8-to-beta9.mdx delete mode 100644 versioned_docs/version-1.0.x/installation/upgrading/beta9-to-beta10.mdx delete mode 100644 versioned_docs/version-1.0.x/installation/windows.mdx delete mode 100644 versioned_docs/version-1.0.x/integration/_category_.json delete mode 100644 versioned_docs/version-1.0.x/integration/http.mdx delete mode 100644 versioned_docs/version-1.0.x/integration/sdks/_category_.json delete mode 100644 versioned_docs/version-1.0.x/integration/sdks/deno.mdx delete mode 100644 versioned_docs/version-1.0.x/integration/sdks/dotnet.mdx delete mode 100644 versioned_docs/version-1.0.x/integration/sdks/golang.mdx delete mode 100644 versioned_docs/version-1.0.x/integration/sdks/java.mdx delete mode 100644 versioned_docs/version-1.0.x/integration/sdks/javascript.mdx delete mode 100644 versioned_docs/version-1.0.x/integration/sdks/nodejs.mdx delete mode 100644 versioned_docs/version-1.0.x/integration/sdks/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/integration/sdks/python.mdx delete mode 100644 versioned_docs/version-1.0.x/integration/sdks/rust.mdx delete mode 100644 versioned_docs/version-1.0.x/integration/websocket.mdx delete mode 100644 versioned_docs/version-1.0.x/intro.mdx delete mode 100644 versioned_docs/version-1.0.x/introduction/_category_.json delete mode 100644 versioned_docs/version-1.0.x/introduction/concepts.mdx delete mode 100644 versioned_docs/version-1.0.x/introduction/mongo.mdx delete mode 100644 versioned_docs/version-1.0.x/introduction/neo4j.mdx delete mode 100644 versioned_docs/version-1.0.x/introduction/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/introduction/sql.mdx delete mode 100644 versioned_docs/version-1.0.x/introduction/start.mdx delete mode 100644 versioned_docs/version-1.0.x/reference-guide/_category_.json delete mode 100644 versioned_docs/version-1.0.x/reference-guide/full-text-search.mdx delete mode 100644 versioned_docs/version-1.0.x/reference-guide/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/security/_category_.json delete mode 100644 versioned_docs/version-1.0.x/security/authentication.mdx delete mode 100644 versioned_docs/version-1.0.x/security/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/_category_.json delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/_category_.json delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/arrays.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/casting.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/datetimes.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/formatters.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/futures.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/geometries.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/ids.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/numbers.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/objects.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/records.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/simple.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/datamodel/strings.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/demo.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/_category_.json delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/count.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/crypto.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/duration.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/math.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/meta.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/parse.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/rand.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/script/_category_.json delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/script/argument.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/script/built-in-functions.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/script/context.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/script/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/script/surrealql-functions.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/script/type-conversion.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/search.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/session.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/sleep.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/string.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/time.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/type.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/functions/vector.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/operators.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/parameters.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/_category_.json delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/begin.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/cancel.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/commit.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/continue.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/create.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/_category_.json delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/analyzer.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/database.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/event.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/field.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/function.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/indexes.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/namespace.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/param.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/scope.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/table.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/token.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/define/user.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/for.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/info.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/insert.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/kill.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/live-select.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/relate.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/remove.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/select.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/show.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/throw.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/update.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/statements/use.mdx delete mode 100644 versioned_docs/version-1.0.x/surrealql/transactions.mdx delete mode 100644 versioned_docs/version-1.0.x/tutorials/overview.mdx delete mode 100644 versioned_docs/version-1.0.x/tutorials/working-with-surrealdb-over-http-via-postman.mdx delete mode 100644 versioned_docs/version-1.1.x/cli/_category_.json delete mode 100644 versioned_docs/version-1.1.x/cli/help.mdx delete mode 100644 versioned_docs/version-1.1.x/cli/import.mdx delete mode 100644 versioned_docs/version-1.1.x/cli/isready.mdx delete mode 100644 versioned_docs/version-1.1.x/cli/ml/_category_.json delete mode 100644 versioned_docs/version-1.1.x/cli/sql.mdx delete mode 100644 versioned_docs/version-1.1.x/cli/start.mdx delete mode 100644 versioned_docs/version-1.1.x/cli/upgrade.mdx delete mode 100644 versioned_docs/version-1.1.x/cli/version.mdx delete mode 100644 versioned_docs/version-1.1.x/deployment/_category_.json delete mode 100644 versioned_docs/version-1.1.x/deployment/amazon.mdx delete mode 100644 versioned_docs/version-1.1.x/deployment/azure.mdx delete mode 100644 versioned_docs/version-1.1.x/deployment/fly.mdx delete mode 100644 versioned_docs/version-1.1.x/deployment/google.mdx delete mode 100644 versioned_docs/version-1.1.x/deployment/kubernetes.mdx delete mode 100644 versioned_docs/version-1.1.x/deployment/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/embedding/_category_.json delete mode 100644 versioned_docs/version-1.1.x/embedding/javascript.mdx delete mode 100644 versioned_docs/version-1.1.x/embedding/node.mdx delete mode 100644 versioned_docs/version-1.1.x/embedding/python.mdx delete mode 100644 versioned_docs/version-1.1.x/embedding/rust.mdx delete mode 100644 versioned_docs/version-1.1.x/faqs/_category_.json delete mode 100644 versioned_docs/version-1.1.x/faqs/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/how-to/_category_.json delete mode 100644 versioned_docs/version-1.1.x/how-to/connect-to-surrealdb-via-ngrok-tunnel.mdx delete mode 100644 versioned_docs/version-1.1.x/how-to/integrate-auth0-as-authentication-provider.mdx delete mode 100644 versioned_docs/version-1.1.x/how-to/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/installation/_category_.json delete mode 100644 versioned_docs/version-1.1.x/installation/linux.mdx delete mode 100644 versioned_docs/version-1.1.x/installation/macos.mdx delete mode 100644 versioned_docs/version-1.1.x/installation/nightly.mdx delete mode 100644 versioned_docs/version-1.1.x/installation/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/installation/running/_category_.json delete mode 100644 versioned_docs/version-1.1.x/installation/running/docker.mdx delete mode 100644 versioned_docs/version-1.1.x/installation/running/file.mdx delete mode 100644 versioned_docs/version-1.1.x/installation/running/memory.mdx delete mode 100644 versioned_docs/version-1.1.x/installation/running/tikv.mdx delete mode 100644 versioned_docs/version-1.1.x/installation/upgrading/_category_.json delete mode 100644 versioned_docs/version-1.1.x/installation/upgrading/beta9-to-beta10.mdx delete mode 100644 versioned_docs/version-1.1.x/installation/windows.mdx delete mode 100644 versioned_docs/version-1.1.x/integration/_category_.json delete mode 100644 versioned_docs/version-1.1.x/integration/http.mdx delete mode 100644 versioned_docs/version-1.1.x/integration/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/integration/sdks/_category_.json delete mode 100644 versioned_docs/version-1.1.x/integration/sdks/deno.mdx delete mode 100644 versioned_docs/version-1.1.x/integration/sdks/dotnet.mdx delete mode 100644 versioned_docs/version-1.1.x/integration/sdks/golang.mdx delete mode 100644 versioned_docs/version-1.1.x/integration/sdks/java.mdx delete mode 100644 versioned_docs/version-1.1.x/integration/sdks/javascript.mdx delete mode 100644 versioned_docs/version-1.1.x/integration/sdks/nodejs.mdx delete mode 100644 versioned_docs/version-1.1.x/integration/sdks/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/integration/sdks/python.mdx delete mode 100644 versioned_docs/version-1.1.x/integration/sdks/rust.mdx delete mode 100644 versioned_docs/version-1.1.x/integration/websocket.mdx delete mode 100644 versioned_docs/version-1.1.x/intro.mdx delete mode 100644 versioned_docs/version-1.1.x/introduction/_category_.json delete mode 100644 versioned_docs/version-1.1.x/introduction/architecture.mdx delete mode 100644 versioned_docs/version-1.1.x/introduction/concepts.mdx delete mode 100644 versioned_docs/version-1.1.x/introduction/mongo.mdx delete mode 100644 versioned_docs/version-1.1.x/introduction/neo4j.mdx delete mode 100644 versioned_docs/version-1.1.x/introduction/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/introduction/sql.mdx delete mode 100644 versioned_docs/version-1.1.x/introduction/start.mdx delete mode 100644 versioned_docs/version-1.1.x/reference-guide/_category_.json delete mode 100644 versioned_docs/version-1.1.x/reference-guide/full-text-search.mdx delete mode 100644 versioned_docs/version-1.1.x/reference-guide/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/security/_category_.json delete mode 100644 versioned_docs/version-1.1.x/security/authentication.mdx delete mode 100644 versioned_docs/version-1.1.x/security/capabilities.mdx delete mode 100644 versioned_docs/version-1.1.x/security/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/_category_.json delete mode 100644 versioned_docs/version-1.1.x/surrealql/comments.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/datamodel/_category_.json delete mode 100644 versioned_docs/version-1.1.x/surrealql/datamodel/arrays.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/datamodel/casting.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/datamodel/datetimes.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/datamodel/formatters.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/datamodel/futures.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/datamodel/geometries.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/datamodel/ids.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/datamodel/numbers.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/datamodel/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/datamodel/simple.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/datamodel/strings.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/demo.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/_category_.json delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/array.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/count.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/crypto.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/duration.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/geo.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/http.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/math.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/meta.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/ml.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/object.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/parse.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/rand.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/script/_category_.json delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/script/built-in-functions.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/script/context.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/script/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/script/surrealql-functions.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/search.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/session.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/sleep.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/string.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/time.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/type.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/functions/vector.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/operators.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/parameters.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/_category_.json delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/begin.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/break.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/commit.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/continue.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/create.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/_category_.json delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/analyzer.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/database.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/event.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/field.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/function.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/indexes.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/namespace.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/param.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/scope.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/table.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/token.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/define/user.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/delete.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/for.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/ifelse.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/insert.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/kill.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/let.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/live-select.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/relate.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/remove.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/return.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/select.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/show.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/sleep.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/throw.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/update.mdx delete mode 100644 versioned_docs/version-1.1.x/surrealql/statements/use.mdx delete mode 100644 versioned_docs/version-1.1.x/tutorials/_category_.json delete mode 100644 versioned_docs/version-1.1.x/tutorials/overview.mdx delete mode 100644 versioned_docs/version-1.1.x/tutorials/working-with-surrealdb-over-http-via-postman.mdx delete mode 100644 versioned_docs/version-1.2.x/cli/_category_.json delete mode 100644 versioned_docs/version-1.2.x/cli/export.mdx delete mode 100644 versioned_docs/version-1.2.x/cli/import.mdx delete mode 100644 versioned_docs/version-1.2.x/cli/isready.mdx delete mode 100644 versioned_docs/version-1.2.x/cli/ml/_category_.json delete mode 100644 versioned_docs/version-1.2.x/cli/ml/export.mdx delete mode 100644 versioned_docs/version-1.2.x/cli/ml/import.mdx delete mode 100644 versioned_docs/version-1.2.x/cli/ml/overview.mdx delete mode 100644 versioned_docs/version-1.2.x/cli/overview.mdx delete mode 100644 versioned_docs/version-1.2.x/cli/sql.mdx delete mode 100644 versioned_docs/version-1.2.x/cli/start.mdx delete mode 100644 versioned_docs/version-1.2.x/cli/upgrade.mdx delete mode 100644 versioned_docs/version-1.2.x/cli/validate.mdx delete mode 100644 versioned_docs/version-1.2.x/deployment/_category_.json delete mode 100644 versioned_docs/version-1.2.x/deployment/digitalocean.mdx delete mode 100644 versioned_docs/version-1.2.x/deployment/heroku.mdx delete mode 100644 versioned_docs/version-1.2.x/deployment/railway.mdx delete mode 100644 versioned_docs/version-1.2.x/embedding/_category_.json delete mode 100644 versioned_docs/version-1.2.x/embedding/python.mdx delete mode 100644 versioned_docs/version-1.2.x/faqs/_category_.json delete mode 100644 versioned_docs/version-1.2.x/how-to/_category_.json delete mode 100644 versioned_docs/version-1.2.x/how-to/overview.mdx delete mode 100644 versioned_docs/version-1.2.x/installation/_category_.json delete mode 100644 versioned_docs/version-1.2.x/installation/linux.mdx delete mode 100644 versioned_docs/version-1.2.x/installation/nightly.mdx delete mode 100644 versioned_docs/version-1.2.x/installation/running/_category_.json delete mode 100644 versioned_docs/version-1.2.x/installation/running/docker.mdx delete mode 100644 versioned_docs/version-1.2.x/installation/running/file.mdx delete mode 100644 versioned_docs/version-1.2.x/installation/running/memory.mdx delete mode 100644 versioned_docs/version-1.2.x/installation/running/tikv.mdx delete mode 100644 versioned_docs/version-1.2.x/installation/upgrading/_category_.json delete mode 100644 versioned_docs/version-1.2.x/installation/upgrading/beta9-to-beta10.mdx delete mode 100644 versioned_docs/version-1.2.x/integration/_category_.json delete mode 100644 versioned_docs/version-1.2.x/integration/overview.mdx delete mode 100644 versioned_docs/version-1.2.x/integration/sdks/_category_.json delete mode 100644 versioned_docs/version-1.2.x/intro.mdx delete mode 100644 versioned_docs/version-1.2.x/introduction/_category_.json delete mode 100644 versioned_docs/version-1.2.x/introduction/architecture.mdx delete mode 100644 versioned_docs/version-1.2.x/reference-guide/_category_.json delete mode 100644 versioned_docs/version-1.2.x/security/_category_.json delete mode 100644 versioned_docs/version-1.2.x/security/capabilities.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/_category_.json delete mode 100644 versioned_docs/version-1.2.x/surrealql/comments.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/datamodel/_category_.json delete mode 100644 versioned_docs/version-1.2.x/surrealql/datamodel/datetimes.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/datamodel/objects.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/datamodel/records.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/_category_.json delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/array.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/count.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/geo.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/http.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/overview.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/parse.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/script/_category_.json delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/script/argument.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/script/surrealql-functions.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/script/type-conversion.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/search.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/session.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/sleep.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/string.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/functions/type.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/operators.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/_category_.json delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/break.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/cancel.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/_category_.json delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/analyzer.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/database.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/event.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/field.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/function.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/namespace.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/overview.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/param.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/scope.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/table.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/token.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/define/user.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/delete.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/ifelse.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/info.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/kill.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/let.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/remove.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/return.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/select.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/statements/sleep.mdx delete mode 100644 versioned_docs/version-1.2.x/surrealql/transactions.mdx delete mode 100644 versioned_docs/version-1.2.x/tutorials/_category_.json create mode 100644 versioned_docs/version-1.x/cli/_category_.json create mode 100644 versioned_docs/version-1.x/cli/backup.mdx rename versioned_docs/{version-1.1.x => version-1.x}/cli/export.mdx (81%) rename versioned_docs/{version-1.2.x => version-1.x}/cli/help.mdx (61%) rename versioned_docs/{version-1.0.x => version-1.x}/cli/import.mdx (81%) rename versioned_docs/{version-1.1.x/cli/overview.mdx => version-1.x/cli/index.mdx} (71%) rename versioned_docs/{version-1.0.x => version-1.x}/cli/isready.mdx (72%) create mode 100644 versioned_docs/version-1.x/cli/ml/_category_.json rename versioned_docs/{version-1.1.x => version-1.x}/cli/ml/export.mdx (95%) rename versioned_docs/{version-1.1.x => version-1.x}/cli/ml/import.mdx (94%) rename versioned_docs/{version-1.1.x/cli/ml/overview.mdx => version-1.x/cli/ml/index.mdx} (81%) rename versioned_docs/{version-nightly => version-1.x}/cli/sql.mdx (90%) rename versioned_docs/{version-nightly => version-1.x}/cli/start.mdx (91%) rename versioned_docs/{version-nightly => version-1.x}/cli/upgrade.mdx (76%) rename versioned_docs/{version-1.1.x => version-1.x}/cli/validate.mdx (81%) rename versioned_docs/{version-1.2.x => version-1.x}/cli/version.mdx (65%) create mode 100644 versioned_docs/version-1.x/deployment/_category_.json rename versioned_docs/{version-1.2.x => version-1.x}/deployment/amazon.mdx (97%) rename versioned_docs/{version-1.2.x => version-1.x}/deployment/azure.mdx (97%) rename versioned_docs/{version-1.1.x => version-1.x}/deployment/digitalocean.mdx (66%) rename versioned_docs/{version-1.2.x => version-1.x}/deployment/fly.mdx (95%) rename versioned_docs/{version-1.2.x => version-1.x}/deployment/google.mdx (96%) rename versioned_docs/{version-1.1.x => version-1.x}/deployment/heroku.mdx (67%) rename versioned_docs/{version-1.2.x/deployment/overview.mdx => version-1.x/deployment/index.mdx} (95%) rename versioned_docs/{version-1.2.x => version-1.x}/deployment/kubernetes.mdx (98%) rename versioned_docs/{version-1.1.x => version-1.x}/deployment/railway.mdx (66%) create mode 100644 versioned_docs/version-1.x/embedding/_category_.json create mode 100644 versioned_docs/version-1.x/embedding/deno.mdx rename versioned_docs/{version-1.2.x => version-1.x}/embedding/javascript.mdx (84%) rename versioned_docs/{version-1.2.x => version-1.x}/embedding/node.mdx (82%) rename versioned_docs/{version-1.0.x => version-1.x}/embedding/python.mdx (82%) rename versioned_docs/{version-1.2.x => version-1.x}/embedding/rust.mdx (97%) create mode 100644 versioned_docs/version-1.x/faqs/_category_.json rename versioned_docs/{version-1.2.x/faqs/overview.mdx => version-1.x/faqs/index.mdx} (91%) create mode 100644 versioned_docs/version-1.x/index.mdx create mode 100644 versioned_docs/version-1.x/installation/_category_.json rename versioned_docs/{version-1.2.x/installation/overview.mdx => version-1.x/installation/index.mdx} (83%) rename versioned_docs/{version-nightly => version-1.x}/installation/linux.mdx (94%) rename versioned_docs/{version-1.2.x => version-1.x}/installation/macos.mdx (96%) rename versioned_docs/{version-1.0.x => version-1.x}/installation/nightly.mdx (92%) create mode 100644 versioned_docs/version-1.x/installation/running/_category_.json rename versioned_docs/{version-nightly => version-1.x}/installation/running/docker.mdx (96%) rename versioned_docs/{version-nightly => version-1.x}/installation/running/file.mdx (89%) rename versioned_docs/{version-1.0.x => version-1.x}/installation/running/memory.mdx (89%) rename versioned_docs/{version-1.0.x => version-1.x}/installation/running/tikv.mdx (89%) rename versioned_docs/{version-1.2.x => version-1.x}/installation/windows.mdx (95%) create mode 100644 versioned_docs/version-1.x/integration/_category_.json rename versioned_docs/{version-1.2.x => version-1.x}/integration/http.mdx (99%) rename versioned_docs/{version-1.0.x/integration/overview.mdx => version-1.x/integration/index.mdx} (82%) create mode 100644 versioned_docs/version-1.x/integration/sdks/_category_.json rename versioned_docs/{version-1.2.x => version-1.x}/integration/sdks/deno.mdx (98%) rename versioned_docs/{version-1.2.x => version-1.x}/integration/sdks/dotnet.mdx (98%) rename versioned_docs/{version-1.2.x => version-1.x}/integration/sdks/golang.mdx (98%) create mode 100644 versioned_docs/version-1.x/integration/sdks/index.mdx rename versioned_docs/{version-1.2.x => version-1.x}/integration/sdks/java.mdx (99%) rename versioned_docs/{version-1.2.x => version-1.x}/integration/sdks/javascript.mdx (98%) rename versioned_docs/{version-1.2.x => version-1.x}/integration/sdks/nodejs.mdx (98%) rename versioned_docs/{version-1.2.x => version-1.x}/integration/sdks/python.mdx (97%) rename versioned_docs/{version-1.2.x => version-1.x}/integration/sdks/rust.mdx (97%) rename versioned_docs/{version-1.2.x => version-1.x}/integration/websocket.mdx (99%) create mode 100644 versioned_docs/version-1.x/introduction/_category_.json rename versioned_docs/{version-1.0.x => version-1.x}/introduction/architecture.mdx (94%) rename versioned_docs/{version-1.2.x => version-1.x}/introduction/concepts.mdx (91%) rename versioned_docs/{version-1.2.x/introduction/overview.mdx => version-1.x/introduction/index.mdx} (70%) rename versioned_docs/{version-1.2.x => version-1.x}/introduction/mongo.mdx (96%) rename versioned_docs/{version-1.2.x => version-1.x}/introduction/neo4j.mdx (96%) rename versioned_docs/{version-1.2.x => version-1.x}/introduction/sql.mdx (97%) rename versioned_docs/{version-1.2.x => version-1.x}/introduction/start.mdx (95%) create mode 100644 versioned_docs/version-1.x/reference-guide/_category_.json rename versioned_docs/{version-1.2.x => version-1.x}/reference-guide/full-text-search.mdx (84%) rename versioned_docs/{version-1.2.x/reference-guide/overview.mdx => version-1.x/reference-guide/index.mdx} (88%) create mode 100644 versioned_docs/version-1.x/security/_category_.json rename versioned_docs/{version-1.2.x => version-1.x}/security/authentication.mdx (97%) rename versioned_docs/{version-1.0.x => version-1.x}/security/capabilities.mdx (95%) rename versioned_docs/{version-1.2.x/security/overview.mdx => version-1.x/security/index.mdx} (86%) create mode 100644 versioned_docs/version-1.x/surrealql/_category_.json rename versioned_docs/{version-1.0.x => version-1.x}/surrealql/comments.mdx (79%) create mode 100644 versioned_docs/version-1.x/surrealql/datamodel/_category_.json rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/datamodel/arrays.mdx (80%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/datamodel/casting.mdx (55%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/datamodel/datetimes.mdx (87%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/datamodel/formatters.mdx (98%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/datamodel/futures.mdx (89%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/datamodel/geometries.mdx (96%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/datamodel/ids.mdx (95%) rename versioned_docs/{version-1.2.x/surrealql/datamodel/overview.mdx => version-1.x/surrealql/datamodel/index.mdx} (96%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/datamodel/numbers.mdx (97%) rename versioned_docs/{version-1.1.x => version-1.x}/surrealql/datamodel/objects.mdx (79%) rename versioned_docs/{version-1.1.x => version-1.x}/surrealql/datamodel/records.mdx (90%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/datamodel/simple.mdx (78%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/datamodel/strings.mdx (82%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/demo.mdx (94%) create mode 100644 versioned_docs/version-1.x/surrealql/functions/_category_.json rename versioned_docs/{version-1.0.x => version-1.x}/surrealql/functions/array.mdx (66%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/functions/count.mdx (78%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/functions/crypto.mdx (64%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/functions/duration.mdx (60%) rename versioned_docs/{version-1.0.x => version-1.x}/surrealql/functions/geo.mdx (73%) rename versioned_docs/{version-1.0.x => version-1.x}/surrealql/functions/http.mdx (82%) rename versioned_docs/{version-1.0.x/surrealql/functions/overview.mdx => version-1.x/surrealql/functions/index.mdx} (57%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/functions/math.mdx (62%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/functions/meta.mdx (54%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/functions/ml.mdx (92%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/functions/object.mdx (78%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/functions/parse.mdx (63%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/functions/rand.mdx (70%) create mode 100644 versioned_docs/version-1.x/surrealql/functions/script/_category_.json rename versioned_docs/{version-1.1.x/surrealql/functions/script/argument.mdx => version-1.x/surrealql/functions/script/arguments.mdx} (66%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/functions/script/built-in-functions.mdx (75%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/functions/script/context.mdx (69%) rename versioned_docs/{version-1.2.x/surrealql/functions/script/overview.mdx => version-1.x/surrealql/functions/script/index.mdx} (76%) create mode 100644 versioned_docs/version-1.x/surrealql/functions/script/surrealql-functions.mdx rename versioned_docs/{version-1.1.x => version-1.x}/surrealql/functions/script/type-conversion.mdx (66%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/functions/search.mdx (68%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/functions/session.mdx (58%) create mode 100644 versioned_docs/version-1.x/surrealql/functions/sleep.mdx rename versioned_docs/{version-nightly => version-1.x}/surrealql/functions/string.mdx (60%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/functions/time.mdx (61%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/functions/type.mdx (65%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/functions/vector.mdx (68%) rename versioned_docs/{version-1.2.x/surrealql/overview.mdx => version-1.x/surrealql/index.mdx} (92%) create mode 100644 versioned_docs/version-1.x/surrealql/operators.mdx rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/parameters.mdx (96%) create mode 100644 versioned_docs/version-1.x/surrealql/statements/_category_.json rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/statements/begin.mdx (66%) rename versioned_docs/{version-1.0.x => version-1.x}/surrealql/statements/break.mdx (67%) rename versioned_docs/{version-1.1.x => version-1.x}/surrealql/statements/cancel.mdx (64%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/statements/commit.mdx (65%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/statements/continue.mdx (67%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/statements/create.mdx (96%) create mode 100644 versioned_docs/version-1.x/surrealql/statements/define/_category_.json rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/define/analyzer.mdx (92%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/define/database.mdx (75%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/define/event.mdx (92%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/define/field.mdx (92%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/define/function.mdx (88%) rename versioned_docs/{version-nightly/surrealql/statements/define/overview.mdx => version-1.x/surrealql/statements/define/index.mdx} (87%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/statements/define/indexes.mdx (86%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/define/namespace.mdx (81%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/define/param.mdx (77%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/define/scope.mdx (79%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/define/table.mdx (95%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/define/token.mdx (94%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/define/user.mdx (88%) rename versioned_docs/{version-1.0.x => version-1.x}/surrealql/statements/delete.mdx (92%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/statements/for.mdx (67%) rename versioned_docs/{version-1.0.x => version-1.x}/surrealql/statements/ifelse.mdx (88%) rename versioned_docs/{version-1.1.x => version-1.x}/surrealql/statements/info.mdx (89%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/statements/insert.mdx (91%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/kill.mdx (84%) rename versioned_docs/{version-1.0.x => version-1.x}/surrealql/statements/let.mdx (71%) rename versioned_docs/{version-1.2.x/surrealql/statements/live-select.mdx => version-1.x/surrealql/statements/live.mdx} (89%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/statements/relate.mdx (98%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/remove.mdx (68%) rename versioned_docs/{version-1.0.x => version-1.x}/surrealql/statements/return.mdx (92%) rename versioned_docs/{version-nightly => version-1.x}/surrealql/statements/select.mdx (97%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/statements/show.mdx (88%) rename versioned_docs/{version-1.0.x => version-1.x}/surrealql/statements/sleep.mdx (67%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/statements/throw.mdx (85%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/statements/update.mdx (96%) rename versioned_docs/{version-1.2.x => version-1.x}/surrealql/statements/use.mdx (83%) rename versioned_docs/{version-1.1.x => version-1.x}/surrealql/transactions.mdx (95%) rename versioned_docs/{version-1.0.x => version-1.x}/tutorials/_category_.json (51%) rename versioned_docs/{version-1.2.x/how-to => version-1.x/tutorials}/connect-to-surrealdb-via-ngrok-tunnel.mdx (89%) rename versioned_docs/{version-1.2.x/tutorials/overview.mdx => version-1.x/tutorials/index.mdx} (61%) rename versioned_docs/{version-1.2.x/how-to => version-1.x/tutorials}/integrate-auth0-as-authentication-provider.mdx (97%) rename versioned_docs/{version-1.2.x/how-to => version-1.x/tutorials}/integrate-aws-cognito-as-authentication-provider.mdx (97%) rename versioned_docs/{version-1.2.x => version-1.x}/tutorials/working-with-surrealdb-over-http-via-postman.mdx (94%) delete mode 100644 versioned_docs/version-nightly/cli/_category_.json delete mode 100644 versioned_docs/version-nightly/cli/export.mdx delete mode 100644 versioned_docs/version-nightly/cli/help.mdx delete mode 100644 versioned_docs/version-nightly/cli/import.mdx delete mode 100644 versioned_docs/version-nightly/cli/isready.mdx delete mode 100644 versioned_docs/version-nightly/cli/ml/_category_.json delete mode 100644 versioned_docs/version-nightly/cli/ml/export.mdx delete mode 100644 versioned_docs/version-nightly/cli/ml/import.mdx delete mode 100644 versioned_docs/version-nightly/cli/ml/overview.mdx delete mode 100644 versioned_docs/version-nightly/cli/overview.mdx delete mode 100644 versioned_docs/version-nightly/cli/validate.mdx delete mode 100644 versioned_docs/version-nightly/cli/version.mdx delete mode 100644 versioned_docs/version-nightly/deployment/_category_.json delete mode 100644 versioned_docs/version-nightly/deployment/amazon.mdx delete mode 100644 versioned_docs/version-nightly/deployment/azure.mdx delete mode 100644 versioned_docs/version-nightly/deployment/digitalocean.mdx delete mode 100644 versioned_docs/version-nightly/deployment/fly.mdx delete mode 100644 versioned_docs/version-nightly/deployment/google.mdx delete mode 100644 versioned_docs/version-nightly/deployment/heroku.mdx delete mode 100644 versioned_docs/version-nightly/deployment/kubernetes.mdx delete mode 100644 versioned_docs/version-nightly/deployment/overview.mdx delete mode 100644 versioned_docs/version-nightly/deployment/railway.mdx delete mode 100644 versioned_docs/version-nightly/embedding/_category_.json delete mode 100644 versioned_docs/version-nightly/embedding/javascript.mdx delete mode 100644 versioned_docs/version-nightly/embedding/node.mdx delete mode 100644 versioned_docs/version-nightly/embedding/python.mdx delete mode 100644 versioned_docs/version-nightly/embedding/rust.mdx delete mode 100644 versioned_docs/version-nightly/faqs/_category_.json delete mode 100644 versioned_docs/version-nightly/faqs/overview.mdx delete mode 100644 versioned_docs/version-nightly/how-to/_category_.json delete mode 100644 versioned_docs/version-nightly/how-to/connect-to-surrealdb-via-ngrok-tunnel.mdx delete mode 100644 versioned_docs/version-nightly/how-to/integrate-auth0-as-authentication-provider.mdx delete mode 100644 versioned_docs/version-nightly/how-to/integrate-aws-cognito-as-authentication-provider.mdx delete mode 100644 versioned_docs/version-nightly/how-to/overview.mdx delete mode 100644 versioned_docs/version-nightly/installation/_category_.json delete mode 100644 versioned_docs/version-nightly/installation/macos.mdx delete mode 100644 versioned_docs/version-nightly/installation/nightly.mdx delete mode 100644 versioned_docs/version-nightly/installation/overview.mdx delete mode 100644 versioned_docs/version-nightly/installation/running/_category_.json delete mode 100644 versioned_docs/version-nightly/installation/running/memory.mdx delete mode 100644 versioned_docs/version-nightly/installation/running/tikv.mdx delete mode 100644 versioned_docs/version-nightly/installation/upgrading/_category_.json delete mode 100644 versioned_docs/version-nightly/installation/upgrading/beta9-to-beta10.mdx delete mode 100644 versioned_docs/version-nightly/installation/windows.mdx delete mode 100644 versioned_docs/version-nightly/integration/_category_.json delete mode 100644 versioned_docs/version-nightly/integration/http.mdx delete mode 100644 versioned_docs/version-nightly/integration/overview.mdx delete mode 100644 versioned_docs/version-nightly/integration/sdks/_category_.json delete mode 100644 versioned_docs/version-nightly/integration/sdks/deno.mdx delete mode 100644 versioned_docs/version-nightly/integration/sdks/dotnet.mdx delete mode 100644 versioned_docs/version-nightly/integration/sdks/golang.mdx delete mode 100644 versioned_docs/version-nightly/integration/sdks/java.mdx delete mode 100644 versioned_docs/version-nightly/integration/sdks/javascript.mdx delete mode 100644 versioned_docs/version-nightly/integration/sdks/nodejs.mdx delete mode 100644 versioned_docs/version-nightly/integration/sdks/overview.mdx delete mode 100644 versioned_docs/version-nightly/integration/sdks/python.mdx delete mode 100644 versioned_docs/version-nightly/integration/sdks/rust.mdx delete mode 100644 versioned_docs/version-nightly/integration/websocket.mdx delete mode 100644 versioned_docs/version-nightly/intro.mdx delete mode 100644 versioned_docs/version-nightly/introduction/_category_.json delete mode 100644 versioned_docs/version-nightly/introduction/architecture.mdx delete mode 100644 versioned_docs/version-nightly/introduction/concepts.mdx delete mode 100644 versioned_docs/version-nightly/introduction/mongo.mdx delete mode 100644 versioned_docs/version-nightly/introduction/neo4j.mdx delete mode 100644 versioned_docs/version-nightly/introduction/overview.mdx delete mode 100644 versioned_docs/version-nightly/introduction/sql.mdx delete mode 100644 versioned_docs/version-nightly/introduction/start.mdx delete mode 100644 versioned_docs/version-nightly/reference-guide/_category_.json delete mode 100644 versioned_docs/version-nightly/reference-guide/full-text-search.mdx delete mode 100644 versioned_docs/version-nightly/reference-guide/overview.mdx delete mode 100644 versioned_docs/version-nightly/security/_category_.json delete mode 100644 versioned_docs/version-nightly/security/authentication.mdx delete mode 100644 versioned_docs/version-nightly/security/capabilities.mdx delete mode 100644 versioned_docs/version-nightly/security/overview.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/_category_.json delete mode 100644 versioned_docs/version-nightly/surrealql/comments.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/_category_.json delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/arrays.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/casting.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/formatters.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/futures.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/geometries.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/ids.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/numbers.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/objects.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/overview.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/records.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/simple.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/datamodel/strings.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/demo.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/_category_.json delete mode 100644 versioned_docs/version-nightly/surrealql/functions/array.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/crypto.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/duration.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/geo.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/http.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/math.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/meta.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/ml.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/object.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/overview.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/rand.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/script/_category_.json delete mode 100644 versioned_docs/version-nightly/surrealql/functions/script/argument.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/script/built-in-functions.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/script/context.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/script/overview.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/script/surrealql-functions.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/script/type-conversion.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/sleep.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/time.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/functions/vector.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/operators.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/overview.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/parameters.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/_category_.json delete mode 100644 versioned_docs/version-nightly/surrealql/statements/begin.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/break.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/cancel.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/commit.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/continue.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/create.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/define/_category_.json delete mode 100644 versioned_docs/version-nightly/surrealql/statements/define/indexes.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/delete.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/for.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/ifelse.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/info.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/insert.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/let.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/live-select.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/relate.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/return.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/show.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/sleep.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/throw.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/update.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/statements/use.mdx delete mode 100644 versioned_docs/version-nightly/surrealql/transactions.mdx delete mode 100644 versioned_docs/version-nightly/tutorials/_category_.json delete mode 100644 versioned_docs/version-nightly/tutorials/overview.mdx delete mode 100644 versioned_docs/version-nightly/tutorials/working-with-surrealdb-over-http-via-postman.mdx delete mode 100644 versioned_sidebars/version-1.1.x-sidebars.json delete mode 100644 versioned_sidebars/version-1.2.x-sidebars.json rename versioned_sidebars/{version-1.0.x-sidebars.json => version-1.x-sidebars.json} (100%) delete mode 100644 versioned_sidebars/version-nightly-sidebars.json diff --git a/.nvmrc b/.nvmrc index 6276cf12f..ee09fac75 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v16.14.2 +v20.11.1 diff --git a/docusaurus.config.js b/docusaurus.config.js index c20455538..b70a93e53 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -1,88 +1,42 @@ -const fs = require('fs'); const isProd = process.env.IS_PROD_BUILD == "true"; const config = { title: 'SurrealDB Docs', tagline: 'SurrealDB Docs', - favicon: 'img/favicon.ico', - // Set the production url of your site here + favicon: '/img/favicon.ico', url: 'https://surrealdb.com', - // Set the // pathname under which your site is served baseUrl: '/docs/', - // TODO We need to fix these issues, just not doing it now :) - onBrokenLinks: 'warn', - onBrokenMarkdownLinks: 'warn', + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'throw', i18n: { defaultLocale: 'en', locales: ['en'], }, - plugins: [ - 'docusaurus-plugin-sass', - [ - '@docusaurus/plugin-content-docs', - { - id: 'rust', - path: "./sdks/rust", - routeBasePath: "./sdks/rust", - include: ["**/*.md"], - sidebarPath: require.resolve('./sdks/rust/sidebarsRust.js'), - }, - ], - [ - '@docusaurus/plugin-content-docs', - { - id: 'golang', - path: "./sdks/golang", - routeBasePath: "./sdks/golang", - include: ["**/*.md"], - sidebarPath: require.resolve('./sdks/golang/sidebarsGolang.js'), - }, - ], - [ - '@docusaurus/plugin-content-docs', - { - id: 'node', - path: "./sdks/node", - routeBasePath: "./sdks/node", - include: ["**/*.md"], - sidebarPath: require.resolve('./sdks/node/sidebarsNode.js'), - }, - ], - [ - '@docusaurus/plugin-content-docs', - { - id: 'python', - path: "./sdks/python", - routeBasePath: "./sdks/node", - include: ["**/*.md"], - sidebarPath: require.resolve('./sdks/python/sidebarsPython.js'), - }, - ], - [ - '@docusaurus/plugin-content-docs', - { - id: 'deno', - path: "./sdks/deno", - routeBasePath: "./sdks/deno", - include: ["**/*.md"], - sidebarPath: require.resolve('./sdks/deno/sidebarsDeno.js'), - }, - ], + presets: [ [ - '@docusaurus/plugin-content-docs', + '@docusaurus/preset-classic', { - id: 'java', - path: "./sdks/java", - routeBasePath: "./sdks/java", - include: ["**/*.md"], - sidebarPath: require.resolve('./sdks/java/sidebarsJava.js'), + docs: { + sidebarCollapsed: true, + sidebarCollapsible: true, + includeCurrentVersion: false, + routeBasePath: '/surrealdb', + lastVersion: '1.x', + versions: { + "1.x": { + label: '1.x', + path: '', + }, + }, + editUrl: 'https://github.com/surrealdb/docs.surrealdb.com/edit/main/', + }, + theme: { + customCss: require.resolve('./src/css/custom.scss'), + }, }, ], - // [ - // './plugins/shiki', - // { - // themes: ["min-light", "nord"], - // }, - // ], + ], + plugins: [ + 'docusaurus-plugin-sass', ...(isProd ? [ [ 'docusaurus-plugin-sentry', @@ -120,70 +74,6 @@ const config = { ], ] : []), ], - presets: [ - [ - 'classic', - ({ - docs: { - routeBasePath: '/surrealdb', - lastVersion: '1.2.x', - versions: { - "1.1.x": { - label: '1.1.x', - path: '1.1.x', - }, - nightly: { - label: 'Nightly', - path: 'nightly', - }, - '1.2.x': { - label: '1.2.x', - path: '', - }, - '1.0.x': { - label: '1.0.x', - path: '1.0.x', - }, - }, - includeCurrentVersion: false, - editUrl: - 'https://github.com/surrealdb/docs.surrealdb.com/edit/main/', - }, - theme: { - customCss: require.resolve('./src/css/custom.scss'), - }, - }), - ], - // [ - // './src/plugins/shiki', - // { - // theme: JSON.parse(fs.readFileSync('./src/grammars/surrealql-theme.json', 'utf-8')), - // langs: [ - // { - // id: 'surql', - // scopeName: 'source.surrealql', - // grammar: JSON.parse(fs.readFileSync('./src/grammars/surrealql.tmLanguage.json', 'utf-8')), - // aliases: ['surrealql'] - // }, - // 'javascript', - // 'typescript', - // 'bash', - // 'shell', - // 'yaml', - // 'markdown', - // 'python', - // 'json', - // 'rust', - // 'jsx', - // 'sql', - // 'java', - // 'go', - // 'jsx', - // 'csharp' - // ], - // }, - // ], - ], themeConfig: ({ colorMode: { @@ -192,13 +82,13 @@ const config = { respectPrefersColorScheme: false, }, // Replace with your project's social card - image: 'img/docusaurus-social-card.jpg', + image: '/img/docusaurus-social-card.jpg', navbar: { title: '', logo: { alt: 'SurrealDB Logo', - src: 'img/logo-surrealdb-dark.svg', - srcDark: 'img/logo-surrealdb.svg', + src: '/img/logo-surrealdb-dark.svg', + srcDark: '/img/logo-surrealdb.svg', }, items: [ { diff --git a/package.json b/package.json index 773e82504..c38f296fb 100644 --- a/package.json +++ b/package.json @@ -16,39 +16,38 @@ }, "dependencies": { "@babel/plugin-transform-react-jsx": "^7.22.15", - "@docusaurus/core": "^2.4.3", - "@docusaurus/plugin-content-docs": "^2.4.3", - "@docusaurus/plugin-google-gtag": "^2.4.3", - "@docusaurus/preset-classic": "^2.4.3", - "@docusaurus/theme-common": "^2.4.3", + "@docusaurus/core": "^3.1.1", + "@docusaurus/plugin-content-docs": "^3.1.1", + "@docusaurus/plugin-google-gtag": "^3.1.1", + "@docusaurus/preset-classic": "^3.1.1", + "@docusaurus/theme-common": "^3.1.1", "@fortawesome/fontawesome-svg-core": "^6.5.1", "@fortawesome/free-brands-svg-icons": "^6.5.1", "@fortawesome/free-regular-svg-icons": "^6.5.1", "@fortawesome/free-solid-svg-icons": "^6.5.1", "@fortawesome/react-fontawesome": "^0.2.0", "@giscus/react": "^2.4.0", - "@mdx-js/react": "^1.6.22", + "@mdx-js/react": "^3.0.1", "clsx": "^1.2.1", "copy-text-to-clipboard": "^3.2.0", "docusaurus-plugin-sass": "^0.2.5", - "docusaurus-plugin-sentry": "1.1.0", + "docusaurus-plugin-sentry": "2.0.0", "lodash": "^4.17.21", - "prism-react-renderer": "^1.3.5", + "prism-react-renderer": "^2.3.1", "prismjs": "^1.29.0", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "remark-shiki-twoslash": "^3.1.3", - "sass": "^1.68.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.71.0", "styled-components": "^6.0.8" }, "devDependencies": { - "@docusaurus/module-type-aliases": "2.4.1", - "@docusaurus/types": "^2.4.3", - "@tsconfig/docusaurus": "^1.0.5", - "@types/react": "^18.2.21", - "@types/react-helmet": "^6.1.6", + "@docusaurus/module-type-aliases": "3.1.1", + "@docusaurus/tsconfig": "^3.1.1", + "@docusaurus/types": "^3.1.1", + "@types/react": "^18.2.64", + "@types/react-helmet": "^6.1.11", "@types/react-router-dom": "^5.3.3", - "typescript": "^4.7.4" + "typescript": "^5.4.2" }, "browserslist": { "production": [ @@ -63,6 +62,6 @@ ] }, "engines": { - "node": ">=16.14" + "node": ">=18.0" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 73364a5b7..5c611daee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,20 +12,20 @@ importers: specifier: ^7.22.15 version: 7.22.15(@babel/core@7.23.9) '@docusaurus/core': - specifier: ^2.4.3 - version: 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) + specifier: ^3.1.1 + version: 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/plugin-content-docs': - specifier: ^2.4.3 - version: 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) + specifier: ^3.1.1 + version: 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/plugin-google-gtag': - specifier: ^2.4.3 - version: 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) + specifier: ^3.1.1 + version: 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/preset-classic': - specifier: ^2.4.3 - version: 2.4.3(@algolia/client-search@4.19.1)(@types/react@18.2.21)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.7.0)(typescript@4.7.4) + specifier: ^3.1.1 + version: 3.1.1(@algolia/client-search@4.19.1)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.7.0)(typescript@5.4.2) '@docusaurus/theme-common': - specifier: ^2.4.3 - version: 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) + specifier: ^3.1.1 + version: 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@fortawesome/fontawesome-svg-core': specifier: ^6.5.1 version: 6.5.1 @@ -40,13 +40,13 @@ importers: version: 6.5.1 '@fortawesome/react-fontawesome': specifier: ^0.2.0 - version: 0.2.0(@fortawesome/fontawesome-svg-core@6.5.1)(react@17.0.2) + version: 0.2.0(@fortawesome/fontawesome-svg-core@6.5.1)(react@18.2.0) '@giscus/react': specifier: ^2.4.0 - version: 2.4.0(react-dom@17.0.2)(react@17.0.2) + version: 2.4.0(react-dom@18.2.0)(react@18.2.0) '@mdx-js/react': - specifier: ^1.6.22 - version: 1.6.22(react@17.0.2) + specifier: ^3.0.1 + version: 3.0.1(@types/react@18.2.65)(react@18.2.0) clsx: specifier: ^1.2.1 version: 1.2.1 @@ -55,56 +55,53 @@ importers: version: 3.2.0 docusaurus-plugin-sass: specifier: ^0.2.5 - version: 0.2.5(@docusaurus/core@2.4.3)(sass@1.68.0)(webpack@5.88.2) + version: 0.2.5(@docusaurus/core@3.1.1)(sass@1.71.1)(webpack@5.88.2) docusaurus-plugin-sentry: - specifier: 1.1.0 - version: 1.1.0(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) + specifier: 2.0.0 + version: 2.0.0(@docusaurus/core@3.1.1)(react-dom@18.2.0)(react@18.2.0) lodash: specifier: ^4.17.21 version: 4.17.21 prism-react-renderer: - specifier: ^1.3.5 - version: 1.3.5(react@17.0.2) + specifier: ^2.3.1 + version: 2.3.1(react@18.2.0) prismjs: specifier: ^1.29.0 version: 1.29.0 react: - specifier: ^17.0.2 - version: 17.0.2 + specifier: ^18.2.0 + version: 18.2.0 react-dom: - specifier: ^17.0.2 - version: 17.0.2(react@17.0.2) - remark-shiki-twoslash: - specifier: ^3.1.3 - version: 3.1.3(typescript@4.7.4) + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) sass: - specifier: ^1.68.0 - version: 1.68.0 + specifier: ^1.71.0 + version: 1.71.1 styled-components: specifier: ^6.0.8 - version: 6.0.8(react-dom@17.0.2)(react@17.0.2) + version: 6.0.8(react-dom@18.2.0)(react@18.2.0) devDependencies: '@docusaurus/module-type-aliases': - specifier: 2.4.1 - version: 2.4.1(react-dom@17.0.2)(react@17.0.2) + specifier: 3.1.1 + version: 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/tsconfig': + specifier: ^3.1.1 + version: 3.1.1 '@docusaurus/types': - specifier: ^2.4.3 - version: 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@tsconfig/docusaurus': - specifier: ^1.0.5 - version: 1.0.5 + specifier: ^3.1.1 + version: 3.1.1(react-dom@18.2.0)(react@18.2.0) '@types/react': - specifier: ^18.2.21 - version: 18.2.21 + specifier: ^18.2.64 + version: 18.2.65 '@types/react-helmet': - specifier: ^6.1.6 - version: 6.1.6 + specifier: ^6.1.11 + version: 6.1.11 '@types/react-router-dom': specifier: ^5.3.3 version: 5.3.3 typescript: - specifier: ^4.7.4 - version: 4.7.4 + specifier: ^5.4.2 + version: 5.4.2 plugins/crawler: dependencies: @@ -286,12 +283,6 @@ packages: chokidar: 3.5.3 dev: false - /@babel/code-frame@7.10.4: - resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} - dependencies: - '@babel/highlight': 7.23.4 - dev: false - /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -318,30 +309,6 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/core@7.12.9: - resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.10 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.12.9) - '@babel/helpers': 7.22.11 - '@babel/parser': 7.22.13 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.11 - '@babel/types': 7.23.0 - convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@6.1.0) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - lodash: 4.17.21 - resolve: 1.22.4 - semver: 5.7.2 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/core@7.22.11: resolution: {integrity: sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==} engines: {node: '>=6.9.0'} @@ -357,7 +324,7 @@ packages: '@babel/traverse': 7.22.11 '@babel/types': 7.23.0 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -380,7 +347,7 @@ packages: '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -512,7 +479,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-compilation-targets': 7.22.10 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.4 transitivePeerDependencies: @@ -527,7 +494,7 @@ packages: '@babel/core': 7.23.9 '@babel/helper-compilation-targets': 7.22.10 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.4 transitivePeerDependencies: @@ -588,20 +555,6 @@ packages: '@babel/types': 7.23.0 dev: false - /@babel/helper-module-transforms@7.22.9(@babel/core@7.12.9): - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: false - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.11): resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} engines: {node: '>=6.9.0'} @@ -651,10 +604,6 @@ packages: '@babel/types': 7.23.0 dev: false - /@babel/helper-plugin-utils@7.10.4: - resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} - dev: false - /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} @@ -885,18 +834,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-proposal-object-rest-spread@7.12.1(@babel/core@7.12.9): - resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.12.9) - dev: false - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.22.11): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} @@ -1098,15 +1035,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-jsx@7.12.1(@babel/core@7.12.9): - resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} @@ -1181,15 +1109,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.9): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.11): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -2072,16 +1991,6 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) dev: false - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.12.9): - resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} engines: {node: '>=6.9.0'} @@ -2170,16 +2079,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-react-constant-elements@7.22.5(@babel/core@7.22.11): - resolution: {integrity: sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - /@babel/plugin-transform-react-constant-elements@7.22.5(@babel/core@7.23.9): resolution: {integrity: sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==} engines: {node: '>=6.9.0'} @@ -2322,23 +2221,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-runtime@7.22.10(@babel/core@7.22.11): - resolution: {integrity: sha512-RchI7HePu1eu0CYNKHHHQdfenZcM4nz8rew5B1VWqeRKdcwW5aQ5HeG9eTUbWiAS1UrmHVLmoxTWHt3iLD/NhA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.11) - babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.11) - babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.11) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-runtime@7.22.10(@babel/core@7.23.9): resolution: {integrity: sha512-RchI7HePu1eu0CYNKHHHQdfenZcM4nz8rew5B1VWqeRKdcwW5aQ5HeG9eTUbWiAS1UrmHVLmoxTWHt3iLD/NhA==} engines: {node: '>=6.9.0'} @@ -2880,7 +2762,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.22.13 '@babel/types': 7.23.0 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2898,7 +2780,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2938,7 +2820,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.19.1)(@types/react@18.2.21)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.7.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.19.1)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.7.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -2958,22 +2840,22 @@ packages: '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.19.1)(algoliasearch@4.19.1)(search-insights@2.7.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.19.1)(algoliasearch@4.19.1) '@docsearch/css': 3.5.2 - '@types/react': 18.2.21 + '@types/react': 18.2.65 algoliasearch: 4.19.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) search-insights: 2.7.0 transitivePeerDependencies: - '@algolia/client-search' dev: false - /@docusaurus/core@2.0.0-beta.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-vzKmQsvOCte9odf0ZRU2h5UzdI1km5D0NU3Ee6xn06VydYZ169B1IF5KV1LWHSYklnsEmzizJ/jeopFCry0cGg==} - engines: {node: '>=12.13.0'} + /@docusaurus/core@3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-2nQfKFcf+MLEM7JXsXwQxPOmQAR6ytKMZVSx7tVi9HEm9WtfwBH1fp6bn8Gj4zLUhjWKCLoysQ9/Wm+EZCQ4yQ==} + engines: {node: '>=18.0'} hasBin: true peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: '@babel/core': 7.23.9 '@babel/generator': 7.23.6 @@ -2985,121 +2867,17 @@ packages: '@babel/runtime': 7.22.11 '@babel/runtime-corejs3': 7.22.11 '@babel/traverse': 7.23.9 - '@docusaurus/cssnano-preset': 2.0.0-beta.3 - '@docusaurus/react-loadable': 5.5.0(react@17.0.2) - '@docusaurus/types': 2.0.0-beta.3 - '@docusaurus/utils': 2.0.0-beta.3 - '@docusaurus/utils-common': 2.0.0-beta.3 - '@docusaurus/utils-validation': 2.0.0-beta.3 - '@slorber/static-site-generator-webpack-plugin': 4.0.7 - '@svgr/webpack': 5.5.0 - autoprefixer: 10.4.15(postcss@8.4.29) - babel-loader: 8.3.0(@babel/core@7.23.9)(webpack@5.88.2) - babel-plugin-dynamic-import-node: 2.3.0 - boxen: 5.1.2 - chalk: 4.1.2 - chokidar: 3.5.3 - clean-css: 5.3.2 - commander: 5.1.0 - copy-webpack-plugin: 9.1.0(webpack@5.88.2) - core-js: 3.32.1 - css-loader: 5.2.7(webpack@5.88.2) - css-minimizer-webpack-plugin: 3.4.1(clean-css@5.3.2)(webpack@5.88.2) - cssnano: 5.1.15(postcss@8.4.29) - del: 6.1.1 - detect-port: 1.5.1 - escape-html: 1.0.3 - eta: 1.14.2 - express: 4.18.2(supports-color@6.1.0) - file-loader: 6.2.0(webpack@5.88.2) - fs-extra: 10.1.0 - github-slugger: 1.5.0 - globby: 11.1.0 - html-minifier-terser: 5.1.1 - html-tags: 3.3.1 - html-webpack-plugin: 5.5.3(webpack@5.88.2) - import-fresh: 3.3.0 - is-root: 2.1.0 - leven: 3.1.0 - lodash: 4.17.21 - mini-css-extract-plugin: 1.6.2(webpack@5.88.2) - module-alias: 2.2.3 - nprogress: 0.2.0 - postcss: 8.4.29 - postcss-loader: 5.3.0(postcss@8.4.29)(webpack@5.88.2) - prompts: 2.4.2 - react: 17.0.2 - react-dev-utils: 11.0.4(typescript@4.7.4)(webpack@5.88.2) - react-dom: 17.0.2(react@17.0.2) - react-error-overlay: 6.0.11 - react-helmet: 6.1.0(react@17.0.2) - react-loadable: 5.5.0(react@17.0.2) - react-loadable-ssr-addon-v5-slorber: 1.0.1(react-loadable@5.5.0)(webpack@5.88.2) - react-router: 5.3.4(react@17.0.2) - react-router-config: 5.1.1(react-router@5.3.4)(react@17.0.2) - react-router-dom: 5.3.4(react@17.0.2) - resolve-pathname: 3.0.0 - rtl-detect: 1.0.4 - semver: 7.5.4 - serve-handler: 6.1.5 - shelljs: 0.8.5 - std-env: 2.3.1 - strip-ansi: 6.0.1 - terser-webpack-plugin: 5.3.9(webpack@5.88.2) - tslib: 2.6.2 - update-notifier: 5.1.0 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.88.2) - wait-on: 5.3.0 - webpack: 5.88.2 - webpack-bundle-analyzer: 4.9.0 - webpack-dev-server: 3.11.3(webpack@5.88.2) - webpack-merge: 5.9.0 - webpackbar: 5.0.2(webpack@5.88.2) - transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - bufferutil - - csso - - debug - - esbuild - - eslint - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/core@2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-dWH5P7cgeNSIg9ufReX6gaCl/TmrGKD38Orbwuz05WPhAQtFXHd5B8Qym1TiXfvUNvwoYKkAJOJuGe8ou0Z7PA==} - engines: {node: '>=16.14'} - hasBin: true - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/generator': 7.22.10 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-transform-runtime': 7.22.10(@babel/core@7.22.11) - '@babel/preset-env': 7.22.10(@babel/core@7.22.11) - '@babel/preset-react': 7.22.5(@babel/core@7.22.11) - '@babel/preset-typescript': 7.22.11(@babel/core@7.22.11) - '@babel/runtime': 7.22.11 - '@babel/runtime-corejs3': 7.22.11 - '@babel/traverse': 7.22.11 - '@docusaurus/cssnano-preset': 2.4.3 - '@docusaurus/logger': 2.4.3 - '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/react-loadable': 5.5.2(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) - '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/cssnano-preset': 3.1.1 + '@docusaurus/logger': 3.1.1 + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/react-loadable': 5.5.2(react@18.2.0) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.5.1 autoprefixer: 10.4.15(postcss@8.4.29) - babel-loader: 8.3.0(@babel/core@7.22.11)(webpack@5.88.2) + babel-loader: 9.1.3(@babel/core@7.23.9)(webpack@5.88.2) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 @@ -3118,35 +2896,33 @@ packages: escape-html: 1.0.3 eta: 2.2.0 file-loader: 6.2.0(webpack@5.88.2) - fs-extra: 10.1.0 - html-minifier-terser: 6.1.0 + fs-extra: 11.2.0 + html-minifier-terser: 7.2.0 html-tags: 3.3.1 html-webpack-plugin: 5.5.3(webpack@5.88.2) - import-fresh: 3.3.0 leven: 3.1.0 lodash: 4.17.21 mini-css-extract-plugin: 2.7.6(webpack@5.88.2) postcss: 8.4.29 postcss-loader: 7.3.3(postcss@8.4.29)(webpack@5.88.2) prompts: 2.4.2 - react: 17.0.2 - react-dev-utils: 12.0.1(typescript@4.7.4)(webpack@5.88.2) - react-dom: 17.0.2(react@17.0.2) - react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) - react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) + react: 18.2.0 + react-dev-utils: 12.0.1(typescript@5.4.2)(webpack@5.88.2) + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.88.2) - react-router: 5.3.4(react@17.0.2) - react-router-config: 5.1.1(react-router@5.3.4)(react@17.0.2) - react-router-dom: 5.3.4(react@17.0.2) + react-router: 5.3.4(react@18.2.0) + react-router-config: 5.1.1(react-router@5.3.4)(react@18.2.0) + react-router-dom: 5.3.4(react@18.2.0) rtl-detect: 1.0.4 semver: 7.5.4 serve-handler: 6.1.5 shelljs: 0.8.5 terser-webpack-plugin: 5.3.9(webpack@5.88.2) tslib: 2.6.2 - update-notifier: 5.1.0 + update-notifier: 6.0.2 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.88.2) - wait-on: 6.0.1 webpack: 5.88.2 webpack-bundle-analyzer: 4.9.0 webpack-dev-server: 4.15.1(webpack@5.88.2) @@ -3171,17 +2947,9 @@ packages: - webpack-cli dev: false - /@docusaurus/cssnano-preset@2.0.0-beta.3: - resolution: {integrity: sha512-k7EkNPluB+TV++oZB8Je4EQ6Xs6cR0SvgIU9vdXm00qyPCu38MMfRwSY4HnsVUV797T/fQUD91zkuwhyXCUGLA==} - dependencies: - cssnano-preset-advanced: 5.3.10(postcss@8.4.29) - postcss: 8.4.29 - postcss-sort-media-queries: 3.12.13(postcss@8.4.29) - dev: false - - /@docusaurus/cssnano-preset@2.4.3: - resolution: {integrity: sha512-ZvGSRCi7z9wLnZrXNPG6DmVPHdKGd8dIn9pYbEOFiYihfv4uDR3UtxogmKf+rT8ZlKFf5Lqne8E8nt08zNM8CA==} - engines: {node: '>=16.14'} + /@docusaurus/cssnano-preset@3.1.1: + resolution: {integrity: sha512-LnoIDjJWbirdbVZDMq+4hwmrTl2yHDnBf9MLG9qyExeAE3ac35s4yUhJI8yyTCdixzNfKit4cbXblzzqMu4+8g==} + engines: {node: '>=18.0'} dependencies: cssnano-preset-advanced: 5.3.10(postcss@8.4.29) postcss: 8.4.29 @@ -3189,39 +2957,48 @@ packages: tslib: 2.6.2 dev: false - /@docusaurus/logger@2.4.3: - resolution: {integrity: sha512-Zxws7r3yLufk9xM1zq9ged0YHs65mlRmtsobnFkdZTxWXdTYlWWLWdKyNKAsVC+D7zg+pv2fGbyabdOnyZOM3w==} - engines: {node: '>=16.14'} + /@docusaurus/logger@3.1.1: + resolution: {integrity: sha512-BjkNDpQzewcTnST8trx4idSoAla6zZ3w22NqM/UMcFtvYJgmoE4layuTzlfql3VFPNuivvj7BOExa/+21y4X2Q==} + engines: {node: '>=18.0'} dependencies: chalk: 4.1.2 tslib: 2.6.2 dev: false - /@docusaurus/mdx-loader@2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-b1+fDnWtl3GiqkL0BRjYtc94FZrcDDBV1j8446+4tptB9BAOlePwG2p/pK6vGvfL53lkOsszXMghr2g67M0vCw==} - engines: {node: '>=16.14'} + /@docusaurus/mdx-loader@3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-xN2IccH9+sv7TmxwsDJNS97BHdmlqWwho+kIVY4tcCXkp+k4QuzvWBeunIMzeayY4Fu13A6sAjHGv5qm72KyGA==} + engines: {node: '>=18.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@babel/parser': 7.22.13 - '@babel/traverse': 7.22.11 - '@docusaurus/logger': 2.4.3 - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) - '@mdx-js/mdx': 1.6.22 + '@babel/parser': 7.23.9 + '@babel/traverse': 7.23.9 + '@docusaurus/logger': 3.1.1 + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + '@mdx-js/mdx': 3.0.1 + '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 + estree-util-value-to-estree: 3.0.1 file-loader: 6.2.0(webpack@5.88.2) - fs-extra: 10.1.0 + fs-extra: 11.2.0 image-size: 1.0.2 - mdast-util-to-string: 2.0.0 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - remark-emoji: 2.2.0 + mdast-util-mdx: 3.0.0 + mdast-util-to-string: 4.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + rehype-raw: 7.0.0 + remark-directive: 3.0.0 + remark-emoji: 4.0.1 + remark-frontmatter: 5.0.0 + remark-gfm: 4.0.0 stringify-object: 3.3.0 tslib: 2.6.2 - unified: 9.2.2 - unist-util-visit: 2.0.3 + unified: 11.0.4 + unist-util-visit: 5.0.0 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.88.2) + vfile: 6.0.1 webpack: 5.88.2 transitivePeerDependencies: - '@docusaurus/types' @@ -3232,75 +3009,53 @@ packages: - webpack-cli dev: false - /@docusaurus/module-type-aliases@2.4.1(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-gLBuIFM8Dp2XOCWffUDSjtxY7jQgKvYujt7Mx5s4FCTfoL5dN1EVbnrn+O2Wvh8b0a77D57qoIDY7ghgmatR1A==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@docusaurus/react-loadable': 5.5.2(react@17.0.2) - '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) - '@types/history': 4.7.11 - '@types/react': 18.2.21 - '@types/react-router-config': 5.0.7 - '@types/react-router-dom': 5.3.3 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) - react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - dev: true - - /@docusaurus/module-type-aliases@2.4.3(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-cwkBkt1UCiduuvEAo7XZY01dJfRn7UR/75mBgOdb1hKknhrabJZ8YH+7savd/y9kLExPyrhe0QwdS9GuzsRRIA==} + /@docusaurus/module-type-aliases@3.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-xBJyx0TMfAfVZ9ZeIOb1awdXgR4YJMocIEzTps91rq+hJDFJgJaylDtmoRhUxkwuYmNK1GJpW95b7DLztSBJ3A==} peerDependencies: react: '*' react-dom: '*' dependencies: - '@docusaurus/react-loadable': 5.5.2(react@17.0.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/react-loadable': 5.5.2(react@18.2.0) + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) '@types/history': 4.7.11 - '@types/react': 18.2.21 + '@types/react': 18.2.65 '@types/react-router-config': 5.0.7 '@types/react-router-dom': 5.3.3 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) - react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) transitivePeerDependencies: - '@swc/core' - esbuild + - supports-color - uglify-js - webpack-cli - dev: false - /@docusaurus/plugin-content-blog@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-PVhypqaA0t98zVDpOeTqWUTvRqCEjJubtfFUQ7zJNYdbYTbS/E/ytq6zbLVsN/dImvemtO/5JQgjLxsh8XLo8Q==} - engines: {node: '>=16.14'} + /@docusaurus/plugin-content-blog@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-ew/3VtVoG3emoAKmoZl7oKe1zdFOsI0NbcHS26kIxt2Z8vcXKCUgK9jJJrz0TbOipyETPhqwq4nbitrY3baibg==} + engines: {node: '>=18.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/logger': 2.4.3 - '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) - '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/logger': 3.1.1 + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) cheerio: 1.0.0-rc.12 feed: 4.2.2 - fs-extra: 10.1.0 + fs-extra: 11.2.0 lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) reading-time: 1.5.0 + srcset: 4.0.0 tslib: 2.6.2 - unist-util-visit: 2.0.3 + unist-util-visit: 5.0.0 utility-types: 3.10.0 webpack: 5.88.2 transitivePeerDependencies: @@ -3321,28 +3076,27 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-N7Po2LSH6UejQhzTCsvuX5NOzlC+HiXOVvofnEPj0WhMu1etpLEXE6a4aTxrtg95lQ5kf0xUIdjX9sh3d3G76A==} - engines: {node: '>=16.14'} + /@docusaurus/plugin-content-docs@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-lhFq4E874zw0UOH7ujzxnCayOyAt0f9YPVYSb9ohxrdCM8B4szxitUw9rIX4V9JLLHVoqIJb6k+lJJ1jrcGJ0A==} + engines: {node: '>=18.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/logger': 2.4.3 - '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/module-type-aliases': 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/logger': 3.1.1 + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) '@types/react-router-config': 5.0.7 combine-promises: 1.2.0 - fs-extra: 10.1.0 - import-fresh: 3.3.0 + fs-extra: 11.2.0 js-yaml: 4.1.0 lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 utility-types: 3.10.0 webpack: 5.88.2 @@ -3364,21 +3118,21 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-txtDVz7y3zGk67q0HjG0gRttVPodkHqE0bpJ+7dOaTH40CQFLSh7+aBeGnPOTl+oCPG+hxkim4SndqPqXjQ8Bg==} - engines: {node: '>=16.14'} + /@docusaurus/plugin-content-pages@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-NQHncNRAJbyLtgTim9GlEnNYsFhuCxaCNkMwikuxLTiGIPH7r/jpb7O3f3jUMYMebZZZrDq5S7om9a6rvB/YCA==} + engines: {node: '>=18.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) - fs-extra: 10.1.0 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + fs-extra: 11.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 webpack: 5.88.2 transitivePeerDependencies: @@ -3399,30 +3153,28 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@2.4.3(@types/react@18.2.21)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-LkUbuq3zCmINlFb+gAd4ZvYr+bPAzMC0hwND4F7V9bZ852dCX8YoWyovVUBKq4er1XsOwSQaHmNGtObtn8Av8Q==} - engines: {node: '>=16.14'} + /@docusaurus/plugin-debug@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-xWeMkueM9wE/8LVvl4+Qf1WqwXmreMjI5Kgr7GYCDoJ8zu4kD+KaMhrh7py7MNM38IFvU1RfrGKacCEe2DRRfQ==} + engines: {node: '>=18.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) - fs-extra: 10.1.0 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-json-view: 1.21.3(@types/react@18.2.21)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + fs-extra: 11.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-json-view-lite: 1.2.1(react@18.2.0) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' - '@swc/core' - '@swc/css' - - '@types/react' - bufferutil - csso - debug - - encoding - esbuild - eslint - lightningcss @@ -3434,18 +3186,18 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-KzBV3k8lDkWOhg/oYGxlK5o9bOwX7KpPc/FTWoB+SfKhlHfhq7qcQdMi1elAaVEIop8tgK6gD1E58Q+XC6otSQ==} - engines: {node: '>=16.14'} + /@docusaurus/plugin-google-analytics@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-+q2UpWTqVi8GdlLoSlD5bS/YpxW+QMoBwrPrUH/NpvpuOi0Of7MTotsQf9JWd3hymZxl2uu1o3PIrbpxfeDFDQ==} + engines: {node: '>=18.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' @@ -3465,18 +3217,19 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-5FMg0rT7sDy4i9AGsvJC71MQrqQZwgLNdDetLEGDHLfSHLvJhQbTCUGbGXknUgWXQJckcV/AILYeJy+HhxeIFA==} - engines: {node: '>=16.14'} + /@docusaurus/plugin-google-gtag@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-0mMPiBBlQ5LFHTtjxuvt/6yzh8v7OxLi3CbeEsxXZpUzcKO/GC7UA1VOWUoBeQzQL508J12HTAlR3IBU9OofSw==} + engines: {node: '>=18.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + '@types/gtag.js': 0.0.12 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' @@ -3496,18 +3249,18 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-1jTzp71yDGuQiX9Bi0pVp3alArV0LSnHXempvQTxwCGAEzUWWaBg4d8pocAlTpbP9aULQQqhgzrs8hgTRPOM0A==} - engines: {node: '>=16.14'} + /@docusaurus/plugin-google-tag-manager@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-d07bsrMLdDIryDtY17DgqYUbjkswZQr8cLWl4tzXrt5OR/T/zxC1SYKajzB3fd87zTu5W5klV5GmUwcNSMXQXA==} + engines: {node: '>=18.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' @@ -3527,22 +3280,22 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-LRQYrK1oH1rNfr4YvWBmRzTL0LN9UAPxBbghgeFRBm5yloF6P+zv1tm2pe2hQTX/QP5bSKdnajCvfnScgKXMZQ==} - engines: {node: '>=16.14'} + /@docusaurus/plugin-sitemap@3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-iJ4hCaMmDaUqRv131XJdt/C/jJQx8UreDWTRqZKtNydvZVh/o4yXGRRFOplea1D9b/zpwL1Y+ZDwX7xMhIOTmg==} + engines: {node: '>=18.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/logger': 2.4.3 - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) - '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) - fs-extra: 10.1.0 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/logger': 3.1.1 + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + fs-extra: 11.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) sitemap: 7.1.1 tslib: 2.6.2 transitivePeerDependencies: @@ -3563,28 +3316,28 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@2.4.3(@algolia/client-search@4.19.1)(@types/react@18.2.21)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.7.0)(typescript@4.7.4): - resolution: {integrity: sha512-tRyMliepY11Ym6hB1rAFSNGwQDpmszvWYJvlK1E+md4SW8i6ylNHtpZjaYFff9Mdk3i/Pg8ItQq9P0daOJAvQw==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/plugin-content-blog': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/plugin-content-docs': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/plugin-content-pages': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/plugin-debug': 2.4.3(@types/react@18.2.21)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/plugin-google-analytics': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/plugin-google-gtag': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/plugin-google-tag-manager': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/plugin-sitemap': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/theme-classic': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/theme-common': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/theme-search-algolia': 2.4.3(@algolia/client-search@4.19.1)(@docusaurus/types@2.4.3)(@types/react@18.2.21)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.7.0)(typescript@4.7.4) - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + /@docusaurus/preset-classic@3.1.1(@algolia/client-search@4.19.1)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.7.0)(typescript@5.4.2): + resolution: {integrity: sha512-jG4ys/hWYf69iaN/xOmF+3kjs4Nnz1Ay3CjFLDtYa8KdxbmUhArA9HmP26ru5N0wbVWhY+6kmpYhTJpez5wTyg==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-blog': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-pages': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-debug': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-google-analytics': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-google-gtag': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-google-tag-manager': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-sitemap': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-classic': 3.1.1(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-search-algolia': 3.1.1(@algolia/client-search@4.19.1)(@docusaurus/types@3.1.1)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.7.0)(typescript@5.4.2) + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@algolia/client-search' - '@parcel/css' @@ -3594,7 +3347,6 @@ packages: - bufferutil - csso - debug - - encoding - esbuild - eslint - lightningcss @@ -3607,62 +3359,54 @@ packages: - webpack-cli dev: false - /@docusaurus/react-loadable@5.5.0(react@17.0.2): - resolution: {integrity: sha512-Ld/kwUE6yATIOTLq3JCsWiTa/drisajwKqBQ2Rw6IcT+sFsKfYek8F2jSH8f68AT73xX97UehduZeCSlnuCBIg==} - peerDependencies: - react: '*' - dependencies: - prop-types: 15.8.1 - react: 17.0.2 - dev: false - - /@docusaurus/react-loadable@5.5.2(react@17.0.2): + /@docusaurus/react-loadable@5.5.2(react@18.2.0): resolution: {integrity: sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==} peerDependencies: react: '*' dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.65 prop-types: 15.8.1 - react: 17.0.2 - - /@docusaurus/theme-classic@2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-QKRAJPSGPfDY2yCiPMIVyr+MqwZCIV2lxNzqbyUW0YkrlmdzzP3WuQJPMGLCjWgQp/5c9kpWMvMxjhpZx1R32Q==} - engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/module-type-aliases': 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/plugin-content-blog': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/plugin-content-docs': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/plugin-content-pages': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/theme-common': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/theme-translations': 2.4.3 - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) - '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) - '@mdx-js/react': 1.6.22(react@17.0.2) - clsx: 1.2.1 + react: 18.2.0 + + /@docusaurus/theme-classic@3.1.1(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-GiPE/jbWM8Qv1A14lk6s9fhc0LhPEQ00eIczRO4QL2nAQJZXkjPG6zaVx+1cZxPFWbAsqSjKe2lqkwF3fGkQ7Q==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/plugin-content-blog': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-pages': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-translations': 3.1.1 + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + '@mdx-js/react': 3.0.1(@types/react@18.2.65)(react@18.2.0) + clsx: 2.1.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.29 - prism-react-renderer: 1.3.5(react@17.0.2) + prism-react-renderer: 2.3.1(react@18.2.0) prismjs: 1.29.0 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-router-dom: 5.3.4(react@17.0.2) - rtlcss: 3.5.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router-dom: 5.3.4(react@18.2.0) + rtlcss: 4.1.1 tslib: 2.6.2 utility-types: 3.10.0 transitivePeerDependencies: - '@parcel/css' - '@swc/core' - '@swc/css' + - '@types/react' - bufferutil - csso - debug @@ -3677,30 +3421,29 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-7KaDJBXKBVGXw5WOVt84FtN8czGWhM0lbyWEZXGp8AFfL6sZQfRTluFp4QriR97qwzSyOfQb+nzcDZZU4tezUw==} - engines: {node: '>=16.14'} + /@docusaurus/theme-common@3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-38urZfeMhN70YaXkwIGXmcUcv2CEYK/2l4b05GkJPrbEbgpsIZM3Xc+Js2ehBGGZmfZq8GjjQ5RNQYG+MYzCYg==} + engines: {node: '>=18.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/mdx-loader': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/module-type-aliases': 2.4.3(react-dom@17.0.2)(react@17.0.2) - '@docusaurus/plugin-content-blog': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/plugin-content-docs': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/plugin-content-pages': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) - '@docusaurus/utils-common': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/plugin-content-blog': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-pages': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) '@types/history': 4.7.11 - '@types/react': 18.2.21 + '@types/react': 18.2.65 '@types/react-router-config': 5.0.7 - clsx: 1.2.1 + clsx: 2.1.0 parse-numeric-range: 1.3.0 - prism-react-renderer: 1.3.5(react@17.0.2) - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + prism-react-renderer: 2.3.1(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 - use-sync-external-store: 1.2.0(react@17.0.2) utility-types: 3.10.0 transitivePeerDependencies: - '@docusaurus/types' @@ -3721,29 +3464,29 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@2.4.3(@algolia/client-search@4.19.1)(@docusaurus/types@2.4.3)(@types/react@18.2.21)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.7.0)(typescript@4.7.4): - resolution: {integrity: sha512-jziq4f6YVUB5hZOB85ELATwnxBz/RmSLD3ksGQOLDPKVzat4pmI8tddNWtriPpxR04BNT+ZfpPUMFkNFetSW1Q==} - engines: {node: '>=16.14'} + /@docusaurus/theme-search-algolia@3.1.1(@algolia/client-search@4.19.1)(@docusaurus/types@3.1.1)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.7.0)(typescript@5.4.2): + resolution: {integrity: sha512-tBH9VY5EpRctVdaAhT+b1BY8y5dyHVZGFXyCHgTrvcXQy5CV4q7serEX7U3SveNT9zksmchPyct6i1sFDC4Z5g==} + engines: {node: '>=18.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.19.1)(@types/react@18.2.21)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.7.0) - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/logger': 2.4.3 - '@docusaurus/plugin-content-docs': 2.4.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/theme-common': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - '@docusaurus/theme-translations': 2.4.3 - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) - '@docusaurus/utils-validation': 2.4.3(@docusaurus/types@2.4.3) + '@docsearch/react': 3.5.2(@algolia/client-search@4.19.1)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.7.0) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/logger': 3.1.1 + '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-translations': 3.1.1 + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) algoliasearch: 4.19.1 algoliasearch-helper: 3.14.0(algoliasearch@4.19.1) - clsx: 1.2.1 + clsx: 2.1.0 eta: 2.2.0 - fs-extra: 10.1.0 + fs-extra: 11.2.0 lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 utility-types: 3.10.0 transitivePeerDependencies: @@ -3768,121 +3511,61 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-translations@2.4.3: - resolution: {integrity: sha512-H4D+lbZbjbKNS/Zw1Lel64PioUAIT3cLYYJLUf3KkuO/oc9e0QCVhIYVtUI2SfBCF2NNdlyhBDQEEMygsCedIg==} - engines: {node: '>=16.14'} + /@docusaurus/theme-translations@3.1.1: + resolution: {integrity: sha512-xvWQFwjxHphpJq5fgk37FXCDdAa2o+r7FX8IpMg+bGZBNXyWBu3MjZ+G4+eUVNpDhVinTc+j6ucL0Ain5KCGrg==} + engines: {node: '>=18.0'} dependencies: - fs-extra: 10.1.0 + fs-extra: 11.2.0 tslib: 2.6.2 dev: false - /@docusaurus/types@2.0.0-beta.3: - resolution: {integrity: sha512-ivQ6L1ahju06ldTvFsZLQxcN6DP32iIB7DscxWVRqP0eyuyX2xAy+jrASqih3lB8lyw0JJaaDEeVE5fjroAQ/Q==} - dependencies: - commander: 5.1.0 - joi: 17.10.0 - querystring: 0.2.0 - webpack: 5.88.2 - webpack-merge: 5.9.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/types@2.4.1(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-0R+cbhpMkhbRXX138UOc/2XZFF8hiZa6ooZAEEJFp5scytzCw4tC1gChMFXrpa3d2tYE6AX8IrOEpSonLmfQuQ==} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 - dependencies: - '@types/history': 4.7.11 - '@types/react': 18.2.21 - commander: 5.1.0 - joi: 17.10.0 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) - utility-types: 3.10.0 - webpack: 5.88.2 - webpack-merge: 5.9.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli + /@docusaurus/tsconfig@3.1.1: + resolution: {integrity: sha512-FTBuY3KvaHfMVBgvlPmDQ+KS9Q/bYtVftq2ugou3PgBDJoQmw2aUZ4Sg15HKqLGbfIkxoy9t6cqE4Yw1Ta8Q1A==} dev: true - /@docusaurus/types@2.4.3(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-W6zNLGQqfrp/EoPD0bhb9n7OobP+RHpmvVzpA+Z/IuU3Q63njJM24hmT0GYboovWcDtFmnIJC9wcyx4RVPQscw==} + /@docusaurus/types@3.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-grBqOLnubUecgKFXN9q3uit2HFbCxTWX4Fam3ZFbMN0sWX9wOcDoA7lwdX/8AmeL20Oc4kQvWVgNrsT8bKRvzg==} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: + '@mdx-js/mdx': 3.0.1 '@types/history': 4.7.11 - '@types/react': 18.2.21 + '@types/react': 18.2.65 commander: 5.1.0 joi: 17.10.0 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) utility-types: 3.10.0 webpack: 5.88.2 webpack-merge: 5.9.0 transitivePeerDependencies: - '@swc/core' - esbuild + - supports-color - uglify-js - webpack-cli - /@docusaurus/utils-common@2.0.0-beta.3: - resolution: {integrity: sha512-KJgDN4G2MzJcHy+OR2e/xgEwRy+vX26pzwtjPkRjNf24CPa0BwFbRmR5apbltCgTB10vT6xroStc8Quv/286Cg==} - engines: {node: '>=12.13.0'} - dependencies: - '@docusaurus/types': 2.0.0-beta.3 - tslib: 2.6.2 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/utils-common@2.4.3(@docusaurus/types@2.4.3): - resolution: {integrity: sha512-/jascp4GbLQCPVmcGkPzEQjNaAk3ADVfMtudk49Ggb+131B1WDD6HqlSmDf8MxGdy7Dja2gc+StHf01kiWoTDQ==} - engines: {node: '>=16.14'} + /@docusaurus/utils-common@3.1.1(@docusaurus/types@3.1.1): + resolution: {integrity: sha512-eGne3olsIoNfPug5ixjepZAIxeYFzHHnor55Wb2P57jNbtVaFvij/T+MS8U0dtZRFi50QU+UPmRrXdVUM8uyMg==} + engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' peerDependenciesMeta: '@docusaurus/types': optional: true dependencies: - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) - tslib: 2.6.2 - dev: false - - /@docusaurus/utils-validation@2.0.0-beta.3: - resolution: {integrity: sha512-jGX78NNrxDZFgDjLaa6wuJ/eKDoHdZFG2CVX3uCaIGe1x8eTMG2/e/39GzbZl+W7VHYpW0bzdf/5dFhaKLfQbQ==} - engines: {node: '>=12.13.0'} - dependencies: - '@docusaurus/utils': 2.0.0-beta.3 - chalk: 4.1.2 - joi: 17.10.0 + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) tslib: 2.6.2 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli dev: false - /@docusaurus/utils-validation@2.4.3(@docusaurus/types@2.4.3): - resolution: {integrity: sha512-G2+Vt3WR5E/9drAobP+hhZQMaswRwDlp6qOMi7o7ZypB+VO7N//DZWhZEwhcRGepMDJGQEwtPv7UxtYwPL9PBw==} - engines: {node: '>=16.14'} + /@docusaurus/utils-validation@3.1.1(@docusaurus/types@3.1.1): + resolution: {integrity: sha512-KlY4P9YVDnwL+nExvlIpu79abfEv6ZCHuOX4ZQ+gtip+Wxj0daccdReIWWtqxM/Fb5Cz1nQvUCc7VEtT8IBUAA==} + engines: {node: '>=18.0'} dependencies: - '@docusaurus/logger': 2.4.3 - '@docusaurus/utils': 2.4.3(@docusaurus/types@2.4.3) + '@docusaurus/logger': 3.1.1 + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) joi: 17.10.0 js-yaml: 4.1.0 tslib: 2.6.2 @@ -3895,44 +3578,25 @@ packages: - webpack-cli dev: false - /@docusaurus/utils@2.0.0-beta.3: - resolution: {integrity: sha512-DApc6xcb3CvvsBCfRU6Zk3KoZa4mZfCJA4XRv5zhlhaSb0GFuAo7KQ353RUu6d0eYYylY3GGRABXkxRE1SEClA==} - engines: {node: '>=12.13.0'} - dependencies: - '@docusaurus/types': 2.0.0-beta.3 - '@types/github-slugger': 1.3.0 - chalk: 4.1.2 - escape-string-regexp: 4.0.0 - fs-extra: 10.1.0 - gray-matter: 4.0.3 - lodash: 4.17.21 - resolve-pathname: 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - dev: false - - /@docusaurus/utils@2.4.3(@docusaurus/types@2.4.3): - resolution: {integrity: sha512-fKcXsjrD86Smxv8Pt0TBFqYieZZCPh4cbf9oszUq/AMhZn3ujwpKaVYZACPX8mmjtYx0JOgNx52CREBfiGQB4A==} - engines: {node: '>=16.14'} + /@docusaurus/utils@3.1.1(@docusaurus/types@3.1.1): + resolution: {integrity: sha512-ZJfJa5cJQtRYtqijsPEnAZoduW6sjAQ7ZCWSZavLcV10Fw0Z3gSaPKA/B4micvj2afRZ4gZxT7KfYqe5H8Cetg==} + engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' peerDependenciesMeta: '@docusaurus/types': optional: true dependencies: - '@docusaurus/logger': 2.4.3 - '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/logger': 3.1.1 + '@docusaurus/types': 3.1.1(react-dom@18.2.0)(react@18.2.0) '@svgr/webpack': 6.5.1 escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.88.2) - fs-extra: 10.1.0 + fs-extra: 11.2.0 github-slugger: 1.5.0 globby: 11.1.0 gray-matter: 4.0.3 + jiti: 1.21.0 js-yaml: 4.1.0 lodash: 4.17.21 micromatch: 4.0.5 @@ -4001,7 +3665,7 @@ packages: '@fortawesome/fontawesome-common-types': 6.5.1 dev: false - /@fortawesome/react-fontawesome@0.2.0(@fortawesome/fontawesome-svg-core@6.5.1)(react@17.0.2): + /@fortawesome/react-fontawesome@0.2.0(@fortawesome/fontawesome-svg-core@6.5.1)(react@18.2.0): resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==} peerDependencies: '@fortawesome/fontawesome-svg-core': ~1 || ~6 @@ -4009,18 +3673,18 @@ packages: dependencies: '@fortawesome/fontawesome-svg-core': 6.5.1 prop-types: 15.8.1 - react: 17.0.2 + react: 18.2.0 dev: false - /@giscus/react@2.4.0(react-dom@17.0.2)(react@17.0.2): + /@giscus/react@2.4.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-y8d8qiZ2sBuaXRcgn/ZWfMlRs9bx26p62BU/HEKQQ+IfHo3B/kglgPjX/IqudwlX+DOlHUl1NvtFo9C8Eqo0eQ==} peerDependencies: react: ^16 || ^17 || ^18 react-dom: ^16 || ^17 || ^18 dependencies: giscus: 1.4.0 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false /@hapi/hoek@9.3.0: @@ -4095,42 +3759,44 @@ packages: '@lit-labs/ssr-dom-shim': 1.1.2 dev: false - /@mdx-js/mdx@1.6.22: - resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} + /@mdx-js/mdx@3.0.1: + resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} dependencies: - '@babel/core': 7.12.9 - '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) - '@mdx-js/util': 1.6.22 - babel-plugin-apply-mdx-type-prop: 1.6.22(@babel/core@7.12.9) - babel-plugin-extract-import-names: 1.6.22 - camelcase-css: 2.0.1 - detab: 2.0.4 - hast-util-raw: 6.0.1 - lodash.uniq: 4.5.0 - mdast-util-to-hast: 10.0.1 - remark-footnotes: 2.0.0 - remark-mdx: 1.6.22 - remark-parse: 8.0.3 - remark-squeeze-paragraphs: 4.0.0 - style-to-object: 0.3.0 - unified: 9.2.0 - unist-builder: 2.0.3 - unist-util-visit: 2.0.3 + '@types/estree': 1.0.1 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.11 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-build-jsx: 3.0.1 + estree-util-is-identifier-name: 3.0.0 + estree-util-to-js: 2.0.0 + estree-walker: 3.0.3 + hast-util-to-estree: 3.1.0 + hast-util-to-jsx-runtime: 2.3.0 + markdown-extensions: 2.0.0 + periscopic: 3.1.0 + remark-mdx: 3.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.0 + source-map: 0.7.4 + unified: 11.0.4 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 transitivePeerDependencies: - supports-color - dev: false - /@mdx-js/react@1.6.22(react@17.0.2): - resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} + /@mdx-js/react@3.0.1(@types/react@18.2.65)(react@18.2.0): + resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} peerDependencies: - react: ^16.13.1 || ^17.0.0 + '@types/react': '>=16' + react: '>=16' dependencies: - react: 17.0.2 - dev: false - - /@mdx-js/util@1.6.22: - resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} + '@types/mdx': 2.0.11 + '@types/react': 18.2.65 + react: 18.2.0 dev: false /@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3: @@ -4160,6 +3826,27 @@ packages: fastq: 1.15.0 dev: false + /@pnpm/config.env-replace@1.1.0: + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + dev: false + + /@pnpm/network.ca-file@1.0.2: + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + dependencies: + graceful-fs: 4.2.10 + dev: false + + /@pnpm/npm-conf@2.2.2: + resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} + engines: {node: '>=12'} + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + dev: false + /@polka/url@1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: false @@ -4179,9 +3866,22 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: false - /@sindresorhus/is@0.14.0: - resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} - engines: {node: '>=6'} + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: false + + /@sindresorhus/is@5.6.0: + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + dev: false + + /@slorber/remark-comment@1.0.0: + resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 dev: false /@slorber/static-site-generator-webpack-plugin@4.0.7: @@ -4193,166 +3893,101 @@ packages: webpack-sources: 3.2.3 dev: false - /@svgr/babel-plugin-add-jsx-attribute@5.4.0: - resolution: {integrity: sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==} - engines: {node: '>=10'} - dev: false - - /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.22.11): + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.9): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 - dev: false - - /@svgr/babel-plugin-remove-jsx-attribute@5.4.0: - resolution: {integrity: sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==} - engines: {node: '>=10'} + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.22.11): + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.9): resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 - dev: false - - /@svgr/babel-plugin-remove-jsx-empty-expression@5.0.1: - resolution: {integrity: sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==} - engines: {node: '>=10'} + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.22.11): + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.9): resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 - dev: false - - /@svgr/babel-plugin-replace-jsx-attribute-value@5.0.1: - resolution: {integrity: sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==} - engines: {node: '>=10'} + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.22.11): + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.9): resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 - dev: false - - /@svgr/babel-plugin-svg-dynamic-title@5.4.0: - resolution: {integrity: sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==} - engines: {node: '>=10'} + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.22.11): + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.9): resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 - dev: false - - /@svgr/babel-plugin-svg-em-dimensions@5.4.0: - resolution: {integrity: sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==} - engines: {node: '>=10'} + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.22.11): + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.9): resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 - dev: false - - /@svgr/babel-plugin-transform-react-native-svg@5.4.0: - resolution: {integrity: sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==} - engines: {node: '>=10'} + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.22.11): + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.9): resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 - dev: false - - /@svgr/babel-plugin-transform-svg-component@5.5.0: - resolution: {integrity: sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==} - engines: {node: '>=10'} + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.22.11): + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.9): resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 - dev: false - - /@svgr/babel-preset@5.5.0: - resolution: {integrity: sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==} - engines: {node: '>=10'} - dependencies: - '@svgr/babel-plugin-add-jsx-attribute': 5.4.0 - '@svgr/babel-plugin-remove-jsx-attribute': 5.4.0 - '@svgr/babel-plugin-remove-jsx-empty-expression': 5.0.1 - '@svgr/babel-plugin-replace-jsx-attribute-value': 5.0.1 - '@svgr/babel-plugin-svg-dynamic-title': 5.4.0 - '@svgr/babel-plugin-svg-em-dimensions': 5.4.0 - '@svgr/babel-plugin-transform-react-native-svg': 5.4.0 - '@svgr/babel-plugin-transform-svg-component': 5.5.0 + '@babel/core': 7.23.9 dev: false - /@svgr/babel-preset@6.5.1(@babel/core@7.22.11): + /@svgr/babel-preset@6.5.1(@babel/core@7.23.9): resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.11 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.22.11) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.22.11) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.22.11) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.22.11) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.22.11) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.22.11) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.22.11) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.22.11) - dev: false - - /@svgr/core@5.5.0: - resolution: {integrity: sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==} - engines: {node: '>=10'} - dependencies: - '@svgr/plugin-jsx': 5.5.0 - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.23.9 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.9) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.9) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.9) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.9) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.9) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.9) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.9) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.9) dev: false /@svgr/core@6.5.1: resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.22.11 - '@svgr/babel-preset': 6.5.1(@babel/core@7.22.11) + '@babel/core': 7.23.9 + '@svgr/babel-preset': 6.5.1(@babel/core@7.23.9) '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) camelcase: 6.3.0 cosmiconfig: 7.1.0 @@ -4360,41 +3995,22 @@ packages: - supports-color dev: false - /@svgr/hast-util-to-babel-ast@5.5.0: - resolution: {integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==} - engines: {node: '>=10'} - dependencies: - '@babel/types': 7.23.9 - dev: false - /@svgr/hast-util-to-babel-ast@6.5.1: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.9 entities: 4.5.0 dev: false - /@svgr/plugin-jsx@5.5.0: - resolution: {integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.23.9 - '@svgr/babel-preset': 5.5.0 - '@svgr/hast-util-to-babel-ast': 5.5.0 - svg-parser: 2.0.4 - transitivePeerDependencies: - - supports-color - dev: false - /@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1): resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} engines: {node: '>=10'} peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.22.11 - '@svgr/babel-preset': 6.5.1(@babel/core@7.22.11) + '@babel/core': 7.23.9 + '@svgr/babel-preset': 6.5.1(@babel/core@7.23.9) '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 @@ -4402,15 +4018,6 @@ packages: - supports-color dev: false - /@svgr/plugin-svgo@5.5.0: - resolution: {integrity: sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==} - engines: {node: '>=10'} - dependencies: - cosmiconfig: 7.1.0 - deepmerge: 4.3.1 - svgo: 1.3.2 - dev: false - /@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1): resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} engines: {node: '>=10'} @@ -4423,31 +4030,15 @@ packages: svgo: 2.8.0 dev: false - /@svgr/webpack@5.5.0: - resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==} + /@svgr/webpack@6.5.1: + resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} engines: {node: '>=10'} dependencies: '@babel/core': 7.23.9 '@babel/plugin-transform-react-constant-elements': 7.22.5(@babel/core@7.23.9) '@babel/preset-env': 7.22.10(@babel/core@7.23.9) '@babel/preset-react': 7.22.5(@babel/core@7.23.9) - '@svgr/core': 5.5.0 - '@svgr/plugin-jsx': 5.5.0 - '@svgr/plugin-svgo': 5.5.0 - loader-utils: 2.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@svgr/webpack@6.5.1: - resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.22.11 - '@babel/plugin-transform-react-constant-elements': 7.22.5(@babel/core@7.22.11) - '@babel/preset-env': 7.22.10(@babel/core@7.22.11) - '@babel/preset-react': 7.22.5(@babel/core@7.22.11) - '@babel/preset-typescript': 7.22.11(@babel/core@7.22.11) + '@babel/preset-typescript': 7.22.11(@babel/core@7.23.9) '@svgr/core': 6.5.1 '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) @@ -4455,11 +4046,11 @@ packages: - supports-color dev: false - /@szmarczak/http-timer@1.1.2: - resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} - engines: {node: '>=6'} + /@szmarczak/http-timer@5.0.1: + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} dependencies: - defer-to-connect: 1.1.3 + defer-to-connect: 2.0.1 dev: false /@trysound/sax@0.2.0: @@ -4467,9 +4058,10 @@ packages: engines: {node: '>=10.13.0'} dev: false - /@tsconfig/docusaurus@1.0.5: - resolution: {integrity: sha512-KM/TuJa9fugo67dTGx+ktIqf3fVc077J6jwHu845Hex4EQf7LABlNonP/mohDKT0cmncdtlYVHHF74xR/YpThg==} - dev: true + /@types/acorn@4.0.6: + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + dependencies: + '@types/estree': 1.0.1 /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} @@ -4497,6 +4089,11 @@ packages: '@types/node': 20.5.7 dev: false + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + dependencies: + '@types/ms': 0.7.34 + /@types/eslint-scope@3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: @@ -4509,6 +4106,11 @@ packages: '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 + /@types/estree-jsx@1.0.5: + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + dependencies: + '@types/estree': 1.0.1 + /@types/estree@1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} @@ -4530,22 +4132,14 @@ packages: '@types/serve-static': 1.15.2 dev: false - /@types/github-slugger@1.3.0: - resolution: {integrity: sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g==} + /@types/gtag.js@0.0.12: + resolution: {integrity: sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==} dev: false - /@types/glob@7.2.0: - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 20.5.7 - dev: false - - /@types/hast@2.3.5: - resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==} + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} dependencies: '@types/unist': 2.0.7 - dev: false /@types/history@4.7.11: resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} @@ -4554,6 +4148,10 @@ packages: resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} dev: false + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + dev: false + /@types/http-errors@2.0.1: resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} dev: false @@ -4583,17 +4181,13 @@ packages: /@types/json-schema@7.0.12: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} - /@types/keyv@3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - dependencies: - '@types/node': 20.5.7 - dev: false - - /@types/mdast@3.0.12: - resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} + /@types/mdast@4.0.3: + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} dependencies: '@types/unist': 2.0.7 - dev: false + + /@types/mdx@2.0.11: + resolution: {integrity: sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw==} /@types/mime@1.3.2: resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} @@ -4603,9 +4197,8 @@ packages: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} dev: false - /@types/minimatch@5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - dev: false + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} /@types/node@17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} @@ -4618,17 +4211,13 @@ packages: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false - /@types/parse5@5.0.3: - resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} + /@types/prismjs@1.26.3: + resolution: {integrity: sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==} dev: false /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/q@1.5.8: - resolution: {integrity: sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==} - dev: false - /@types/qs@6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: false @@ -4637,45 +4226,39 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: false - /@types/react-helmet@6.1.6: - resolution: {integrity: sha512-ZKcoOdW/Tg+kiUbkFCBtvDw0k3nD4HJ/h/B9yWxN4uDO8OkRksWTO+EL+z/Qu3aHTeTll3Ro0Cc/8UhwBCMG5A==} + /@types/react-helmet@6.1.11: + resolution: {integrity: sha512-0QcdGLddTERotCXo3VFlUSWO3ztraw8nZ6e3zJSgG7apwV5xt+pJUS8ewPBqT4NYB1optGLprNQzFleIY84u/g==} dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.65 dev: true /@types/react-router-config@5.0.7: resolution: {integrity: sha512-pFFVXUIydHlcJP6wJm7sDii5mD/bCmmAY0wQzq+M+uX7bqS95AQqHZWP1iNMKrWVQSuHIzj5qi9BvrtLX2/T4w==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.21 + '@types/react': 18.2.65 '@types/react-router': 5.1.20 /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.21 + '@types/react': 18.2.65 '@types/react-router': 5.1.20 /@types/react-router@5.1.20: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.21 + '@types/react': 18.2.65 - /@types/react@18.2.21: - resolution: {integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==} + /@types/react@18.2.65: + resolution: {integrity: sha512-98TsY0aW4jqx/3RqsUXwMDZSWR1Z4CUlJNue8ueS2/wcxZOsz4xmW1X8ieaWVRHcmmQM3R8xVA4XWB3dJnWwDQ==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 - /@types/responselike@1.0.0: - resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} - dependencies: - '@types/node': 20.5.7 - dev: false - /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} dev: false @@ -4726,7 +4309,9 @@ packages: /@types/unist@2.0.7: resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==} - dev: false + + /@types/unist@3.0.2: + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} @@ -4744,31 +4329,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: false - /@typescript/twoslash@3.1.0: - resolution: {integrity: sha512-kTwMUQ8xtAZaC4wb2XuLkPqFVBj2dNBueMQ89NWEuw87k2nLBbuafeG5cob/QEr6YduxIdTVUjix0MtC7mPlmg==} - dependencies: - '@typescript/vfs': 1.3.5 - debug: 4.3.4(supports-color@6.1.0) - lz-string: 1.5.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript/vfs@1.3.4: - resolution: {integrity: sha512-RbyJiaAGQPIcAGWFa3jAXSuAexU4BFiDRF1g3hy7LmRqfNpYlTQWGXjcrOaVZjJ8YkkpuwG0FcsYvtWQpd9igQ==} - dependencies: - debug: 4.3.4(supports-color@6.1.0) - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript/vfs@1.3.5: - resolution: {integrity: sha512-pI8Saqjupf9MfLw7w2+og+fmb0fZS0J6vsKXXrp4/PDXEFvntgzXmChCXC/KefZZS0YGS6AT8e0hGAJcTsdJlg==} - dependencies: - debug: 4.3.4(supports-color@6.1.0) - transitivePeerDependencies: - - supports-color - dev: false + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} /@webassemblyjs/ast@1.11.6: resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} @@ -4882,6 +4444,13 @@ packages: dependencies: acorn: 8.10.0 + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} @@ -4892,11 +4461,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - /address@1.1.2: - resolution: {integrity: sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==} - engines: {node: '>= 0.12.0'} - dev: false - /address@1.2.2: resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} @@ -4910,14 +4474,6 @@ packages: indent-string: 4.0.0 dev: false - /ajv-errors@1.0.1(ajv@6.12.6): - resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} - peerDependencies: - ajv: '>=5.0.0' - dependencies: - ajv: 6.12.6 - dev: false - /ajv-formats@2.1.1(ajv@8.12.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -4996,27 +4552,12 @@ packages: string-width: 4.2.3 dev: false - /ansi-colors@3.2.4: - resolution: {integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==} - engines: {node: '>=6'} - dev: false - /ansi-html-community@0.0.8: resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} engines: {'0': node >= 0.8.0} hasBin: true dev: false - /ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - dev: false - - /ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - dev: false - /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -5046,15 +4587,6 @@ packages: engines: {node: '>=12'} dev: false - /anymatch@2.0.0(supports-color@6.1.0): - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - dependencies: - micromatch: 3.1.10(supports-color@6.1.0) - normalize-path: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: false - /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -5077,29 +4609,6 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: false - /arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - dev: false - - /arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - dev: false - - /arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - dev: false - - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - is-array-buffer: 3.0.4 - dev: false - /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: false @@ -5108,87 +4617,20 @@ packages: resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} dev: false - /array-union@1.0.2: - resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} - engines: {node: '>=0.10.0'} - dependencies: - array-uniq: 1.0.3 - dev: false - /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: false - /array-uniq@1.0.3: - resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} - engines: {node: '>=0.10.0'} - dev: false - - /array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - dev: false - - /array.prototype.reduce@1.0.6: - resolution: {integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - define-properties: 1.2.0 - es-abstract: 1.22.3 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - dev: false - - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.6 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.2 - dev: false - - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false - - /assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - dev: false - - /async-each@1.0.6: - resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} - dev: false - - /async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - dev: false - - /async@2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - dependencies: - lodash: 4.17.21 - dev: false + /astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + hasBin: true /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} dev: false - /atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: false - /autoprefixer@10.4.15(postcss@8.4.29): resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} engines: {node: ^10 || ^12 || >=14} @@ -5196,8 +4638,8 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.10 - caniuse-lite: 1.0.30001524 + browserslist: 4.22.3 + caniuse-lite: 1.0.30001587 fraction.js: 4.3.1 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -5205,87 +4647,27 @@ packages: postcss-value-parser: 4.2.0 dev: false - /available-typed-arrays@1.0.6: - resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} - engines: {node: '>= 0.4'} - dev: false - - /axios@0.21.4: - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + /babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.88.2): + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' dependencies: - follow-redirects: 1.15.2(debug@4.3.4) - transitivePeerDependencies: - - debug + '@babel/core': 7.23.9 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.88.2 dev: false - /axios@0.25.0: - resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} + /babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} dependencies: - follow-redirects: 1.15.2(debug@4.3.4) - transitivePeerDependencies: - - debug + object.assign: 4.1.4 dev: false - /babel-loader@8.3.0(@babel/core@7.22.11)(webpack@5.88.2): - resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - dependencies: - '@babel/core': 7.22.11 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 5.88.2 - dev: false - - /babel-loader@8.3.0(@babel/core@7.23.9)(webpack@5.88.2): - resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - dependencies: - '@babel/core': 7.23.9 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 5.88.2 - dev: false - - /babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): - resolution: {integrity: sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==} - peerDependencies: - '@babel/core': ^7.11.6 - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 - '@mdx-js/util': 1.6.22 - dev: false - - /babel-plugin-dynamic-import-node@2.3.0: - resolution: {integrity: sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==} - dependencies: - object.assign: 4.1.4 - dev: false - - /babel-plugin-dynamic-import-node@2.3.3: - resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} - dependencies: - object.assign: 4.1.4 - dev: false - - /babel-plugin-extract-import-names@1.6.22: - resolution: {integrity: sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==} - dependencies: - '@babel/helper-plugin-utils': 7.10.4 - dev: false - - /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.11): - resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} + /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.11): + resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: @@ -5356,31 +4738,13 @@ packages: - supports-color dev: false - /bail@1.0.5: - resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} - dev: false + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: false - /base16@1.0.0: - resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} - dev: false - - /base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.1 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - dev: false - /batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} dev: false @@ -5389,31 +4753,18 @@ packages: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: false - /binary-extensions@1.13.1: - resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} - engines: {node: '>=0.10.0'} - dev: false - /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: false - /bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - requiresBuild: true - dependencies: - file-uri-to-path: 1.0.0 - dev: false - optional: true - - /body-parser@1.20.1(supports-color@6.1.0): + /body-parser@1.20.1: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 2.6.9(supports-color@6.1.0) + debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 http-errors: 2.0.0 @@ -5436,42 +4787,31 @@ packages: multicast-dns: 7.2.5 dev: false - /bonjour@3.5.0: - resolution: {integrity: sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==} - dependencies: - array-flatten: 2.1.2 - deep-equal: 1.1.2 - dns-equal: 1.0.0 - dns-txt: 2.0.2 - multicast-dns: 6.2.3 - multicast-dns-service-types: 1.1.0 - dev: false - /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: false - /boxen@5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} + /boxen@6.2.1: + resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: ansi-align: 3.0.1 camelcase: 6.3.0 chalk: 4.1.2 - cli-boxes: 2.2.1 - string-width: 4.2.3 - type-fest: 0.20.2 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 dev: false - /boxen@6.2.1: - resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} dependencies: ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 + camelcase: 7.0.1 + chalk: 5.3.0 cli-boxes: 3.0.0 string-width: 5.1.2 type-fest: 2.19.0 @@ -5486,24 +4826,6 @@ packages: concat-map: 0.0.1 dev: false - /braces@2.3.2(supports-color@6.1.0): - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2(supports-color@6.1.0) - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -5511,17 +4833,6 @@ packages: fill-range: 7.0.1 dev: false - /browserslist@4.14.2: - resolution: {integrity: sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001587 - electron-to-chromium: 1.4.665 - escalade: 3.1.1 - node-releases: 1.1.77 - dev: false - /browserslist@4.21.10: resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -5531,6 +4842,7 @@ packages: electron-to-chromium: 1.4.505 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) + dev: false /browserslist@4.22.3: resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} @@ -5541,15 +4853,10 @@ packages: electron-to-chromium: 1.4.665 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.3) - dev: false /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /buffer-indexof@1.1.1: - resolution: {integrity: sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==} - dev: false - /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -5560,39 +4867,22 @@ packages: engines: {node: '>= 0.8'} dev: false - /cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.1 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 + /cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} dev: false - /cacheable-request@6.1.0: - resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} - engines: {node: '>=8'} + /cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 + '@types/http-cache-semantics': 4.0.4 + get-stream: 6.0.1 http-cache-semantics: 4.1.1 - keyv: 3.1.0 - lowercase-keys: 2.0.0 - normalize-url: 4.5.1 - responselike: 1.0.2 - dev: false - - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.1 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.0.1 + responselike: 3.0.0 dev: false /call-bind@1.0.6: @@ -5617,21 +4907,16 @@ packages: tslib: 2.6.2 dev: false - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - dev: false - - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: false - /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: false + /camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + dev: false + /camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false @@ -5639,22 +4924,21 @@ packages: /caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.21.10 - caniuse-lite: 1.0.30001524 + browserslist: 4.22.3 + caniuse-lite: 1.0.30001587 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: false /caniuse-lite@1.0.30001524: resolution: {integrity: sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==} + dev: false /caniuse-lite@1.0.30001587: resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} - dev: false - /ccount@1.1.0: - resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} - dev: false + /ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -5673,17 +4957,27 @@ packages: supports-color: 7.2.0 dev: false - /character-entities-legacy@1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: false - /character-entities@1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} dev: false - /character-reference-invalid@1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} - dev: false + /character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + /character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + /character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} /cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -5709,27 +5003,6 @@ packages: parse5-htmlparser2-tree-adapter: 7.0.0 dev: false - /chokidar@2.1.8(supports-color@6.1.0): - resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} - deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies - dependencies: - anymatch: 2.0.0(supports-color@6.1.0) - async-each: 1.0.6 - braces: 2.3.2(supports-color@6.1.0) - glob-parent: 3.1.0 - inherits: 2.0.4 - is-binary-path: 1.0.1 - is-glob: 4.0.3 - normalize-path: 3.0.0 - path-is-absolute: 1.0.1 - readdirp: 2.2.1(supports-color@6.1.0) - upath: 1.2.0 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - supports-color - dev: false - /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -5749,32 +5022,11 @@ packages: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} - /ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false - /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} dev: false - /class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - dev: false - - /clean-css@4.2.4: - resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} - engines: {node: '>= 4.0'} - dependencies: - source-map: 0.6.1 - dev: false - /clean-css@5.3.2: resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} engines: {node: '>= 10.0'} @@ -5787,11 +5039,6 @@ packages: engines: {node: '>=6'} dev: false - /cli-boxes@2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - dev: false - /cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -5806,14 +5053,6 @@ packages: '@colors/colors': 1.5.0 dev: false - /cliui@5.0.0: - resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} - dependencies: - string-width: 3.1.0 - strip-ansi: 5.2.0 - wrap-ansi: 5.1.0 - dev: false - /clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -5822,37 +5061,18 @@ packages: kind-of: 6.0.3 shallow-clone: 3.0.1 - /clone-response@1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - dependencies: - mimic-response: 1.0.1 - dev: false - /clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} dev: false - /coa@2.0.2: - resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} - engines: {node: '>= 4.0'} - dependencies: - '@types/q': 1.5.8 - chalk: 2.4.2 - q: 1.5.1 - dev: false - - /collapse-white-space@1.0.6: - resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} + /clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} dev: false - /collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - dev: false + /collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -5888,8 +5108,12 @@ packages: engines: {node: '>=10'} dev: false - /comma-separated-tokens@1.0.8: - resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} + /comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} dev: false /commander@2.20.3: @@ -5914,12 +5138,8 @@ packages: engines: {node: '>= 12'} dev: false - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false - - /component-emitter@1.3.1: - resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} dev: false /compressible@2.0.18: @@ -5929,14 +5149,14 @@ packages: mime-db: 1.52.0 dev: false - /compression@1.7.4(supports-color@6.1.0): + /compression@1.7.4: resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} engines: {node: '>= 0.8.0'} dependencies: accepts: 1.3.8 bytes: 3.0.0 compressible: 2.0.18 - debug: 2.6.9(supports-color@6.1.0) + debug: 2.6.9 on-headers: 1.0.2 safe-buffer: 5.1.2 vary: 1.1.2 @@ -5948,21 +5168,22 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false - /configstore@5.0.1: - resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} - engines: {node: '>=8'} + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: - dot-prop: 5.3.0 - graceful-fs: 4.2.11 - make-dir: 3.1.0 - unique-string: 2.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 4.0.0 + ini: 1.3.8 + proto-list: 1.2.4 dev: false - /connect-history-api-fallback@1.6.0: - resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} - engines: {node: '>=0.8'} + /configstore@6.0.0: + resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} + engines: {node: '>=12'} + dependencies: + dot-prop: 6.0.1 + graceful-fs: 4.2.11 + unique-string: 3.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 5.1.0 dev: false /connect-history-api-fallback@2.0.0: @@ -6008,11 +5229,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - dev: false - /copy-text-to-clipboard@3.2.0: resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==} engines: {node: '>=12'} @@ -6033,21 +5249,6 @@ packages: webpack: 5.88.2 dev: false - /copy-webpack-plugin@9.1.0(webpack@5.88.2): - resolution: {integrity: sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.1.0 - dependencies: - fast-glob: 3.3.1 - glob-parent: 6.0.2 - globby: 11.1.0 - normalize-path: 3.0.0 - schema-utils: 3.3.0 - serialize-javascript: 6.0.1 - webpack: 5.88.2 - dev: false - /core-js-compat@3.32.1: resolution: {integrity: sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==} dependencies: @@ -6100,25 +5301,6 @@ packages: path-type: 4.0.0 dev: false - /cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - dev: false - - /cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 - dev: false - /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -6128,9 +5310,11 @@ packages: which: 2.0.2 dev: false - /crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} + /crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 dev: false /css-color-keywords@1.0.0: @@ -6147,25 +5331,6 @@ packages: postcss: 8.4.29 dev: false - /css-loader@5.2.7(webpack@5.88.2): - resolution: {integrity: sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.27.0 || ^5.0.0 - dependencies: - icss-utils: 5.1.0(postcss@8.4.29) - loader-utils: 2.0.4 - postcss: 8.4.29 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.29) - postcss-modules-local-by-default: 4.0.3(postcss@8.4.29) - postcss-modules-scope: 3.0.0(postcss@8.4.29) - postcss-modules-values: 4.0.0(postcss@8.4.29) - postcss-value-parser: 4.2.0 - schema-utils: 3.3.0 - semver: 7.5.4 - webpack: 5.88.2 - dev: false - /css-loader@6.8.1(webpack@5.88.2): resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} engines: {node: '>= 12.13.0'} @@ -6183,35 +5348,6 @@ packages: webpack: 5.88.2 dev: false - /css-minimizer-webpack-plugin@3.4.1(clean-css@5.3.2)(webpack@5.88.2): - resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==} - engines: {node: '>= 12.13.0'} - peerDependencies: - '@parcel/css': '*' - clean-css: '*' - csso: '*' - esbuild: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - '@parcel/css': - optional: true - clean-css: - optional: true - csso: - optional: true - esbuild: - optional: true - dependencies: - clean-css: 5.3.2 - cssnano: 5.1.15(postcss@8.4.29) - jest-worker: 27.5.1 - postcss: 8.4.29 - schema-utils: 4.2.0 - serialize-javascript: 6.0.1 - source-map: 0.6.1 - webpack: 5.88.2 - dev: false - /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.2)(webpack@5.88.2): resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} engines: {node: '>= 14.15.0'} @@ -6247,19 +5383,6 @@ packages: webpack: 5.88.2 dev: false - /css-select-base-adapter@0.1.1: - resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} - dev: false - - /css-select@2.1.0: - resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} - dependencies: - boolbase: 1.0.0 - css-what: 3.4.2 - domutils: 1.7.0 - nth-check: 1.0.2 - dev: false - /css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} dependencies: @@ -6288,14 +5411,6 @@ packages: postcss-value-parser: 4.2.0 dev: false - /css-tree@1.0.0-alpha.37: - resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.4 - source-map: 0.6.1 - dev: false - /css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} @@ -6304,11 +5419,6 @@ packages: source-map: 0.6.1 dev: false - /css-what@3.4.2: - resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} - engines: {node: '>= 6'} - dev: false - /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -6404,7 +5514,7 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - /debug@2.6.9(supports-color@6.1.0): + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' @@ -6413,22 +5523,9 @@ packages: optional: true dependencies: ms: 2.0.0 - supports-color: 6.1.0 dev: false - /debug@3.2.7(supports-color@6.1.0): - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - supports-color: 6.1.0 - dev: false - - /debug@4.3.4(supports-color@6.1.0): + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -6438,36 +5535,17 @@ packages: optional: true dependencies: ms: 2.1.2 - supports-color: 6.1.0 - dev: false - - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: false - - /decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - dev: false - /decompress-response@3.3.0: - resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} - engines: {node: '>=4'} + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: - mimic-response: 1.0.1 - dev: false + character-entities: 2.0.2 - /deep-equal@1.1.2: - resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} - engines: {node: '>= 0.4'} + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} dependencies: - is-arguments: 1.1.1 - is-date-object: 1.0.5 - is-regex: 1.1.4 - object-is: 1.1.5 - object-keys: 1.1.1 - regexp.prototype.flags: 1.5.2 + mimic-response: 3.1.0 dev: false /deep-extend@0.6.0: @@ -6480,14 +5558,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /default-gateway@4.2.0: - resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} - engines: {node: '>=6'} - dependencies: - execa: 1.0.0 - ip-regex: 2.1.0 - dev: false - /default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} @@ -6495,8 +5565,9 @@ packages: execa: 5.1.1 dev: false - /defer-to-connect@1.1.3: - resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} dev: false /define-data-property@1.1.2: @@ -6514,14 +5585,6 @@ packages: engines: {node: '>=8'} dev: false - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: false - /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -6531,41 +5594,6 @@ packages: object-keys: 1.1.1 dev: false - /define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 0.1.7 - dev: false - - /define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.3 - dev: false - - /define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.3 - isobject: 3.0.1 - dev: false - - /del@4.1.1: - resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==} - engines: {node: '>=6'} - dependencies: - '@types/glob': 7.2.0 - globby: 6.1.0 - is-path-cwd: 2.2.0 - is-path-in-cwd: 2.1.0 - p-map: 2.1.0 - pify: 4.0.1 - rimraf: 2.7.1 - dev: false - /del@6.1.1: resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} engines: {node: '>=10'} @@ -6590,17 +5618,15 @@ packages: engines: {node: '>= 0.8'} dev: false + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: false - /detab@2.0.4: - resolution: {integrity: sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==} - dependencies: - repeat-string: 1.6.1 - dev: false - /detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dev: false @@ -6611,7 +5637,7 @@ packages: hasBin: true dependencies: address: 1.2.2 - debug: 2.6.9(supports-color@6.1.0) + debug: 2.6.9 transitivePeerDependencies: - supports-color dev: false @@ -6621,11 +5647,16 @@ packages: hasBin: true dependencies: address: 1.2.2 - debug: 4.3.4(supports-color@6.1.0) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: false + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dependencies: + dequal: 2.0.3 + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -6637,13 +5668,6 @@ packages: resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} dev: false - /dns-packet@1.3.4: - resolution: {integrity: sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==} - dependencies: - ip: 1.1.8 - safe-buffer: 5.2.1 - dev: false - /dns-packet@5.6.1: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} @@ -6651,51 +5675,32 @@ packages: '@leichtgewicht/ip-codec': 2.0.4 dev: false - /dns-txt@2.0.2: - resolution: {integrity: sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==} - dependencies: - buffer-indexof: 1.1.1 - dev: false - - /docusaurus-plugin-sass@0.2.5(@docusaurus/core@2.4.3)(sass@1.68.0)(webpack@5.88.2): + /docusaurus-plugin-sass@0.2.5(@docusaurus/core@3.1.1)(sass@1.71.1)(webpack@5.88.2): resolution: {integrity: sha512-Z+D0fLFUKcFpM+bqSUmqKIU+vO+YF1xoEQh5hoFreg2eMf722+siwXDD+sqtwU8E4MvVpuvsQfaHwODNlxJAEg==} peerDependencies: '@docusaurus/core': ^2.0.0-beta || ^3.0.0-alpha sass: ^1.30.0 dependencies: - '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - sass: 1.68.0 - sass-loader: 10.4.1(sass@1.68.0)(webpack@5.88.2) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + sass: 1.71.1 + sass-loader: 10.4.1(sass@1.71.1)(webpack@5.88.2) transitivePeerDependencies: - fibers - node-sass - webpack dev: false - /docusaurus-plugin-sentry@1.1.0(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4): - resolution: {integrity: sha512-2jrkhVwDiIiUxgOFHyg/7C8JdAKIRGCKgR8fLIupVa4U523aNrhK+yzH3+j781vI5vVfM8vB+dySvCuDIftGEQ==} - engines: {node: '>=12.13.0'} + /docusaurus-plugin-sentry@2.0.0(@docusaurus/core@3.1.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-LiiQ90pbaJ4ztgmFegK3+p8ywX4m0XHNtKGIRY1UD6xVRFubIejFFGaDXWOVU5FuATcMmE0d+WPNRPHLyYlFFw==} + engines: {node: '>=18'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@docusaurus/core': '>=3' + react: '>=18' + react-dom: '>=18' dependencies: - '@docusaurus/core': 2.0.0-beta.3(react-dom@17.0.2)(react@17.0.2)(typescript@4.7.4) - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - bufferutil - - csso - - debug - - esbuild - - eslint - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false /dom-converter@0.2.0: @@ -6704,13 +5709,6 @@ packages: utila: 0.4.0 dev: false - /dom-serializer@0.2.2: - resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} - dependencies: - domelementtype: 2.3.0 - entities: 2.2.0 - dev: false - /dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dependencies: @@ -6727,10 +5725,6 @@ packages: entities: 4.5.0 dev: false - /domelementtype@1.3.1: - resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} - dev: false - /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: false @@ -6749,13 +5743,6 @@ packages: domelementtype: 2.3.0 dev: false - /domutils@1.7.0: - resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} - dependencies: - dom-serializer: 0.2.2 - domelementtype: 1.3.1 - dev: false - /domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: @@ -6779,17 +5766,13 @@ packages: tslib: 2.6.2 dev: false - /dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} + /dot-prop@6.0.1: + resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} + engines: {node: '>=10'} dependencies: is-obj: 2.0.0 dev: false - /duplexer3@0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - dev: false - /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: false @@ -6804,14 +5787,10 @@ packages: /electron-to-chromium@1.4.505: resolution: {integrity: sha512-0A50eL5BCCKdxig2SsCXhpuztnB9PfUgRMojj5tMvt8O54lbwz3t6wNgnpiTRosw5QjlJB7ixhVyeg8daLQwSQ==} + dev: false /electron-to-chromium@1.4.665: resolution: {integrity: sha512-UpyCWObBoD+nSZgOC2ToaIdZB0r9GhqT2WahPKiSki6ckkSuKhQNso8V2PrFcHBMleI/eqbKgVQgVC4Wni4ilw==} - dev: false - - /emoji-regex@7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - dev: false /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -6821,13 +5800,17 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: false + /emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + dev: false + /emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} dev: false - /emoticon@3.2.0: - resolution: {integrity: sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==} + /emoticon@4.0.1: + resolution: {integrity: sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==} dev: false /encodeurl@1.0.2: @@ -6835,12 +5818,6 @@ packages: engines: {node: '>= 0.8'} dev: false - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: false - /enhanced-resolve@5.15.0: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} @@ -6857,68 +5834,12 @@ packages: engines: {node: '>=0.12'} dev: false - /errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - dependencies: - prr: 1.0.1 - dev: false - /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: false - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.6 - call-bind: 1.0.6 - es-set-tostringtag: 2.0.2 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.1 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.0 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.1 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.14 - dev: false - - /es-array-method-boxes-properly@1.0.0: - resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - dev: false - /es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} @@ -6927,31 +5848,13 @@ packages: /es-module-lexer@1.3.0: resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.1 - dev: false - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: false - /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - /escape-goat@2.1.1: - resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} - engines: {node: '>=8'} + /escape-goat@4.0.0: + resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} + engines: {node: '>=12'} dev: false /escape-html@1.0.3: @@ -6963,16 +5866,16 @@ packages: engines: {node: '>=0.8.0'} dev: false - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: false - /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: false + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -7000,16 +5903,53 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + /estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + dependencies: + '@types/estree': 1.0.1 + + /estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + /estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + /estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.8.6 + source-map: 0.7.4 + + /estree-util-value-to-estree@3.0.1: + resolution: {integrity: sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA==} + engines: {node: '>=16.0.0'} + dependencies: + '@types/estree': 1.0.1 + is-plain-obj: 4.1.0 + dev: false + + /estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.2 + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.1 + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: false - /eta@1.14.2: - resolution: {integrity: sha512-wZmJAV7EFUG5W8XNXSazIdichnWEhGB1OWg4tnXWPj0CPNUcFdgorGNO6N9p6WBUgoUe4P0OziJYn1+6zxP2aQ==} - engines: {node: '>=6.0.0'} - dev: false - /eta@2.2.0: resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==} engines: {node: '>=6.0.0'} @@ -7036,24 +5976,6 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - /eventsource@2.0.2: - resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} - engines: {node: '>=12.0.0'} - dev: false - - /execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - dependencies: - cross-spawn: 6.0.5 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - dev: false - /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -7069,38 +5991,23 @@ packages: strip-final-newline: 2.0.0 dev: false - /expand-brackets@2.1.4(supports-color@6.1.0): - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - dependencies: - debug: 2.6.9(supports-color@6.1.0) - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2(supports-color@6.1.0) - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /express@4.18.2(supports-color@6.1.0): + /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.1(supports-color@6.1.0) + body-parser: 1.20.1 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.5.0 cookie-signature: 1.0.6 - debug: 2.6.9(supports-color@6.1.0) + debug: 2.6.9 depd: 2.0.0 encodeurl: 1.0.2 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0(supports-color@6.1.0) + finalhandler: 1.2.0 fresh: 0.5.2 http-errors: 2.0.0 merge-descriptors: 1.0.1 @@ -7112,8 +6019,8 @@ packages: qs: 6.11.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0(supports-color@6.1.0) - serve-static: 1.15.0(supports-color@6.1.0) + send: 0.18.0 + serve-static: 1.15.0 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -7130,33 +6037,8 @@ packages: is-extendable: 0.1.1 dev: false - /extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - dev: false - /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false - - /extglob@2.0.4(supports-color@6.1.0): - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4(supports-color@6.1.0) - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2(supports-color@6.1.0) - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -7187,6 +6069,12 @@ packages: reusify: 1.0.4 dev: false + /fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + dependencies: + format: 0.2.2 + dev: false + /faye-websocket@0.11.4: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} @@ -7194,32 +6082,6 @@ packages: websocket-driver: 0.7.4 dev: false - /fbemitter@3.0.0: - resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} - dependencies: - fbjs: 3.0.5 - transitivePeerDependencies: - - encoding - dev: false - - /fbjs-css-vars@1.0.2: - resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - dev: false - - /fbjs@3.0.5: - resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - dependencies: - cross-fetch: 3.1.8 - fbjs-css-vars: 1.0.2 - loose-envify: 1.4.0 - object-assign: 4.1.1 - promise: 7.3.1 - setimmediate: 1.0.5 - ua-parser-js: 1.0.35 - transitivePeerDependencies: - - encoding - dev: false - /feed@4.2.2: resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} engines: {node: '>=0.4.0'} @@ -7227,11 +6089,6 @@ packages: xml-js: 1.6.11 dev: false - /fenceparser@1.1.1: - resolution: {integrity: sha512-VdkTsK7GWLT0VWMK5S5WTAPn61wJ98WPFwJiRHumhg4ESNUO/tnkU8bzzzc62o6Uk1SVhuZFLnakmDA4SGV7wA==} - engines: {node: '>=12'} - dev: false - /file-loader@6.2.0(webpack@5.88.2): resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} engines: {node: '>= 10.13.0'} @@ -7243,32 +6100,11 @@ packages: webpack: 5.88.2 dev: false - /file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - requiresBuild: true - dev: false - optional: true - - /filesize@6.1.0: - resolution: {integrity: sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==} - engines: {node: '>= 0.4.0'} - dev: false - /filesize@8.0.7: resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} engines: {node: '>= 0.4.0'} dev: false - /fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - dev: false - /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -7276,11 +6112,11 @@ packages: to-regex-range: 5.0.1 dev: false - /finalhandler@1.2.0(supports-color@6.1.0): + /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} dependencies: - debug: 2.6.9(supports-color@6.1.0) + debug: 2.6.9 encodeurl: 1.0.2 escape-html: 1.0.3 on-finished: 2.4.1 @@ -7291,13 +6127,12 @@ packages: - supports-color dev: false - /find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} + /find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 dev: false /find-up@3.0.0: @@ -7307,14 +6142,6 @@ packages: locate-path: 3.0.0 dev: false - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: false - /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -7323,19 +6150,15 @@ packages: path-exists: 4.0.0 dev: false - /flux@4.0.4(react@17.0.2): - resolution: {integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==} - peerDependencies: - react: ^15.0.2 || ^16.0.0 || ^17.0.0 + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - fbemitter: 3.0.0 - fbjs: 3.0.5 - react: 17.0.2 - transitivePeerDependencies: - - encoding + locate-path: 7.2.0 + path-exists: 5.0.0 dev: false - /follow-redirects@1.15.2(debug@4.3.4): + /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: @@ -7343,49 +6166,9 @@ packages: peerDependenciesMeta: debug: optional: true - dependencies: - debug: 4.3.4(supports-color@6.1.0) - dev: false - - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - dev: false - - /for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - dev: false - - /fork-ts-checker-webpack-plugin@4.1.6(typescript@4.7.4)(webpack@5.88.2): - resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} - engines: {node: '>=6.11.5', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - dependencies: - '@babel/code-frame': 7.23.5 - chalk: 2.4.2 - micromatch: 3.1.10(supports-color@6.1.0) - minimatch: 3.1.2 - semver: 5.7.2 - tapable: 1.1.3 - typescript: 4.7.4 - webpack: 5.88.2 - worker-rpc: 0.1.1 - transitivePeerDependencies: - - supports-color dev: false - /fork-ts-checker-webpack-plugin@6.5.3(typescript@4.7.4)(webpack@5.88.2): + /fork-ts-checker-webpack-plugin@6.5.3(typescript@5.4.2)(webpack@5.88.2): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -7399,7 +6182,7 @@ packages: vue-template-compiler: optional: true dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 '@types/json-schema': 7.0.12 chalk: 4.1.2 chokidar: 3.5.3 @@ -7412,11 +6195,21 @@ packages: schema-utils: 2.7.0 semver: 7.5.4 tapable: 1.1.3 - typescript: 4.7.4 + typescript: 5.4.2 webpack: 5.88.2 dev: false - /forwarded@0.2.0: + /form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + dev: false + + /format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + dev: false + + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} dev: false @@ -7425,21 +6218,14 @@ packages: resolution: {integrity: sha512-nx0cki48JBA6ThPeUpeKCNpdhEl/9bRS+dAEYnRUod+Z1jhFfC3K/mBLorZZntqHM+GTH3/dkkpfoT3QITYe7g==} dev: false - /fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - dependencies: - map-cache: 0.2.2 - dev: false - /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} dev: false - /fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 @@ -7468,18 +6254,6 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: false - /fsevents@1.2.13: - resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} - engines: {node: '>= 4.0'} - os: [darwin] - deprecated: The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2 - requiresBuild: true - dependencies: - bindings: 1.5.0 - nan: 2.18.0 - dev: false - optional: true - /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -7496,39 +6270,11 @@ packages: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: false - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - define-properties: 1.2.0 - es-abstract: 1.22.3 - functions-have-names: 1.2.3 - dev: false - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: false - /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: false - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: false - - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-proto: 1.0.1 - has-symbols: 1.0.3 - dev: false - /get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} @@ -7544,39 +6290,11 @@ packages: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} dev: false - /get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.0 - dev: false - - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: false - /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: false - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - dev: false - - /get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - dev: false - /giscus@1.4.0: resolution: {integrity: sha512-Pll+pcclTx47NcFDw8nuka2Ja85Gc4XWpzSgL0rszOQaMQRQIV8UMR+zP4a+/N3tV2TXc1SZ537kWlsN6EsAaw==} dependencies: @@ -7587,13 +6305,6 @@ packages: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} dev: false - /glob-parent@3.1.0: - resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} - dependencies: - is-glob: 3.1.0 - path-dirname: 1.0.2 - dev: false - /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -7650,25 +6361,6 @@ packages: engines: {node: '>=4'} dev: false - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.0 - dev: false - - /globby@11.0.1: - resolution: {integrity: sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - dev: false - /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -7692,40 +6384,31 @@ packages: slash: 4.0.0 dev: false - /globby@6.1.0: - resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} - engines: {node: '>=0.10.0'} - dependencies: - array-union: 1.0.2 - glob: 7.2.3 - object-assign: 4.1.1 - pify: 2.3.0 - pinkie-promise: 2.0.1 - dev: false - /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.4 dev: false - /got@9.6.0: - resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} - engines: {node: '>=8.6'} + /got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} dependencies: - '@sindresorhus/is': 0.14.0 - '@szmarczak/http-timer': 1.1.2 - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.0 - cacheable-request: 6.1.0 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 4.1.0 - lowercase-keys: 1.0.1 - mimic-response: 1.0.1 - p-cancelable: 1.1.0 - to-readable-stream: 1.0.0 - url-parse-lax: 3.0.0 + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + dev: false + + /graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: false /graceful-fs@4.2.11: @@ -7741,14 +6424,6 @@ packages: strip-bom-string: 1.0.0 dev: false - /gzip-size@5.1.1: - resolution: {integrity: sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==} - engines: {node: '>=6'} - dependencies: - duplexer: 0.1.2 - pify: 4.0.1 - dev: false - /gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} @@ -7760,10 +6435,6 @@ packages: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} dev: false - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: false - /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -7773,12 +6444,6 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.2.1 - dev: false - /has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: @@ -7795,47 +6460,9 @@ packages: engines: {node: '>= 0.4'} dev: false - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: false - - /has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - dev: false - - /has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - dev: false - - /has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - dev: false - - /has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - dev: false - - /has-yarn@2.1.0: - resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} - engines: {node: '>=8'} + /has-yarn@3.0.0: + resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false /has@1.0.3: @@ -7852,66 +6479,111 @@ packages: function-bind: 1.1.2 dev: false - /hast-to-hyperscript@9.0.1: - resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} + /hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} dependencies: - '@types/unist': 2.0.7 - comma-separated-tokens: 1.0.8 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - style-to-object: 0.3.0 - unist-util-is: 4.1.0 - web-namespaces: 1.1.4 + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + devlop: 1.1.0 + hastscript: 8.0.0 + property-information: 6.4.1 + vfile: 6.0.1 + vfile-location: 5.0.2 + web-namespaces: 2.0.1 dev: false - /hast-util-from-parse5@6.0.1: - resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} + /hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} dependencies: - '@types/parse5': 5.0.3 - hastscript: 6.0.0 - property-information: 5.6.0 - vfile: 4.2.1 - vfile-location: 3.2.0 - web-namespaces: 1.1.4 + '@types/hast': 3.0.4 dev: false - /hast-util-parse-selector@2.2.5: - resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} + /hast-util-raw@9.0.2: + resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==} + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + '@ungap/structured-clone': 1.2.0 + hast-util-from-parse5: 8.0.1 + hast-util-to-parse5: 8.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.1.0 + parse5: 7.1.2 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + web-namespaces: 2.0.1 + zwitch: 2.0.4 dev: false - /hast-util-raw@6.0.1: - resolution: {integrity: sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==} + /hast-util-to-estree@3.1.0: + resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} dependencies: - '@types/hast': 2.3.5 - hast-util-from-parse5: 6.0.1 - hast-util-to-parse5: 6.0.0 - html-void-elements: 1.0.5 - parse5: 6.0.1 - unist-util-position: 3.1.0 - vfile: 4.2.1 - web-namespaces: 1.1.4 - xtend: 4.0.2 - zwitch: 1.0.5 - dev: false + '@types/estree': 1.0.1 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.1 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + /hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + dependencies: + '@types/estree': 1.0.1 + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.1 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + style-to-object: 1.0.5 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color - /hast-util-to-parse5@6.0.0: - resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==} + /hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} dependencies: - hast-to-hyperscript: 9.0.1 - property-information: 5.6.0 - web-namespaces: 1.1.4 - xtend: 4.0.2 - zwitch: 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 dev: false - /hastscript@6.0.0: - resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} + /hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: - '@types/hast': 2.3.5 - comma-separated-tokens: 1.0.8 - hast-util-parse-selector: 2.2.5 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 + '@types/hast': 3.0.4 + + /hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 6.4.1 + space-separated-tokens: 2.0.2 dev: false /he@1.2.0: @@ -7945,37 +6617,33 @@ packages: wbuf: 1.7.3 dev: false - /html-entities@1.4.0: - resolution: {integrity: sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==} - dev: false - /html-entities@2.4.0: resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} dev: false - /html-minifier-terser@5.1.1: - resolution: {integrity: sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==} - engines: {node: '>=6'} + /html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} hasBin: true dependencies: camel-case: 4.1.2 - clean-css: 4.2.4 - commander: 4.1.1 + clean-css: 5.3.2 + commander: 8.3.0 he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 4.8.1 + terser: 5.19.3 dev: false - /html-minifier-terser@6.1.0: - resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} - engines: {node: '>=12'} + /html-minifier-terser@7.2.0: + resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} + engines: {node: ^14.13.1 || >=16.0.0} hasBin: true dependencies: camel-case: 4.1.2 clean-css: 5.3.2 - commander: 8.3.0 - he: 1.2.0 + commander: 10.0.1 + entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 terser: 5.19.3 @@ -7986,8 +6654,8 @@ packages: engines: {node: '>=8'} dev: false - /html-void-elements@1.0.5: - resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==} + /html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} dev: false /html-webpack-plugin@5.5.3(webpack@5.88.2): @@ -8055,19 +6723,6 @@ packages: resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} dev: false - /http-proxy-middleware@0.19.1(debug@4.3.4)(supports-color@6.1.0): - resolution: {integrity: sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==} - engines: {node: '>=4.0.0'} - dependencies: - http-proxy: 1.18.1(debug@4.3.4) - is-glob: 4.0.3 - lodash: 4.17.21 - micromatch: 3.1.10(supports-color@6.1.0) - transitivePeerDependencies: - - debug - - supports-color - dev: false - /http-proxy-middleware@2.0.6(@types/express@4.17.17): resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} engines: {node: '>=12.0.0'} @@ -8079,7 +6734,7 @@ packages: dependencies: '@types/express': 4.17.17 '@types/http-proxy': 1.17.11 - http-proxy: 1.18.1(debug@4.3.4) + http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.5 @@ -8087,17 +6742,25 @@ packages: - debug dev: false - /http-proxy@1.18.1(debug@4.3.4): + /http-proxy@1.18.1: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.2 requires-port: 1.0.0 transitivePeerDependencies: - debug dev: false + /http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: false + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -8132,10 +6795,6 @@ packages: queue: 6.0.2 dev: false - /immer@8.0.1: - resolution: {integrity: sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==} - dev: false - /immer@9.0.21: resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} dev: false @@ -8152,18 +6811,9 @@ packages: resolve-from: 4.0.0 dev: false - /import-lazy@2.1.0: - resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} - engines: {node: '>=4'} - dev: false - - /import-local@2.0.0: - resolution: {integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==} - engines: {node: '>=6'} - hasBin: true - dependencies: - pkg-dir: 3.0.0 - resolve-cwd: 2.0.0 + /import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} dev: false /imurmurhash@0.1.4: @@ -8207,24 +6857,9 @@ packages: /inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - dev: false - - /internal-ip@4.3.0: - resolution: {integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==} - engines: {node: '>=6'} - dependencies: - default-gateway: 4.2.0 - ipaddr.js: 1.9.1 - dev: false - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - hasown: 2.0.1 - side-channel: 1.0.4 - dev: false + /inline-style-parser@0.2.2: + resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} /interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} @@ -8236,15 +6871,6 @@ packages: dependencies: loose-envify: 1.4.0 - /ip-regex@2.1.0: - resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} - engines: {node: '>=4'} - dev: false - - /ip@1.1.8: - resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} - dev: false - /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -8255,62 +6881,19 @@ packages: engines: {node: '>= 10'} dev: false - /is-absolute-url@3.0.3: - resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} - engines: {node: '>=8'} - dev: false - - /is-accessor-descriptor@1.0.1: - resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} - engines: {node: '>= 0.10'} - dependencies: - hasown: 2.0.1 - dev: false - - /is-alphabetical@1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} - dev: false - - /is-alphanumerical@1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - dev: false - - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - has-tostringtag: 1.0.2 - dev: false + /is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} + /is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} dependencies: - call-bind: 1.0.6 - get-intrinsic: 1.2.4 - dev: false + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: false - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: false - - /is-binary-path@1.0.1: - resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} - engines: {node: '>=0.10.0'} - dependencies: - binary-extensions: 1.13.1 - dev: false - /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -8318,33 +6901,11 @@ packages: binary-extensions: 2.2.0 dev: false - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - has-tostringtag: 1.0.2 - dev: false - - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: false - - /is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - dev: false - - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: false - - /is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + /is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 2.0.0 + ci-info: 3.8.0 dev: false /is-core-module@2.13.0: @@ -8353,39 +6914,8 @@ packages: has: 1.0.3 dev: false - /is-data-descriptor@1.0.1: - resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} - engines: {node: '>= 0.4'} - dependencies: - hasown: 2.0.1 - dev: false - - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: false - - /is-decimal@1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - dev: false - - /is-descriptor@0.1.7: - resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} - engines: {node: '>= 0.4'} - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - dev: false - - /is-descriptor@1.0.3: - resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} - engines: {node: '>= 0.4'} - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - dev: false + /is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} @@ -8398,35 +6928,16 @@ packages: engines: {node: '>=0.10.0'} dev: false - /is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - dependencies: - is-plain-object: 2.0.4 - dev: false - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: false - /is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - dev: false - /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: false - /is-glob@3.1.0: - resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: false - /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -8434,9 +6945,8 @@ packages: is-extglob: 2.1.1 dev: false - /is-hexadecimal@1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - dev: false + /is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} /is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} @@ -8446,28 +6956,9 @@ packages: is-path-inside: 3.0.3 dev: false - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: false - - /is-npm@5.0.0: - resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} - engines: {node: '>=10'} - dev: false - - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: false - - /is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 + /is-npm@6.0.0: + resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false /is-number@7.0.0: @@ -8490,48 +6981,30 @@ packages: engines: {node: '>=6'} dev: false - /is-path-in-cwd@2.1.0: - resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} - engines: {node: '>=6'} - dependencies: - is-path-inside: 2.1.0 - dev: false - - /is-path-inside@2.1.0: - resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==} - engines: {node: '>=6'} - dependencies: - path-is-inside: 1.0.2 - dev: false - /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: false - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: false - /is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} dev: false + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + /is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: - call-bind: 1.0.6 - has-tostringtag: 1.0.2 - dev: false + '@types/estree': 1.0.1 /is-regexp@1.0.0: resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} @@ -8543,71 +7016,15 @@ packages: engines: {node: '>=6'} dev: false - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.6 - dev: false - - /is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - dev: false - /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: false - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: false - - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: false - - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.14 - dev: false - /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: false - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.6 - dev: false - - /is-whitespace-character@1.0.4: - resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} - dev: false - - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: false - - /is-word-character@1.0.4: - resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} - dev: false - - /is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - dev: false - /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -8615,8 +7032,9 @@ packages: is-docker: 2.2.1 dev: false - /is-yarn-global@0.3.0: - resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} + /is-yarn-global@0.4.1: + resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} + engines: {node: '>=12'} dev: false /isarray@0.0.1: @@ -8627,21 +7045,10 @@ packages: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: false - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: false - /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: false - /isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 - dev: false - /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} @@ -8681,6 +7088,11 @@ packages: hasBin: true dev: false + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: false + /joi@17.10.0: resolution: {integrity: sha512-hrazgRSlhzacZ69LdcKfhi3Vu13z2yFfoAzmEov3yFIJlatTdVGUW6vle1zjH8qkzdCn/qGw8rapjqsObbYXAg==} dependencies: @@ -8719,8 +7131,8 @@ packages: hasBin: true dev: false - /json-buffer@3.0.0: - resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: false /json-parse-even-better-errors@2.3.1: @@ -8739,10 +7151,6 @@ packages: hasBin: true dev: false - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: false - /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -8751,28 +7159,10 @@ packages: graceful-fs: 4.2.11 dev: false - /keyv@3.1.0: - resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} - dependencies: - json-buffer: 3.0.0 - dev: false - - /killable@1.0.1: - resolution: {integrity: sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==} - dev: false - - /kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: false - - /kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: - is-buffer: 1.1.6 + json-buffer: 3.0.1 dev: false /kind-of@6.0.3: @@ -8789,11 +7179,11 @@ packages: engines: {node: '>= 8'} dev: false - /latest-version@5.1.0: - resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} - engines: {node: '>=8'} + /latest-version@7.0.0: + resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} + engines: {node: '>=14.16'} dependencies: - package-json: 6.5.0 + package-json: 8.1.1 dev: false /launch-editor@2.6.0: @@ -8843,15 +7233,6 @@ packages: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} - /loader-utils@2.0.0: - resolution: {integrity: sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==} - engines: {node: '>=8.9.0'} - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - dev: false - /loader-utils@2.0.4: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} engines: {node: '>=8.9.0'} @@ -8874,13 +7255,6 @@ packages: path-exists: 3.0.0 dev: false - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: false - /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -8888,18 +7262,17 @@ packages: p-locate: 5.0.0 dev: false - /lodash.curry@4.1.1: - resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 dev: false /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: false - /lodash.flow@3.5.0: - resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} - dev: false - /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: false @@ -8912,10 +7285,8 @@ packages: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: false - /loglevel@1.9.1: - resolution: {integrity: sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==} - engines: {node: '>= 0.6.0'} - dev: false + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} @@ -8929,14 +7300,9 @@ packages: tslib: 2.6.2 dev: false - /lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - dev: false - - /lowercase-keys@2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} + /lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false /lru-cache@5.1.1: @@ -8952,11 +7318,6 @@ packages: yallist: 4.0.0 dev: false - /lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - dev: false - /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -8965,68 +7326,230 @@ packages: semver: 5.7.2 dev: false - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.1 + /markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + /markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} dev: false - /map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} + /mdast-util-directive@3.0.0: + resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-visit-parents: 6.0.1 + transitivePeerDependencies: + - supports-color dev: false - /map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} + /mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} dependencies: - object-visit: 1.0.1 + '@types/mdast': 4.0.3 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 dev: false - /markdown-escapes@1.0.4: - resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} + /mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + /mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color dev: false - /mdast-squeeze-paragraphs@4.0.0: - resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==} + /mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} dependencies: - unist-util-remove: 2.1.0 + '@types/mdast': 4.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 dev: false - /mdast-util-definitions@4.0.0: - resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} dependencies: - unist-util-visit: 2.0.3 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color dev: false - /mdast-util-to-hast@10.0.1: - resolution: {integrity: sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==} + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} dependencies: - '@types/mdast': 3.0.12 - '@types/unist': 2.0.7 - mdast-util-definitions: 4.0.0 - mdurl: 1.0.1 - unist-builder: 2.0.3 - unist-util-generated: 1.1.6 - unist-util-position: 3.1.0 - unist-util-visit: 2.0.3 + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color dev: false - /mdast-util-to-string@2.0.0: - resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color dev: false - /mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color dev: false - /mdn-data@2.0.4: - resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color dev: false - /mdurl@1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + /mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + /mdast-util-mdx-jsx@3.1.1: + resolution: {integrity: sha512-Di63TQEHbiApe6CFp/qQXCORHMHnmW2JFdr5PYH57LuEIPjijRHicAmL5wQu+B0/Q4p0qJaEOE1EkhiwxiNmAQ==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-remove-position: 5.0.0 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + /mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.1 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + /mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + dependencies: + '@types/mdast': 4.0.3 + unist-util-is: 6.0.0 + + /mdast-util-to-hast@13.1.0: + resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + dependencies: + '@types/mdast': 4.0.3 + + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: false /media-typer@0.3.0: @@ -9041,13 +7564,6 @@ packages: fs-monkey: 1.0.4 dev: false - /memory-fs@0.4.1: - resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==} - dependencies: - errno: 0.1.8 - readable-stream: 2.3.8 - dev: false - /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: false @@ -9065,30 +7581,354 @@ packages: engines: {node: '>= 0.6'} dev: false - /microevent.ts@0.1.1: - resolution: {integrity: sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==} + /micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-extension-directive@3.0.0: + resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + parse-entities: 4.0.1 dev: false - /micromatch@3.1.10(supports-color@6.1.0): - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} + /micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2(supports-color@6.1.0) - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4(supports-color@6.1.0) - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13(supports-color@6.1.0) - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2(supports-color@6.1.0) - to-regex: 3.0.2 + fault: 2.0.1 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + dependencies: + micromark-extension-gfm-autolink-literal: 2.0.0 + micromark-extension-gfm-footnote: 2.0.0 + micromark-extension-gfm-strikethrough: 2.0.0 + micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.0.1 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + dependencies: + '@types/estree': 1.0.1 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-extension-mdx-jsx@3.0.0: + resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.1 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + + /micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + dependencies: + micromark-util-types: 2.0.0 + + /micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + dependencies: + '@types/estree': 1.0.1 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + + /micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + micromark-extension-mdx-expression: 3.0.0 + micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-factory-mdx-expression@2.0.1: + resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + dependencies: + '@types/estree': 1.0.1 + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + + /micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + dependencies: + micromark-util-symbol: 2.0.0 + + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + dependencies: + micromark-util-symbol: 2.0.0 + + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + + /micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + /micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.1 + '@types/unist': 3.0.2 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + dependencies: + micromark-util-symbol: 2.0.0 + + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + dependencies: + micromark-util-types: 2.0.0 + + /micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + /micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + dev: false + + /micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + /micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + dev: false + + /micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color - dev: false /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -9126,32 +7966,19 @@ packages: hasBin: true dev: false - /mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: false - /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: false - /mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} dev: false - /mini-css-extract-plugin@1.6.2(webpack@5.88.2): - resolution: {integrity: sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.4.0 || ^5.0.0 - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.88.2 - webpack-sources: 1.4.3 + /mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false /mini-css-extract-plugin@2.7.6(webpack@5.88.2): @@ -9168,12 +7995,6 @@ packages: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} dev: false - /minimatch@3.0.4: - resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} - dependencies: - brace-expansion: 1.1.11 - dev: false - /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -9184,25 +8005,6 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: false - /mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - dev: false - - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: false - - /module-alias@2.2.3: - resolution: {integrity: sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==} - dev: false - /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} @@ -9214,24 +8016,11 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: false /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: false - /multicast-dns-service-types@1.1.0: - resolution: {integrity: sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==} - dev: false - - /multicast-dns@6.2.3: - resolution: {integrity: sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==} - hasBin: true - dependencies: - dns-packet: 1.3.4 - thunky: 1.1.0 - dev: false - /multicast-dns@7.2.5: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true @@ -9240,37 +8029,12 @@ packages: thunky: 1.1.0 dev: false - /nan@2.18.0: - resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} - requiresBuild: true - dev: false - optional: true - /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: false - /nanomatch@1.2.13(supports-color@6.1.0): - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2(supports-color@6.1.0) - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -9279,10 +8043,6 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - /nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: false - /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: @@ -9290,27 +8050,14 @@ packages: tslib: 2.6.2 dev: false - /node-emoji@1.11.0: - resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} - dependencies: - lodash: 4.17.21 - dev: false - - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + /node-emoji@2.1.3: + resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} + engines: {node: '>=18'} dependencies: - whatwg-url: 5.0.0 - dev: false - - /node-forge@0.10.0: - resolution: {integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==} - engines: {node: '>= 6.0.0'} + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 dev: false /node-forge@1.3.1: @@ -9325,23 +8072,12 @@ packages: he: 1.2.0 dev: false - /node-releases@1.1.77: - resolution: {integrity: sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==} - dev: false - /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: false /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: false - - /normalize-path@2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} - engines: {node: '>=0.10.0'} - dependencies: - remove-trailing-separator: 1.1.0 - dev: false /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -9353,21 +8089,14 @@ packages: engines: {node: '>=0.10.0'} dev: false - /normalize-url@4.5.1: - resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} - engines: {node: '>=8'} - dev: false - /normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} dev: false - /npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - dependencies: - path-key: 2.0.1 + /normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} dev: false /npm-run-path@4.0.1: @@ -9381,12 +8110,6 @@ packages: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} dev: false - /nth-check@1.0.2: - resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} - dependencies: - boolbase: 1.0.0 - dev: false - /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -9397,80 +8120,25 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - dev: false - - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - dev: false - /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: false - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - define-properties: 1.2.0 - dev: false - /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: false - /object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 + call-bind: 1.0.6 + define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 dev: false - /object.getownpropertydescriptors@2.1.7: - resolution: {integrity: sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==} - engines: {node: '>= 0.8'} - dependencies: - array.prototype.reduce: 1.0.6 - call-bind: 1.0.6 - define-properties: 1.2.0 - es-abstract: 1.22.3 - safe-array-concat: 1.1.0 - dev: false - - /object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - define-properties: 1.2.0 - es-abstract: 1.22.3 - dev: false - /obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: false @@ -9500,14 +8168,6 @@ packages: mimic-fn: 2.1.0 dev: false - /open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: false - /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -9522,21 +8182,9 @@ packages: hasBin: true dev: false - /opn@5.5.0: - resolution: {integrity: sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==} - engines: {node: '>=4'} - dependencies: - is-wsl: 1.1.0 - dev: false - - /p-cancelable@1.1.0: - resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} - engines: {node: '>=6'} - dev: false - - /p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} + /p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} dev: false /p-limit@2.3.0: @@ -9553,16 +8201,16 @@ packages: yocto-queue: 0.1.0 dev: false - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - p-limit: 2.3.0 + yocto-queue: 1.0.0 dev: false - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} dependencies: p-limit: 2.3.0 dev: false @@ -9574,9 +8222,11 @@ packages: p-limit: 3.1.0 dev: false - /p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 dev: false /p-map@4.0.0: @@ -9586,13 +8236,6 @@ packages: aggregate-error: 3.1.0 dev: false - /p-retry@3.0.1: - resolution: {integrity: sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==} - engines: {node: '>=6'} - dependencies: - retry: 0.12.0 - dev: false - /p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} @@ -9606,14 +8249,14 @@ packages: engines: {node: '>=6'} dev: false - /package-json@6.5.0: - resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} - engines: {node: '>=8'} + /package-json@8.1.1: + resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} + engines: {node: '>=14.16'} dependencies: - got: 9.6.0 - registry-auth-token: 4.2.2 - registry-url: 5.1.0 - semver: 6.3.1 + got: 12.6.1 + registry-auth-token: 5.0.2 + registry-url: 6.0.1 + semver: 7.5.4 dev: false /param-case@3.0.4: @@ -9630,22 +8273,23 @@ packages: callsites: 3.1.0 dev: false - /parse-entities@2.0.0: - resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + /parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - dev: false + '@types/unist': 2.0.7 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -9662,10 +8306,6 @@ packages: parse5: 7.1.2 dev: false - /parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: false - /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: @@ -9684,15 +8324,6 @@ packages: tslib: 2.6.2 dev: false - /pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - dev: false - - /path-dirname@1.0.2: - resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} - dev: false - /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -9703,6 +8334,11 @@ packages: engines: {node: '>=8'} dev: false + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -9712,11 +8348,6 @@ packages: resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} dev: false - /path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: false - /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -9745,6 +8376,13 @@ packages: engines: {node: '>=8'} dev: false + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + dependencies: + '@types/estree': 1.0.1 + estree-walker: 3.0.3 + is-reference: 3.0.2 + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -9753,40 +8391,16 @@ packages: engines: {node: '>=8.6'} dev: false - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: false - /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} dev: false - /pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - dependencies: - pinkie: 2.0.4 - dev: false - - /pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - dev: false - - /pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - dependencies: - find-up: 3.0.0 - dev: false - - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + /pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} dependencies: - find-up: 4.1.0 + find-up: 6.3.0 dev: false /pkg-up@3.1.0: @@ -9796,22 +8410,6 @@ packages: find-up: 3.0.0 dev: false - /portfinder@1.0.32(supports-color@6.1.0): - resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} - engines: {node: '>= 0.12.0'} - dependencies: - async: 2.6.4 - debug: 3.2.7(supports-color@6.1.0) - mkdirp: 0.5.6 - transitivePeerDependencies: - - supports-color - dev: false - - /posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - dev: false - /postcss-calc@8.2.4(postcss@8.4.29): resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} peerDependencies: @@ -9828,7 +8426,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.3 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.4.29 @@ -9841,7 +8439,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.3 postcss: 8.4.29 postcss-value-parser: 4.2.0 dev: false @@ -9892,20 +8490,6 @@ packages: postcss-selector-parser: 6.0.13 dev: false - /postcss-loader@5.3.0(postcss@8.4.29)(webpack@5.88.2): - resolution: {integrity: sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.0.0 - dependencies: - cosmiconfig: 7.1.0 - klona: 2.0.6 - postcss: 8.4.29 - semver: 7.5.4 - webpack: 5.88.2 - dev: false - /postcss-loader@7.3.3(postcss@8.4.29)(webpack@5.88.2): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} @@ -9948,7 +8532,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.3 caniuse-api: 3.0.0 cssnano-utils: 3.1.0(postcss@8.4.29) postcss: 8.4.29 @@ -9983,7 +8567,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.3 cssnano-utils: 3.1.0(postcss@8.4.29) postcss: 8.4.29 postcss-value-parser: 4.2.0 @@ -10105,7 +8689,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.3 postcss: 8.4.29 postcss-value-parser: 4.2.0 dev: false @@ -10158,7 +8742,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.3 caniuse-api: 3.0.0 postcss: 8.4.29 dev: false @@ -10181,16 +8765,6 @@ packages: util-deprecate: 1.0.2 dev: false - /postcss-sort-media-queries@3.12.13(postcss@8.4.29): - resolution: {integrity: sha512-bFbR1+P6HhZWXcT5DVV2pBH5Y2U5daKbFd0j+kcwKdzrxkbmgFu0GhI2JfFUyy5KQIeW+YJGP+vwNDOS5hIn2g==} - engines: {node: '>=10.0.0'} - peerDependencies: - postcss: ^8.3.6 - dependencies: - postcss: 8.4.29 - sort-css-media-queries: 2.0.4 - dev: false - /postcss-sort-media-queries@4.4.1(postcss@8.4.29): resolution: {integrity: sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==} engines: {node: '>=10.0.0'} @@ -10244,11 +8818,6 @@ packages: source-map-js: 1.0.2 dev: false - /prepend-http@2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - dev: false - /pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} dependencies: @@ -10261,12 +8830,14 @@ packages: engines: {node: '>=4'} dev: false - /prism-react-renderer@1.3.5(react@17.0.2): - resolution: {integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==} + /prism-react-renderer@2.3.1(react@18.2.0): + resolution: {integrity: sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==} peerDependencies: - react: '>=0.14.9' + react: '>=16.0.0' dependencies: - react: 17.0.2 + '@types/prismjs': 1.26.3 + clsx: 2.1.0 + react: 18.2.0 dev: false /prismjs@1.29.0: @@ -10278,20 +8849,6 @@ packages: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: false - /promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - dependencies: - asap: 2.0.6 - dev: false - - /prompts@2.4.0: - resolution: {integrity: sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: false - /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -10307,10 +8864,11 @@ packages: object-assign: 4.1.1 react-is: 16.13.1 - /property-information@5.6.0: - resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} - dependencies: - xtend: 4.0.2 + /property-information@6.4.1: + resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} + + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: false /proxy-addr@2.0.7: @@ -10321,17 +8879,6 @@ packages: ipaddr.js: 1.9.1 dev: false - /prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - dev: false - - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: false - /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: false @@ -10340,20 +8887,11 @@ packages: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - /pupa@2.1.1: - resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} - engines: {node: '>=8'} + /pupa@3.1.0: + resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} + engines: {node: '>=12.20'} dependencies: - escape-goat: 2.1.1 - dev: false - - /pure-color@1.3.0: - resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} - dev: false - - /q@1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + escape-goat: 4.0.0 dev: false /qs@6.11.0: @@ -10363,23 +8901,6 @@ packages: side-channel: 1.0.4 dev: false - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.4 - dev: false - - /querystring@0.2.0: - resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: false - - /querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: false - /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: false @@ -10390,6 +8911,11 @@ packages: inherits: 2.0.4 dev: false + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: false + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: @@ -10425,58 +8951,7 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-base16-styling@0.6.0: - resolution: {integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==} - dependencies: - base16: 1.0.0 - lodash.curry: 4.1.1 - lodash.flow: 3.5.0 - pure-color: 1.3.0 - dev: false - - /react-dev-utils@11.0.4(typescript@4.7.4)(webpack@5.88.2): - resolution: {integrity: sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==} - engines: {node: '>=10'} - peerDependencies: - typescript: '>=2.7' - webpack: '>=4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@babel/code-frame': 7.10.4 - address: 1.1.2 - browserslist: 4.14.2 - chalk: 2.4.2 - cross-spawn: 7.0.3 - detect-port-alt: 1.1.6 - escape-string-regexp: 2.0.0 - filesize: 6.1.0 - find-up: 4.1.0 - fork-ts-checker-webpack-plugin: 4.1.6(typescript@4.7.4)(webpack@5.88.2) - global-modules: 2.0.0 - globby: 11.0.1 - gzip-size: 5.1.1 - immer: 8.0.1 - is-root: 2.1.0 - loader-utils: 2.0.0 - open: 7.4.2 - pkg-up: 3.1.0 - prompts: 2.4.0 - react-error-overlay: 6.0.11 - recursive-readdir: 2.2.2 - shell-quote: 1.7.2 - strip-ansi: 6.0.0 - text-table: 0.2.0 - typescript: 4.7.4 - webpack: 5.88.2 - transitivePeerDependencies: - - eslint - - supports-color - - vue-template-compiler - dev: false - - /react-dev-utils@12.0.1(typescript@4.7.4)(webpack@5.88.2): + /react-dev-utils@12.0.1(typescript@5.4.2)(webpack@5.88.2): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -10486,16 +8961,16 @@ packages: typescript: optional: true dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 address: 1.2.2 - browserslist: 4.21.10 + browserslist: 4.22.3 chalk: 4.1.2 cross-spawn: 7.0.3 detect-port-alt: 1.1.6 escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(typescript@4.7.4)(webpack@5.88.2) + fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.4.2)(webpack@5.88.2) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -10510,7 +8985,7 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 4.7.4 + typescript: 5.4.2 webpack: 5.88.2 transitivePeerDependencies: - eslint @@ -10518,15 +8993,14 @@ packages: - vue-template-compiler dev: false - /react-dom@17.0.2(react@17.0.2): - resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: - react: 17.0.2 + react: ^18.2.0 dependencies: loose-envify: 1.4.0 - object-assign: 4.1.1 - react: 17.0.2 - scheduler: 0.20.2 + react: 18.2.0 + scheduler: 0.23.0 /react-error-overlay@6.0.11: resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} @@ -10535,7 +9009,7 @@ packages: /react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - /react-helmet-async@1.3.0(react-dom@17.0.2)(react@17.0.2): + /react-helmet-async@1.3.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} peerDependencies: react: ^16.6.0 || ^17.0.0 || ^18.0.0 @@ -10544,45 +9018,21 @@ packages: '@babel/runtime': 7.22.11 invariant: 2.2.4 prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) react-fast-compare: 3.2.2 shallowequal: 1.1.0 - /react-helmet@6.1.0(react@17.0.2): - resolution: {integrity: sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==} - peerDependencies: - react: '>=16.3.0' - dependencies: - object-assign: 4.1.1 - prop-types: 15.8.1 - react: 17.0.2 - react-fast-compare: 3.2.2 - react-side-effect: 2.1.2(react@17.0.2) - dev: false - /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - /react-json-view@1.21.3(@types/react@18.2.21)(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==} + /react-json-view-lite@1.2.1(react@18.2.0): + resolution: {integrity: sha512-Itc0g86fytOmKZoIoJyGgvNqohWSbh3NXIKNgH6W6FT9PC1ck4xas1tT3Rr/b3UlFXyA9Jjaw9QSXdZy2JwGMQ==} + engines: {node: '>=14'} peerDependencies: - react: ^17.0.0 || ^16.3.0 || ^15.5.4 - react-dom: ^17.0.0 || ^16.3.0 || ^15.5.4 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 dependencies: - flux: 4.0.4(react@17.0.2) - react: 17.0.2 - react-base16-styling: 0.6.0 - react-dom: 17.0.2(react@17.0.2) - react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.5.3(@types/react@18.2.21)(react@17.0.2) - transitivePeerDependencies: - - '@types/react' - - encoding - dev: false - - /react-lifecycles-compat@3.0.4: - resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + react: 18.2.0 dev: false /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.88.2): @@ -10593,43 +9043,22 @@ packages: webpack: '>=4.41.1 || 5.x' dependencies: '@babel/runtime': 7.22.11 - react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) - webpack: 5.88.2 - dev: false - - /react-loadable-ssr-addon-v5-slorber@1.0.1(react-loadable@5.5.0)(webpack@5.88.2): - resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} - engines: {node: '>=10.13.0'} - peerDependencies: - react-loadable: '*' - webpack: '>=4.41.1 || 5.x' - dependencies: - '@babel/runtime': 7.22.11 - react-loadable: 5.5.0(react@17.0.2) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) webpack: 5.88.2 dev: false - /react-loadable@5.5.0(react@17.0.2): - resolution: {integrity: sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==} - peerDependencies: - react: '*' - dependencies: - prop-types: 15.8.1 - react: 17.0.2 - dev: false - - /react-router-config@5.1.1(react-router@5.3.4)(react@17.0.2): + /react-router-config@5.1.1(react-router@5.3.4)(react@18.2.0): resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} peerDependencies: react: '>=15' react-router: '>=5' dependencies: '@babel/runtime': 7.22.11 - react: 17.0.2 - react-router: 5.3.4(react@17.0.2) + react: 18.2.0 + react-router: 5.3.4(react@18.2.0) dev: false - /react-router-dom@5.3.4(react@17.0.2): + /react-router-dom@5.3.4(react@18.2.0): resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} peerDependencies: react: '>=15' @@ -10638,13 +9067,13 @@ packages: history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 17.0.2 - react-router: 5.3.4(react@17.0.2) + react: 18.2.0 + react-router: 5.3.4(react@18.2.0) tiny-invariant: 1.3.1 tiny-warning: 1.0.3 dev: false - /react-router@5.3.4(react@17.0.2): + /react-router@5.3.4(react@18.2.0): resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} peerDependencies: react: '>=15' @@ -10655,40 +9084,17 @@ packages: loose-envify: 1.4.0 path-to-regexp: 1.8.0 prop-types: 15.8.1 - react: 17.0.2 + react: 18.2.0 react-is: 16.13.1 tiny-invariant: 1.3.1 tiny-warning: 1.0.3 dev: false - /react-side-effect@2.1.2(react@17.0.2): - resolution: {integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==} - peerDependencies: - react: ^16.3.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 17.0.2 - dev: false - - /react-textarea-autosize@8.5.3(@types/react@18.2.21)(react@17.0.2): - resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==} - engines: {node: '>=10'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@babel/runtime': 7.22.11 - react: 17.0.2 - use-composed-ref: 1.3.0(react@17.0.2) - use-latest: 1.2.1(@types/react@18.2.21)(react@17.0.2) - transitivePeerDependencies: - - '@types/react' - dev: false - - /react@17.0.2: - resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - object-assign: 4.1.1 /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -10711,17 +9117,6 @@ packages: util-deprecate: 1.0.2 dev: false - /readdirp@2.2.1(supports-color@6.1.0): - resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} - engines: {node: '>=0.10'} - dependencies: - graceful-fs: 4.2.11 - micromatch: 3.1.10(supports-color@6.1.0) - readable-stream: 2.3.8 - transitivePeerDependencies: - - supports-color - dev: false - /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -10740,13 +9135,6 @@ packages: resolve: 1.22.4 dev: false - /recursive-readdir@2.2.2: - resolution: {integrity: sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==} - engines: {node: '>=0.10.0'} - dependencies: - minimatch: 3.0.4 - dev: false - /recursive-readdir@2.2.3: resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} engines: {node: '>=6.0.0'} @@ -10765,10 +9153,6 @@ packages: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} dev: false - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: false - /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} @@ -10778,24 +9162,6 @@ packages: '@babel/runtime': 7.22.11 dev: false - /regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - dev: false - - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.1 - dev: false - /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} @@ -10808,16 +9174,16 @@ packages: unicode-match-property-value-ecmascript: 2.1.0 dev: false - /registry-auth-token@4.2.2: - resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} - engines: {node: '>=6.0.0'} + /registry-auth-token@5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + engines: {node: '>=14'} dependencies: - rc: 1.2.8 + '@pnpm/npm-conf': 2.2.2 dev: false - /registry-url@5.1.0: - resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} - engines: {node: '>=8'} + /registry-url@6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} dependencies: rc: 1.2.8 dev: false @@ -10829,86 +9195,98 @@ packages: jsesc: 0.5.0 dev: false + /rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + dependencies: + '@types/hast': 3.0.4 + hast-util-raw: 9.0.2 + vfile: 6.0.1 + dev: false + /relateurl@0.2.7: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} dev: false - /remark-emoji@2.2.0: - resolution: {integrity: sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==} + /remark-directive@3.0.0: + resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} dependencies: - emoticon: 3.2.0 - node-emoji: 1.11.0 - unist-util-visit: 2.0.3 + '@types/mdast': 4.0.3 + mdast-util-directive: 3.0.0 + micromark-extension-directive: 3.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color dev: false - /remark-footnotes@2.0.0: - resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==} + /remark-emoji@4.0.1: + resolution: {integrity: sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + '@types/mdast': 4.0.3 + emoticon: 4.0.1 + mdast-util-find-and-replace: 3.0.1 + node-emoji: 2.1.3 + unified: 11.0.4 dev: false - /remark-mdx@1.6.22: - resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==} + /remark-frontmatter@5.0.0: + resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-proposal-object-rest-spread': 7.12.1(@babel/core@7.12.9) - '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) - '@mdx-js/util': 1.6.22 - is-alphabetical: 1.0.4 - remark-parse: 8.0.3 - unified: 9.2.0 + '@types/mdast': 4.0.3 + mdast-util-frontmatter: 2.0.1 + micromark-extension-frontmatter: 2.0.0 + unified: 11.0.4 transitivePeerDependencies: - supports-color dev: false - /remark-parse@8.0.3: - resolution: {integrity: sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==} + /remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} dependencies: - ccount: 1.1.0 - collapse-white-space: 1.0.6 - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - is-whitespace-character: 1.0.4 - is-word-character: 1.0.4 - markdown-escapes: 1.0.4 - parse-entities: 2.0.0 - repeat-string: 1.6.1 - state-toggle: 1.0.3 - trim: 0.0.1 - trim-trailing-lines: 1.1.4 - unherit: 1.1.3 - unist-util-remove-position: 2.0.1 - vfile-location: 3.2.0 - xtend: 4.0.2 + '@types/mdast': 4.0.3 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color dev: false - /remark-shiki-twoslash@3.1.3(typescript@4.7.4): - resolution: {integrity: sha512-4e8OH3ySOCw5wUbDcPszokOKjKuebOqlP2WlySvC7ITBOq27BiGsFlq+FNWhxppZ+JzhTWah4gQrnMjX3KDbAQ==} - peerDependencies: - typescript: '>3' + /remark-mdx@3.0.1: + resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} dependencies: - '@types/unist': 2.0.7 - '@typescript/twoslash': 3.1.0 - '@typescript/vfs': 1.3.4 - fenceparser: 1.1.1 - regenerator-runtime: 0.13.11 - shiki: 0.10.1 - shiki-twoslash: 3.1.2(typescript@4.7.4) - tslib: 2.1.0 - typescript: 4.7.4 - unist-util-visit: 2.0.3 + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 transitivePeerDependencies: - supports-color - dev: false - /remark-squeeze-paragraphs@4.0.0: - resolution: {integrity: sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==} + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} dependencies: - mdast-squeeze-paragraphs: 4.0.0 - dev: false + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + micromark-util-types: 2.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + + /remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.3 + mdast-util-to-hast: 13.1.0 + unified: 11.0.4 + vfile: 6.0.1 - /remove-trailing-separator@1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.4 dev: false /renderkid@3.0.0: @@ -10921,21 +9299,6 @@ packages: strip-ansi: 6.0.1 dev: false - /repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - dev: false - - /repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - dev: false - - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: false - /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -10945,24 +9308,12 @@ packages: resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} dev: false - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: false - /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: false - /resolve-cwd@2.0.0: - resolution: {integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==} - engines: {node: '>=4'} - dependencies: - resolve-from: 3.0.0 - dev: false - - /resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} dev: false /resolve-from@4.0.0: @@ -10974,11 +9325,6 @@ packages: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} dev: false - /resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - dev: false - /resolve@1.22.4: resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} hasBin: true @@ -10988,20 +9334,11 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: false - /responselike@1.0.2: - resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} + /responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} dependencies: - lowercase-keys: 1.0.1 - dev: false - - /ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - dev: false - - /retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} + lowercase-keys: 3.0.0 dev: false /retry@0.13.1: @@ -11014,13 +9351,6 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: false - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: false - /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -11032,11 +9362,12 @@ packages: resolution: {integrity: sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==} dev: false - /rtlcss@3.5.0: - resolution: {integrity: sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==} + /rtlcss@4.1.1: + resolution: {integrity: sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ==} + engines: {node: '>=12.0.0'} hasBin: true dependencies: - find-up: 5.0.0 + escalade: 3.1.1 picocolors: 1.0.0 postcss: 8.4.29 strip-json-comments: 3.1.1 @@ -11048,29 +9379,6 @@ packages: queue-microtask: 1.2.3 dev: false - /rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - dependencies: - tslib: 1.14.1 - dev: false - - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - dependencies: - tslib: 2.6.2 - dev: false - - /safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} - engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.6 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 - dev: false - /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: false @@ -11078,26 +9386,11 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - es-errors: 1.3.0 - is-regex: 1.1.4 - dev: false - - /safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - dependencies: - ret: 0.1.15 - dev: false - /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false - /sass-loader@10.4.1(sass@1.68.0)(webpack@5.88.2): + /sass-loader@10.4.1(sass@1.71.1)(webpack@5.88.2): resolution: {integrity: sha512-aX/iJZTTpNUNx/OSYzo2KsjIUQHqvWsAhhUijFjAPdZTEhstjZI9zTNvkTTwsx+uNUJqUwOw5gacxQMx4hJxGQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -11116,14 +9409,14 @@ packages: klona: 2.0.6 loader-utils: 2.0.4 neo-async: 2.6.2 - sass: 1.68.0 + sass: 1.71.1 schema-utils: 3.3.0 semver: 7.5.4 webpack: 5.88.2 dev: false - /sass@1.68.0: - resolution: {integrity: sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==} + /sass@1.71.1: + resolution: {integrity: sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -11136,20 +9429,10 @@ packages: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: false - /scheduler@0.20.2: - resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 - object-assign: 4.1.1 - - /schema-utils@1.0.0: - resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} - engines: {node: '>= 4'} - dependencies: - ajv: 6.12.6 - ajv-errors: 1.0.1(ajv@6.12.6) - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: false /schema-utils@2.7.0: resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} @@ -11160,15 +9443,6 @@ packages: ajv-keywords: 3.5.2(ajv@6.12.6) dev: false - /schema-utils@2.7.1: - resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} - engines: {node: '>= 8.9.0'} - dependencies: - '@types/json-schema': 7.0.12 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: false - /schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -11204,12 +9478,6 @@ packages: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} dev: false - /selfsigned@1.10.14: - resolution: {integrity: sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==} - dependencies: - node-forge: 0.10.0 - dev: false - /selfsigned@2.1.1: resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} engines: {node: '>=10'} @@ -11217,11 +9485,11 @@ packages: node-forge: 1.3.1 dev: false - /semver-diff@3.1.1: - resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} - engines: {node: '>=8'} + /semver-diff@4.0.0: + resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} + engines: {node: '>=12'} dependencies: - semver: 6.3.1 + semver: 7.5.4 dev: false /semver@5.7.2: @@ -11242,11 +9510,11 @@ packages: lru-cache: 6.0.0 dev: false - /send@0.18.0(supports-color@6.1.0): + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} dependencies: - debug: 2.6.9(supports-color@6.1.0) + debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 encodeurl: 1.0.2 @@ -11281,13 +9549,13 @@ packages: range-parser: 1.2.0 dev: false - /serve-index@1.9.1(supports-color@6.1.0): + /serve-index@1.9.1: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} dependencies: accepts: 1.3.8 batch: 0.6.1 - debug: 2.6.9(supports-color@6.1.0) + debug: 2.6.9 escape-html: 1.0.3 http-errors: 1.6.3 mime-types: 2.1.35 @@ -11296,22 +9564,18 @@ packages: - supports-color dev: false - /serve-static@1.15.0(supports-color@6.1.0): + /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0(supports-color@6.1.0) + send: 0.18.0 transitivePeerDependencies: - supports-color dev: false - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false - /set-function-length@1.2.1: resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} engines: {node: '>= 0.4'} @@ -11324,29 +9588,6 @@ packages: has-property-descriptors: 1.0.1 dev: false - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.2 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 - dev: false - - /set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - dev: false - - /setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - dev: false - /setprototypeof@1.1.0: resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} dev: false @@ -11364,13 +9605,6 @@ packages: /shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - dependencies: - shebang-regex: 1.0.0 - dev: false - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -11378,20 +9612,11 @@ packages: shebang-regex: 3.0.0 dev: false - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: false - /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: false - /shell-quote@1.7.2: - resolution: {integrity: sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==} - dev: false - /shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: false @@ -11406,34 +9631,12 @@ packages: rechoir: 0.6.2 dev: false - /shiki-twoslash@3.1.2(typescript@4.7.4): - resolution: {integrity: sha512-JBcRIIizi+exIA/OUhYkV6jtyeZco0ykCkIRd5sgwIt1Pm4pz+maoaRZpm6SkhPwvif4fCA7xOtJOykhpIV64Q==} - peerDependencies: - typescript: '>3' - dependencies: - '@typescript/twoslash': 3.1.0 - '@typescript/vfs': 1.3.4 - fenceparser: 1.1.1 - shiki: 0.10.1 - typescript: 4.7.4 - transitivePeerDependencies: - - supports-color - dev: false - - /shiki@0.10.1: - resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} - dependencies: - jsonc-parser: 3.2.0 - vscode-oniguruma: 1.7.0 - vscode-textmate: 5.2.0 - dev: false - /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - object-inspect: 1.12.3 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 dev: false /signal-exit@3.0.7: @@ -11464,6 +9667,13 @@ packages: sax: 1.2.4 dev: false + /skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + dependencies: + unicode-emoji-modifier-base: 1.0.0 + dev: false + /slash@2.0.0: resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} engines: {node: '>=6'} @@ -11479,51 +9689,6 @@ packages: engines: {node: '>=12'} dev: false - /snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - dev: false - - /snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /snapdragon@0.8.2(supports-color@6.1.0): - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - dependencies: - base: 0.11.2 - debug: 2.6.9(supports-color@6.1.0) - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /sockjs-client@1.6.1(supports-color@6.1.0): - resolution: {integrity: sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==} - engines: {node: '>=12'} - dependencies: - debug: 3.2.7(supports-color@6.1.0) - eventsource: 2.0.2 - faye-websocket: 0.11.4 - inherits: 2.0.4 - url-parse: 1.5.10 - transitivePeerDependencies: - - supports-color - dev: false - /sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} dependencies: @@ -11532,64 +9697,37 @@ packages: websocket-driver: 0.7.4 dev: false - /sort-css-media-queries@2.0.4: - resolution: {integrity: sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw==} - engines: {node: '>= 6.3.0'} - dev: false - /sort-css-media-queries@2.1.0: resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==} engines: {node: '>= 6.3.0'} dev: false - /source-list-map@2.0.1: - resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} - dev: false - /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: false - /source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - dev: false - /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - /source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - dev: false - - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: false - /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - /space-separated-tokens@1.1.5: - resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} - dev: false + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + /space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - /spdy-transport@3.0.0(supports-color@6.1.0): + /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.4(supports-color@6.1.0) + debug: 4.3.4 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -11599,47 +9737,33 @@ packages: - supports-color dev: false - /spdy@4.0.2(supports-color@6.1.0): + /spdy@4.0.2: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.4(supports-color@6.1.0) + debug: 4.3.4 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 - spdy-transport: 3.0.0(supports-color@6.1.0) + spdy-transport: 3.0.0 transitivePeerDependencies: - supports-color dev: false - /split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - dev: false - /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: false + /srcset@4.0.0: + resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} + engines: {node: '>=12'} + dev: false + /stable@0.1.8: resolution: {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' dev: false - /state-toggle@1.0.3: - resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} - dev: false - - /static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - dev: false - /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -11650,25 +9774,10 @@ packages: engines: {node: '>= 0.8'} dev: false - /std-env@2.3.1: - resolution: {integrity: sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==} - dependencies: - ci-info: 3.8.0 - dev: false - /std-env@3.4.3: resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} dev: false - /string-width@3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} - dependencies: - emoji-regex: 7.0.3 - is-fullwidth-code-point: 2.0.0 - strip-ansi: 5.2.0 - dev: false - /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -11687,31 +9796,6 @@ packages: strip-ansi: 7.1.0 dev: false - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - define-properties: 1.2.0 - es-abstract: 1.22.3 - dev: false - - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - dependencies: - call-bind: 1.0.6 - define-properties: 1.2.0 - es-abstract: 1.22.3 - dev: false - - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} - dependencies: - call-bind: 1.0.6 - define-properties: 1.2.0 - es-abstract: 1.22.3 - dev: false - /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: @@ -11724,6 +9808,12 @@ packages: safe-buffer: 5.2.1 dev: false + /stringify-entities@4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + /stringify-object@3.3.0: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} engines: {node: '>=4'} @@ -11733,27 +9823,6 @@ packages: is-regexp: 1.0.0 dev: false - /strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - dev: false - - /strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - dependencies: - ansi-regex: 4.1.1 - dev: false - - /strip-ansi@6.0.0: - resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: false - /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -11773,11 +9842,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - dev: false - /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -11793,13 +9857,17 @@ packages: engines: {node: '>=8'} dev: false - /style-to-object@0.3.0: - resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + /style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} dependencies: inline-style-parser: 0.1.1 - dev: false - /styled-components@6.0.8(react-dom@17.0.2)(react@17.0.2): + /style-to-object@1.0.5: + resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} + dependencies: + inline-style-parser: 0.2.2 + + /styled-components@6.0.8(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-AwI02MTWZwqjzfXgR5QcbmcSn5xVjY4N2TLjSuYnmuBGF3y7GicHz3ysbpUq2EMJP5M8/Nc22vcmF3V3WNZDFA==} engines: {node: '>= 16'} peerDependencies: @@ -11826,8 +9894,8 @@ packages: css-to-react-native: 3.2.0 csstype: 3.1.2 postcss: 8.4.29 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) shallowequal: 1.1.0 stylis: 4.3.0 tslib: 2.6.2 @@ -11841,7 +9909,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.3 postcss: 8.4.29 postcss-selector-parser: 6.0.13 dev: false @@ -11857,13 +9925,6 @@ packages: has-flag: 3.0.0 dev: false - /supports-color@6.1.0: - resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} - engines: {node: '>=6'} - dependencies: - has-flag: 3.0.0 - dev: false - /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -11897,27 +9958,6 @@ packages: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} dev: false - /svgo@1.3.2: - resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==} - engines: {node: '>=4.0.0'} - deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. - hasBin: true - dependencies: - chalk: 2.4.2 - coa: 2.0.2 - css-select: 2.1.0 - css-select-base-adapter: 0.1.1 - css-tree: 1.0.0-alpha.37 - csso: 4.2.0 - js-yaml: 3.14.1 - mkdirp: 0.5.6 - object.values: 1.1.7 - sax: 1.2.4 - stable: 0.1.8 - unquote: 1.1.1 - util.promisify: 1.0.1 - dev: false - /svgo@2.8.0: resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} engines: {node: '>=10.13.0'} @@ -11964,17 +10004,6 @@ packages: terser: 5.19.3 webpack: 5.88.2 - /terser@4.8.1: - resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - acorn: 8.10.0 - commander: 2.20.3 - source-map: 0.6.1 - source-map-support: 0.5.21 - dev: false - /terser@5.19.3: resolution: {integrity: sha512-pQzJ9UJzM0IgmT4FAtYI6+VqFf0lj/to58AV0Xfgg0Up37RyPG7Al+1cepC6/BVuAxR9oNb41/DL4DEoHJvTdg==} engines: {node: '>=10'} @@ -12006,26 +10035,6 @@ packages: engines: {node: '>=4'} dev: false - /to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /to-readable-stream@1.0.0: - resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} - engines: {node: '>=6'} - dev: false - - /to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - dev: false - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -12033,57 +10042,28 @@ packages: is-number: 7.0.0 dev: false - /to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - dev: false - - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - dev: false - - /totalist@1.1.0: - resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} - engines: {node: '>=6'} - dev: false - - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false - - /trim-trailing-lines@1.1.4: - resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} - dev: false - - /trim@0.0.1: - resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} - deprecated: Use String.prototype.trim() instead + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} dev: false - /trough@1.0.5: - resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + /totalist@1.1.0: + resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} + engines: {node: '>=6'} dev: false - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: false + /trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - /tslib@2.1.0: - resolution: {integrity: sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==} - dev: false + /trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: false - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} dev: false @@ -12100,80 +10080,27 @@ packages: mime-types: 2.1.35 dev: false - /typed-array-buffer@1.0.1: - resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - dev: false - - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.6 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.13 - dev: false - - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.6 - call-bind: 1.0.6 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.13 - dev: false - - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - dependencies: - call-bind: 1.0.6 - for-each: 0.3.3 - is-typed-array: 1.1.13 - dev: false - /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 dev: false - /typescript@4.7.4: - resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} - engines: {node: '>=4.2.0'} + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} hasBin: true - /ua-parser-js@1.0.35: - resolution: {integrity: sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==} - dev: false - - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.6 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: false - - /unherit@1.1.3: - resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} - dependencies: - inherits: 2.0.4 - xtend: 4.0.2 - dev: false - /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} dev: false + /unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + dev: false + /unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} @@ -12192,95 +10119,62 @@ packages: engines: {node: '>=4'} dev: false - /unified@9.2.0: - resolution: {integrity: sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==} + /unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} dependencies: - '@types/unist': 2.0.7 - bail: 1.0.5 + '@types/unist': 3.0.2 + bail: 2.0.2 + devlop: 1.1.0 extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 2.1.0 - trough: 1.0.5 - vfile: 4.2.1 - dev: false + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.1 - /unified@9.2.2: - resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} + /unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} dependencies: - '@types/unist': 2.0.7 - bail: 1.0.5 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 2.1.0 - trough: 1.0.5 - vfile: 4.2.1 + crypto-random-string: 4.0.0 dev: false - /union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - dev: false + '@types/unist': 3.0.2 - /unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} + /unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} dependencies: - crypto-random-string: 2.0.0 - dev: false - - /unist-builder@2.0.3: - resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} - dev: false + '@types/unist': 3.0.2 - /unist-util-generated@1.1.6: - resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} - dev: false - - /unist-util-is@4.1.0: - resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} - dev: false - - /unist-util-position@3.1.0: - resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} - dev: false - - /unist-util-remove-position@2.0.1: - resolution: {integrity: sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==} + /unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: - unist-util-visit: 2.0.3 - dev: false + '@types/unist': 3.0.2 - /unist-util-remove@2.1.0: - resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==} + /unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} dependencies: - unist-util-is: 4.1.0 - dev: false + '@types/unist': 3.0.2 + unist-util-visit: 5.0.0 - /unist-util-stringify-position@2.0.3: - resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} dependencies: - '@types/unist': 2.0.7 - dev: false + '@types/unist': 3.0.2 - /unist-util-visit-parents@3.1.1: - resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: - '@types/unist': 2.0.7 - unist-util-is: 4.1.0 - dev: false + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 - /unist-util-visit@2.0.3: - resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} dependencies: - '@types/unist': 2.0.7 - unist-util-is: 4.1.0 - unist-util-visit-parents: 3.1.1 - dev: false + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} @@ -12292,18 +10186,6 @@ packages: engines: {node: '>= 0.8'} dev: false - /unquote@1.1.1: - resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} - dev: false - - /unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - dev: false - /unws@0.2.4(ws@8.13.0): resolution: {integrity: sha512-/N1ajiqrSp0A/26/LBg7r10fOcPtGXCqJRJ61sijUFoGZMr6ESWGYn7i0cwr7fR7eEECY5HsitqtjGHDZLAu2w==} engines: {node: '>=16.14.0'} @@ -12313,11 +10195,6 @@ packages: ws: 8.13.0 dev: false - /upath@1.2.0: - resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} - engines: {node: '>=4'} - dev: false - /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -12327,6 +10204,7 @@ packages: browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 + dev: false /update-browserslist-db@1.0.13(browserslist@4.22.3): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} @@ -12337,26 +10215,25 @@ packages: browserslist: 4.22.3 escalade: 3.1.1 picocolors: 1.0.0 - dev: false - /update-notifier@5.1.0: - resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} - engines: {node: '>=10'} + /update-notifier@6.0.2: + resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} + engines: {node: '>=14.16'} dependencies: - boxen: 5.1.2 - chalk: 4.1.2 - configstore: 5.0.1 - has-yarn: 2.1.0 - import-lazy: 2.1.0 - is-ci: 2.0.0 + boxen: 7.1.1 + chalk: 5.3.0 + configstore: 6.0.0 + has-yarn: 3.0.0 + import-lazy: 4.0.0 + is-ci: 3.0.1 is-installed-globally: 0.4.0 - is-npm: 5.0.0 - is-yarn-global: 0.3.0 - latest-version: 5.1.0 - pupa: 2.1.1 + is-npm: 6.0.0 + is-yarn-global: 0.4.1 + latest-version: 7.0.0 + pupa: 3.1.0 semver: 7.5.4 - semver-diff: 3.1.1 - xdg-basedir: 4.0.0 + semver-diff: 4.0.0 + xdg-basedir: 5.1.0 dev: false /uri-js@4.4.1: @@ -12364,11 +10241,6 @@ packages: dependencies: punycode: 2.3.0 - /urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: false - /url-loader@4.1.1(file-loader@6.2.0)(webpack@5.88.2): resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} engines: {node: '>= 10.13.0'} @@ -12386,88 +10258,10 @@ packages: webpack: 5.88.2 dev: false - /url-parse-lax@3.0.0: - resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} - engines: {node: '>=4'} - dependencies: - prepend-http: 2.0.0 - dev: false - - /url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - dev: false - - /url@0.11.3: - resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} - dependencies: - punycode: 1.4.1 - qs: 6.11.2 - dev: false - - /use-composed-ref@1.3.0(react@17.0.2): - resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 17.0.2 - dev: false - - /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.21)(react@17.0.2): - resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.2.21 - react: 17.0.2 - dev: false - - /use-latest@1.2.1(@types/react@18.2.21)(react@17.0.2): - resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.2.21 - react: 17.0.2 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.21)(react@17.0.2) - dev: false - - /use-sync-external-store@1.2.0(react@17.0.2): - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 17.0.2 - dev: false - - /use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - dev: false - /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false - /util.promisify@1.0.1: - resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} - dependencies: - define-properties: 1.2.0 - es-abstract: 1.22.3 - has-symbols: 1.0.3 - object.getownpropertydescriptors: 2.1.7 - dev: false - /utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} dev: false @@ -12481,12 +10275,6 @@ packages: engines: {node: '>= 0.4.0'} dev: false - /uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - dev: false - /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -12501,61 +10289,25 @@ packages: engines: {node: '>= 0.8'} dev: false - /vfile-location@3.2.0: - resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} - dev: false - - /vfile-message@2.0.4: - resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} - dependencies: - '@types/unist': 2.0.7 - unist-util-stringify-position: 2.0.3 - dev: false - - /vfile@4.2.1: - resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + /vfile-location@5.0.2: + resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} dependencies: - '@types/unist': 2.0.7 - is-buffer: 2.0.5 - unist-util-stringify-position: 2.0.3 - vfile-message: 2.0.4 - dev: false - - /vscode-oniguruma@1.7.0: - resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: false - - /vscode-textmate@5.2.0: - resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} + '@types/unist': 3.0.2 + vfile: 6.0.1 dev: false - /wait-on@5.3.0: - resolution: {integrity: sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==} - engines: {node: '>=8.9.0'} - hasBin: true + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} dependencies: - axios: 0.21.4 - joi: 17.10.0 - lodash: 4.17.21 - minimist: 1.2.8 - rxjs: 6.6.7 - transitivePeerDependencies: - - debug - dev: false + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 - /wait-on@6.0.1: - resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} - engines: {node: '>=10.0.0'} - hasBin: true + /vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} dependencies: - axios: 0.25.0 - joi: 17.10.0 - lodash: 4.17.21 - minimist: 1.2.8 - rxjs: 7.8.1 - transitivePeerDependencies: - - debug - dev: false + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} @@ -12570,12 +10322,8 @@ packages: minimalistic-assert: 1.0.1 dev: false - /web-namespaces@1.1.4: - resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} - dev: false - - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + /web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} dev: false /webpack-bundle-analyzer@4.9.0: @@ -12598,20 +10346,6 @@ packages: - utf-8-validate dev: false - /webpack-dev-middleware@3.7.3(webpack@5.88.2): - resolution: {integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==} - engines: {node: '>= 6'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - memory-fs: 0.4.1 - mime: 2.6.0 - mkdirp: 0.5.6 - range-parser: 1.2.1 - webpack: 5.88.2 - webpack-log: 2.0.0 - dev: false - /webpack-dev-middleware@5.3.3(webpack@5.88.2): resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} engines: {node: '>= 12.13.0'} @@ -12626,56 +10360,6 @@ packages: webpack: 5.88.2 dev: false - /webpack-dev-server@3.11.3(webpack@5.88.2): - resolution: {integrity: sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==} - engines: {node: '>= 6.11.5'} - hasBin: true - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - ansi-html-community: 0.0.8 - bonjour: 3.5.0 - chokidar: 2.1.8(supports-color@6.1.0) - compression: 1.7.4(supports-color@6.1.0) - connect-history-api-fallback: 1.6.0 - debug: 4.3.4(supports-color@6.1.0) - del: 4.1.1 - express: 4.18.2(supports-color@6.1.0) - html-entities: 1.4.0 - http-proxy-middleware: 0.19.1(debug@4.3.4)(supports-color@6.1.0) - import-local: 2.0.0 - internal-ip: 4.3.0 - ip: 1.1.8 - is-absolute-url: 3.0.3 - killable: 1.0.1 - loglevel: 1.9.1 - opn: 5.5.0 - p-retry: 3.0.1 - portfinder: 1.0.32(supports-color@6.1.0) - schema-utils: 1.0.0 - selfsigned: 1.10.14 - semver: 6.3.1 - serve-index: 1.9.1(supports-color@6.1.0) - sockjs: 0.3.24 - sockjs-client: 1.6.1(supports-color@6.1.0) - spdy: 4.0.2(supports-color@6.1.0) - strip-ansi: 3.0.1 - supports-color: 6.1.0 - url: 0.11.3 - webpack: 5.88.2 - webpack-dev-middleware: 3.7.3(webpack@5.88.2) - webpack-log: 2.0.0 - ws: 6.2.2 - yargs: 13.3.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - /webpack-dev-server@4.15.1(webpack@5.88.2): resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} engines: {node: '>= 12.13.0'} @@ -12700,10 +10384,10 @@ packages: bonjour-service: 1.1.1 chokidar: 3.5.3 colorette: 2.0.20 - compression: 1.7.4(supports-color@6.1.0) + compression: 1.7.4 connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 - express: 4.18.2(supports-color@6.1.0) + express: 4.18.2 graceful-fs: 4.2.11 html-entities: 2.4.0 http-proxy-middleware: 2.0.6(@types/express@4.17.17) @@ -12714,9 +10398,9 @@ packages: rimraf: 3.0.2 schema-utils: 4.2.0 selfsigned: 2.1.1 - serve-index: 1.9.1(supports-color@6.1.0) + serve-index: 1.9.1 sockjs: 0.3.24 - spdy: 4.0.2(supports-color@6.1.0) + spdy: 4.0.2 webpack: 5.88.2 webpack-dev-middleware: 5.3.3(webpack@5.88.2) ws: 8.13.0 @@ -12727,14 +10411,6 @@ packages: - utf-8-validate dev: false - /webpack-log@2.0.0: - resolution: {integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==} - engines: {node: '>= 6'} - dependencies: - ansi-colors: 3.2.4 - uuid: 3.4.0 - dev: false - /webpack-merge@5.9.0: resolution: {integrity: sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==} engines: {node: '>=10.0.0'} @@ -12742,13 +10418,6 @@ packages: clone-deep: 4.0.1 wildcard: 2.0.1 - /webpack-sources@1.4.3: - resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} - dependencies: - source-list-map: 2.0.1 - source-map: 0.6.1 - dev: false - /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} @@ -12770,7 +10439,7 @@ packages: '@webassemblyjs/wasm-parser': 1.11.6 acorn: 8.10.0 acorn-import-assertions: 1.9.0(acorn@8.10.0) - browserslist: 4.21.10 + browserslist: 4.22.3 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 es-module-lexer: 1.3.0 @@ -12819,38 +10488,6 @@ packages: engines: {node: '>=0.8.0'} dev: false - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: false - - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: false - - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: false - - /which-typed-array@1.1.14: - resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.6 - call-bind: 1.0.6 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - dev: false - /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -12866,13 +10503,6 @@ packages: isexe: 2.0.0 dev: false - /widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - dependencies: - string-width: 4.2.3 - dev: false - /widest-line@4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} @@ -12883,30 +10513,6 @@ packages: /wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - /worker-rpc@0.1.1: - resolution: {integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==} - dependencies: - microevent.ts: 0.1.1 - dev: false - - /wrap-ansi@5.1.0: - resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} - engines: {node: '>=6'} - dependencies: - ansi-styles: 3.2.1 - string-width: 3.1.0 - strip-ansi: 5.2.0 - dev: false - - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} @@ -12929,20 +10535,6 @@ packages: typedarray-to-buffer: 3.1.5 dev: false - /ws@6.2.2: - resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: - async-limiter: 1.0.1 - dev: false - /ws@7.5.9: resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} @@ -12969,9 +10561,9 @@ packages: optional: true dev: false - /xdg-basedir@4.0.0: - resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} - engines: {node: '>=8'} + /xdg-basedir@5.1.0: + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} + engines: {node: '>=12'} dev: false /xml-js@1.6.11: @@ -12994,15 +10586,6 @@ packages: engines: {node: '>=4.0'} dev: false - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: false - - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: false - /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: false @@ -13016,37 +10599,19 @@ packages: engines: {node: '>= 6'} dev: false - /yargs-parser@13.1.2: - resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: false - - /yargs@13.3.2: - resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} - dependencies: - cliui: 5.0.0 - find-up: 3.0.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 3.1.0 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 13.1.2 - dev: false - /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: false + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: false + /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false - /zwitch@1.0.5: - resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} - dev: false + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} diff --git a/src/components/HomepageFeatures/index.tsx b/src/components/HomepageFeatures/index.tsx deleted file mode 100644 index 91ef4601d..000000000 --- a/src/components/HomepageFeatures/index.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import React from 'react'; -import clsx from 'clsx'; -import styles from './styles.module.css'; - -type FeatureItem = { - title: string; - Svg: React.ComponentType>; - description: JSX.Element; -}; - -const FeatureList: FeatureItem[] = [ - { - title: 'Easy to Use', - Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default, - description: ( - <> - Docusaurus was designed from the ground up to be easily installed and - used to get your website up and running quickly. - - ), - }, - { - title: 'Focus on What Matters', - Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default, - description: ( - <> - Docusaurus lets you focus on your docs, and we'll do the chores. Go - ahead and move your docs into the docs directory. - - ), - }, - { - title: 'Powered by React', - Svg: require('@site/static/img/undraw_docusaurus_react.svg').default, - description: ( - <> - Extend or customize your website layout by reusing React. Docusaurus can - be extended while reusing the same header and footer. - - ), - }, -]; - -function Feature({title, Svg, description}: FeatureItem) { - return ( -
-
- -
-
-

{title}

-

{description}

-
-
- ); -} - -export default function HomepageFeatures(): JSX.Element { - return ( -
-
-
- {FeatureList.map((props, idx) => ( - - ))} -
-
-
- ); -} diff --git a/src/components/HomepageFeatures/styles.module.css b/src/components/HomepageFeatures/styles.module.css deleted file mode 100644 index b248eb2e5..000000000 --- a/src/components/HomepageFeatures/styles.module.css +++ /dev/null @@ -1,11 +0,0 @@ -.features { - display: flex; - align-items: center; - padding: 2rem 0; - width: 100%; -} - -.featureSvg { - height: 200px; - width: 200px; -} diff --git a/src/components/SDK/SDKClientBoxes.mdx b/src/components/SDK/SDKBoxes.mdx similarity index 77% rename from src/components/SDK/SDKClientBoxes.mdx rename to src/components/SDK/SDKBoxes.mdx index 269fb9f64..c99d79c91 100644 --- a/src/components/SDK/SDKClientBoxes.mdx +++ b/src/components/SDK/SDKBoxes.mdx @@ -1,12 +1,12 @@ -export default function SDKBoxes({ clientBoxes }) { +export default function SDKBoxes({ items }) { return (
- {clientBoxes.map((box, index) => ( + {items.map((box, index) => (
-
+

{box.icon} {box.label} @@ -24,5 +24,4 @@ export default function SDKBoxes({ clientBoxes }) { ))}

); -} - +} \ No newline at end of file diff --git a/versioned_docs/version-1.2.x/integration/sdks/overview.mdx b/src/components/SDK/list.mdx similarity index 93% rename from versioned_docs/version-1.2.x/integration/sdks/overview.mdx rename to src/components/SDK/list.mdx index b60f0a82a..d50406b2f 100644 --- a/versioned_docs/version-1.2.x/integration/sdks/overview.mdx +++ b/src/components/SDK/list.mdx @@ -1,31 +1,11 @@ ---- -sidebar_position: 1 ---- - -import ThemedImage from '@theme/ThemedImage'; import useBaseUrl from '@docusaurus/useBaseUrl'; -import SDKServerBoxes from '../../../../src/components/SDK/SDKServerBoxes.mdx'; -import SDKClientBoxes from '../../../../src/components/SDK/SDKClientBoxes.mdx'; - -# Overview - - - -# Overview - -SurrealDB supports a number of methods for connecting to the database and performing data queries. +import ThemedImage from '@theme/ThemedImage'; +import SDKBoxes from './SDKBoxes.mdx'; +### Server side SDKs - { const result = await fetch("https://version.surrealdb.com"); const data = await result.text(); - setVersion(data); + const text = data?.trim(); + setVersion(text); }; fetchVersion(); diff --git a/src/css/custom.scss b/src/css/custom.scss index 2e5b174fa..ab897e211 100644 --- a/src/css/custom.scss +++ b/src/css/custom.scss @@ -426,6 +426,12 @@ $color-primary: #ff00a0; } } + .menu__list-item-collapsible--active { + .menu__link.menu__link--sublist.menu__link--active { + color: $hover-color; + } + } + .dropdown__menu { background-color: #151517; } @@ -468,7 +474,7 @@ $color-primary: #ff00a0; table th, table td { padding: .625em; - text-align: center; + text-align: left; } table th { @@ -591,46 +597,6 @@ $color-primary: #ff00a0; } } - .shiki { - padding: 0px !important; - background-color: $dark-color; - color: $text-color; - border-radius: var(--ifm-pre-border-radius); - overflow: hidden !important; - - & > .code-title { - position: relative !important; - background: $back-color !important; - color: $text-color !important; - border-bottom: 1px solid #1e2327 !important; - } - - & > .code-container { - padding: var(--ifm-pre-padding)!important; - background-color: $back-color; - color: $text-color; - font-size: 1rem !important; - tab-size: 4; - - & > pre { - margin: 0px !important; - padding: 0px !important; - background-color: $back-color; - - & > .line { - margin: 0px !important; - padding: 0px !important; - } - } - - & > code { - padding: var(--ifm-pre-padding) !important; - margin: 0px !important; - padding: 0px !important; - } - } - } - .footer__copyright { a { color: $faint-color; @@ -1348,47 +1314,6 @@ $color-primary: #ff00a0; } } - .shiki { - padding: 0px !important; - background-color: $dark-color; - border-radius: var(--ifm-pre-border-radius); - overflow: hidden !important; - - & > .code-title { - position: relative !important; - background: #f5f5f7 !important; - color: black; - } - - & > .code-container { - padding: var(--ifm-pre-padding)!important; - background-color: $light-mode-boxes-color; - border: 0; - font-size: 1rem !important; - tab-size: 4; - - & > pre { - margin: 0px !important; - padding: 0px !important; - background-color: $light-mode-boxes-color; - - & > .line { - margin: 0px !important; - padding: 0px !important; - & span:first-of-type { - color: $light-mode-alert-color !important; - } - } - } - - & > code { - padding: var(--ifm-pre-padding) !important; - margin: 0px !important; - padding: 0px !important; - } - } - } - .footer__copyright { a { color: $light-mode-pagination-nav-color; @@ -1655,6 +1580,11 @@ required { color: grey; } +.purple { + color: #9d2fff; + border: 1px solid #9d2fff; +} + .yellow { border: 1px solid #ffde00; color: #ffde00; @@ -1686,9 +1616,6 @@ img { .markdown { padding-top: 2rem; - h1:first-child { - display: none; - } } h1 { @@ -2193,23 +2120,10 @@ l { scroll-margin-top: 100px; } -[data-theme="light"] .shiki.nord { - display: none; -} - -[data-theme="dark"] .shiki.min-light { - display: none; -} - [data-theme="light"] { code { color: $dark-color; } - - .shiki .copy-button { - background-color: #d9d9d9; - color: #040609; - } } @@ -2234,6 +2148,7 @@ l { } .sdk-logo { + float:left; margin-right: 20px; } @@ -2430,3 +2345,18 @@ g { background-color: rgba(0,0,0,0.3); z-index: 1000; } + +.theme-code-block { + padding: 0px; + margin: 0px !important; + + & > code { + padding: 0px; + margin: 0px; + } + + .prism-code { + background: transparent !important; + background-color: transparent !important; + } +} \ No newline at end of file diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 0407833e6..2690e5d91 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -2,5 +2,5 @@ import React from 'react'; import { Redirect } from '@docusaurus/router'; export default function Home(): JSX.Element { - return ; + return ; } diff --git a/src/plugins/shiki/CHANGELOG.md b/src/plugins/shiki/CHANGELOG.md deleted file mode 100644 index 0972e532c..000000000 --- a/src/plugins/shiki/CHANGELOG.md +++ /dev/null @@ -1,178 +0,0 @@ -# docusaurus-preset-shiki-twoslash - -## 1.1.41 - -### Patch Changes - -- remark-shiki-twoslash@3.1.3 - -## 1.1.40 - -### Patch Changes - -- Updated dependencies [e133a03] - - remark-shiki-twoslash@3.1.2 - -## 1.1.39 - -### Patch Changes - -- Updated dependencies [e6b739c] -- Updated dependencies [bfca2ac] - - remark-shiki-twoslash@3.1.1 - -## 1.1.38 - -### Patch Changes - -- Updated dependencies [aa047ea] -- Updated dependencies [53d3730] - - remark-shiki-twoslash@3.1.0 - -## 1.1.37 - -### Patch Changes - -- Updated dependencies [a77a7c6] - - remark-shiki-twoslash@3.0.9 - -## 1.1.36 - -### Patch Changes - -- Updated dependencies [b041c61] - - remark-shiki-twoslash@3.0.8 - -## 1.1.35 - -### Patch Changes - -- 17c0d12: feat(docusaurus-preset): support shorthands, support mix of preset and plugin - -## 1.1.34 - -### Patch Changes - -- Updated dependencies [f4d749f] -- Updated dependencies [b4570bb] -- Updated dependencies [2bc773e] - - remark-shiki-twoslash@3.0.7 - -## 1.1.33 - -### Patch Changes - -- remark-shiki-twoslash@3.0.6 - -## 1.1.32 - -### Patch Changes - -- Updated dependencies [86d6214] - - remark-shiki-twoslash@3.0.5 - -## 1.1.31 - -### Patch Changes - -- Updated dependencies [e5ecfea] - - remark-shiki-twoslash@3.0.4 - -## 1.1.30 - -### Patch Changes - -- Updated dependencies [bc5330b] - - remark-shiki-twoslash@3.0.3 - -## 1.1.29 - -### Patch Changes - -- Updated dependencies [56b4e11] - - remark-shiki-twoslash@3.0.2 - -## 1.1.27 - -### Patch Changes - -- Updated dependencies [8fffcd9] - - remark-shiki-twoslash@3.0.0 - -## 1.1.20 - -### Patch Changes - -- Updated dependencies [bbba24f] - - remark-shiki-twoslash@2.0.5 - -## 1.1.19 - -### Patch Changes - -- remark-shiki-twoslash@2.0.4 - -## 1.1.18 - -### Patch Changes - -- 61a6af5: Adds support for an annotation system. This is still work in progress, but the goal is to allow you to provide a way to write meta-commentary on a code-sample from the outside of the code block by having an arrow and some comments. - - For example - - ```` - ```js twoslash - function compact(arr) { - // @annotate: left 56 - No editor warnings in JavaScript files

This crashes at runtime. - if (orr.length > 10) return arr - return arr - } - ``` - ```` - - Would create a codeblocck with: - - ```js - function compact(arr) { - if (orr.length > 10) return arr; - return arr; - } - ``` - - And a little SVG arrow and the text "No editor warnings in JavaScript files

This crashes at runtime." next to it. - I'll be tweaking the syntax over time, but for now the syntax is `// @annotate: [left/right] [arrow degree rotatation] [text degree rotatation] - Text to show` - -- Updated dependencies [61a6af5] - - remark-shiki-twoslash@2.0.3 - -## 1.1.16 - -### Patch Changes - -- a2bb854: Fix copy button not working on production. - -## 1.1.15 - -### Patch Changes - -- remark-shiki-twoslash@2.0.1 - -## 1.1.14 - -### Patch Changes - -- Updated dependencies [8a0fcc0] - - remark-shiki-twoslash@2.0.0 - -## 1.1.12 - -### Patch Changes - -- Updated dependencies [f92d030] - - remark-shiki-twoslash@1.5.6 - -## 1.1.11 - -### Patch Changes - -- remark-shiki-twoslash@1.5.5 diff --git a/src/plugins/shiki/LICENSE b/src/plugins/shiki/LICENSE deleted file mode 100644 index 9f2bf75b1..000000000 --- a/src/plugins/shiki/LICENSE +++ /dev/null @@ -1,17 +0,0 @@ -The MIT License (MIT) -Copyright (c) Microsoft Corporation - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and -associated documentation files (the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT -NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/plugins/shiki/README.md b/src/plugins/shiki/README.md deleted file mode 100644 index 3ccce5b88..000000000 --- a/src/plugins/shiki/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# this is a modified version of this plugin - -### Docusaurus Preset Shiki Twoslash - -Sets up markdown code blocks to run through [shiki](https://shiki.matsu.io) which means it gets the VS Code quality -syntax highlighting mixed with the twoslash JavaScript tooling from the TypeScript website. - -#### Setup - -1. **Install the dependency**: `yarn add docusaurus-preset-shiki-twoslash` -1. **Include `"docusaurus-preset-shiki-twoslash"` in the presets section** of `docusaurus.config.js` - - ```diff - presets: [ - [ - '@docusaurus/preset-classic', - { - // ... - }, - ], - + [ - + 'docusaurus-preset-shiki-twoslash', - + { - + themes: ["min-light", "nord"], - + }, - + ], - ], - ``` - -1. Set up light/dark mode CSS in `src/css/custom.css`: - - ```css - [data-theme="light"] .shiki.nord { - display: none; - } - - [data-theme="dark"] .shiki.min-light { - display: none; - } - ``` - -1. **Go read [npmjs.com/package/remark-shiki-twoslash](https://www.npmjs.com/package/remark-shiki-twoslash)** to see what is available, this package leaves all the heavy work to that module. diff --git a/src/plugins/shiki/docusaurus-theme-shiki-twoslash/index.js b/src/plugins/shiki/docusaurus-theme-shiki-twoslash/index.js deleted file mode 100644 index 4bc54b95b..000000000 --- a/src/plugins/shiki/docusaurus-theme-shiki-twoslash/index.js +++ /dev/null @@ -1,15 +0,0 @@ -const path = require("path") - -/** - * @returns {import("@docusaurus/types").Plugin} - */ -function theme() { - return { - name: "docusaurus-theme-shiki-twoslash", - getThemePath() { - return path.resolve(__dirname, "./theme") - }, - } -} - -module.exports = theme diff --git a/src/plugins/shiki/docusaurus-theme-shiki-twoslash/theme/CodeBlock/index.js b/src/plugins/shiki/docusaurus-theme-shiki-twoslash/theme/CodeBlock/index.js deleted file mode 100644 index 8f29d9044..000000000 --- a/src/plugins/shiki/docusaurus-theme-shiki-twoslash/theme/CodeBlock/index.js +++ /dev/null @@ -1,62 +0,0 @@ -// Based on https://github.com/facebook/docusaurus/blob/ed9d2a26f5a7b8096804ae1b3a4fffc504f8f90d/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx -// which is under MIT License as per the banner - -import "./styles.css" - -import copy from "copy-text-to-clipboard" -import React, { useRef, useState } from "react" -import Translate, { translate } from "@docusaurus/Translate" - -const CodeBlock = ({ children, ...props }) => { - const pre = useRef(null) - const [showCopied, setShowCopied] = useState(false) - - function grabText(el, root = true) { - if (el.tagName == 'BUTTON') return ''; - if (el.children.length) { - let t = [...el.children] - .map(el => grabText(el, false)) - .filter(a => a) - .join(root ? '\n' : ''); - return t; - } else { - return el.textContent; - } -} - - const handleCopyCode = () => { - if (pre.current) { - copy(grabText(pre.current.querySelector(".code-container > *"))) - } - setShowCopied(true) - setTimeout(() => setShowCopied(false), 2000) - } - - return ( -
-      {children}
-      
-    
- ) -} - -export default CodeBlock \ No newline at end of file diff --git a/src/plugins/shiki/docusaurus-theme-shiki-twoslash/theme/CodeBlock/styles.css b/src/plugins/shiki/docusaurus-theme-shiki-twoslash/theme/CodeBlock/styles.css deleted file mode 100644 index e764aeb41..000000000 --- a/src/plugins/shiki/docusaurus-theme-shiki-twoslash/theme/CodeBlock/styles.css +++ /dev/null @@ -1,293 +0,0 @@ -/* Title */ - -pre.shiki > .code-title { - position: absolute; - left: 0; - right: 0; - top: 0; - width: 100%; - - font-family: var(--ifm-font-family-base); - font-size: var(--ifm-code-font-size); - font-weight: 500; - - color: var(--ifm-color-emphasis-900); - border-bottom: 1px solid var(--ifm-color-emphasis-300); - padding: 0 var(--ifm-pre-padding); - - height: 2.5rem; - display: flex; - align-items: center; -} - -pre.shiki.with-title { - padding-top: 2.5rem; -} - -/** - * Copy-to-Clipboard Button - * Taken from https://github.com/facebook/docusaurus/blob/ed9d2a26f5a7b8096804ae1b3a4fffc504f8f90d/packages/docusaurus-theme-classic/src/theme/CodeBlock/styles.module.css - * which is under MIT License as per the banner - */ - -pre.shiki .copy-button { - appearance: none; - border: none; - cursor: pointer; - - background: rgba(0, 0, 0, 0.3); - border-radius: var(--ifm-global-radius); - color: var(--ifm-color-white); - opacity: 0; - user-select: none; - padding: 0.4rem 0.5rem; - position: absolute; - right: calc(var(--ifm-pre-padding) / 2); - top: calc(var(--ifm-pre-padding) / 2); - transition: opacity 200ms ease-in-out; -} - -pre.shiki.with-title .copy-button { - top: calc(2.5rem + var(--ifm-pre-padding) / 2); -} - -pre.shiki:hover > .copy-button, -.copy-button:focus { - opacity: 1; -} - -/* Base */ -pre.shiki { - overflow: visible; - position: relative; - padding: 0; -} - -/* Sets a horizontal padding for all the lines */ -pre.shiki div.line, -pre.shiki div.meta-line { - padding-left: var(--ifm-pre-padding); - padding-right: var(--ifm-pre-padding); -} - -/* Sets vertical padding for the container */ -pre.shiki > .code-container { - padding: var(--ifm-pre-padding) 0; -} - -/* Border for light themes, dark themes don't usually require borders */ -pre.shiki { - border: 1px solid transparent; -} - -[data-theme="light"] pre.shiki { - border-color: var(--ifm-color-emphasis-300); -} - -/* Hide language identifiers */ -pre.shiki .language-id { - display: none; -} - -/* Line highlighting */ -pre.shiki:hover .dim { - opacity: 1; - filter: none; -} - -pre.shiki div.dim { - opacity: 0.5; - filter: grayscale(1); - transition: opacity 200ms ease-in-out; -} - -pre.shiki div.dim, -pre.shiki div.highlight { - margin: 0; - /* To avoid flickering on the highlighted lines focus */ - border-left: 2px solid transparent; -} - -pre.shiki div.highlight { - opacity: 1; - transition: background-color 200ms ease-in-out; -} - -pre.shiki:hover div.highlight { - background-color: var(--ifm-hover-overlay); - border-left: 2px solid var(--ifm-color-primary); - width: 100%; -} - -pre.shiki div.line { - min-height: 1rem; -} - -/** When you mouse over the pre, show the underlines */ -pre.twoslash:hover data-lsp { - border-color: var(--ifm-color-emphasis-400); -} - -/** The tooltip-like which provides the LSP response */ -pre.twoslash data-lsp:hover::before { - content: attr(lsp); - position: absolute; - transform: translate(0, 1.5rem); - - background-color: #3f3f3f; - color: #fff; - text-align: left; - padding: 5px 8px; - border-radius: 2px; - font-size: 85%; - white-space: pre-wrap; - z-index: 100; -} - -pre .code-container { - overflow: auto; -} - -pre code { - white-space: pre; - -webkit-overflow-scrolling: touch; -} - -pre code a { - text-decoration: none; -} - -/* Error */ -pre data-err { - /* Extracted from VS Code */ - background: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23c94824'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") - repeat-x bottom left; - padding-bottom: 3px; -} - -pre .query { - margin-bottom: 10px; - color: var(--ifm-color-primary); - display: inline-block; -} - -/** - * In order to have the 'popped out' style design and to not break the layout - * we need to place a fake and un-selectable copy of the error which _isn't_ broken out - * behind the actual error message. - * This sections keeps both of those two in in sync - */ - -pre .error, -pre .error-behind { - margin-top: 8px; - padding: 6px; - padding-left: 14px; - width: 100%; - white-space: pre-wrap; - display: block; -} - -pre .error { - position: absolute; - background-color: #fee; - border-left: 2px solid var(--ifm-color-danger-dark); - /* Give the space to the error code */ - display: flex; - align-items: center; - color: black; -} - -pre .error .code { - display: none; -} - -pre .error-behind { - user-select: none; - color: #fee; -} - -/* Queries */ -pre .arrow { - /* Transparent background */ - background-color: var(--ifm-color-emphasis-200); - position: relative; - top: -7px; - margin-left: 0.1rem; - /* Edges */ - border-left: 1px solid var(--ifm-color-emphasis-200); - border-top: 1px solid var(--ifm-color-emphasis-200); - transform: translateY(25%) rotate(45deg); - /* Size */ - height: 8px; - width: 8px; -} - -pre .popover { - margin-bottom: 10px; - background-color: var(--ifm-color-emphasis-200); - display: inline-block; - padding: 0 0.5rem 0.3rem; - margin-top: 10px; - border-radius: 3px; -} - -/* Completion */ -pre .inline-completions ul.dropdown { - display: inline-block; - position: absolute; - width: 240px; - background-color: var(--ifm-color-emphasis-200); - padding-top: 5px; - font-family: var(--code-font); - margin: 0 0 0 3px; - padding: 0; - border-left: 2px solid var(--ifm-color-primary); -} - -pre .inline-completions ul.dropdown::before { - background-color: var(--ifm-color-primary); - width: 2px; - position: absolute; - top: -1.2rem; - left: -2px; - content: " "; -} - -pre .inline-completions ul.dropdown li { - overflow-x: hidden; - padding-left: 4px; - margin-bottom: 4px; -} - -pre .inline-completions ul.dropdown li.deprecated { - text-decoration: line-through; -} - -pre .inline-completions ul.dropdown li span.result-found { - color: var(--ifm-color-primary); -} - -pre .inline-completions ul.dropdown li span.result { - width: 100px; - color: black; - display: inline-block; -} - -data-lsp { - /* Ensures there's no 1px jump when the hover happens */ - border-bottom: 1px dotted transparent; - /* Fades in unobtrusively */ - transition-timing-function: ease; - transition: border-color 0.3s; -} - -/* Respect people's wishes to not have animations */ -@media (prefers-reduced-motion: reduce) { - data-lsp, - pre .code-container > a, - pre.shiki div.dim, - pre.shiki div.highlight { - transition: none; - } -} diff --git a/src/plugins/shiki/docusaurus-theme-shiki-twoslash/theme/MDXComponents/index.js b/src/plugins/shiki/docusaurus-theme-shiki-twoslash/theme/MDXComponents/index.js deleted file mode 100644 index cddd6d53c..000000000 --- a/src/plugins/shiki/docusaurus-theme-shiki-twoslash/theme/MDXComponents/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react" -import CodeBlock from "@theme/CodeBlock" -import MDXComponents from "@theme-init/MDXComponents" - -const NewComponents = { - ...MDXComponents, - div: props => (props.className === "shiki-twoslash-fragment" ? <>{props.children} :
), - pre: props => , - code: props => , -} - -export default NewComponents diff --git a/src/plugins/shiki/index.js b/src/plugins/shiki/index.js deleted file mode 100644 index 326f1a694..000000000 --- a/src/plugins/shiki/index.js +++ /dev/null @@ -1,103 +0,0 @@ -const path = require("path") -const { default: twoslash } = require("remark-shiki-twoslash") - -/** - * @param {import("@docusaurus/types").DocusaurusContext} context - * @param {import("remark-shiki-twoslash").Settings} pluginOptions - * @returns {import("@docusaurus/types").Preset} - */ -function preset(context, pluginOptions) { - const options = { ...pluginOptions, wrapFragments: true } - - // So, how do we hijack the code renderer? We mostly override the user's configuration for - // the presets. - - if (!context.siteConfig.presets || !context.siteConfig.plugins) { - throw Error("Couldn't find either a preset or a plugin") - } - - // Available presets & plugins - // We could parse out the repeated parts from the strings but - // I think it's better this way as a way of showing that twoslash could - // technically support all kinds of presets, not just official ones - const presets = [["@docusaurus/preset-classic", "classic"]] - const plugins = [ - ["@docusaurus/plugin-content-docs", "content-docs"], - ["@docusaurus/plugin-content-blog", "content-blog"], - ["@docusaurus/plugin-content-pages", "content-pages"], - ] - - // Flag to keep track if at least one of the presets or the plugins are installed - let flag = false - - /** - * Checks if b is in a - * @param {string[][]} a - * @param {string | [string] | [string, any]} b - */ - const contains = (a, b) => a.flat().includes(typeof b === "string" ? b : b[0]) - - /** - * Structure `a` into proper `[a, {}]` - * @param {string | [string] | [string, any]} a - * @returns {[string, any]} - * - `[a, {}]` if `a` is `string` - * - `[a[0], {}]` if `a` is `[string]` - * - `a` if `a` is already `[string, {}]` - */ - const structure = a => (typeof a === "string" ? [a, {}] : a.length === 1 ? [a[0], {}] : a) - - // Adds remark-shiki-twoslash into beforeDefaultRemarkPlugins - const addTwoslash = a => { - flag = true - - if (!a.beforeDefaultRemarkPlugins) { - a.beforeDefaultRemarkPlugins = [] - } - a.beforeDefaultRemarkPlugins.push([twoslash, options]) - return a - } - - context.siteConfig.presets = context.siteConfig.presets.map(preset => { - if (!contains(presets, preset)) { - return preset - } - - const output = structure(preset) - const sections = ["docs", "blog", "pages"] - for (const section of sections) { - // If the plugin is disabled, keep it disabled - if (output[1][section] === false) continue - if (!output[1][section]) output[1][section] = {} - addTwoslash(output[1][section]) - } - - return output - }) - - context.siteConfig.plugins = context.siteConfig.plugins.map(plugin => { - if (typeof plugin === "function" || (Array.isArray(plugin) && typeof plugin[0] === "function")) { - return plugin - } - - // if the plugin is not supported - if (!contains(plugins, plugin)) { - return plugin - } - - return addTwoslash(structure(plugin)) - }) - - if (!flag) { - throw Error(` - Couldn't find a preset or a plugin supported by twoslash - Make sure you installed one of these presets [ ${presets.map(p => p[0]).join(", ")} ], - or one of these plugins [ ${plugins.map(p => p[0]).join(", ")} ].\n`) - } - - return { - themes: [path.resolve(__dirname, "./docusaurus-theme-shiki-twoslash")], - } -} - -module.exports = preset diff --git a/src/plugins/shiki/package.json b/src/plugins/shiki/package.json deleted file mode 100644 index 7242f4726..000000000 --- a/src/plugins/shiki/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "docusaurus-preset-shiki-twoslash", - "version": "1.1.44", - "license": "MIT", - "homepage": "https://github.com/shikijs/twoslash", - "repository": { - "url": "https://github.com/shikijs/twoslash.git", - "directory": "packages/docusaurus-preset-shiki-twoslash", - "type": "git" - }, - "bugs": { - "url": "https://github.com/shikijs/twoslash/issues" - }, - "description": "A Docusaurus plugin which adds shiki with optional twoslash-powered code samples", - "author": "Orta Therox", - "main": "./index.js", - "typings": "./index.d.ts", - "scripts": { - "bootstrap": "echo 'NOOP'", - "build": "pnpm exec tsc index.js --declaration --allowJs --emitDeclarationOnly --esModuleInterop --target es2018 -moduleResolution node", - "test": "echo 'NOOP'", - "lint": "echo 'NOOP'" - }, - "dependencies": { - "copy-text-to-clipboard": "^3.0.1", - "remark-shiki-twoslash": "3.1.7", - "typescript": ">3" - }, - "devDependencies": { - "@docusaurus/types": "^2.0.0-beta.3", - "@types/node": "^14.14.31" - } -} diff --git a/src/theme/MDXComponents.js b/src/theme/MDXComponents.js index ac93ce0a8..458d63534 100644 --- a/src/theme/MDXComponents.js +++ b/src/theme/MDXComponents.js @@ -1,8 +1,6 @@ -import React from 'react'; -// Import the original mapper import MDXComponents from '@theme-original/MDXComponents'; -import Highlight from '@site/src/components/Highlight'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; // Import the FontAwesomeIcon component +import Version from '@site/src/components/Version'; +import { FontAwesomeIcon as Icon } from '@fortawesome/react-fontawesome'; // Import the FontAwesomeIcon component import { library } from '@fortawesome/fontawesome-svg-core'; // Import the library component import { fab } from '@fortawesome/free-brands-svg-icons'; // Import all brands icons import { fas } from '@fortawesome/free-solid-svg-icons'; // Import all solid icons @@ -12,8 +10,6 @@ library.add(fab, fas); export default { // Re-use the default mapping ...MDXComponents, - // Map the "" tag to our Highlight component - // `Highlight` will receive all props that were passed to `` in MDX - Highlight, - Icon: FontAwesomeIcon, + Version, + Icon, }; \ No newline at end of file diff --git a/src/theme/NotFound.js b/src/theme/NotFound.js index 3e7a78fe0..61ec0735a 100644 --- a/src/theme/NotFound.js +++ b/src/theme/NotFound.js @@ -1,13 +1,49 @@ import React from 'react'; -import { useLocation } from '@docusaurus/router'; -import { Redirect } from '@docusaurus/router'; +import Translate, { translate } from '@docusaurus/Translate'; +import { PageMetadata } from '@docusaurus/theme-common'; +import Layout from '@theme/Layout'; export default function NotFound() { - - const location = useLocation(); - const { pathname } = location; - const lastSlashIndex = pathname.lastIndexOf('/'); - const redirectTo = pathname.slice(0, lastSlashIndex); - return ; + return ( + <> + + +
+
+
+

+ + Page Not Found + +

+

+ + We could not find what you were looking for. + +

+

+ + Please contact the owner of the site that linked you to the + original URL and let them know their link is broken. + +

+
+
+
+
+ + ); + } \ No newline at end of file diff --git a/src/theme/prism-include-languages.js b/src/theme/prism-include-languages.js index 40877d100..7405a7e40 100644 --- a/src/theme/prism-include-languages.js +++ b/src/theme/prism-include-languages.js @@ -27,7 +27,7 @@ export default function prismIncludeLanguages(PrismObject) { record: /\b[\w\d]+[:](([\w\d]+\b|⟨[^⟩]+⟩|`[^`]+`)|(?=\{|\[))?/i, cast: /[<](bool|int|float|string|number|decimal|datetime|duration|future)[>]/, constant: /\b(?:math|time)::[\w]+/i, - keyword: /\b(?:AFTER|ANALYZER|ASC|AS|ASSERT|BEFORE|BEGIN( TRANSACTION)?|BM25|BREAK|CANCEL( TRANSACTION)?|COLUMNS|COMMENT|COMMIT( TRANSACTION)?|CONTENT|CREATE|CONTINUE|DATABASE|DB|DEFAULT|DEFINE|DELETE|DESC|DESCRIBE|DIFF|DIMENSION|DIST|DROP|ELSE|END|ES256|ES384|ES512|EUCLIDEAN|EVENT|EXPLAIN|FETCH|FIELD|FIELDS|FILTERS|FOR|FROM|FULL|FUNCTION|GROUP( BY)?|HIGHLIGHTS|HS256|HS384|HS512|HSNW|IF|INDEX|INFO|INSERT(( IGNORE)? INTO)?|INTO|IN|KILL|LET|LIMIT( BY)?|LIVE|LOGIN|MERGE|MTREE|NAMESPACE|NOINDEX|NS|ON DUPLICATE KEY UPDATE|ON|ONLY|ORDER( BY)?|PASSHASH|PASSWORD|PERMISSIONS|PS256|PS384|PS512|RELATE|REMOVE|REPLACE|RETURN|RS256|RS384|RS512|SCHEMAFULL|SCHEMALESS|SCOPE|SEARCH|SELECT|SESSION|SET|SIGNIN|SIGNUP|SPLIT( ON)?|START( AT)?|TABLE|THEN|THROW|TIMEOUT|TOKEN|TOKENIZERS|TYPE|UNIQUE|UPDATE|USE|USER|VALUE|VALUES|VERSION|WITH|WHEN|WHERE)\b/, + keyword: /\b(?:AFTER|ANALYZER|ASC|AS|ASSERT|BEFORE|BEGIN( TRANSACTION)?|BM25|BREAK|CANCEL( TRANSACTION)?|COLUMNS|COMMENT|COMMIT( TRANSACTION)?|CONTENT|CREATE|CONTINUE|DATABASE|DB|DEFAULT|DEFINE|DELETE|DESC|DESCRIBE|DIFF|DIMENSION|DIST|DROP|ELSE|END|ES256|ES384|ES512|EUCLIDEAN|EVENT|EXISTS|EXPLAIN|FETCH|FIELD|FIELDS|FILTERS|FOR|FROM|FULL|FUNCTION|GROUP( BY)?|HIGHLIGHTS|HS256|HS384|HS512|HSNW|IF|INDEX|INFO|INSERT(( IGNORE)? INTO)?|INTO|IN|KILL|LET|LIMIT( BY)?|LIVE|LOGIN|MERGE|MTREE|NAMESPACE|NOINDEX|NOT|NS|ON DUPLICATE KEY UPDATE|ON|ONLY|ORDER( BY)?|PASSHASH|PASSWORD|PERMISSIONS|PS256|PS384|PS512|RELATE|REMOVE|REPLACE|RETURN|RS256|RS384|RS512|SCHEMAFULL|SCHEMALESS|SCOPE|SEARCH|SELECT|SESSION|SET|SIGNIN|SIGNUP|SPLIT( ON)?|START( AT)?|TABLE|THEN|THROW|TIMEOUT|TOKEN|TOKENIZERS|TYPE|UNIQUE|UPDATE|USE|USER|VALUE|VALUES|VERSION|WITH|WHEN|WHERE)\b/, operator: /==|!=|\*=|\?=|=|!~|\*~|\?~|~|<=|<|>=|>|\+|-|@[0-9]*@|\*|×|∙|\/|÷|∋|∌|∈|∉|⊇|⊃|⊅|⊆|⊂|⊄|&&|\|\||\b(?:AND|OR|IS NOT|IS|CONTAINSALL|CONTAINSANY|CONTAINSNONE|CONTAINSSOME|CONTAINSNOT|CONTAINS|ALLINSIDE|ANYINSIDE|NONEINSIDE|SOMEINSIDE|NOTINSIDE|INSIDE|OUTSIDE|INTERSECTS)\b/i, connector: /[.]|<->|<-|->/, nothing: /\b(?:EMPTY|NONE|NULL)\b/i, diff --git a/tsconfig.json b/tsconfig.json index 6f4756980..230f200e8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,6 @@ { - // This file is not used in compilation. It is here just for a nice editor experience. - "extends": "@tsconfig/docusaurus/tsconfig.json", + "extends": "@docusaurus/tsconfig", "compilerOptions": { "baseUrl": "." } -} +} \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/cli/_category_.json b/versioned_docs/version-1.0.x/cli/_category_.json deleted file mode 100644 index 96da00e76..000000000 --- a/versioned_docs/version-1.0.x/cli/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "CLI tool", - "position": 10 -} \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/cli/export.mdx b/versioned_docs/version-1.0.x/cli/export.mdx deleted file mode 100644 index eb4adb31e..000000000 --- a/versioned_docs/version-1.0.x/cli/export.mdx +++ /dev/null @@ -1,137 +0,0 @@ ---- -sidebar_position: 4 ---- - - -# Export command - -# Export command - -The export command exports a SurrealQL script file from a local or remote SurrealDB database server. - -:::note -__BEFORE YOU START :__ Make sure you’ve [installed SurrealDB](/docs/surrealdb/1.0.x/installation/overview/) — it should only take a second! -::: - -## Command options - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- -e, --endpoint / --conn - OPTIONAL - - Sets the url of the database server to connect to -
- -u / --user - REQUIRED - - Sets master username for the database -
- -p / --pass - REQUIRED - - Sets master password for the database -
- --ns - REQUIRED - - Sets the desired namespace in which to export data -
- --db - REQUIRED - - Sets the desired database into which to export data -
- -## Positional argument - - - - - - - - - - - - - - -
ArgumentsDescription
- file - REQUIRED - - Sets the the path to the file which should be exported -
- -### Example usage -To perform a SurrealQL database export into a local file, in a terminal run the `surreal export` command with the required arguments. - -```bash -surreal export --conn http://localhost:8000 --user root --pass root --ns test --db test export.surql -``` - -## Command help -To see the help information and usage instructions, in a terminal run the surreal export --help command without any further arguments. This command gives general information on the arguments, inputs, and additional options for the export command. - -```bash -surreal help export -``` - -The output of the above command : - -``` -Export a SurrealQL script into an existing database - -USAGE: - -surreal export [OPTIONS] - -ARGS: - Path to the sql file to export - - -OPTIONS: --e, --endpoint, --conn Remote database server URL to connect to - [default: https://cloud.surrealdb.com] - ---db The database to export the data into - --h, --help Print help information - ---ns The namespace to export the data into - --p, --pass Database authentication password to use when connecting - [default: root] - --u, --user Database authentication username to use when connecting [default: root] -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/cli/help.mdx b/versioned_docs/version-1.0.x/cli/help.mdx deleted file mode 100644 index 0c480b381..000000000 --- a/versioned_docs/version-1.0.x/cli/help.mdx +++ /dev/null @@ -1,85 +0,0 @@ ---- -sidebar_position: 11 ---- - -# Help command - -# Help command - -The help command displays help information and instructions on the command-line tool and its arguments. - -:::note -__BEFORE YOU START :__ Make sure you’ve [installed SurrealDB](/docs/surrealdb/1.0.x/installation/overview/) — it should only take a second! -::: - -## Show the command-line help information -To see the general help information for the command-line tool, in a terminal run the `surreal help` command without any further arguments. This command gives general information on the other functionality which can be run with the command-line tool. - -```bash -surreal help -``` - -```bash - - .d8888b. 888 8888888b. 888888b. -d88P Y88b 888 888 'Y88b 888 '88b -Y88b. 888 888 888 888 .88P - 'Y888b. 888 888 888d888 888d888 .d88b. 8888b. 888 888 888 8888888K. - 'Y88b. 888 888 888P' 888P' d8P Y8b '88b 888 888 888 888 'Y88b - '888 888 888 888 888 88888888 .d888888 888 888 888 888 888 -Y88b d88P Y88b 888 888 888 Y8b. 888 888 888 888 .d88P 888 d88P - 'Y8888P' 'Y88888 888 888 'Y8888 'Y888888 888 8888888P' 8888888P' - - -SurrealDB command-line interface and server - -To get started using SurrealDB, and for guides on connecting to and building applications -on top of SurrealDB, check out the SurrealDB documentation (https://surrealdb.com/docs). - -If you have questions or ideas, join the SurrealDB community (https://surrealdb.com/community). - -If you find a bug, submit an issue on Github (https://github.com/surrealdb/surrealdb/issues). - -We would love it if you could star the repository (https://github.com/surrealdb/surrealdb). - ----------- - -USAGE: - surreal [SUBCOMMAND] - -OPTIONS: - -h, --help Print help information - -SUBCOMMANDS: - start Start the database server - import Import a SQL script into an existing database - export Export an existing database into a SQL script - version Output the command-line tool version information - sql Start an SQL REPL in your terminal with pipe support - help Print this message or the help of the given subcommand(s) - -``` - -## Show the `start` command help information - -To see the help information and usage instructions for the `start` command, in a terminal run the `surreal help start` command without any further arguments. This command gives general information on the arguments, inputs, and additional options for starting a SurrealDB database server instance. - -```bash -surreal start --help -``` - -## Show the import command help information - -To see the help information and usage instructions for the `import` command, in a terminal run the `surreal help import` command without any further arguments. This command gives general information on the arguments, inputs, and additional options for importing a SurrealQL script file into a local or remote SurrealDB database server instance. - -```bash -surreal import --help -``` - -## Show the `export` command help information - -To see the help information and usage instructions for the `export` command, in a terminal run the `surreal help export` command without any further arguments. This command gives general information on the arguments, inputs, and additional options for export a SurrealQL script file from a local or remote SurrealDB database server instance. - -```bash -surreal help export -``` diff --git a/versioned_docs/version-1.0.x/cli/overview.mdx b/versioned_docs/version-1.0.x/cli/overview.mdx deleted file mode 100644 index e49e1f696..000000000 --- a/versioned_docs/version-1.0.x/cli/overview.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Overview - -# Overview - -The SurrealDB command-line tool can be used to export a dataset as SurrealQL from a local or remote SurrealDB database, import SurrealQL data into a local or remote database, and start a single SurrealDB instance or distributed cluster. - - -## Getting Started - -To start using the SurrealDB CLI, you can install it globally using npm or yarn. Once installed, you can run the CLI commands from your terminal or command prompt. The CLI documentation provides detailed information on each command, including usage examples and options. - -We hope that the SurrealDB CLI simplifies your interactions with SurrealDB and empowers you to efficiently manage your databases and clusters. Let's dive into the CLI section and explore its capabilities! diff --git a/versioned_docs/version-1.0.x/cli/sql.mdx b/versioned_docs/version-1.0.x/cli/sql.mdx deleted file mode 100644 index 5cc057053..000000000 --- a/versioned_docs/version-1.0.x/cli/sql.mdx +++ /dev/null @@ -1,160 +0,0 @@ ---- -sidebar_position: 9 ---- - -# SQL command - -# SQL command - -The SQL command starts a REPL for running or piping SurrealQL queries to a local or remote SurrealDB database server. - -:::note -__BEFORE YOU START :__ Make sure you’ve [installed SurrealDB](/docs/surrealdb/1.0.x/installation/overview/) — it should only take a second! -::: - -## Command options - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- -e, --endpoint / --conn - OPTIONAL - - Sets the url of the database server to connect to -
- -u / --user - REQUIRED - - Sets master username for the database -
- -p / --pass - REQUIRED - - Sets master password for the database -
- --ns - OPTIONAL - - Sets the desired namespace in which to import data -
- --db - OPTIONAL - - Sets the desired database into which to import data -
- --pretty - OPTIONAL - - Sets wheter database respones should be pretty printed -
- --json - OPTIONAL - - Sets whether to emit results in JSON -
- --multi - OPTIONAL - - Sets whether omitting semicolon causes a newline -
- -h / --help - OPTIONAL - - prints help -
- -### Example usage - -To start a terminal-based REPL and run or pipe queries to a local or remote SurrealDB database, in a terminal run the `surreal sql` command with the required arguments. - -Once you see the `>` character you can type your SurrealQL query, followed by the `enter` key. The command has support for `↑` and `↓` arrows for selecting previous SQL statements, and stores the statement history in a `history.txt` file. To exit the REPL use the `ctrl + c` or `ctrl + d` key combinations. - -```bash -surreal sql --endpoint http://localhost:8000 --username root --password root --namespace test --database test -``` - -It is also possible to pipe a set of statements to a remote database. This functionality is only designed for submitting a small number of queries to the database server. For a large number of queries, use the [import command](/docs/surrealdb/cli/import). - -```bash -cat myfile.surql | surreal sql --endpoint http://localhost:8000 --username root --password root --namespace test --database test -``` - - -## Command help -To see the help information and usage instructions, in a terminal run the `surreal sql --help` command without any further arguments. This command gives general information on the arguments, inputs, and additional options for the `sql` command. - -```bash -surreal sql --help -``` - -``` -Start an SQL REPL in your terminal with pipe support - -USAGE: -surreal sql [OPTIONS] - -ARGS: - Path to the sql file to import - -OPTIONS: --e, --endpoint Remote database server url to connect to [default: ws://localhost:8000] [aliases: conn] - ---db The database selected for the operation [env: SURREAL_DATABASE=] [aliases: db] - --h, --help Print help information - ---ns The namespace selected for the operation [env: SURREAL_NAMESPACE=] [aliases: ns] - --p, --pass Database authentication password to use when connecting [env: SURREAL_PASS=] [aliases:pass] - --u, --user Database authentication username to use when connecting [env: SURREAL_USER=] [aliases:user] - ---pretty Whether database responses should be pretty printed - --json Whether to emit results in JSON - ---multi Whether omitting semicolon causes a newline -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/cli/start.mdx b/versioned_docs/version-1.0.x/cli/start.mdx deleted file mode 100644 index 74bd4c9cd..000000000 --- a/versioned_docs/version-1.0.x/cli/start.mdx +++ /dev/null @@ -1,225 +0,0 @@ ---- -sidebar_position: 2 ---- - - -# Start command - -# Start command - -The start command starts a SurrealDB server in memory, on disk, or in a distributed setup. - -:::note -__BEFORE YOU START :__ Make sure you’ve [installed SurrealDB](/docs/surrealdb/1.0.x/installation/overview/) — it should only take a second! -::: - -## Command options - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- -b / --bind - OPTIONAL - - Sets the hostname or ip address to listen for connections on -
- -l / --log - OPTIONAL - - Sets the logging level for the database server -
- -u / --user - OPTIONAL - - Sets master username for the database -
- -p / --pass - OPTIONAL - - Sets master password for the database -
- --auth - OPTIONAL - - Enables authentication for the database -
- -s / --strict - OPTIONAL - - Sets whether strict mode is enabled on this database instance -
- -## Positional argument - - - - - - - - - - - - - -
ArgumentsDescription
- path - OPTIONAL - - Sets the the database path used for storing data, can be one of: -
    -
  • memory
  • -
  • file:<path>
  • -
  • tikv:<addr>
  • -
  • file://<path>
  • -
  • tikv://<addr>
  • -
-
- - -### Example usage - -To start a SurrealDB server in memory, in a terminal run the `surreal start` command without any further arguments. - -```bash -surreal start -``` - -## Strict mode - -SurrealDB supports the ability to startup in strict mode. When running in strict mode, all `NAMESPACE`, `DATABASE`, and `TABLE` definitions will not be created automatically when data is inserted. Instead, if the selected namespace, database, or table has not been specifically defined, then the query will return an error. - -```bash -surreal start --strict --log debug memory -``` - -## Authentication - -Authentication mode is not enabled by default in SurrealDB. When not enabled, any guest user is considered to have the same permissions as a root user with the `OWNER` role. - -:::note - NOTE: It is strongly recommended to enable --auth mode when deploying SurrealDB in production. Not having it enabled can result in unauthorised access to your database. -::: - -```bash -surreal start --auth --user [ROOT_USER_NAME] --pass [ROOT_USER_PASSWORD] -``` - -### Command help - -To see the help information and usage instructions, in a terminal run the `surreal start --help` command without any further arguments. This command gives general information on the arguments, inputs, and additional options for the `start` command. - -```bash -surreal start --help -``` -The output of the above command : - -``` -Start the database server - -USAGE: -surreal start [OPTIONS] [PATH] - - -ARGS: -[PATH] Database path used for storing data [env: SURREAL_PATH=] [default: memory] - -OPTIONS: --l, --log The logging level for the database server - [env: SURREAL_LOG=] [default: info] - [possible values: none,full, error, warn, info, debug, trace] - ---no-banner Whether to hide the startup banner [env: SURREAL_NO_BANNER=] - --h, --help Print help information - -DATABASE: - ---tick-interval The interval at which to run node agent tick (including garbage collection) [env: SURREAL_TICK_INTERVAL=][default: 10s] - --s, --strict Whether strict mode is enabled on this database instance [env: SURREAL_STRICT=] - ---query-timeout The maximum duration that a set of statements can run for [env:SURREAL_QUERY_TIMEOUT=] - ---transaction-timeout The maximum duration that any single transaction can run for [env: SURREAL_TRANSACTION_TIMEOUT=] - - -AUTHENTICATION: --u, --username The username for the initial database root user. Only if no other root user exists [env:SURREAL_USER=] [aliases: user] - --p, --password The password for the initial database root user. Only if no other root user exists [env:SURREAL_PASS=] [aliases: pass] - ---auth Whether to enable authentication [env: SURREAL_AUTH=] - - -DATASTORE CONNECTION: ---kvs-ca Path to the CA file used when connecting to the remote KV store [env: SURREAL_KVS_CA=] - ---kvs-crt Path to the certificate file used when connecting to the remote KV store [env:SURREAL_KVS_CRT=] - ---kvs-key Path to the private key file used when connecting to the remote KV store [env:SURREAL_KVS_KEY=] - - -HTTP SERVER: ---web-crt Path to the certificate file for encrypted client connections [env: SURREAL_WEB_CRT=] - ---web-key Path to the private key file for encrypted client connections [env: SURREAL_WEB_KEY=] - ---client-ip The method of detecting the client's IP address [env: SURREAL_CLIENT_IP=] [default:socket] [possible values: none, socket, CF-Connecting-IP, Fly-Client-IP,True-Client-IP, X-Real-IP, X-Forwarded-For] - --b, --bind The hostname or ip address to listen for connections on [env: SURREAL_BIND=] [default:0.0.0.0:8000] - - -CAPABILITIES: --A, --allow-all [...] Allow all capabilities [env: SURREAL_CAPS_ALLOW_ALL=] [possible values:true, false] - ---allow-scripting [...] Allow execution of scripting functions [env: SURREAL_CAPS_ALLOW_SCRIPT=][possible values: true, false] - ---allow-guests [...] Allow guest users to execute queries [env: SURREAL_CAPS_ALLOW_GUESTS=][possible values: true, false] - ---allow-funcs [...] Allow execution of all functions. Optionally, you can provide a comma-separated list of function names to allow [env:SURREAL_CAPS_ALLOW_FUNC=] - ---allow-net [...] Allow all outbound network access. Optionally, you can provide a comma-separated list of targets to allow [env: SURREAL_CAPS_ALLOW_NET=] - --D, --deny-all [...] Deny all capabilities [env: SURREAL_CAPS_DENY_ALL=] [possible values:true, false] - ---deny-scripting [...] Deny execution of scripting functions [env: SURREAL_CAPS_DENY_SCRIPT=][possible values: true, false] - ---deny-guests [...] Deny guest users to execute queries [env: SURREAL_CAPS_DENY_GUESTS=][possible values: true, false] - ---deny-funcs [...] Deny execution of all functions. Optionally, you can provide a comma-separated list of function names to deny [env:SURREAL_CAPS_DENY_FUNC=] - ---deny-net [...] Deny all outbound network access. Optionally, you can provide a comma-separated list of targets to deny [env: SURREAL_CAPS_DENY_NET=] -``` diff --git a/versioned_docs/version-1.0.x/cli/upgrade.mdx b/versioned_docs/version-1.0.x/cli/upgrade.mdx deleted file mode 100644 index 4995129bd..000000000 --- a/versioned_docs/version-1.0.x/cli/upgrade.mdx +++ /dev/null @@ -1,110 +0,0 @@ ---- -sidebar_position: 10 ---- - - -# Upgrade command - -# Upgrade command - -This command upgrades SurrealDB to the latest version, nightly or a specified version - -:::note -__BEFORE YOU START :__ Make sure you’ve [installed SurrealDB](/docs/surrealdb/1.0.x/installation/overview/) — it should only take a second! -::: - -## Command options - - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- --nightly - OPTIONAL - - installs the latest nightly version of SurrealDB -
- --version - OPTIONAL - - installs a specific version of SurrealDB -
- --dry-run - OPTIONAL - - Does not actually replace the currently installed version of SurrealDB. -
- - -### Example usage -This example shows how you can use the upgrade command to upgrade to the latest version of SurrealDB - -```bash -surreal upgrade -``` - -## Global install -If SurrealDB is installed globally on your system, you might need to run the upgrade command with elevated permissions. - -```bash -sudo surreal upgrade -``` - -## Install nightly -Use the --nightly flag to upgrade to the latest nightly version of SurrealDB. - -```bash -surreal upgrade --nightly -``` - -## Install specific version -Use the `--version` flag to upgrade to the a specific version of SurrealDB. - -```bash -surreal upgrade --version v1.0.0-beta.10 -``` - -## Command help -To see the help information and usage instructions, in a terminal run the `surreal upgrade --help` command without any further arguments. This command gives general information on the arguments, inputs, and additional options for the `upgrade` command. - -```bash -surreal upgrade --help -``` - -``` -Upgrade to the latest stable version - -USAGE: -surreal upgrade [OPTIONS] - -ARGS: -[PATTERN] Glob pattern for the files to validate [default: **/* .surql] - -OPTIONS: ---nightly Install the latest nightly version - ---version Install a specific version - ---dry-run Don't actually replace the executable - --h, --help Print help - -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/cli/validate.mdx b/versioned_docs/version-1.0.x/cli/validate.mdx deleted file mode 100644 index dc4c5cbb7..000000000 --- a/versioned_docs/version-1.0.x/cli/validate.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -sidebar_position: 8 ---- - -# Validate command - -# Validate command - -This command validates a SurrealQL query files. - -:::note -__BEFORE YOU START :__ Make sure you’ve [installed SurrealDB](/docs/surrealdb/1.0.x/installation/overview/) — it should only take a second! -::: - -## Command options - - - - - - - - - - - - - - -
ArgumentsDescription
- [PATTERN] - REQUIRED - - Glob pattern for the files to validate [default: "**/*.surql"] -
- - -### Example usage -To perform validation on a SurrealQL local file, in a terminal run the `surreal validate` command with the required argument. - -```bash -surreal validate [PATTERN] -``` - -## Command help -To see the help information and usage instructions, in a terminal run the `surreal validate --help` command without any further arguments. This command gives general information on the arguments, inputs, and additional options for the `validate` command. - -```bash -surreal validate --help -``` -The output of the above command : - -``` -Validating SurrealQL query files - -USAGE: -surreal validate [PATTERN] - -ARGS: -[PATTERN] Glob pattern for the files to validate [default: **/* .surql] - -OPTIONS: --h, --help Print help information -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/cli/version.mdx b/versioned_docs/version-1.0.x/cli/version.mdx deleted file mode 100644 index 9b95ccfd0..000000000 --- a/versioned_docs/version-1.0.x/cli/version.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -sidebar_position: 6 ---- - -# Version command - -# Version Command - -The version command outputs the current version of the installed command-line tool, and the machine architecture. - -:::note -__BEFORE YOU START :__ Make sure you’ve [installed SurrealDB](/docs/surrealdb/1.0.x/installation/overview/) — it should only take a second! -::: - -## Example usage -To display the current command-line tool version, along with the platform and architecture, in a terminal run the surreal version command without any further arguments. - -```bash -surreal version -``` - diff --git a/versioned_docs/version-1.0.x/deployment/_category_.json b/versioned_docs/version-1.0.x/deployment/_category_.json deleted file mode 100644 index 32815c391..000000000 --- a/versioned_docs/version-1.0.x/deployment/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Deployment", - "position": 7 -} \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/deployment/amazon.mdx b/versioned_docs/version-1.0.x/deployment/amazon.mdx deleted file mode 100644 index 7ba8aa8bb..000000000 --- a/versioned_docs/version-1.0.x/deployment/amazon.mdx +++ /dev/null @@ -1,328 +0,0 @@ ---- -sidebar_position: 8 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - - -# Deploy on AWS - - - -# Deploy on Amazon EKS - -
- -## What is Amazon EKS? -[Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/) is o install, operate, and maintain your own Kubernetes control plane on Amazon Web Services (AWS). -This deployment guide covers setting up a highly available SurrealDB cluster backed by [TiKV](https://tikv.org/) on Amazon EKS. - -## Requirements - -- An account on [Amazon Web Services (AWS)](https://aws.amazon.com/) and also the necessary [Amazon Identity and Access Management (Amazon IAM)](https://aws.amazon.com/iam/) permissions to programmatically create resources in your account. -- [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) To manage the Kubernetes cluster. -- AWS CLI [installed](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) and [configured](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) with your user's credentials -- [`eksctl`](https://eksctl.io/installation/) installed - -:::note - COST CONSIDERATIONS: -Provisioning the environment in your AWS account will create resources and there will be cost associated with them. The cleanup section provides a guide to remove them, preventing further charges. -::: - -:::note - NOTE : -This guide was tested in eu-west-1 (Ireland region) and it follows TiKV best practices for scalability and high availability. It will provision up to 12 Amazon Elastic Compute Cloud (Amazon EC2) instances, several Amazon Elastic Block Storage (Amazon EBS) drives, and up to three Amazon Elastic Loadbalancers (Amazon ELB). The forecasted cost to run this guide is of $5 USD per hour. -::: - -## Building an EKS Cluster -This section outlines how to build a cluster by using the [`eksctl`](https://eksctl.io/) tool. The following is the configuration that will be used to build the cluster: - -```yml title="SURREALDB CLUSTER CONFIG" -apiVersion: eksctl.io/v1alpha5 -kind: ClusterConfig -metadata: - name: ${CLUSTER_NAME} - region: ${AWS_REGION} - version: '1.27' - tags: - karpenter.sh/discovery: ${CLUSTER_NAME} - env: ${CLUSTER_NAME} -iam: - withOIDC: true -vpc: - cidr: 10.0.0.0/16 - clusterEndpoints: - privateAccess: true - publicAccess: true -addons: -- name: vpc-cni - resolveConflicts: overwrite -- name: aws-ebs-csi-driver - wellKnownPolicies: # add IAM and service account - ebsCSIController: true - -managedNodeGroups: - - - name: admin - desiredCapacity: 1 - privateNetworking: true - labels: - dedicated: admin - - - name: tidb-1a - desiredCapacity: 1 - privateNetworking: true - availabilityZones: ["${AWS_REGION}a"] - instanceType: c5.2xlarge - labels: - dedicated: tidb - taints: - - key: "dedicated" - value: "tidb" - effect: NoSchedule - - - name: tidb-1b - desiredCapacity: 0 - privateNetworking: true - availabilityZones: ["${AWS_REGION}b"] - instanceType: c5.2xlarge - labels: - dedicated: tidb - taints: - - key: "dedicated" - value: "tidb" - effect: NoSchedule - - - name: tidb-1c - desiredCapacity: 1 - privateNetworking: true - availabilityZones: ["${AWS_REGION}c"] - instanceType: c5.2xlarge - labels: - dedicated: tidb - taints: - - key: "dedicated" - value: "tidb" - effect: NoSchedule - - - name: pd-1a - desiredCapacity: 1 - privateNetworking: true - availabilityZones: ["${AWS_REGION}a"] - instanceType: c5.xlarge - labels: - dedicated: pd - taints: - - key: "dedicated" - value: "pd" - effect: NoSchedule - - - name: pd-1b - desiredCapacity: 1 - privateNetworking: true - availabilityZones: ["${AWS_REGION}b"] - instanceType: c5.xlarge - labels: - dedicated: pd - taints: - - key: "dedicated" - value: "pd" - effect: NoSchedule - - - name: pd-1c - desiredCapacity: 1 - privateNetworking: true - availabilityZones: ["${AWS_REGION}c"] - instanceType: c5.xlarge - labels: - dedicated: pd - taints: - - key: "dedicated" - value: "pd" - effect: NoSchedule - - - name: tikv-1a - desiredCapacity: 1 - privateNetworking: true - availabilityZones: ["${AWS_REGION}a"] - instanceType: r5b.2xlarge - labels: - dedicated: tikv - taints: - - - key: "dedicated" - value: "tikv" - effect: NoSchedule - - - name: tikv-1b - desiredCapacity: 1 - privateNetworking: true - availabilityZones: ["${AWS_REGION}b"] - instanceType: r5b.2xlarge - labels: - dedicated: tikv - taints: - - key: "dedicated" - value: "tikv" - effect: NoSchedule - - - name: tikv-1c - desiredCapacity: 1 - privateNetworking: true - availabilityZones: ["${AWS_REGION}c"] - instanceType: r5b.2xlarge - labels: - dedicated: tikv - taints: - - key: "dedicated" - value: "tikv" - effect: NoSchedule - - - name: default - desiredCapacity: 2 - minSize: 2 - maxSize: 4 - instanceType: m5.large - privateNetworking: false -``` - -Based on this configuration eksctl will: -- Create a [VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) across three availability zones -- Create an EKS cluster -- Create an [IAM OIDC](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html) provider -- Create the necessary node groups for TiKV according to [best practices](https://docs.pingcap.com/tidb-in-kubernetes/stable/deploy-on-aws-eks) -- Configure the [VPC CNI addon](https://docs.aws.amazon.com/eks/latest/userguide/managing-vpc-cni.html) to manage networking -- Configure the [EBS addon](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html) to manage storage volumes - -Save the above configuration in a file named `surrealdb-cluster.yml` and apply the configuration file like so: - -```yaml title="DEPLOY EKS CLUSTER" -export CLUSTER_NAME=surrealdb-cluster -export AWS_REGION=eu-west-1 - -envsubst < surrealdb-cluster.yml | eksctl create cluster -f - - -aws eks update-kubeconfig --name $CLUSTER_NAME -``` - -:::note - NOTE : -The deployment of the cluster should take about 30 minutes. -::: - -## Deploy TiKV -The following instructions will install `TiKV` operators in your EKS cluster. - -```yaml title="CREATE TIKV CLUSTER" -kubectl create namespace tidb-cluster - -curl -O https://raw.githubusercontent.com/pingcap/tidb-operator/v1.5.0/examples/aws/tidb-cluster.yaml && \ -curl -O https://raw.githubusercontent.com/pingcap/tidb-operator/v1.5.0/examples/aws/tidb-monitor.yaml && \ -curl -O https://raw.githubusercontent.com/pingcap/tidb-operator/v1.5.0/examples/aws/tidb-dashboard.yaml - -kubectl apply -f tidb-cluster.yaml -n tidb-cluster && \ -kubectl apply -f tidb-monitor.yaml -n tidb-cluster -``` - -## Install ALB Controller -The following instructions will install the AWS Load Balancer Controller. - -The AWS Load Balancer Controller provisions and manages the necessary AWS resources when Kubernetes creates an `Ingress` or a `LoadBalancer` - -Formerly known as AWS ALB Ingress Controller, it's an open-source project on [GitHub](https://github.com/kubernetes-sigs/aws-load-balancer-controller). - -```yaml title="INSTALL ALB CONTROLLER" -export ACCOUNT_NUMBER=$(aws sts get-caller-identity --query "Account" --output text) - -curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.5.4/docs/install/iam_policy.json - -aws iam create-policy \ - --policy-name AWSLoadBalancerControllerIAMPolicy \ - --policy-document file://iam_policy.json - -eksctl create iamserviceaccount \ - --cluster=$CLUSTER_NAME \ - --namespace=kube-system \ - --name=aws-load-balancer-controller \ - --role-name AmazonEKSLoadBalancerControllerRole_${CLUSTER_NAME} \ - --attach-policy-arn=arn:aws:iam::$ACCOUNT_NUMBER:policy/AWSLoadBalancerControllerIAMPolicy \ - --approve - -helm repo add eks https://aws.github.io/eks-charts -helm repo update eks - -helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ - -n kube-system \ - --set clusterName=$CLUSTER_NAME \ - --set serviceAccount.create=false \ - --set serviceAccount.name=aws-load-balancer-controller -``` - -## Install SurrealDB -The following script will install SurrealDB on your EKS cluster backed by TiKV with a public endpoint exposed via an Application Load Balancer (ALB) - -```yaml title="INSTALL SURREALDB" -helm repo add surrealdb https://helm.surrealdb.com -helm repo update - -TIKV_URL=tikv://basic-pd.tidb-cluster:2379 - -helm install \ - --set surrealdb.path=$TIKV_URL \ - --set surrealdb.auth=false \ - --set service.type="NodePort" \ - --set ingress.enabled=true \ - --set ingress.className="alb" \ - --set ingress.annotations."alb\.ingress\.kubernetes\.io/healthcheck-path"=/health \ - --set ingress.annotations."alb\.ingress\.kubernetes\.io/load-balancer-name"="ingress-${CLUSTER_NAME}" \ - --set ingress.annotations."alb\.ingress\.kubernetes\.io/scheme"="internet-facing" \ - --set ingress.annotations."alb\.ingress\.kubernetes\.io/target-type"="ip" \ - --set ingress.annotations."meta\.helm\.sh/release-name"="surrealdb-tikv" \ - --set ingress.annotations."meta\.helm\.sh/release-namespace"="default" \ - surrealdb-tikv surrealdb/surrealdb -``` -## Test your SurrealDB Installation -You can get the endpoint to use with your surrealdb client as follows - -```bash title="Test installation" -export SURREALDB_ENDPOINT=$(kubectl get ingress surrealdb-tikv -o json | jq '.status.loadBalancer.ingress[0].hostname' | xargs) -echo $SURREALDB_ENDPOINT - -# sample output -> ingress-27v2-902764750.eu-west-1.elb.amazonaws.com -``` -Test your connection with the following command - -```bash title="connection test" -surreal sql -e https://$SURREALDB_ENDPOINT -> -``` - -## Cleanup - -```bash title="CLEANUP" -kubectl delete -f tidb-monitor.yaml -n tidb-cluster -kubectl delete -f tidb-cluster.yaml -n tidb-cluster -helm uninstall surrealdb-tikv -helm -n kube-system uninstall aws-load-balancer-controller -helm -n tidb-admin uninstall tidb-operator - -eksctl delete cluster \ - --force \ - --disable-nodegroup-eviction \ - --parallel 10 \ - --name $CLUSTER_NAME -``` - -The default cleanup behaviour is to preserve resources such as EBS volumes that were previously attached to your cluster. If this is not what you want, and in order to prevent you from incurring in additional charges related to the usage of these block storage devices, [navigate to the AWS console](https://eu-west-1.console.aws.amazon.com/ec2/home?region=eu-west-1#Volumes) and manually delete all volumes that were attached to your cluster, as shown in figure. - -![AWS vloume](../../../static/img/aws-volumes.png) \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/deployment/azure.mdx b/versioned_docs/version-1.0.x/deployment/azure.mdx deleted file mode 100644 index 6eb1636ae..000000000 --- a/versioned_docs/version-1.0.x/deployment/azure.mdx +++ /dev/null @@ -1,370 +0,0 @@ ---- -sidebar_position: 9 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - - -# Deploy on Azure - - - -# Deploy on AKS (Azure Kubernetes Service) - -
- -## What is AKS? - -[Azure Kubernetes Service](https://azure.microsoft.com/products/kubernetes-service) is a managed Kubernetes service offered by the Microsoft Azure platform. -This article will guide you through setting up a highly available SurrealDB cluster backed by [TiKV](https://tikv.org/) on a Azure Kubernetes Service cluster. - -## What is TiKV? - -[TiKV](https://tikv.org/) is a cloud-native transactional key/value store built by PingCAP and that integrates well with Kubernetes thanks to their tidb-operator. - -## Prerequisites - -In order for you to complete this tutorial you'll need: - -- An account on [Microsoft Azure](https://azure.microsoft.com/) -- The [Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli) -- [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) to manage the Kubernetes cluster -- [`helm`](https://helm.sh/docs/intro/install/) to install SurrealDB server and TiKV -- [`Surreal CLI`](https://surrealdb.com/install) to interact with the SurrealDB server - -:::note - COST CONSIDERATIONS: -Provisioning the environment in your Azure account will create resources and there will be cost associated with them. -The cleanup section provides a guide to remove them, preventing further charges. -::: - -:::note - NOTE: -This guide was tested in westeurope region and it follows TiKV best practices for scalability and high availability. -This tutorial is intended for production workloads using the standard tier. If you want to create a dev/test environment, you should root for the free tier and change the cluster and node pool configuration (no zone, fewer nodes). -::: - -## Create an AKS Cluster - -1. Log in to Azure and get the current subscription if you have multiple subscriptions. - -```bash title="Log in to Azure and list Azure subscriptions" -$ az login -$ az account list -``` - -2. Create a new resource group - -```bash title="Create a new resource group" -$ az group create --name rg-surrealdb-aks --location westeurope -``` - -3. Run the following command to create a cluster: - -```bash title="Create a new AKS cluster" -$ az aks create \ - --resource-group rg-surrealdb-aks \ - --location westeurope \ - --name surrealdb-aks-cluster \ - --generate-ssh-keys \ - --load-balancer-sku standard \ - --node-count 3 \ - --zones 1 2 3 \ - --enable-addons monitoring \ - --tier standard -``` - -4. After the creation finishes, get credentials to configure kubectl to connect to the new cluster: - -```bash title="Get AKS cluster credentials" -$ az aks get-credentials --resource-group rg-surrealdb-aks --name surrealdb-aks-cluster -``` - -5. You can verify the connection to the cluster with the following command: - -```bash title="Display cluster nodes" -$ kubectl get nodes - -NAME STATUS ROLES AGE VERSION -aks-nodepool1-33674805-vmss000000 Ready agent 2m35s v1.26.6 -aks-nodepool1-33674805-vmss000001 Ready agent 2m36s v1.26.6 -aks-nodepool1-33674805-vmss000002 Ready agent 2m34s v1.26.6 -``` - -## Create cluster node pools - -:::note - NOTE: -In order to speed things up, the following commands can be executed in parallel. -::: - -1. Create a TiDB Operator and monitor pool - -```bash title="Create a TiDB Operator and monitor pool" -$ az aks nodepool add --name admin \ - --resource-group rg-surrealdb-aks \ - --cluster-name surrealdb-aks-cluster \ - --zones 1 2 3 \ - --node-count 1 \ - --labels dedicated=admin -``` - -2. Create a PD node pool - -```bash title="Create a PD node pool" -$ az aks nodepool add --name pd \ - --resource-group rg-surrealdb-aks \ - --cluster-name surrealdb-aks-cluster \ - --node-vm-size Standard_F4s_v2 \ - --zones 1 2 3 \ - --node-count 3 \ - --labels dedicated=pd \ - --node-taints dedicated=pd:NoSchedule -``` - -3. Create a TiKV node pool - -```bash title="Create a TiKV node pool" -$ az aks nodepool add --name tikv \ - --resource-group rg-surrealdb-aks \ - --cluster-name surrealdb-aks-cluster \ - --node-vm-size Standard_E8s_v4 \ - --zones 1 2 3 \ - --node-count 3 \ - --labels dedicated=tikv \ - --node-taints dedicated=tikv:NoSchedule \ - --enable-ultra-ssd -``` - -## Deploy TiDB operator - -Now that we have a Kubernetes cluster, we can deploy the [`TiDB` operator](https://github.com/pingcap/tidb-operator). -TiDB operator is a Kubernetes operator that manages the lifecycle of TiDB clusters deployed to Kubernetes. -You can deploy it following these steps: - -1. Install CRDS: - -```bash title="Install CRDS" -$ kubectl create -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.5.0/manifests/crd.yaml -``` - -2. Install TiDB Operator Helm chart: - -```bash title="Install TiDB operator" -$ helm repo add pingcap https://charts.pingcap.org -$ helm repo update -$ helm install \ - -n tidb-operator \ - --create-namespace \ - tidb-operator \ - pingcap/tidb-operator \ - --version v1.5.0 -``` - -3. Verify that the pods are running: - -```bash title="Verify TiDB operator" -$ kubectl get pods --namespace tidb-operator -l app.kubernetes.io/instance=tidb-operator - -NAME READY STATUS RESTARTS AGE -tidb-controller-manager-67d678dc64-qf6p2 1/1 Running 0 60s -tidb-scheduler-68555ffd4-l2ssf 2/2 Running 0 60s -``` - -## Create TiDB cluster - -Now that we have the TiDB Operator running, it's time to define a TiDB Cluster and let the Operator do the rest. - -1. Create a local file named `tikv-cluster.yaml` with this content: - -```yaml title="TiDB cluster definition" -apiVersion: pingcap.com/v1alpha1 -kind: TidbCluster -metadata: - name: sdb-datastore -spec: - version: v6.5.0 - timezone: UTC - configUpdateStrategy: RollingUpdate - pvReclaimPolicy: Delete - enableDynamicConfiguration: true - schedulerName: default-scheduler - topologySpreadConstraints: - - topologyKey: topology.kubernetes.io/zone - helper: - image: alpine:3.16.0 - pd: - baseImage: pingcap/pd - maxFailoverCount: 0 - replicas: 3 - storageClassName: managed-csi-premium - requests: - cpu: 500m - storage: 10Gi - memory: 1Gi - config: | - [dashboard] - internal-proxy = true - [replication] - location-labels = ["topology.kubernetes.io/zone", "kubernetes.io/hostname"] - max-replicas = 3 - nodeSelector: - dedicated: pd - tolerations: - - effect: NoSchedule - key: dedicated - operator: Equal - value: pd - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/component - operator: In - values: - - pd - topologyKey: kubernetes.io/hostname - tikv: - baseImage: pingcap/tikv - maxFailoverCount: 0 - replicas: 3 - storageClassName: managed-csi-premium - requests: - cpu: 1 - storage: 10Gi - memory: 2Gi - config: {} - nodeSelector: - dedicated: tikv - tolerations: - - effect: NoSchedule - key: dedicated - operator: Equal - value: tikv - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/component - operator: In - values: - - tikv - topologyKey: kubernetes.io/hostname - tidb: - replicas: 0 -``` - -2. Create the TiDB cluster: - -```bash title="Create TiDB cluster" -$ kubectl apply -f tikv-cluster.yaml -``` - -3. Check the cluster status and wait until it's ready: - -```bash title="Verify TiDB cluster" -$ kubectl get tidbcluster - -$ kubectl get pods - -NAME READY STATUS RESTARTS AGE -sdb-datastore-discovery-7d7d684d88-4v4ws 1/1 Running 0 4m2s -sdb-datastore-pd-0 1/1 Running 0 4m2s -sdb-datastore-pd-1 1/1 Running 0 4m2s -sdb-datastore-pd-2 1/1 Running 0 4m2s -sdb-datastore-tikv-0 1/1 Running 0 3m12s -sdb-datastore-tikv-1 1/1 Running 0 3m12s -sdb-datastore-tikv-2 1/1 Running 0 3m12s -``` - -## Deploy SurrealDB - -Now that we have a TiDB cluster running, we can deploy SurrealDB using the official Helm chart. -The deploy will use the latest SurrealDB Docker image and make it accessible on internet. - -1. Get the TIKV PD service url: - -```bash title="Get TIKV PD service url" -$ kubectl get service sdb-datastore-pd - -NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -sdb-datastore-pd ClusterIP 10.0.161.101 2379/TCP 5m27s - -$ export TIKV_URL=tikv://sdb-datastore-pd:2379 -``` - -2. Install the SurrealDB Helm chart with the TIKV_URL defined above and with auth disabled so we can create the initial credentials: - -```bash title="Install SurrealDB Helm chart" -$ helm repo add surrealdb https://helm.surrealdb.com -$ helm repo update -$ helm install \ - --set surrealdb.path=$TIKV_URL \ - --set surrealdb.auth=false \ - --set ingress.enabled=false \ - --set service.type=LoadBalancer \ - --set service.port=80 \ - --set service.targetPort=8000 \ - --set image.tag=latest \ - surrealdb-tikv surrealdb/surrealdb -``` - -3. Wait until the Loadbalancer resource has an EXTERNAL-IP assigned: - -```bash title="Wait for Loadbalancer address" -$ kubectl get service surrealdb-tikv - -NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -surrealdb-tikv LoadBalancer 10.0.38.191 20.13.45.154 80:30378/TCP 6m34s -``` - -4. Connect to the cluster and define the initial credentials: - -```bash title="Define initial credentials" -$ export SURREALDB_URL=http://$(kubectl get service surrealdb-tikv -o json | jq -r .status.loadBalancer.ingress[0].ip) - -$ surreal sql -e $SURREALDB_URL -> DEFINE USER root ON ROOT PASSWORD 'StrongSecretPassword!' ROLES OWNER; - -# Verify you can connect to the database with the new credentials: - -$ surreal sql -u root -p 'StrongSecretPassword!' -e $SURREALDB_URL -> INFO FOR ROOT -[{ namespaces: { }, users: { root: "DEFINE USER root ON ROOT PASSHASH '...' ROLES OWNER" } }] -``` - -5. Now that the initial credentials have been created, enable authentication: - -```bash title="Update SurrealDB Helm chart" -$ helm upgrade \ - --set surrealdb.path=$TIKV_URL \ - --set surrealdb.auth=true \ - --set ingress.enabled=false \ - --set service.type=LoadBalancer \ - --set service.port=80 \ - --set service.targetPort=8000 \ - --set image.tag=latest \ - surrealdb-tikv surrealdb/surrealdb -``` - -## Cleanup - -Run the following commands to delete the Kubernetes resources and the AKS cluster: - -```bash title="Cleanup commands" -$ helm uninstall surrealdb-tikv -$ helm -n tidb-operator uninstall tidb-operator -$ az aks delete --name surrealdb-aks-cluster --resource-group rg-surrealdb-aks -$ az group delete --resource-group rg-surrealdb-aks -``` diff --git a/versioned_docs/version-1.0.x/deployment/digitalocean.mdx b/versioned_docs/version-1.0.x/deployment/digitalocean.mdx deleted file mode 100644 index 92eb982af..000000000 --- a/versioned_docs/version-1.0.x/deployment/digitalocean.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -sidebar_position: 5 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Deploy on Digital Ocean - - - -# Deploy on Digital Ocean - -Guide coming soon \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/deployment/fly.mdx b/versioned_docs/version-1.0.x/deployment/fly.mdx deleted file mode 100644 index d5ed49b59..000000000 --- a/versioned_docs/version-1.0.x/deployment/fly.mdx +++ /dev/null @@ -1,86 +0,0 @@ ---- -sidebar_position: 2 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Deploy on Fly.io - - - -# Deploy on Fly.io - -This document is based on a guide by one of our community members. You can find it here. - -## Requirements -- [Make sure that you have `flyctl` installed](https://fly.io/docs/hands-on/install-flyctl). -- Use either [flyctl auth signup](https://fly.io/docs/hands-on/sign-up) or [flyctl auth login](https://fly.io/docs/hands-on/sign-in) to authenticate your client. - -## Get started -We will create a working directory for our deployment. In it, we will store a Dockerfile and a fly.toml config file. - -```bash -mkdir surrealdb-deployment && cd surrealdb-deployment -## Uncomment the below line for macOS or Linux -# nano Dockerfile -## Uncomment the below line for Windows -# notepad Dockerfile -``` -In the `Dockerfile` we specify which base image we want to use, and to which address/port we will bind the instance. You can edit the `Dockerfile` file and paste the following snippet into the file without any indents or spaces. The rest of the SurrealDB configuration will be done later with secrets. - -```bash title="Docker file" -FROM surrealdb/surrealdb:latest -EXPOSE 8080 -CMD ["start", "--bind", "0.0.0.0:8080", "file://data/srdb.db"] -``` - -## Generate fly.toml -We will generate most of the content for the `fly.toml` configuration file using the `fly launch` utility. Please answer the questions with the guidelines given below. - -```bash title="Generate Boilerplate fly.toml file" -fly launch -``` -- `Choose an app name`: Choose what you like. It will end up as name.fly.dev, so it must be a unique name. -- `Choose a region`: Choose what you like, usually a region close to your users. -- `Setup postgres database?`: No, we will persist storage through a volume. -- `Setup upstash redis database?`: No, we will persist storage through a volume. -- `Would you like to deploy now?`: No, we need to finalize our configuration first. - -## Create volume for persistent storage -For this demo, we'll create a single volume with a size of 1 GB. Make sure to set it to the same region that you chose earlier! In this case data is the name of the volume. - -```bash title="Create the volume" -fly volumes create data --region --size 1 -``` -To assign this volume to the instance that we'll deploy, we have to edit the `fly.toml` file. Paste the following snippet down the bottom of the file without any indents or spaces. If you changed the name of the volume in the previous step, please also adjust the `source` property here. - -```bash title="Assign the volume to instance" -[mounts] -source="data" -destination="/data" -``` -## Configure root authentication details - -We will store the username and password for the root user in secrets. Feel free to pass on any other options here. You can use `surreal start -h` to see which environment variables can be passed to surreal. - -```bash title="Configure username & password" -fly secrets set SURREAL_USER="..." -fly secrets set SURREAL_PASS="..." -``` - -## Deploy the instance -Everything has been configured now, and we can deploy our instance securely with a single command: - -```bash title="Deploy the instance" -fly deploy -``` -After this, your instance will be available via `https://name.fly.dev`, followed by the respective path for methods like `HTTP REST` and `Websocket`. \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/deployment/google.mdx b/versioned_docs/version-1.0.x/deployment/google.mdx deleted file mode 100644 index 9e8b70a94..000000000 --- a/versioned_docs/version-1.0.x/deployment/google.mdx +++ /dev/null @@ -1,262 +0,0 @@ ---- -sidebar_position: 7 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Deploy on GKE - - - -# Deploy on GKE (Google Kubernetes Engine) - -This article will guide you through the process of setting up a highly available SurrealDB clutter backed by TIKV on a GKE Autopilot cluster. - -## What is GKE? - -[Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine) is a managed Kubernetes service offered by Google Cloud Platform. In this guide we will create a [GKE Autopilot](https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview) cluster, which removes the need to manage the underlaying compute nodes. - -## What is TiKV? -[TiKV](https://tikv.org/) is a cloud-native transactional key/value store built by PingCAP and that integrates well with Kubernetes thanks to their tidb-operator. - -## Prerequisites -In order for you to complete this tutorial you'll need: - -- An account on [Google Cloud Platform](https://cloud.google.com/) -- The [gcloud CLI](https://cloud.google.com/sdk/gcloud) installed and configured -- `kubectl` with gcloud integration for accessing the GKE cluster. Installation [here](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl) -- `helm` : To install SurrealDB server and TiKV -- [`Surreal CLI`](https://surrealdb.com/install) : To interact with the SurrealDB server - -## Create GKE Cluster - -1. Choose the target project and region. List them with these commands: - -```bash title="List projects and regions" -gcloud projects list - -gcloud compute regions list --project PROJECT_ID -``` - -2. Run the following command to create a cluster replacing the REGION and PROJECT_ID for your desired values: - -```bash title="Create new GKE autopilot Cluster" -gcloud container clusters create-auto surrealdb-guide --region REGION --project PROJECT_ID -``` - -3. After the creation finishes, configure kubectl to connect to the new cluster: - -```bash title="Configure kubectl" -gcloud container clusters get-credentials surrealdb-guide --region REGION --project PROJECT_ID -``` - -## Deploy TiDB operator - -Now that we have a Kubernetes cluster, we can deploy the [TiDB operator](https://github.com/pingcap/tidb-operator). TiDB operator is a Kubernetes operator that manages the lifecycle of TiDB clusters deployed to Kubernetes. - -You can deploy it following these steps: - -1. Install CRDS: - -```bash title="Install CRDS" -kubectl create -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.5.0/manifests/crd.yaml -``` - -2. Install TiDB operator Helm chart: - - -```bash title="Install TiDB operator" - -$ helm repo add pingcap https://charts.pingcap.org -$ helm repo update -$ helm install \ - -n tidb-operator \ - --create-namespace \ - tidb-operator \ - pingcap/tidb-operator \ - --version v1.5.0 -``` -3. Verify that the Pods are running: - -```bash title="Verify Pods" -kubectl get pods --namespace tidb-operator -l app.kubernetes.io/instance=tidb-operator -NAME READY STATUS RESTARTS AGE -tidb-controller-manager-56f49794d7-hnfz7 1/1 Running 0 20s -tidb-scheduler-8655bcbc86-66h2d 2/2 Running 0 20s -``` - -## Create TiDB cluster -Now that we have the TiDB Operator running, it’s time to define a TiDB Cluster and let the Operator do the rest. - -1. Create a local file named `tikv-cluster.yaml` with this content: - -```yaml title="tikv-cluster.yaml" -apiVersion: pingcap.com/v1alpha1 -kind: TidbCluster -metadata: - name: sdb-datastore -spec: - version: v6.5.0 - timezone: UTC - configUpdateStrategy: RollingUpdate - pvReclaimPolicy: Delete - enableDynamicConfiguration: true - schedulerName: default-scheduler - topologySpreadConstraints: - - topologyKey: topology.kubernetes.io/zone - helper: - image: alpine:3.16.0 - pd: - baseImage: pingcap/pd - maxFailoverCount: 0 - replicas: 3 - storageClassName: premium-rwo - requests: - cpu: 500m - storage: 10Gi - memory: 1Gi - config: | - [dashboard] - internal-proxy = true - [replication] - location-labels = ["topology.kubernetes.io/zone", "kubernetes.io/hostname"] - max-replicas = 3 - nodeSelector: - dedicated: pd - tolerations: - - effect: NoSchedule - key: dedicated - operator: Equal - value: pd - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/component - operator: In - values: - - pd - topologyKey: kubernetes.io/hostname - tikv: - baseImage: pingcap/tikv - maxFailoverCount: 0 - replicas: 3 - storageClassName: premium-rwo - requests: - cpu: 1 - storage: 10Gi - memory: 2Gi - config: {} - nodeSelector: - dedicated: tikv - tolerations: - - effect: NoSchedule - key: dedicated - operator: Equal - value: tikv - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/component - operator: In - values: - - tikv - topologyKey: kubernetes.io/hostname - tidb: - replicas: 0 -``` - -2. Create the TiDB cluster: - -```bash title="Create TiDB cluster" -kubectl apply -f tikv-cluster.yaml -``` - -3. Check the cluster status and wait until it’s ready: - -```bash title="Check cluster status" -kubectl get tidbcluster -NAME READY PD STORAGE READY DESIRE TIKV STORAGE READY DESIRE TIDB READY DESIRE AGE -sdb-datastore True pingcap/pd:v6.5.0 10Gi 3 3 pingcap/tikv:v6.5.0 10Gi 3 3 pingcap/tidb:v6.5.0 0 5m -``` - -## Deploy SurrealDB -Now that we have a TiDB cluster running, we can deploy SurrealDB using the official Helm chart - -The deploy will use the latest SurrealDB Docker image and make it accessible on internet - -1. Get the TIKV PD service url: - -```bash title="Get TIKV PD service url" -kubectl get svc/sdb-datastore-pd -NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -sdb-datastore-pd ClusterIP 10.96.208.25 2379/TCP 10h - -export TIKV_URL=tikv://sdb-datastore-pd:2379 -``` -2. Install the SurrealDB Helm chart with the TIKV_URL defined above and with auth disabled so we can create the initial credentials: - -```bash title="Install SurrealDB Helm chart" -helm repo add surrealdb https://helm.surrealdb.com -$ helm repo update -$ helm install \ - --set surrealdb.path=$TIKV_URL \ - --set surrealdb.auth=false \ - --set ingress.enabled=true \ - --set image.tag=latest \ - surrealdb-tikv surrealdb/surrealdb -``` - -3. Wait until the Ingress resource has an `ADDRESS` assigned: - -```bash title="Wait for Ingress ADDRESS" -kubectl get ingress surrealdb-tikv -NAME CLASS HOSTS ADDRESS PORTS AGE -surrealdb-tikv * 34.160.82.177 80 5m -``` - -4. Connect to the cluster and define the initial credentials: - -```bash title="Define initial credentials" -$ export SURREALDB_URL=http://$(kubectl get ingress surrealdb-tikv -o json | jq -r .status.loadBalancer.ingress[0].ip) -$ surreal sql -e $SURREALDB_URL -> DEFINE USER root ON ROOT PASSWORD 'StrongSecretPassword!' ROLES OWNER; - -Verify you can connect to the database with the new credentials: -$ surreal sql -u root -p 'StrongSecretPassword!' -e $SURREALDB_URL -> INFO FOR ROOT -[{ namespaces: { }, users: { root: "DEFINE USER root ON ROOT PASSHASH '...' ROLES OWNER" } }] -``` - -5. Now that the initial credentials have been created, enable authentication: - -```bash title="Update SurrealDB Helm chart" -helm upgrade \ - --set surrealdb.path=$TIKV_URL \ - --set surrealdb.auth=true \ - --set ingress.enabled=true \ - --set image.tag=latest \ - surrealdb-tikv surrealdb/surrealdb -``` - -## Cleanup -Run the following commands to delete the Kubernetes resources and the GKE cluster: - -```bash title="Cleanup command" -kubectl delete tidbcluster sdb-datastore -helm uninstall surrealdb-tikv -helm -n tidb-operator uninstall tidb-operator -gcloud container clusters delete surrealdb-guide --region REGION --project PROJECT_ID -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/deployment/heroku.mdx b/versioned_docs/version-1.0.x/deployment/heroku.mdx deleted file mode 100644 index bb2b4eac7..000000000 --- a/versioned_docs/version-1.0.x/deployment/heroku.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -sidebar_position: 3 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Deploy on Heroku - - - -# Deploy on Heroku - -Guide coming soon \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/deployment/kubernetes.mdx b/versioned_docs/version-1.0.x/deployment/kubernetes.mdx deleted file mode 100644 index c55733432..000000000 --- a/versioned_docs/version-1.0.x/deployment/kubernetes.mdx +++ /dev/null @@ -1,283 +0,0 @@ ---- -sidebar_position: 6 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Deploy on Kubernetes - - - -# Deploy on Kubernetes - -In this guide, we will deploy SurrealDB to KIND (Kubernetes in Docker) using TiKV as the storage engine: TiKV is a cloud-native transactional key/value store that integrates well with Kubernetes thanks to their tidb-operator. - -At the end, we will run a few experiments using SurrealQL to verify that we can interact with the new cluster and will destroy some Kubernetes pods to see that data is highly available. - -## Requirements - -For this guide, we need to install: - -- [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) : To manage the Kubernetes cluster -- [`helm`](https://helm.sh/docs/intro/install/) : To install SurrealDB server and TiKV -- [`KIND`](https://kind.sigs.k8s.io/) and [Docker](https://www.docker.com/) :To run a local Kubernetes cluster inside a Docker container -- [`Surreal CLI`](https://surrealdb.com/install) : To interact with the SurrealDB server - -## Create [`KIND`](https://kind.sigs.k8s.io/) Cluster - -First, we need to create a [`KIND`](https://kind.sigs.k8s.io/) cluster. KIND is a tool for running local Kubernetes clusters using Docker container “nodes”. It’s a great tool for experimenting with Kubernetes without spending a lot of time creating a full-featured cluster. - -Run the following command to create a cluster: - -### 1. Let’s create a new cluster: - -```bash title="Crete new cluster" -kind create cluster -n surreal-demo -``` - -### 2. Verify we can interact with the created cluster - -```bash title="Verify cluster" -kubectl config current-context -``` - -The output of this command should be: - -```bash title="Output" -kind-surreal-demo -``` - -### 3. Verify the nodes are running - -```bash title="Verify nodes" -kubectl get ns -``` - -The output of this command should be: - -```bash title="Output" -NAME STATUS AGE -default Active 79s -kube-node-lease Active 79s -kube-public Active 79s -kube-system Active 79s -local-path-storage Active 75s -``` - -## Deploy TiDB operator - -Now that we have a Kubernetes cluster, we can deploy the [`TiDB operator`](https://github.com/pingcap/tidb-operator). TiDB operator is a Kubernetes operator that manages the lifecycle of TiDB clusters deployed to Kubernetes. - -You can deploy it following these steps: - -1. Install CRDS: - -```bash title="Install" -kubectl create -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.4.5/manifests/crd.yaml -``` - -2. Install TiDB Operator Helm chart: - -```bash title="Update HELM repositories" -helm repo add pingcap https://charts.pingcap.org -helm repo update -helm install \ - -n tidb-operator \ - --create-namespace \ - tidb-operator \ - pingcap/tidb-operator \ - --version v1.4.5 -``` - -3. Verify that the Pods are running: - -```bash title="Verify Pods" -kubectl get pods --namespace tidb-operator -l app.kubernetes.io/instance=tidb-operator -``` - -The output of this command should look like this: - -```bash title="Output" -NAME READY STATUS RESTARTS AGE -tidb-controller-manager-56f49794d7-hnfz7 1/1 Running 0 20s -tidb-scheduler-8655bcbc86-66h2d 2/2 Running 0 20s -``` - -## Create TiDB cluster -Now that we have the TiDB Operator running, it’s time to define a TiDB Cluster and let the Operator do the rest. One of the TiDB Cluster components is the TiKV, which we are interested in. -Given this is a demo, we will use a basic example cluster, but there are several examples in the official GitHub repo in case you need a more production-grade deployment - - -Run the following commands to deploy the TiKV cluster: - -### 1. Create a namespace for the TiDB cluster: - -```bash -kubectl create ns tikv -``` - -### 2. Create the TiDB cluster: - -```bash title="Create TIDB Cluster" -kubectl apply -n tikv -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.4.5/examples/basic/tidb-cluster.yaml -``` -### 3. Check the cluster status and wait until it’s ready: - -```bash title="Verify TIDB Cluster" -kubectl get -n tikv tidbcluster -``` - -The output of this command should look like this: - -```bash title="Output" -NAME READY PD STORAGE READY DESIRE TIKV STORAGE READY DESIRE TIDB READY DESIRE AGE -basic False pingcap/pd:v6.5.0 1Gi 1 1 1Gi 1 1 41s -$ kubectl get -n tikv tidbcluster -NAME READY PD STORAGE READY DESIRE TIKV STORAGE READY DESIRE TIDB READY DESIRE AGE -basic True pingcap/pd:v6.5.0 1Gi 1 1 pingcap/tikv:v6.5.0 1Gi 1 1 pingcap/tidb:v6.5.0 1 1 5m -``` - -## Deploy SurrealDB - -Now that we have a TiDB cluster running, we can deploy SurrealDB. -For this guide, we will use the SurrealDB Helm chart. Run the following commands to deploy SurrealDB: - -### 1. Add the SurrealDB Charts repository: - -```bash title="Add SurrealDB Helm repository" -helm repo add surrealdb https://helm.surrealdb.com -helm repo update -``` -### 2. Get the TIKV PD service url: - -```bash title="Get TIKV PD service URL" -kubectl get -n tikv svc/basic-pd -``` -the output of this command should look like this: - -```bash title="Output" -NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -basic-pd ClusterIP 10.96.208.25 2379/TCP 10h -``` -then set the TIKV_URL variable to the PD service URL: - -```bash title="Set TIKV_URL variable" -export TIKV_URL=tikv://basic-pd.tikv:2379 -``` - -### 3. Install the SurrealDB Helm chart with the TIKV_URL defined above and with auth disabled so we can create the initial credentials: - -```bash title="Install SurrealDB HELM chart" -helm install --set surrealdb.path=$TIKV_URL --set surrealdb.auth=false surrealdb-tikv surrealdb/surrealdb -``` - -### 4. Connect to the cluster and define the initial credentials (see in the section below how to connect): - -```bash -surreal sql -e http://... -> DEFINE USER root ON ROOT PASSWORD 'StrongSecretPassword!' ROLES OWNER; - -Verify you can connect to the database with the new credentials: -surreal sql -u root -p 'StrongSecretPassword!' -e http://... -> INFO FOR ROOT -[{ namespaces: { }, users: { root: "DEFINE USER root ON ROOT PASSHASH '...' ROLES OWNER" } }] -``` - -### 5. Now that the initial credentials have been created, enable authentication: - -```bash title="Update SurrealDB Helm Chart" -helm upgrade --set surrealdb.path=$TIKV_URL surrealdb-tikv surrealdb/surrealdb -``` - -## Run SurrealDB experiments - -Now that we have SurrealDB running, we can run some experiments to verify that everything is working as expected. -For this guide, we will use the Surreal CLI. Run the following commands to run some experiments: - -### 1. Start port-forwarding to the SurrealDB service: - -```bash -kubectl port-forward svc/surrealdb-tikv 8000 -``` - -```bash title="Output" -Forwarding from 127.0.0.1:8000 -> 8000 -Forwarding from [::1]:8000 -> 8000 -``` - -### 2. Connect to the SurrealDB server using the CLI from another shell: - -```bash -surreal sql --conn 'http://localhost:8000' --user root --pass surrealdb -``` - -### 3. Create a SurrealDB database: - -```bash -surreal sql --conn 'http://localhost:8000' --user root --pass surrealdb -> USE NS ns DB db; - -ns/db> CREATE record; -{ id: record:wbd69kmc81l4fbee7pit } -ns/db> CREATE record; -{ id: record:vnyfsr22ovhmmtcm5y1t } -ns/db> CREATE record; -{ id: record:se49petzb7c4bc7yge0z } -ns/db> SELECT * FROM record; -[{ id: record:se49petzb7c4bc7yge0z }, { id: record:vnyfsr22ovhmmtcm5y1t }, { id: record:wbd69kmc81l4fbee7pit }] -ns/db> -``` - -The data created above has been persisted to the TiKV cluster. Let’s verify it by deleting the SurrealDB server and let Kubernetes recreate it. - -```bash title="Get pod" -kubectl get pod -``` - -The output of this command should look like this: - -```bash title="Output" -NAME READY STATUS RESTARTS AGE -surrealdb-tikv-7488f6f654-lsrwp 1/1 Running 0 13m -``` - -```bash title="Delete pod" -kubectl delete pod surrealdb-tikv-7488f6f654-lsrwp -``` - -```bash title="Get pod" -kubectl get pod -``` - -```bash title="Output" -NAME READY STATUS RESTARTS AGE -surrealdb-tikv-7488f6f654-bnkjz 1/1 Running 0 4s -``` - -Connect again and verify the data is still there (you may need to re-run the port-forwarding command): - -```bash -surreal sql --conn 'http://localhost:8000' --user root --pass surrealdb -> USE NS ns DB db; - -ns/db> SELECT * FROM record; -[{ id: record:se49petzb7c4bc7yge0z }, { id: record:vnyfsr22ovhmmtcm5y1t }, { id: record:wbd69kmc81l4fbee7pit }] -ns/db> -``` - -:::note -Given we are using KIND, we use `port-forwarding` for demonstration purposes. -In a full-featured Kubernetes cluster, you could set `ingress.enabled=true` when installing the SurrealDB Helm Chart and it would create a Load Balancer in front of the SurrealDB server pods. -::: - -## Conclusion -This guide demonstrated how to deploy SurrealDB on Kubernetes using TiKV as a datastore. From here, you could try and deploy to [`EKS`](https://aws.amazon.com/eks/) , [`GKE`](https://cloud.google.com/kubernetes-engine) or [`AKS`](https://azure.microsoft.com/en-us/products/kubernetes-service) , and play with the different configurations for the TiKV cluster. \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/deployment/overview.mdx b/versioned_docs/version-1.0.x/deployment/overview.mdx deleted file mode 100644 index aaa43b666..000000000 --- a/versioned_docs/version-1.0.x/deployment/overview.mdx +++ /dev/null @@ -1,157 +0,0 @@ ---- -sidebar_position: 1 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; -import DeploymentComponent from '../../../src/components/Deployment/DeploymentComponent.mdx'; - -# Overview - - - -# Deployment - -Getting started with SurrealDB is intended to be quick and easy. All of SurrealDB's functionality for starting a server, and importing and exporting data, is enabled through the command-line tool, packaged and distributed as a single executable file, which can be downloaded, installed, or run from within Docker. - -## Single-node instance - -, - label: 'Deploy on Fly.io', - copy: 'Learn how to deploy a single-node instance of SurrealDB on Fly.', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/deployment/heroku', - icon: , - label: 'Deploy on Heroku', - copy: 'Learn how to deploy a single-node instance of SurrealDB on Heroku.', - available: false, - }, - { - link: '/docs/surrealdb/1.0.x/deployment/railway', - icon: , - label: 'Deploy on Railway', - copy: 'Learn how to deploy a single-node instance of SurrealDB on Railway.', - available: false, - }, - { - link: '/docs/surrealdb/1.0.x/deployment/digitalocean', - icon: , - label: 'Deploy on DigitalOcean', - copy: 'Learn how to deploy a single-node instance of SurrealDB on DigitalOcean.', - available: false, - } - ]} -/> - -## Multi-nodes instance - -, - label: 'Deploy on Kubernetes', - copy: 'Learn how to deploy a scalable, multi-node, highly-available SurrealDB cluster on Kubernetes.', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/deployment/google', - icon: , - label: 'Deploy on GKE', - copy: 'Learn how to deploy a scalable, multi-node, highly-available SurrealDB cluster on Google Cloud Platform.', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/deployment/amazon', - icon: , - label: 'Deploy on AWS', - copy: 'Learn how to deploy a scalable, multi-node, highly-available SurrealDB cluster on Amazon Web Services.', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/deployment/azure', - icon: , - label: 'Deploy on AKS', - copy: 'Learn how to deploy a scalable, multi-node, highly-available SurrealDB cluster on Azure.', - available: true, - } - ]} -/> \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/deployment/railway.mdx b/versioned_docs/version-1.0.x/deployment/railway.mdx deleted file mode 100644 index 9d484b7ef..000000000 --- a/versioned_docs/version-1.0.x/deployment/railway.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -sidebar_position: 4 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Deploy on Railway - - - -# Deploy on Railway - -Guide coming soon \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/embedding/_category_.json b/versioned_docs/version-1.0.x/embedding/_category_.json deleted file mode 100644 index 46c35c0b1..000000000 --- a/versioned_docs/version-1.0.x/embedding/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Embedding", - "position": 8 -} \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/embedding/javascript.mdx b/versioned_docs/version-1.0.x/embedding/javascript.mdx deleted file mode 100644 index b939b6c60..000000000 --- a/versioned_docs/version-1.0.x/embedding/javascript.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -sidebar_position: 3 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Embedding in Javascript - - - -# Embedding in Javascript - -SurrealDB is designed to be run in many different ways, and environments. Due to the [separation of the storage and compute](/docs/surrealdb/introduction/architecture) layers, SurrealDB can be run in embedded mode, from within a number of different language environments. In JavaScript, SurrealDB can be run as an in-memory database, or it can persist data using IndexedDB in the browser. - -The documentation for embedding SurrealDB within JavaScript has not yet been released. In the meantime, please refer to the [JavaScript client SDK](/docs/surrealdb/integration/sdks/javascript) documentation to get started with connecting to SurrealDB from JavaScript. \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/embedding/node.mdx b/versioned_docs/version-1.0.x/embedding/node.mdx deleted file mode 100644 index 75c642d5d..000000000 --- a/versioned_docs/version-1.0.x/embedding/node.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -sidebar_position: 2 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Embedding in Node.js - - - -# Embedding in Node.js - -SurrealDB is designed to be run in many different ways, and environments. Due to the [separation of the storage and compute](/docs/surrealdb/introduction/architecture) layers, SurrealDB can be run in embedded mode, from within a number of different language environments. In Node.js, SurrealDB can be run as an in-memory database, or it can persist data using a file-based storage engine. - -The documentation for embedding SurrealDB within Node.js has not yet been released. In the meantime, please refer to the [Node.js](/docs/surrealdb/integration/sdks/nodejs) client SDK documentation to get started with connecting to SurrealDB from Node.js. diff --git a/versioned_docs/version-1.0.x/embedding/rust.mdx b/versioned_docs/version-1.0.x/embedding/rust.mdx deleted file mode 100644 index 7c2403490..000000000 --- a/versioned_docs/version-1.0.x/embedding/rust.mdx +++ /dev/null @@ -1,1003 +0,0 @@ ---- -sidebar_position: 1 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Embedding in Rust - - - -# Embedding in Rust - -SurrealDB is designed to be run in many different ways, and environments. Due to the [separation of the storage and API layers](/docs/surrealdb/introduction/architecture), SurrealDB can be run in embedded mode, from within a number of different language environments. In Rust, SurrealDB can be run as an in-memory database, it can persist data using a file-based storage engine, or on a distributed cluster. - -## Install the SDK - -First, create a new project using `cargo new` and add the SurrealDB crate to your dependencies: - -```sh -cargo add surrealdb -``` - -You will then need to enable the appropriate features (for a full list see https://crates.io/crates/surrealdb): - -```sh -# For an in memory database -cargo add surrealdb --features kv-mem - -# For a RocksDB file -cargo add surrealdb --features kv-rocksdb - -# For a SpeeDB file -cargo add surrealdb --features kv-speedb - -# For FoundationDB cluster (FoundationDB must be installed and the appropriate version selected) -cargo add surrealdb --features kv-fdb-7_1 - -# For a TiKV cluster (TiKV and other dependencies must be installed) -cargo add surrealdb --features kv-tikv -``` - -You will need to add the following additional dependencies: - -```bash -cargo add serde --features derive -cargo add tokio --features macros,rt-multi-thread -``` - -
- -## Connect to SurrealDB - -Open `src/main.rs` and replace everything in there with the following code to try out some basic operations using the SurrealDB SDK with an embedded database. Look at [integrations to connect to a database](/docs/surrealdb/integration/sdks/rust). - -```rust -use serde::{Deserialize, Serialize}; -use surrealdb::engine::local::Mem; -use surrealdb::sql::Thing; -use surrealdb::Surreal; - -#[derive(Debug, Serialize)] -struct Name<'a> { - first: &'a str, - last: &'a str, -} - -#[derive(Debug, Serialize)] -struct Person<'a> { - title: &'a str, - name: Name<'a>, - marketing: bool, -} - -#[derive(Debug, Serialize)] -struct Responsibility { - marketing: bool, -} - -#[derive(Debug, Deserialize)] -struct Record { - #[allow(dead_code)] - id: Thing, -} - -#[tokio::main] -async fn main() -> surrealdb::Result<()> { - // Create database connection - let db = Surreal::new::(()).await?; - - // Select a specific namespace / database - db.use_ns("test").use_db("test").await?; - - // Create a new person with a random id - let created: Vec = db - .create("person") - .content(Person { - title: "Founder & CEO", - name: Name { - first: "Tobie", - last: "Morgan Hitchcock", - }, - marketing: true, - }) - .await?; - dbg!(created); - - // Update a person record with a specific id - let updated: Option = db - .update(("person", "jaime")) - .merge(Responsibility { marketing: true }) - .await?; - dbg!(updated); - - // Select all people records - let people: Vec = db.select("person").await?; - dbg!(people); - - // Perform a custom advanced query - let groups = db - .query("SELECT marketing, count() FROM type::table($table) GROUP BY marketing") - .bind(("table", "person")) - .await?; - dbg!(groups); - - Ok(()) -} -``` - -Run your program from the command line with: - -```sh -cargo run -``` - -
- -## SDK methods - -The Rust SDK comes with a number of built-in functions. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
Surreal::init()Initialises a static database engine
db.connect(endpoint)Connects to a specific database endpoint, saving the connection on the static client
Surreal::new::<T>(endpoint)Connects to a local or remote database endpoint
db.use_ns(namespace).use_db(database)Switch to a specific namespace and database
db.signup(credentials)Signs up a user to a specific authentication scope
db.signin(credentials)Signs this connection in to a specific authentication scope
db.invalidate()Invalidates the authentication for the current connection
db.authenticate(token)Authenticates the current connection with a JWT token
db.set(key, val)Assigns a value as a parameter for this connection
db.query(sql)Runs a set of SurrealQL statements against the database
db.select(resource)Selects all records in a table, or a specific record
db.create(resource).content(data)Creates a record in the database
db.update(resource).content(data)Updates all records in a table, or a specific record
db.update(resource).merge(data)Modifies all records in a table, or a specific record
db.update(resource).patch(data)Applies JSON Patch changes to all records in a table, or a specific record
db.delete(resource)Deletes all records, or a specific record
- -
- -## `.init()` {#init} - -The DB static singleton ensures that a single database instance is available across very large or complicated applications. With the singleton, only one connection to the database is instantiated, and the database connection does not have to be shared across components or controllers. - -```rust title="Method Syntax" -Surreal::init() -``` - -### Example usage -```rust -static DB: Lazy> = Lazy::new(Surreal::init); - -#[tokio::main] -async fn main() -> surrealdb::Result<()> { - // Connect to the database - DB.connect::("cloud.surrealdb.com").await?; - // Select a namespace + database - DB.use_ns("test").use_db("test").await?; - // Create or update a specific record - let tobie: Option = DB - .update(("person", "tobie")) - .content(Person { name: "Tobie" }) - .await?; - Ok(()) -} -``` - -
- -## `.connect()` {#connect} - -Connects to a local or remote database endpoint. - -```rust title="Method Syntax" -db.connect(endpoint) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentDescription
- endpoint - REQUIRED - - The database endpoint to connect to. -
- -### Example usage -```rust -// Connect to a local endpoint -DB.connect::("127.0.0.1:8000").await?; -// Connect to a remote endpoint -DB.connect::("cloud.surrealdb.com").await?; -``` - -
- -## `.new()` {#new} - -Connects to a local or remote database endpoint. - -```rust title="Method Syntax" -Surreal::new:: (endpoint) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- endpoint - REQUIRED - - The database endpoint to connect to. -
- -### Example usage -```rust -let db = Surreal::new::("127.0.0.1:8000").await?; -``` - -
- -## `.use_ns()` and `.use_db()` {#use-ns-db} - -Switch to a specific namespace and database. - -```rust title="Method Syntax" -db.use_ns(ns).use_db(db) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- ns - REQUIRED - - Switches to a specific namespace. -
- db - REQUIRED - - Switches to a specific database. -
- -### Example usage -```rust -db.use_ns("test").use_db("test").await?; -``` - -
- -## `.signup()` {#signup} - -Signs up to a specific authentication scope. - -```rust title="Method Syntax" -db.signup(credentials) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- credentials - REQUIRED - - Variables used in a signup query. -
- -### Example usage -```rust -use serde::Serialize; -use surrealdb::opt::auth::Scope; - -#[derive(Serialize)] -struct Credentials<'a> { - email: &'a str, - pass: &'a str, -} - -let jwt = db.signup(Scope { - namespace: "test", - database: "test", - scope: "user", - params: Credentials { - email: "info@surrealdb.com", - pass: "123456", - }, -}).await?; - -// ⚠️: It is important to note that the token should be handled securely and protected from unauthorized access. -let token = jwt.as_insecure_token(); -``` - -
- -## `.signin()` {#signin} - -Signs in to a specific authentication scope. - -```rust title="Method Syntax" -db.signin(credentials) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- credentials - REQUIRED - - Variables used in a signin query. -
- -### Example usage -```rust -use serde::Serialize; -use surrealdb::opt::auth::Scope; - -#[derive(Serialize)] -struct Credentials<'a> { - email: &'a str, - pass: &'a str, -} - -let jwt = db.signin(Scope { - namespace: "test", - database: "test", - scope: "user", - params: Credentials { - email: "info@surrealdb.com", - pass: "123456", - }, -}).await?; - -// ⚠️: It is important to note that the token should be handled securely and protected from unauthorized access. -let token = jwt.as_insecure_token(); -``` - -
- -## `.invalidate()` {#invalidate} - -Invalidates the authentication for the current connection. - -```rust title="Method Syntax" -db.invalidate(credentials) -``` - -### Example usage -```surql -db.invalidate().await?; -``` - -
- -## `.authenticate()` {#authenticate} - -Authenticates the current connection with a JWT token. - -```rust title="Method Syntax" -db.authenticate(token) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- token - REQUIRED - - The JWT authentication token. -
- -### Example usage -```rust -db.authenticate(jwt).await?; -``` - -
- -## `.set()` {#set} - -Assigns a value as a parameter for this connection. - -```rust title="Method Syntax" -db.set(key, val) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - Specifies the name of the variable. -
- val - REQUIRED - - Assigns the value to the variable name. -
- -### Example usage -```rust -// Assign the variable on the connection -db.set("name", Name { - first: "Tobie", - last: "Morgan Hitchcock", -}).await?; -// Use the variable in a subsequent query -db.query("CREATE person SET name = $name").await?; -// Use the variable in a subsequent query -db.query("SELECT * FROM person WHERE name.first = $name.first").await?; -``` - -
- -## `.query()` {#query} - -Runs a set of SurrealQL statements against the database. - -```rust title="Method Syntax" -db.query(sql).bind(vars) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- sql - REQUIRED - - Specifies the SurrealQL statements. -
- vars - OPTIONAL - - Assigns variables which can be used in the query. -
- -### Example usage -```rust -// Run some queries -let sql = " - CREATE person; - SELECT * FROM type::table($table); -"; -let mut result = db - .query(sql) - .bind(("table", "person")) - .await?; -// Get the first result from the first query -let created: Option = result.take(0)?; -// Get all of the results from the second query -let people: Vec = result.take(1)?; -``` - -
- -## `.select()` {#select} - -Selects all records in a table, or a specific record, from the database. - -```rust title="Method Syntax" -db.select(resource) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or a record ID to select. -
- -### Example usage -```rust -// Select all records from a table -let people: Vec = db.select("person").await?; -// Select a specific record from a table -let person: Option = db.select(("person", "h5wxrf2ewk8xjxosxtyc")).await?; -``` - -### Translated query -This function will run the following query in the database: - -```surql -SELECT * FROM $resource; -``` - -
- -## `.create()` {#create} - -Creates a record in the database. - -```rust title="Method Syntax" -db.create(resource).content(data) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or the specific record ID to create. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```rust -// Create a record with a random ID -let people: Vec = db.create("person").await?; -// Create a record with a specific ID -let record: Record = db - .create(("person", "tobie")) - .content(Person { - name: "Tobie", - settings: { - active: true, - marketing: true, - }, - }).await?; -``` - -### Translated query -This function will run the following query in the database: - -```surql -CREATE $resource CONTENT $data; -``` - -
- -## `.update().content()` {#update-content} - -Updates all records in a table, or a specific record, in the database. - -```rust title="Method Syntax" -db.update(resource).content(data) -``` - -:::note -NOTE: This function replaces the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or the specific record ID to create. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```rust -// Update all records in a table -let people: Vec = db.update("person").await?; -// Update a record with a specific ID -let person: Option = db - .update(("person", "tobie")) - .content(Person { - name: "Tobie", - settings: { - active: true, - marketing: true, - }, - }).await?; -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $resource CONTENT $data; -``` - -
- -## `.update().merge()` {#update-merge} - -Modifies all records in a table, or a specific record, in the database. - -```rust title="Method Syntax" -db.update(resource).merge(data) -``` - -:::note -NOTE: This function merges the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or the specific record ID to create. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```rust -// Update all records in a table -let people: Vec = db.update("person") - .merge(Document { - updated_at: Datetime::default(), - }) - .await?; -// Update a record with a specific ID -let person: Option = db.update(("person", "tobie")) - .merge(Document { - updated_at: Datetime::default(), - settings: Settings { - active: true, - }, - }) - .await?; -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $resource MERGE $data; -``` - -
- -## `.update().patch()` {#update-patch} - -Applies JSON Patch changes to all records, or a specific record, in the database. - -```rust title="Method Syntax" -db.update(resource).patch(data) -``` - -:::note -NOTE: This function patches the current document / record data with the specified JSON Patch data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or the specific record ID to modify. -
- data - OPTIONAL - - The JSON Patch data with which to modify the records. -
- -### Example usage -```rust -// Update all records in a table -let people: Vec = db.update("person") - .patch(PatchOp::replace("/created_at", Datetime::default())) - .await?; - -// Update a record with a specific ID -let person: Option = db.update(("person", "tobie")) - .patch(PatchOp::replace("/settings/active", false)) - .patch(PatchOp::add("/tags", &["developer", "engineer"])) - .patch(PatchOp::remove("/temp")) - .await?; -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $resource PATCH $data; -``` - -
- -## `.delete()` {#delete} - -Deletes all records in a table, or a specific record, from the database. - -```rust title="Method Syntax" -db.delete(resource) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or a record ID to select. -
- -### Example usage -```rust -// Delete all records from a table -let people: Vec = db.delete("person").await?; -// Delete a specific record from a table -let person: Option = db.delete(("person", "h5wxrf2ewk8xjxosxtyc")).await?; -``` - -### Translated query -This function will run the following query in the database: - -```surql -DELETE FROM $resource RETURN BEFORE; -``` diff --git a/versioned_docs/version-1.0.x/faqs/_category_.json b/versioned_docs/version-1.0.x/faqs/_category_.json deleted file mode 100644 index 11d8a1461..000000000 --- a/versioned_docs/version-1.0.x/faqs/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "FAQs", - "position": 11 -} \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/faqs/overview.mdx b/versioned_docs/version-1.0.x/faqs/overview.mdx deleted file mode 100644 index ba905f62c..000000000 --- a/versioned_docs/version-1.0.x/faqs/overview.mdx +++ /dev/null @@ -1,47 +0,0 @@ ---- -sidebar_position: 2 ---- -import Version from '../../../src/components/Version'; - -# Overview - -# Frequently Asked Questions - -View some of the frequently asked questions regarding SurrealDB, SurrealQL, and SurrealKV. Questions which are frequently asked across our GitHub, Discord and other social platforms will be added here from time-to-time. - -## Is SurrealDB ready for production use? - -SurrealDB is currently in version which is a stable version. There are a number of features and performance improvements being worked on before a production-ready release. - -1. We now have a query planner that may identify the possibility of using indexes (unique and non-unique). It all depends on the complexity of the query. This is where the [EXPLAIN](/docs/surrealdb/1.0.x/surrealql/statements/select#the-explain-clause) clause (for [`SELECT`](/docs/surrealdb/1.0.x/surrealql/statements/select) statements) is useful, as it tells if any index is being used. - -## Where can I find the latest features? -Once features are released, we document them in our [release notes](https://surrealdb.com/releases) and on our [features page](https://surrealdb.com/features), which is a great place to understand capabilities. - -You can also check some of our new features for : -- [`SurrealLQ`](https://surrealdb.com/lq) -- [`SurrealIX`](https://surrealdb.com/ix) -- [`SurrealCF`](https://surrealdb.com/cf) -- [`SurrealML`](https://surrealdb.com/ml) - -## How do I scale SurrealDB? - -SurrealDB can be scaled vertically on a single-node, by adding more compute power and memory to a server instance. SurrealDB can also be scaled horizontally by sitting infront of, and connecting to a [TiKV](https://tikv.org/) to store data. TiKV is a highly scalable, low latency, and easy to use key-value datastore. TiKV supports raw and transaction-based querying with ACID compliance, and support for multiple concurrent readers and writers. The design of TiKV is inspired by distributed systems from Google, such as BigTable, Spanner, and Percolator, and some of the latest achievements in academia in recent years, such as the Raft consensus algorithm. -, or [FoundationDB](https://www.foundationdb.org/) distributed cluster. When running in this mode, SurrealDB offloads the storage to the key-value store, operating as an advanced query engine layer. It is then possible to increase the number of SurrealDB nodes as required, in order to handle the query and transaction processing requirements. - -## What is the license for SurrealDB? - -Source code for SurrealDB is variously licensed under a number of different licenses. A copy of each license can be found in [each repository](https://github.com/surrealdb) on GitHub. For more information on the licenses view the license [details page](https://surrealdb.com/license). - -## Do I need to purchase a license for development use? - -No! SurrealDB is free to use for all development, pre-production and production use. - -## Do I need to purchase a license for production use? - -No! SurrealDB is free to use for all development, pre-production and production use. - -## What does the license restrict you from doing? - -You can use and scale SurrealDB to any number of nodes, and can run it as a server or embed it in to your applications (whether you ship those applications to customers or run them as a service). You can even run it as a service internally, to your employees, contractors, and subsidiary companies. The only thing that you are not able to do is offer a commercial, hosted version of SurrealDB as a service (a database-as-a-service) without buying a license. - diff --git a/versioned_docs/version-1.0.x/how-to/_category_.json b/versioned_docs/version-1.0.x/how-to/_category_.json deleted file mode 100644 index 5d65f0fc4..000000000 --- a/versioned_docs/version-1.0.x/how-to/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "How to", - "position": 3, -} diff --git a/versioned_docs/version-1.0.x/how-to/connect-to-surrealdb-via-ngrok-tunnel.mdx b/versioned_docs/version-1.0.x/how-to/connect-to-surrealdb-via-ngrok-tunnel.mdx deleted file mode 100644 index 45d9e66fd..000000000 --- a/versioned_docs/version-1.0.x/how-to/connect-to-surrealdb-via-ngrok-tunnel.mdx +++ /dev/null @@ -1,80 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Connect to SurrealDB via Ngrok tunnel - -# Connect to SurrealDB via Ngrok tunnel - -This guide will walk you through connecting a local SurrealDB instance to the internet using Ngrok, making it accessible remotely. -[Ngrok](https://ngrok.com/) is a cross-platform application that allows developers to expose their local web servers to the internet. It hosts a local web server on its own sub-domain and makes your local development box available on the internet through Tunneling. - -This setup is beneficial for remote development and quick testing of applications built locally on SurrealDB. - -## Prerequisites - -This guide assumes the following: - -- You have [SurrealDB installed](/docs/surrealdb/1.0.x/installation/overview) and a [fresh instance of SurrealDB running.](/docs/surrealdb/1.0.x/introduction/start) -- Downloaded [Ngrok](https://ngrok.com/download) to be used as a tunnel. - -:::note -Tunneling refers to the process of using a network protocol to encapsulate a different payload protocol, enabling data to pass securely through a network or the internet -::: - -## Steps - -### Start SurrealDB Instance - -Open your command line or terminal and run the following command to [start SurrealDB](/docs/surrealdb/1.0.x/introduction/start). - -```bash -surreal start memory -A --auth --user root --pass root -``` - -We use the default username and password `root`. You can replace it with your own credentials if you have set them up. - -### Set Up Ngrok Tunnel - -Open another command line or terminal window (do not close the SurrealDB one) and run the following command to expose SurrealDB’s default port (8000) to the internet: - -```bash -ngrok http 8000 -``` - -Note the forwarding address provided by Ngrok (e.g.**`25f6-2402-e280-2189-38e-9c15-d08-2f83-779e.ngrok-free.app`**). - -Keep this address handy as we will use it in the next step. - -### Connect to SurrealDB via the Ngrok Address - -Now, let's [connect to your SurrealDB instance](/docs/surrealdb/1.0.x/cli/sql/) using the forwarding address provided by Ngrok. - -Run the following command in a new terminal window/tab, replacing **`[ngrok-address]`** with the actual Ngrok forwarding address you noted earlier: - -```bash -surreal sql --conn wss://[ngrok-address] --user root --pass root --ns test --db test --pretty -``` - -### Verify the Connection - -Finally, let’s ensure the connection is properly set up by running a test query. -With the help of the `CREATE` statement, [create a new record](/docs/surrealdb/1.0.x/surrealql/statements/create). - -```surql -CREATE registration SET -full_name = 'John Doe', -email = 'johndoe@gmail.com', -address_line1 = 'Room number 1, Hogwarts', -address_line2 = 'Near Diagon Alley', -city = 'Hogwarts', -country = 'England'; -``` -And let's [query the data](/docs/surrealdb/1.0.x/surrealql/statements/select) from the record now. -```surql -SELECT * FROM registration - ``` - -## Conclusion - -In this guide, we have looked at how we can connect to a local instance of SurrealDB using tunnels like Ngrok which can help with testing applications. Ngrok provides a random or custom subdomain for your tunnel URL every time you start the tunnel, which is difficult to predict. The data transmitted over the Ngrok tunnel is encrypted, ensuring the information remains secure while it travels over the internet. diff --git a/versioned_docs/version-1.0.x/how-to/integrate-auth0-as-authentication-provider.mdx b/versioned_docs/version-1.0.x/how-to/integrate-auth0-as-authentication-provider.mdx deleted file mode 100644 index 42331c33b..000000000 --- a/versioned_docs/version-1.0.x/how-to/integrate-auth0-as-authentication-provider.mdx +++ /dev/null @@ -1,301 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Integrate Auth0 as an Authentication Provider - -# Integrate Auth0 as an Authentication provider - -This guide will cover using [Auth0](https://auth0.com/) as the authentication provider for single-page web applications using SurrealDB as the only backend. In this guide you will learn how to: - -- Configure Auth0 to issue tokens that can be used with SurrealDB. -- Configure SurrealDB to accept tokens issued by Auth0. -- Define user-level authorization using SurrealDB scopes. -- Authenticate users with Auth0 in a single-page application. -- Retrieve and update information from SurrealDB using the authenticated user. - -This guide will cover the most general case, in which SurrealDB is the only backend for your application. You can still follow this guide even if you have additional backends, but in that case you may have other options available to request and validate tokens issued by Auth0. Likewise, even if your application is not strictly a Single-Page Application (SPA), you may still follow and benefit from this guide. - -## Prerequities - -This guide assumes the following: - -- You have a [fresh instance of SurrealDB running.](/docs/surrealdb/introduction/start) - -- You can [use a local Docker container](/docs/surrealdb/installation/running/docker) without volumes for the purposes of this guide. - -```bash -docker run --rm --pull always -p 8000:8000 surrealdb/surrealdb:latest \ - start --log trace --auth --user root --pass root -``` - -To run the SurrealQL statements mentioned in this guide, you will also need an interactive shell. - -```bash -surreal sql -u root -p root --pretty -``` - -You will also need to [create an Auth0 account](https://auth0.com/signup), which can be on the free plan. - -## Configuring Auth0 - -### Creating a simple SPA, an Auth0 application and an Auth0 API - -First of all, you will need to complete the regular setup for creating a Single-Page Application and an API resource within Auth0. You can do this by following the official Auth0 [documentation](https://auth0.com/docs/quickstart/spa) for your SPA. - -If you are using plain JavaScript, follow [the vanillajs guide](https://auth0.com/docs/quickstart/spa/vanillajs/01-login) to create an application in Auth0 and [the API guide](https://auth0.com/docs/quickstart/spa/vanillajs/02-calling-an-api) to create an API in Auth0. - -:::note - Note: You will not need to create an actual backend API (e.g. using backend languages like NodeJS or Go) as the documentation suggests when using SurrealDB. A simple file server (e.g. python3 -m http.server 8080, for local testing or any static web server for production) that can serve the static content of your website will suffice. However, creating an API resource in Auth0 is necessary, as it will generate an “audience” string which will be required for Auth0 to add claims to its access tokens. -::: - -At the end of those tutorials, you should have both an application and an API created in your Auth0 account and a simple client-side web application that authenticates with Auth0 using those two resources. This website will capture the access token issued by Auth0, which is the token that we are using with SurrealDB. If you were not able to create a working website, you can also use this [minimal example created by SurrealDB](https://github.com/surrealdb/examples/tree/main/auth0). - -When completing the actions above, make sure to keep the following information handy: - -- Auth0 Client ID, generated when creating the application. -- Auth0 Domain, generated when creating the application. -- Auth0 Audience, generated when creating the API. - -### Creating a custom Auth0 action to add claims for SurrealDB - -Now, Auth0 is ready to perform authentication and issue tokens for your application. However, SurrealDB expects these tokens to contain some specific claims. Auth0 allows adding custom claims through its “actions” and “flows” features. - -To add custom claims, you must [create an Auth0 action](https://auth0.com/docs/customize/actions/write-your-first-action#create-an-action) with the “Login / Post Login” trigger. - -For this example, you can use the following code: - -```js -exports.onExecutePostLogin = async (event, api) => { - if (event.authorization) { - // The claims in this block are expected by SurrealDB. - // These values should match your SurrealDB installation. - api.accessToken.setCustomClaim(`ns`, "test"); - api.accessToken.setCustomClaim(`db`, "test"); - // These values correspond to the names of the SCOPE and TOKEN resources - // which will be created in SurrealDB during the next section. - api.accessToken.setCustomClaim(`sc`, "user"); - api.accessToken.setCustomClaim(`tk`, "auth0"); - - // In this block, we will add additional claims which are not required by SurrealDB. - // These claims can be used from SurrealQL to implement application logic. - // In this example, we will add the data that we will store for each user. - // We will also use some of this data to perform authorization. - api.accessToken.setCustomClaim(`email`, event.user.email); - api.accessToken.setCustomClaim(`email_verified`, event.user.email_verified); - api.accessToken.setCustomClaim(`name`, event.user.name); - api.accessToken.setCustomClaim(`nickname`, event.user.nickname); - api.accessToken.setCustomClaim(`picture`, event.user.picture); - } -}; -``` - -This action should be saved and added to the “Login” flow in the “Actions > Flows” section. - -## Configuring SurrealDB - -### Defining a token verification method in SurrealDB - -Next, we should configure SurrealDB so that it can verify tokens sent to it through the [HTTP REST API](/docs/surrealdb/integration/http) via the “Authorization” header or through any of the [SDKs](/docs/surrealdb/integration/sdks/Overview) via the “Authenticate” methods. - -To do that, we will require the public key of the key pair that Auth0 will use to sign the tokens that it will issue for our application. This key can be [obtained by querying the following endpoint](https://auth0.com/docs/secure/tokens/json-web-tokens/locate-json-web-key-sets): - -```surql -https:///.well-known/jwks.json -``` - -Where the placeholder text is to be replaced by the domain value defined for your Auth0 application. - -This will return a JSON (more specifically [JWKS](https://auth0.com/docs/secure/tokens/json-web-tokens/json-web-key-sets)) file with an array of public keys, the first of which is the public key that will be used to sign all tokens issued by Auth0 for your application. Store the value of the `x5c` attribute for that first key. This is the value of your current public key. - -Here is an example JWKS file, indented and with the relevant value highlighted: - -```json -{ - "keys": [ - { - "kty": "RSA", - "use": "sig", - "n": "2nsSvrRnuw6OLJCqltkiRAGV07-35isdPwyTrrWQ3PwxEZc-lDbquQ7Z9Fkx5Y-ldVzBbTHEsbmhDYjBubUlS4dhstvpYD93963Sw6Q6gQjow_T4xWqsaeuj4PpcajPjI_ybbDwLa7bIXEBz7AC3UAgxY0khiERfq2quWIaeK0MLJ7bBcpyGF7hZy1SUehQ187-yBrM9Dsi2qKxQX981JFsctEnJLaabvoWUMQsMucTJXBRp5X_bGJ70XjgB85DNWTVqw7XwEfe_piM5DcvjVcR86bYMw-Qs46a3IzvIDs54X9--frM35IHLNrpwVbfsg4qgmya_GTPF4NSVab0xaQ", - "e": "AQAB", - "kid": "_8kKMct_togebAwqQ8Uos", - "x5t": "ZffK9pHzOtCslIK_800RhfZZ_ks", - "x5c": [ - // highlight-next-line - "MIIDBTCCAe2gAwIBAgIJdeyDfUXHLwX+MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNVBAMTFWdlcmF1c2VyLmV1LmF1dGgwLmNvbTAeFw0yMzEwMzExNzI5MDBaFw0zNzA3MDkxNzI5MDBaMCAxHjAcBgNVBAMTFWdlcmF1c2VyLmV1LmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANp7Er60Z7sOjiyQqpbZIkQBldO/t+YrHT8Mk661kNz8MRGXPpQ26rkO2fRZMeWPpXVcwW0xxLG5oQ2Iwbm1JUuHYbLb6WA/d/et0sOkOoEI6MP0+MVqrGnro+D6XGoz4yP8m2w8C2u2yFxAc+wAt1AIMWNJIYhEX6tqrliGnitDCye2wXKchhe4WctUlHoUNfO/sgazPQ7ItqisUF/fNSRbHLRJyS2mm76FlDELDLnEyVwUaeV/2xie9F44AfOQzVk1asO18BH3v6YjOQ3L41XEfOm2DMPkLOOmtyM7yA7OeF/fvn6zN+SByza6cFW37IOKoJsmvxkzxeDUlWm9MWkCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOeOmT9I3/MJ/zI/lS74gPQmAQfEwDgYDVR0PAQH/BAQDAgKEMA0GCSqGSIb3DQEBCwUAA4IBAQBDue8iM90XJcLORvr6e+h15f5tlvVjZ/cAzv09487QSHJtUd6qwTlunEABS5818TgMEMFDRafQ7CDX3KaAAXFpo2bnyWY9c+Ozp0PWtp8ChunOs94ayaG+viO0AiTrIY28cc26ehNBZ/4gC4/1k0IlXEk8rd1e03hQuhNiy7SQaxS2f1xkJfR4vCeF8HTN5omjKvIMcWRqkkwFZm4gdgkMfi2lNsV8V6+HXyTc3XUIdcwOUcC+Ms/m+vKxnyxw0UGh0RliB1qBc0ADg83hOsXEqZjneHh1ZhqqVF4IkKSJTfK5ofcc14GqvpLjjTR3s2eX6zxdujzwf4gnHdxjVvdJ" - ], - "alg": "RS256" - }, - { - "kty": "RSA", - "use": "sig", - "n": "vtOCOuiM_JI87mQ8E6ICCJLSC5KliR9vQC0s1XJV4A17m-CMmgFAN7u8AabrxId-3zjUZAE-nkpanENM76WIQJUCdt1H1gfC5lY4a49FVXA2q1WZLwDvlgb-ZNYZXi2vaH50uONXeO9XSG9dEnBUVKGVRL34GqB68UGgXrPGLkAcjH-TW0KDXLZ-FKXNhQfESIVGDHRGG0l-LPK_1AegtJjdEUjhA4CQ-1jA3kLVfr2cQc8rRD5b486R5XvC4xBlZNFFP7Fm5if4khhAJC-JnnYWgmytPM4Q7mOWatRr08wQmmfQDDrw53IseNA-yKnwHYlJ6ChU_UtNzS0OipUapQ", - "e": "AQAB", - "kid": "fwrcOmV26mBUkeqbXfL_4", - "x5t": "RhdLvYxnXgM6TYxpzbG-K-RleqQ", - "x5c": [ - "MIIDBTCCAe2gAwIBAgIJUzJ062XCgOVQMA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNVBAMTFWdlcmF1c2VyLmV1LmF1dGgwLmNvbTAeFw0yMzEwMzExNzI5MDBaFw0zNzA3MDkxNzI5MDBaMCAxHjAcBgNVBAMTFWdlcmF1c2VyLmV1LmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL7TgjrojPySPO5kPBOiAgiS0guSpYkfb0AtLNVyVeANe5vgjJoBQDe7vAGm68SHft841GQBPp5KWpxDTO+liECVAnbdR9YHwuZWOGuPRVVwNqtVmS8A75YG/mTWGV4tr2h+dLjjV3jvV0hvXRJwVFShlUS9+BqgevFBoF6zxi5AHIx/k1tCg1y2fhSlzYUHxEiFRgx0RhtJfizyv9QHoLSY3RFI4QOAkPtYwN5C1X69nEHPK0Q+W+POkeV7wuMQZWTRRT+xZuYn+JIYQCQviZ52FoJsrTzOEO5jlmrUa9PMEJpn0Aw68OdyLHjQPsip8B2JSegoVP1LTc0tDoqVGqUCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUYp67WM42b2pqF7ES0LsFvAI/Qy8wDgYDVR0PAQH/BAQDAgKEMA0GCSqGSIb3DQEBCwUAA4IBAQANOhmYz0jxNJG6pZ0klNtH00E6SoEsM/MNYH+atraTVZNeqPLAZH9514gMcqdu7+rBfQ/pRjpQG1YbkdZGQBaq5cZNlE6hNCT4BSgKddBYsN0WbfTGxstDVdoXLySgGCYpyKO6Hek4ULxwAf1LmMyOYpn4JrECy4mYShsCcfe504qfzUTd7pz1VaZ4minclOhz0dZbgYa+slUepe0C2+w+T3US138x0lPB9C266SLDakb6n/JTum+Czn2xlFBf4K4w6eWuSknvTlRrqTGE8RX3vzOiKTM3hpDdjU7Tu7eNsZpLkDR1e+w33m5NMi9iYgJcyTGsIeeHr0xjrRPD9Dwh" - ], - "alg": "RS256" - } - ] -} -``` - -Subsequent keys found in the JWKS object are those that Auth0 will use next to sign tokens if you were to [rotate the signing keys](https://auth0.com/docs/get-started/tenant-settings/signing-keys/rotate-signing-keys) from Auth0. **It is important to note that, if you follow this guide, rotating keys in Auth0 will require that you also update the public key defined in SurrealDB.** This will simply require running the `DEFINE TOKEN` query to update the public key value, but it cannot be done unilaterally from Auth0. This will be possible once SurrealDB natively supports JWKS. - -Although what is described in this guide is the recommended approach, if you require an alternative to using public key cryptography in this manner, you may also use an HMAC algorithm to sign tokens as explained in the “Alternative: Using HMAC” [Annex](#annex) section below. - -The following queries will create the required resources to authenticate a token for a scope: - -```surql --- Specify the namespace and database that will be used. --- These values should match the custom claims that we configured before. -USE NS test DB test; - --- Define the scope where the token will be used. --- The name of the scope should match the custom claim that we configured before. -DEFINE SCOPE user; - --- Define the public key to verify tokens issued by Auth0 for our application. --- The name of the token should match the custom claim that we configured before. -DEFINE TOKEN auth0 ON SCOPE user TYPE RS256 VALUE "-----BEGIN PUBLIC KEY----- - ------END PUBLIC KEY-----"; -``` - -In the example above, replace the placeholder with the `x5c` value retrieved from the JWKS object. - -### Defining authorization criteria in SurrealDB - -For this simple example, we will create a single table named “user”, where any user that authenticates through Auth0 using your application with a verified email address will be able to register, view and update their data. For this to work as intended, we will need to verify some information in the token claims. - -```surql -DEFINE TABLE user SCHEMAFULL - -- Authorized users can select, update, delete and create user records. - -- Records that do not match the permissions will not be modified nor returned. - PERMISSIONS FOR select, update, delete, create - WHERE - -- The token scope must match the scope that we defined. - -- The name of the scope should match the scope that we defined before. - $scope = "user" - -- The audience claim must contain the audience of you application. - -- This is the value that you defined when creating the API in Auth0. - AND $token.aud CONTAINS "" - -- The audience claim must contain your Auth0 user information endpoint. - -- It contains the domain generated when when creating the application in Auth0. - AND $token.aud CONTAINS "https:///userinfo" - -- The email claim must match the email of the user being queried. - AND email = $token.email - -- The email must be verified as belonging to the user. - AND $token.email_verified = true -; - --- In this example, we will use the email as the primary identifier for a user. -DEFINE INDEX email ON user FIELDS email UNIQUE; -DEFINE FIELD email ON user TYPE string ASSERT string::is::email($value); --- We define some other information present in the token that we want to store. -DEFINE FIELD name ON user TYPE string; -DEFINE FIELD nickname ON user TYPE string; -DEFINE FIELD picture ON user TYPE string; -``` - -It is important to know that [validating the audience of the token is a requirement of Auth0](https://auth0.com/docs/secure/tokens/access-tokens/validate-access-tokens), other providers may require validating additional claims (e.g. `iss`, `sub`) to ensure that the token is being used as intended. With Auth0, you can also make use of [OpenID Connect scopes](https://auth0.com/docs/get-started/apis/scopes/openid-connect-scopes), which can be accessed through the `scopes` claim via `$token.scopes` and contain the OIDC scopes requested by the application and granted by the user, which we will not do for this example. - -It is also important to note that the `$auth` variable accessible from SurrealQL will not contain any values in this case, as it requires the `id` claim to be added to the JWT, containing the value of the identifier of a SurrealDB record. For the current example, the `$auth` variable will not be necessary. - -## Configuring the Application - -Now that we have everything ready for Auth0 to generate tokens and for SurrealDB to receive and verify them, we will modify our simple web application to use the token issued by Auth0 to register a new user or to update its information if the user already exists. - -Because of the diversity of SDKs that both SurrealDB and Auth0 support, it is difficult to provide examples that will work for everyone. In this guide, we will provide code examples for the most unspecific use case of using the [SurrealDB HTTP REST API](https://surrealdb.com/docs/integration/http) and [Auth0 SPA JS](https://github.com/auth0/auth0-spa-js). - -This code will run entirely on the client and can be added to the static website that you created while following the Auth0 quick start documentation linked at the beginning of this guide. - -With the aforementioned interfaces, we can use the following functions to authenticate users: - -```js -// Returns users in that the token is authorized to select. -// Should return only the user matching the email in the token. -const getUser = async () => { - // We fetch an access token from Auth0 with the ID token. - const auth0Token = await auth0Client.getTokenSilently(); - - const response = await fetch(surrealDbConfig.endpoint + "/key/user", { - method: "GET", - headers: { - "Accept": "application/json", - "Authorization": "Bearer " + auth0Token - } - }); - - return response.json(); -}; - -// Creates a user matching the information in the token. -// If the user already exists, updates the existing user with the new data. -const createUpdateUser = async () => { - // We collect the user data from the Auth0 ID token. - const auth0User = await auth0Client.getUser(); - // We fetch an access token from Auth0 with the ID token. - const auth0Token = await auth0Client.getTokenSilently(); - - // We define the general query to create or update a user. - // We leave the method to be defined later. - let query = { - body: JSON.stringify({ - email: auth0User.email, - name: auth0User.name, - nickname: auth0User.nickname, - picture: auth0User.picture - }), - headers: { - "Accept": "application/json", - "Authorization": "Bearer " + auth0Token - } - }; - // We get the user that the token is authorized to access. - const surrealDbUser = await getUser(); - if (surrealDbUser[0].result.length == 0) { - // If a user for the token does not exist, we create the record. - console.log("Token user does not exist in database. Creating record."); - query.method = "POST"; - } else { - // If a user for the token already exists, we update the record. - console.log("Token user already exists in database. Updating record."); - query.method = "PUT"; - } - - // We perform the query and return the created/updated record. - let response = await fetch(surrealDbConfig.endpoint + "/key/user", query); - return response.json(); -}; -``` - -If you want to see how this code would fit inside the web application that you built, you can view this [minimal example created by SurrealDB](https://github.com/surrealdb/examples/tree/main/auth0). - -To learn about other potential uses for the SurrealDB token functionality, you can read the [`DEFINE TOKEN` documentation page](/docs/surrealdb/surrealql/statements/define/token). - -## Annex - -## Example Single Page Application - -You can view and download a minimal example of an SPA using Auth0 and SurrealDB below. - -[](https://github.com/surrealdb/examples/tree/main/auth0) - -## Alternative: Using HMAC - -Using public key cryptography algorithms for signing tokens prevents you from having to store any secrets at all in SurrealDB. However, some SurrealDB administrators may prefer to use HMAC algorithms, which use the same secret to both sign and verify the signature of the JWT. This secret will be stored in SurrealDB when provided as value for the `DEFINE TOKEN` statement and its access should be restricted, as it can be used to issue arbitrary tokens which will be trusted by SurrealDB. - -According to the OAuth 2.0 specification (part of OpenID Connect), only confidential (as opposed to public) applications should be allowed to use HMAC algorithms, as it requires being able to keep the secret secure. For this reason, Auth0 will not allow using HMAC algorithms with applications of the SPA (Single-Page Application) type, as they generally would have to store the secret in the client, which is publicly accessible. However, because of the particular case of SurrealDB, the secret will not need to be exposed to the client and will instead be stored in SurrealDB. - -Auth0 can support scenarios like these through the option to [disable OIDC-conformant authentication](https://auth0.com/docs/authenticate/login/oidc-conformant-authentication). Once disabled, Auth0 will allow selecting HMAC algorithms for SPA. Keep in mind that other options may become available in Auth0 after this change which, if modified without proper care, may compromise the security of your application. - -If the choice of using HMAC is made, the rest of the guide can be followed as is, with the exception of specifying the proper HMAC algorithm and placing the secret as the value when defining a token. In Auth0, the secret used to sign using HMAC algorithm corresponds to the [Auth0 Client Secret](https://auth0.com/docs/secure/application-credentials#client-secret-authentication) string. The example below shows how a token using the HS256 algorithm can be defined: - -```surql --- Define the secret to verify tokens issued by Auth0 for our application. --- The name of the token should match the custom claim that we configured before. -DEFINE TOKEN auth0 ON SCOPE user TYPE HS256 VALUE ""; -``` diff --git a/versioned_docs/version-1.0.x/how-to/overview.mdx b/versioned_docs/version-1.0.x/how-to/overview.mdx deleted file mode 100644 index daf858b31..000000000 --- a/versioned_docs/version-1.0.x/how-to/overview.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -sidebar_position: 1 -title: Overview ---- - -# How to - -# How to - -In this section, you will find step-by-step guides and tutorials on how to perform various tasks and achieve specific goals using SurrealDB. - -## Introduction - -The purpose of this section is to provide you with practical instructions and examples to help you integrate SurrealDB into your projects, configure its features, and leverage its capabilities effectively. - -This section is more specfic to experienced user seeking guidance on advanced topics, this section will serve as a valuable resource. Each guide is designed to be concise, easy to follow, and accompanied by code snippets and examples to illustrate the concepts. - -If you are new to SurrealDB, we recommend that you start with the [Getting Started](/docs/surrealdb/introduction/start) section of the documentation or the [SurrealQL](/docs/surrealdb/surrealql/overview). This section will provide you with a solid foundation of the core concepts and features of SurrealDB. - -## How To Guides - -Within this section, you will find a collection of "How To" guides that cover a wide range of topics related to SurrealDB. These guides will walk you through the necessary steps to accomplish specific tasks, such as integrating authentication providers, setting up database connections, implementing data models, and more. - -To get started, select a guide from the sidebar or use the search functionality to find a specific topic of interest. Each guide provides clear instructions, code examples, and explanations to help you successfully complete the task at hand. - -- [Integrate Auth0 as an Authentication provider](/docs/surrealdb/1.0.x/how-to/integrate-auth0-as-authentication-provider) -- [Integrate AWS Cognito as an Authentication Provider](/docs/surrealdb/how-to/integrate-aws-cognito-as-authentication-provider) -- [Connect to SurrealDB via Ngrok](/docs/surrealdb/1.0.x/how-to/connect-to-surrealdb-via-ngrok-tunnel) diff --git a/versioned_docs/version-1.0.x/installation/_category_.json b/versioned_docs/version-1.0.x/installation/_category_.json deleted file mode 100644 index 0113eb32f..000000000 --- a/versioned_docs/version-1.0.x/installation/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Installation", - "position": 4, - "link": { - "label": "installation", - "path": "/installation/overview" - } -} diff --git a/versioned_docs/version-1.0.x/installation/linux.mdx b/versioned_docs/version-1.0.x/installation/linux.mdx deleted file mode 100644 index d383a21b2..000000000 --- a/versioned_docs/version-1.0.x/installation/linux.mdx +++ /dev/null @@ -1,86 +0,0 @@ ---- -sidebar_position: 3 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; -import Version from '../../../src/components/Version'; - -# Install on Linux - - - -# Install on Linux - -Use this tutorial to install SurrealDB on Linux or Unix operating systems using the SurrealDB [install script](https://github.com/surrealdb/install.surrealdb.com). Both the SurrealDB Database Server and the SurrealDB Command Line Tool are packaged and distributed as a single executable file, which is easy to install, and easy to uninstall. - -## Installing SurrealDB using the install script -To get started, you can use the SurrealDB [install script](https://github.com/surrealdb/install.surrealdb.com). This script securely downloads the latest version for the platform and CPU type. It attempts to install SurrealDB into the `/usr/local/bin` folder, falling back to a user-specified folder if necessary. - -```bash -curl -sSf https://install.surrealdb.com | sh -``` - -### Updating SurrealDB -To ensure that you are using the latest version, update SurrealDB to version using the following command. - -```bash -curl -sSf https://install.surrealdb.com | sh -``` - -### Checking SurrealDB -Once installed, you can run the SurrealDB command-line tool by using the `surreal` command. To check whether the install was successful run the following command in your terminal. - -```bash -surreal help -``` - -The result should look similar to the output below, confirming that the SurrealDB command-line tool was installed successfully. - -```bash -.d8888b. 888 8888888b. 888888b. -d88P Y88b 888 888 'Y88b 888 '88b -Y88b. 888 888 888 888 .88P - 'Y888b. 888 888 888d888 888d888 .d88b. 8888b. 888 888 888 8888888K. - 'Y88b. 888 888 888P' 888P' d8P Y8b '88b 888 888 888 888 'Y88b - '888 888 888 888 888 88888888 .d888888 888 888 888 888 888 -Y88b d88P Y88b 888 888 888 Y8b. 888 888 888 888 .d88P 888 d88P - 'Y8888P' 'Y88888 888 888 'Y8888 'Y888888 888 8888888P' 8888888P' - - -SurrealDB command-line interface and server - -To get started using SurrealDB, and for guides on connecting to and building applications -on top of SurrealDB, check out the SurrealDB documentation (https://surrealdb.com/docs). - -If you have questions or ideas, join the SurrealDB community (https://surrealdb.com/community). - -If you find a bug, submit an issue on Github (https://github.com/surrealdb/surrealdb/issues). - -We would love it if you could star the repository (https://github.com/surrealdb/surrealdb). - ----------- - -USAGE: - surreal [SUBCOMMAND] - -OPTIONS: - -h, --help Print help information - -SUBCOMMANDS: - start Start the database server - import Import a SQL script into an existing database - export Export an existing database into a SQL script - version Output the command-line tool version information - sql Start an SQL REPL in your terminal with pipe support - help Print this message or the help of the given subcommand(s) - -``` diff --git a/versioned_docs/version-1.0.x/installation/macos.mdx b/versioned_docs/version-1.0.x/installation/macos.mdx deleted file mode 100644 index bf5f4f936..000000000 --- a/versioned_docs/version-1.0.x/installation/macos.mdx +++ /dev/null @@ -1,104 +0,0 @@ ---- -sidebar_position: 2 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; -import Version from '../../../src/components/Version'; - -# Install on macOS - - - -# Install on macOS - -Use this tutorial to install SurrealDB on macOS using the SurrealDB [install script](https://github.com/surrealdb/install.surrealdb.com), or using the third-party [Homebrew](https://brew.sh/) package manager. Both the SurrealDB Database Server and the SurrealDB Command Line Tool are packaged and distributed as a single executable file, which is easy to install, and easy to uninstall. - - -## Installing SurrealDB using the install script - -To get started, you can use the SurrealDB [install script](https://github.com/surrealdb/install.surrealdb.com). This script securely downloads the latest version for the platform and CPU type. It attempts to install SurrealDB into the `/usr/local/bin` folder, falling back to a user-specified folder if necessary. - -```bash -curl -sSf https://install.surrealdb.com | sh -``` - -### Updating SurrealDB -To ensure that you are using the latest version, update SurrealDB to version using the following command. - -```bash -curl -sSf https://install.surrealdb.com | sh -``` - -## Installing SurrealDB using Homebrew -The quickest way to get going with SurrealDB on macOS is to use Homebrew. This will install both the command-line tools, and the SurrealDB server as a single executable. If you don't use Homebrew, follow the instructions for Linux below to install SurrealDB. - -```bash -brew install surrealdb/tap/surreal -``` - -### Updating SurrealDB -To ensure that you are using the latest version, update SurrealDB to version using the following command. - -```bash -brew upgrade surrealdb/tap/surreal -``` - - -## Checking SurrealDB - -Once installed, you can run the SurrealDB command-line tool by using the `surreal` command. To check whether the install was successful run the following command in your terminal. - -```bash -surreal help -``` - -The result should look similar to the output below, confirming that the SurrealDB command-line tool was installed successfully. - -```bash -.d8888b. 888 8888888b. 888888b. -d88P Y88b 888 888 'Y88b 888 '88b -Y88b. 888 888 888 888 .88P - 'Y888b. 888 888 888d888 888d888 .d88b. 8888b. 888 888 888 8888888K. - 'Y88b. 888 888 888P' 888P' d8P Y8b '88b 888 888 888 888 'Y88b - '888 888 888 888 888 88888888 .d888888 888 888 888 888 888 -Y88b d88P Y88b 888 888 888 Y8b. 888 888 888 888 .d88P 888 d88P - 'Y8888P' 'Y88888 888 888 'Y8888 'Y888888 888 8888888P' 8888888P' - - -SurrealDB command-line interface and server - -To get started using SurrealDB, and for guides on connecting to and building applications -on top of SurrealDB, check out the SurrealDB documentation (https://surrealdb.com/docs). - -If you have questions or ideas, join the SurrealDB community (https://surrealdb.com/community). - -If you find a bug, submit an issue on Github (https://github.com/surrealdb/surrealdb/issues). - -We would love it if you could star the repository (https://github.com/surrealdb/surrealdb). - ----------- - -USAGE: - surreal [SUBCOMMAND] - -OPTIONS: - -h, --help Print help information - -SUBCOMMANDS: - start Start the database server - import Import a SQL script into an existing database - export Export an existing database into a SQL script - version Output the command-line tool version information - sql Start an SQL REPL in your terminal with pipe support - help Print this message or the help of the given subcommand(s) - -``` diff --git a/versioned_docs/version-1.0.x/installation/overview.mdx b/versioned_docs/version-1.0.x/installation/overview.mdx deleted file mode 100644 index 0238b2f2e..000000000 --- a/versioned_docs/version-1.0.x/installation/overview.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Overview - -# Installation - -In this section, you will find detailed instructions on how to install SurrealDB on your development environment. - -The purpose of this section is to guide you through the installation process of SurrealDB, ensuring that you have all the necessary dependencies and configurations in place to start using SurrealDB effectively. - -Whether you are a beginner getting started with SurrealDB or an experienced user looking to set up SurrealDB in a new environment, this section will provide you with step-by-step instructions and best practices to ensure a smooth installation process. - -## Installation Steps - -There are multiple ways to install SurrealDB, depending on your operating system and development environment. In this section, we will outline the installation steps for each operating system and development environment, ensuring that you have all the necessary dependencies and configurations in place to start using SurrealDB effectively. - - -You can install SurrealDB on the following operating systems: - -- [macOS](/docs/surrealdb/1.0.x/installation/macos) -- [Windows](/docs/surrealdb/1.0.x/installation/windows) -- [Linux](/docs/surrealdb/1.0.x/installation/linux) \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/installation/running/_category_.json b/versioned_docs/version-1.0.x/installation/running/_category_.json deleted file mode 100644 index d02ffdf12..000000000 --- a/versioned_docs/version-1.0.x/installation/running/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Running", - "position": 5 -} diff --git a/versioned_docs/version-1.0.x/installation/running/docker.mdx b/versioned_docs/version-1.0.x/installation/running/docker.mdx deleted file mode 100644 index dbd8e07a6..000000000 --- a/versioned_docs/version-1.0.x/installation/running/docker.mdx +++ /dev/null @@ -1,124 +0,0 @@ ---- -sidebar_position: 1 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Run with Docker - - - -# Run with Docker - -Use this tutorial to run SurrealDB from within Docker. - -## Running the SurrealDB server using Docker - -To get started using Docker, you can use the `latest` tag. To start a server use the [`start`](/docs/surrealdb/cli/start) command. By default SurrealDB runs on port `8000`. To view all the available versions and tags, or to use a specific tag visit the [Docker Hub](https://hub.docker.com/r/surrealdb/surrealdb) page. - -```bash -docker run --rm --pull always -p 8000:8000 surrealdb/surrealdb:latest start -``` - -In order to persist data when the Docker instance is restarted or shutdown, specify a Docker folder using the Docker *`-v`* command line argument, and use the on-disk storage engine in SurrealDB using the path prefix chosen as a Docker folder. - -```bash -docker run --rm --pull always -p 8000:8000 -v /mydata:/mydata surrealdb/surrealdb:latest start file:/mydata/mydatabase.db -``` - -The default logging level for the database server is `info`, resulting in any informational logs to be output to the standard output. To control the logging verbosity, specify the *`--log`* argument. The following command starts the database with `trace` level logging, resulting in most logs being output to the terminal. - -```bash -docker run --rm --pull always -p 8000:8000 -v /mydata:/mydata surrealdb/surrealdb:latest start --log trace file:/mydata/mydatabase.db -``` - -### Enabling authentication - -In order to keep SurrealDB secure, configure your initial root-level user by setting the *`--user`* and *`--pass`* command-line arguments. To enable authentication, use the *`--auth`* command-line argument. - -The following command starts the database with a top-level user named `root` with a password also set to `root`. The root user will be persisted in storage, which means you don't have to include the command line arguments next time you start SurrealDB. - -```bash -docker run --rm --pull always -p 80:8000 -v /mydata:/mydata surrealdb/surrealdb:latest start --log trace --auth --user root --pass root file:mydatabase.db -``` - -In order to change the default port that SurrealDB uses for web connections and from database clients you can use the Docker *`-p`* command line argument to tunnel the port to the internal SurrealDB port which SurrealDB is served on. The following command starts the database on port `80`. - -```bash -docker run --rm --pull always -p 80:8000 -v /mydata:/mydata surrealdb/surrealdb:latest start --log trace --user root --pass root file:/mydata/mydatabase.db -``` - -After running the above command, you should see the SurrealDB server startup successfully. - -```bash -docker run --rm --pull always -p 80:8000 -v /local-dir:/container-dir surrealdb/surrealdb:latest start --auth --user root --pass root file:/container-dir/mydatabase.db - -2023-08-30T15:06:34.788739Z INFO surreal::dbs: ✅🔒 Authentication is enabled 🔒✅ -2023-08-30T15:06:34.788821Z INFO surrealdb::kvs::ds: Starting kvs store in file:/container-dir/mydatabase.db -2023-08-30T15:06:34.788859Z INFO surrealdb::kvs::ds: Started kvs store in file:/container-dir/mydatabase.db -2023-08-30T15:06:34.789222Z INFO surrealdb::kvs::ds: Initial credentials were provided and no existing root-level users were found: create the initial user 'root'. -2023-08-30T15:06:35.205123Z INFO surrealdb::node: Started node agent -2023-08-30T15:06:35.205827Z INFO surrealdb::net: Started web server on 0.0.0.0:8080 -``` - -For details on the [`start`](/docs/surrealdb/cli/start) command, and all of the available configuration options and arguments, view the [`start command documentation`](/docs/surrealdb/cli/start). - -## Using the command-line tools within Docker -The Docker container contains both the server, and the command line tools for importing, exporting, and querying a remote SurrealDB server. - -```bash -docker run --rm --pull always surrealdb/surrealdb:latest help -``` - -The result should look similar to the output below, confirming that the SurrealDB command-line tool was installed successfully. - -```bash -.d8888b. 888 8888888b. 888888b. -d88P Y88b 888 888 'Y88b 888 '88b -Y88b. 888 888 888 888 .88P - 'Y888b. 888 888 888d888 888d888 .d88b. 8888b. 888 888 888 8888888K. - 'Y88b. 888 888 888P' 888P' d8P Y8b '88b 888 888 888 888 'Y88b - '888 888 888 888 888 88888888 .d888888 888 888 888 888 888 -Y88b d88P Y88b 888 888 888 Y8b. 888 888 888 888 .d88P 888 d88P - 'Y8888P' 'Y88888 888 888 'Y8888 'Y888888 888 8888888P' 8888888P' - - -SurrealDB command-line interface and server - -To get started using SurrealDB, and for guides on connecting to and building applications -on top of SurrealDB, check out the SurrealDB documentation (https://surrealdb.com/docs). - -If you have questions or ideas, join the SurrealDB community (https://surrealdb.com/community). - -If you find a bug, submit an issue on Github (https://github.com/surrealdb/surrealdb/issues). - -We would love it if you could star the repository (https://github.com/surrealdb/surrealdb). - ----------- - -USAGE: - surreal [SUBCOMMAND] - -OPTIONS: - -h, --help Print help information - -SUBCOMMANDS: - start Start the database server - import Import a SQL script into an existing database - export Export an existing database into a SQL script - version Output the command-line tool version information - sql Start an SQL REPL in your terminal with pipe support - help Print this message or the help of the given subcommand(s) - -``` - -For details on the different commands available, visit the [CLI tool documentation](/docs/surrealdb/cli/overview). \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/installation/running/file.mdx b/versioned_docs/version-1.0.x/installation/running/file.mdx deleted file mode 100644 index 3ecc261e3..000000000 --- a/versioned_docs/version-1.0.x/installation/running/file.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Run a disk based server - -# Run a single-node, on-disk server - -For the purposes of getting started with SurrealDB quickly, we will start a RocksDB database which persists data on the filesystem. This configuration is great for trying out the database and small deployments. - -```bash -surreal start file:mydatabase.db -``` - -The default logging level for the database server is `info`, resulting in any informational logs to be output to the standard output. To control the logging verbosity, specify the *`--log`* argument. The following command starts the database with `trace` level logging, resulting in most logs being output to the terminal. - -```bash -surreal start --log trace file:mydatabase.db -``` - -In order to keep SurrealDB secure, configure your initial root-level user by setting the *`--user`* and *`--pass`* command-line arguments. The following command starts the database with a top-level user named root with a password also set to `root`. The root user will be persisted in storage, which means you don't have to include the command line arguments next time you start SurrealDB. - -```bash -surreal start --log trace --user root --pass root file:mydatabase.db -``` - -In order to change the default port that SurrealDB uses for web connections and from database clients you can use the *`--bind`* argument. The following command starts the database on port `8080`. - -```bash -surreal start --log trace --user root --pass root --bind 0.0.0.0:8080 file://path/to/mydatabase -``` -After running the above command, you should see the SurrealDB server startup successfully. - -```bash -surreal start --user root --pass root --bind 0.0.0.0:8080 file:mydatabase.db -2023-08-30T15:06:34.788739Z INFO surreal::dbs: ✅🔒 Authentication is enabled 🔒✅ -2023-08-30T15:06:34.788821Z INFO surrealdb::kvs::ds: Starting kvs store in file:mydatabase.db -2023-08-30T15:06:34.788859Z INFO surrealdb::kvs::ds: Started kvs store in file:mydatabase.db -2023-08-30T15:06:34.789222Z INFO surrealdb::kvs::ds: Initial credentials were provided and no existing root-level users were found: create the initial user 'root'. -2023-08-30T15:06:35.205123Z INFO surrealdb::node: Started node agent -2023-08-30T15:06:35.205827Z INFO surrealdb::net: Started web server on 0.0.0.0:8080 -``` - -For details on the different commands available, visit the [CLI tool documentation](/docs/surrealdb/cli/overview). - diff --git a/versioned_docs/version-1.0.x/installation/upgrading/_category_.json b/versioned_docs/version-1.0.x/installation/upgrading/_category_.json deleted file mode 100644 index efeceb2f5..000000000 --- a/versioned_docs/version-1.0.x/installation/upgrading/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Upgrading", - "position": 6 -} diff --git a/versioned_docs/version-1.0.x/installation/upgrading/beta8-to-beta9.mdx b/versioned_docs/version-1.0.x/installation/upgrading/beta8-to-beta9.mdx deleted file mode 100644 index 656b5e4f0..000000000 --- a/versioned_docs/version-1.0.x/installation/upgrading/beta8-to-beta9.mdx +++ /dev/null @@ -1,88 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Upgrading from v1.0.0-beta.8 to v1.0.0-beta.9 - -# Upgrading from v1.0.0-beta.8 to v1.0.0-beta.9 - -Because of a change in the underlying way that SurrealDB stores data in this update, and issues with exporting specific data from 1.0.0-beta.8, there are extra steps required to migrate to 1.0.0-beta.9 - -## Issues - -- A change in the underlying way data is stored in SurrealDB was caused by [this commit](https://github.com/surrealdb/surrealdb/commit/f5b21eb3633fdbbaa64b6247fdfeb606afbd35d1). Data will need to be exported as SQL and imported into 1.0.0-beta.9. - -- In 1.0.0-beta.8, the " character was not yet properly escaped. This was fixed somewhere during the development for 1.0.0-beta.9. - -- The `\` character is often used as an escape character, but in an export this is not always properly escaped.[This was only recently discovered and is not yet fixed.](https://github.com/surrealdb/surrealdb/issues/1800) - -### Do I have this issue? - -An error, similar to the following, will be thrown when connecting to the database or when selecting specific data, if you are experiencing this issue. - -```bash -Error: - thread 'tokio-runtime-worker' panicked at 'called Result::unwrap() on an Err value: Syntax("invalid type: string "Float", expected a boolean")', lib/src/sql/statements/define.rs:1009:72 - note: run with RUST_BACKTRACE=1 environment variable to display a backtrace - Aborted (core dumped) -``` - -Because of the above, upgrading the 1.0.0-beta.9 requires some extra steps. We've listed them down below and we advice to follow this migration guide both if you do or do not encounter this issue! - -If you use docker, there is a guide by the community that describes a rough example on how to approach this upgrade. [You can find it here!](https://gist.github.com/kearfy/adb0baa6476bdda744cb71605d0fc997) - -### 1. Download the special 1.0.0-beta.8 release - -We did a special 1.0.0-beta.8 release that ensures that all " characters are escaped when exporting. - -- [Download the appropiate binary for your system from the github release.](https://github.com/surrealdb/surrealdb/releases/tag/v1.0.0-beta.8) -- In the case of linux and macos, extract the binary from the .tgz archive. -- To use this binary instead of the installed version of surrealdb, enter the direct path to it. - - `./surreal ...` - - `/path/to/binary/surreal ...` - - `.\surreal.exe ...` - - `C:\path\to\binary\surreal.exe ...` - -### 2. Start the SurrealDB instance with the temporary 1.0.0-beta.8 binary - -You can start the instance with the same arguments as you normally would, only replace the path to the binary. - -```bash -/path/to/binary/surreal start -u root -p root myolddataset.db -``` - -### 3. Export the data - -[Please follow the export docs to run the export.](/docs/surrealdb/cli/export) Make sure to use the temporarily downloaded binary here. - -```bash -/path/to/binary/surreal export --conn http://localhost:8000 --ns ns --db db --user root --pass root mydata.surql -``` - -### 4. Stop the SurrealDB instance - -Stop the 1.0.0-beta.8 database server, before continuing on to the next step. - -### 5. Install SurrealDB 1.0.0-beta.9 - -Install 1.0.0-beta.9 database server, using the official docs before continuing on to the next step. - -### 6. Start the 1.0.0-beta.9 SurrealDB instance - -Start the new 1.0.0-beta.9 database server, before importing your data. - -```bash -surreal start -u root -p root mynewdataset.db -``` - -### 7. Import the data - -[Please follow the export docs to run the export.](/docs/surrealdb/cli/export) Make sure to install 1.0.0-beta.9 on your systems first. - -```bash -surreal import --conn http://localhost:8000 --ns ns --db db --user root --pass root mydata.surql -``` - -### 8. Check for SurrealQL changes in the release notes - -There have been major improvements to the SurrealQL language, and also some potential breaking changes for how you have previously defined your schemas. Check out the changes on the [release page](https://surrealdb.com/releases) for 1.0.0-beta.9. \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/installation/upgrading/beta9-to-beta10.mdx b/versioned_docs/version-1.0.x/installation/upgrading/beta9-to-beta10.mdx deleted file mode 100644 index bd8e3acb3..000000000 --- a/versioned_docs/version-1.0.x/installation/upgrading/beta9-to-beta10.mdx +++ /dev/null @@ -1,100 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Upgrading from v1.0.0-beta.9 to v1.0.0-beta.10 - -# Upgrading from v1.0.0-beta.9 to v1.0.0-beta.10 - -Because of a change in the underlying way that SurrealDB stores data in this update, there are extra steps required to migrate to `v1.0.0-beta.10`. - -## Introduction -Our latest beta.10 update introduces a set of internal data changes, which can cause panics and other types of unexpected behaviour. Besides that, we also introduced a set of behavioural changes which we will introduce in this upgrade guide. - -## Internal data changes -Because of the introduced internal data changes, we need to export our database(s) with beta-9, then import them back after we have upgraded to beta-10. - -### 1. Start your old SurrealDB instance -You can start the instance just like you normally would. - -```bash -surreal start -u root -p root myolddataset.db -``` - -### 2. Export your data -[Please follow the export docs to run the export](/docs/surrealdb/cli/export). - -```bash -surreal export --conn http://localhost:8000 --ns ns --db db --user root --pass root mydata.surql -``` -### 3. Stop the SurrealDB instance -Stop the `v1.0.0-beta.9` database server, before continuing on to the next step. - -### 4. Install SurrealDB v1.0.0-beta.10 -Install v1.0.0-beta.10 database server, using the official docs before continuing on to the next step. - -### 5. Start the v1.0.0-beta.10 SurrealDB instance -Start the new `v1.0.0-beta.10` database server like you normally start SurrealDB, before importing your data. - -```bash -surreal start -u root -p root mynewdataset.db -``` -### 6. Import your data -Please follow the import docs to run the import. Make sure to install `v1.0.0-beta.10` on your systems first. - -```bash -surreal import --conn http://localhost:8000 --ns ns --db db --user root --pass root mydata.surql -``` - -## Behaviour changes -We have introduces numerous improvements, bug fixes and other type of changes in `v1.0.0-beta.10`. We will go over the most important items here, but for a full list of changes, please refer to our [release page for v1.0.0-beta.10](https://surrealdb.com/releases). - -Capabilities -We have introduced capabilities in `v1.0.0-beta.10`. They allow you to allow or deny certain aspects of SurrealDB. - -In our effort to deliver a security-first and water-tight database, all capabilities are disabled by default. This means that by default, you are not able to use any methods, embedded scripting functions, make outbound network calls, or access the database anonymously. - -You can easily enable all these capabilties again with the `--allow-all` flag, or choose which capabilities to enable yourself. -This is further documented in the [Capabilities](/docs/surrealdb/security/capabilities) documentation. - -## Revamped root users -It is now possible to define multiple root users in SurrealDB. This change did require some changes in the way that you start your database however. - -With this change, you will now only initially have to provide the `--user` and `--pass` flags to create the initial root user, but once the first root user exists, they will no longer by utilized. - -For more information, check out the [Authentication guide](/docs/surrealdb/security/authentication), and the [`surreal start`](/docs/surrealdb/cli/start) and [DEFINE USER](/docs/surrealdb/surrealql/statements/define/user) documentation. - -```bash title="Command" -# When you initially start the database, you can create the first root user. -surreal start --auth --user root --pass root file:database.db - -# In the future, you don't need to specify the --user and --pass flags anymore -surreal start --auth file:database.db -# Afterwards, you are able to create multiple root users. -DEFINE USER tobie ON ROOT PASSWORD "SecurePassword!" ROLES OWNER; -DEFINE USER jaime ON ROOT PASSWORD "SecurePassword!" ROLES EDITOR; -DEFINE USER john ON ROOT PASSWORD "SecurePassword!" ROLES VIEWER; -``` - -## Stricter typing -Previously, when you defined a field of a certain type, you manually had to `ASSERT` that the value stored in that field, was not `NONE` or `NULL`. - -We majorly improved the typing safety and strictness in `v1.0.0-beta.10` which allows you to overcome this issue. - -```surql -# This field is required, as indicated by it's type. -DEFINE FIELD age ON person TYPE number; - -# This field can now optionally store the age. -# This means that the value can be either a number or NONE. -DEFINE FIELD age ON person TYPE option; - -# Notice how the previous example does not allow for NULL. -# This is because NULL is consider to be a value, but the option type allows either an empty field (NONE), or the passed type. -# If you want to allow NULL, we also introduced union types in v1.0.0-beta.10! -DEFINE FIELD age ON person TYPE number | null; -- number and NULL -DEFINE FIELD age ON person TYPE option; -- number, NULL and NONE -``` - -## Learn more -These are some highlights of behavioural changes. For a complete list, please refer to our [release page](https://surrealdb.com/releases) for `v1.0.0-beta.10`. \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/installation/windows.mdx b/versioned_docs/version-1.0.x/installation/windows.mdx deleted file mode 100644 index 55f5610f1..000000000 --- a/versioned_docs/version-1.0.x/installation/windows.mdx +++ /dev/null @@ -1,102 +0,0 @@ ---- -sidebar_position: 4 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; -import Version from '../../../src/components/Version'; - -# Install on Windows - - - -# Install on Windows - -Use this tutorial to install SurrealDB on Windows operating systems using the SurrealDB [install script](https://github.com/surrealdb/install.surrealdb.com) or third-party package managers like [Scoop](https://scoop.sh/). Both the SurrealDB Database Server and the SurrealDB Command Line Tool are packaged and distributed as a single executable file, which is easy to install, and easy to uninstall. - -## Installing SurrealDB using the install script - -To get started, you can use the SurrealDB [install script](https://github.com/surrealdb/install.surrealdb.com). This script securely downloads the latest version for the platform and CPU type. It installs SurrealDB into the `C:\Program Files\SurrealDB` folder, falling back to a user-specified folder if necessary. - -```bash -iwr https://windows.surrealdb.com -useb | iex -``` - -### Updating SurrealDB -To ensure that you are using the latest version, update SurrealDB to version using the following command. - -```bash -iwr https://windows.surrealdb.com -useb | iex -``` - -### Checking SurrealDB -Once installed, you can run the SurrealDB command-line tool by using the `surreal` command. To check whether the installation was successful run the following command in your terminal. - -```bash -surreal help -``` - -The result should look similar to the output below, confirming that the SurrealDB command-line tool was installed successfully. - -```bash -.d8888b. 888 8888888b. 888888b. -d88P Y88b 888 888 'Y88b 888 '88b -Y88b. 888 888 888 888 .88P - 'Y888b. 888 888 888d888 888d888 .d88b. 8888b. 888 888 888 8888888K. - 'Y88b. 888 888 888P' 888P' d8P Y8b '88b 888 888 888 888 'Y88b - '888 888 888 888 888 88888888 .d888888 888 888 888 888 888 -Y88b d88P Y88b 888 888 888 Y8b. 888 888 888 888 .d88P 888 d88P - 'Y8888P' 'Y88888 888 888 'Y8888 'Y888888 888 8888888P' 8888888P' - - -SurrealDB command-line interface and server - -To get started using SurrealDB, and for guides on connecting to and building applications -on top of SurrealDB, check out the SurrealDB documentation (https://surrealdb.com/docs). - -If you have questions or ideas, join the SurrealDB community (https://surrealdb.com/community). - -If you find a bug, submit an issue on Github (https://github.com/surrealdb/surrealdb/issues). - -We would love it if you could star the repository (https://github.com/surrealdb/surrealdb). - ----------- - -USAGE: - surreal [SUBCOMMAND] - -OPTIONS: - -h, --help Print help information - -SUBCOMMANDS: - start Start the database server - import Import a SQL script into an existing database - export Export an existing database into a SQL script - version Output the command-line tool version information - sql Start an SQL REPL in your terminal with pipe support - help Print this message or the help of the given subcommand(s) - -``` - -## Installing SurrealDB using Scoop -If you use the [Scoop](https://scoop.sh/) package manager, then you can quickly install SurrealDB with one command. This will install both the command-line tools, and the SurrealDB server as a single executable. - -```bash -scoop install surrealdb -``` - -### Updating SurrealDB - -To ensure that you are using the latest version, update SurrealDB to version using the following command. - -```bash -scoop update surrealdb -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/integration/_category_.json b/versioned_docs/version-1.0.x/integration/_category_.json deleted file mode 100644 index 4d616eea9..000000000 --- a/versioned_docs/version-1.0.x/integration/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Integration", - "position": 9 -} \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/integration/http.mdx b/versioned_docs/version-1.0.x/integration/http.mdx deleted file mode 100644 index 6a821589d..000000000 --- a/versioned_docs/version-1.0.x/integration/http.mdx +++ /dev/null @@ -1,1291 +0,0 @@ ---- -sidebar_position: 3 ---- - -# HTTP & Rest - -# HTTP & Rest - -
- -The HTTP endpoints enable simple selection and modifications of all records or a single record in a table, in addition to support for custom SurrealQL queries with multiple statements, using traditional RESTful HTTP url endpoints. - -## Accessing Endpoints via Postman - -You can access these endpoints via Postman. To do so, follow these steps: - -1. Open Postman -2. Clone the [SurrealDB Postman Collection](https://postman.com/surrealdb/workspace/surrealdb/collection/19100500-3da237f3-588b-4252-8882-6d487c11116a) -3. Select the appropriate HTTP method (GET, POST, etc.). -4. Enter the endpoint URL. -5. If the endpoint requires any parameters or a body, make sure to include those in your request. - -:::note -**Note:** Ensure that your URL is set correctly, if running locally, the URL should be `http://localhost:8000`.By default, the URL is set to local. Start your server using the Start command in the [CLI](/docs/surrealdb/1.0.x/cli/start), before querying the endpoints. -::: - -You can use the HTTP endpoints to perform the following actions: - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
- - GET /status - - Checks whether the database web server is running
- - GET /health - - Checks the status of the database server and storage engine
- - GET /version - - Returns the version of the SurrealDB database server
- - POST /import - - Imports data into a specific Namespace and Database
- - GET /export - - Exports all data for a specific Namespace and Database
- - POST /signup - - Signs-up as a scope user to a specific scope
- - POST /signin - - Signs-in as a root, namespace, database, or scope user
- - GET /key/:table - - Selects all records in a table from the database
- - POST /key/:table - - Creates a records in a table in the database
- - PUT /key/:table - - Updates all records in a table in the database
- - PATCH /key/:table - - Modifies all records in a table in the database
- - DELETE /key/:table - - Deletes all records in a table from the database
- - GET /key/:table/:id - - Selects the specific record from the database
- - POST /key/:table/:id - - Creates the specific record in the database
- - PUT /key/:table/:id - - Updates the specified record in the database
- - PATCH /key/:table/:id - - Modifies the specified record in the database
- - DELETE /key/:table/:id - - Deletes the specified record from the database
- - POST /sql - - Allows custom SurrealQL queries
- - POST /ml/import - - Import a SurrealML model into a specific Namespace and Database
- - GET /ml/export/:name/:version - - Export a SurrealML model from a specific Namespace and Database
- -
- -## `GET /status` {#status} - -This HTTP RESTful endpoint checks whether the database web server is running, returning a 200 status code. - -
- -## `GET /health` {#health} - -This HTTP RESTful endpoint checks whether the database server and storage engine are running. - -The endpoint returns a `200` status code on success and a `500` status code on failure. - -
- -## `GET /version` {#version} - -This HTTP RESTful endpoint returns the version of the SurrealDB database server. - -
- -## `POST /import` {#import} - -This HTTP RESTful endpoint imports a set of SurrealQL queries into a specific Namespace and Database. - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, or database authentication data
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Example usage - -```bash title="Request" -curl -X POST -u "root:root" -H "NS: mynamespace" -H "DB: mydatabase" -H "Accept: application/json" -d path/to/file.surql http://localhost:8000/import -``` - -
- -## `GET /export` {#export} - -This HTTP RESTful endpoint exports all data for a specific Namespace and Database. - -### Headers - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, or database authentication data
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Example usage - -```bash title="Request" -curl -X GET -u "root:root" -H "NS: mynamespace" -H "DB: mydatabase" -H "Accept: application/json" -o path/to/file.surql http://localhost:8000/export -``` - -
- -## `POST /signin` {#signin} - -```json title="Method and URL" -POST /signin -``` - -This HTTP RESTful endpoint is used to access an existing account inside the SurrealDB database server. - -The following headers can be used to customise the query and the response. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED FOR DB & SC - The namespace to sign in to
- DB - REQUIRED FOR SC - The database to sign in to
- SC - Specifies the scope
- user - REQUIRED FOR ROOT, NS & DB - The username of the database user
- pass - REQUIRED FOR ROOT, NS & DB - The password of the database user
- -### Example with Scope user - -```bash title="Request" -curl -X POST -H "Accept: application/json" -d '{"ns":"test","db":"test","sc":"user_scope","user":"john.doe","pass":"123456"}' http://localhost:8000/signin -``` - -```json title="Response" -{ - "code": 200, - "details": "Authentication succeeded", - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" -} -``` - -### Example with Namespace user - -```bash title="Request" -curl -X POST -H "Accept: application/json" -d '{"ns":"test","user":"john.doe","pass":"123456"}' http://localhost:8000/signin -``` - -```json title="Response" -{ - "code": 200, - "details": "Authentication succeeded", - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" -} -``` - -### Example with Root user - -```bash title="Request" -curl -X POST -H "Accept: application/json" -d '{"user":"john.doe","pass":"123456"}' http://localhost:8000/signin -``` - -```json title="Response" -{ - "code": 200, - "details": "Authentication succeeded", - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" -} -``` - -### Example usage via Postman - -After you have defined the users permissions, you can use the `POST /signin` endpoint to sign in as a user. - -Using the [user credentials](/docs/surrealdb/1.0.x/security/authentication#scope-users) created add the following to the request body: - -```json -{ - "ns": "test", - "db": "test", - "sc": "account", - "email": "", - "pass": "123456" -} -``` - -:::note - - Note: The `sc` parameter is only required if you are signing in as a scope -user, otherwise you can omit it for namespace and root users. ::: - -
- -## `POST /signup` {#signup} - -This HTTP RESTful endpoint is used to create an account inside the SurrealDB database server. - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Accept - REQUIRED - Sets the desired content-type of the response
- namespace - REQUIRED FOR DB & SC - The namespace to sign up to
- database - REQUIRED FOR SC - The database to sign up to
- scope - REQUIRED FOR SC - - The scope to sign up to. Also pass any variables used in the scope -
- -### Example usage - -```bash title="Request" -curl -X POST -H "Accept: application/json" -d '{"ns":"test","db":"test","sc":"user_scope","user":"john.doe","pass":"123456"}' http://localhost:8000/signup -``` - -```json title="Response" -{ - "code": 200, - "details": "Authentication succeeded", - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" -} -``` - -### Example usage via Postman - -Before you sigup a new [Scope user](/docs/surrealdb/1.0.x/security/authentication#scope-users), you must first [define a scope](/docs/surrealdb/1.0.x/surrealql/statements/define/scope) for the user. To do so, follow these steps: - -:::note -You can also define [System users](/docs/surrealdb/1.0.x/security/authentication#system-users) and [Define User](/docs/surrealdb/1.0.x/surrealql/statements/define/user) credentials using the [`POST /sql`](/docs/surrealdb/1.0.x/integration/http#sql) endpoint. -::: - -1. Navigate to the `POST /sql` endpoint in Postman. -2. Enter the following query in the body of the request: - -```surql --- Enable scope authentication directly in SurrealDB -DEFINE SCOPE account SESSION 24h - SIGNUP ( CREATE user SET email = $email, pass = crypto::argon2::generate($pass) ) - SIGNIN ( SELECT * FROM user WHERE email = $email AND crypto::argon2::compare(pass, $pass) ) -; -``` - -The above query defines a scope called `account` that allows users to sign up and sign in. The scope also defines the `SESSION` duration to be 24 hours. - -3. Click `Send` to send the request to the SurrealDB database server. -4. Navigate to the `POST /signup` endpoint in Postman. -5. Enter the following query in the body of the request: - -```json -{ - "ns": "test", - "db": "test", - "sc": "account", - "email": "", - "pass": "123456" -} -``` - -6. In the header of the request, set the following key-value pairs: - - `Accept: application/json` - - namespace: `test` - - database: `test` - - scope: `account` -7. Click `Send` to send the request to the SurrealDB database server. You will get back a - -```json -{ - "code": 200, - "details": "Authentication succeeded", - "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE3MDY2MTA4MDMsIm5iZiI6MTcwNjYxMDgwMywiZXhwIjoxNzA2Njk3MjAzLCJpc3MiOiJTdXJyZWFsREIiLCJOUyI6InRlc3QiLCJEQiI6InRlc3QiLCJTQyI6Imh1bWFuIiwiSUQiOiJ1c2VyOjZsOTl1OWI0bzVoa3h0NnY3c3NzIn0.oYnsMpFWyY5y2BVszDRkS_D0-KlAs5ixZN_iy9_SkR6YpY8aXQg_fXW3RdRGNAFtjFn0SDVxb7p7BtjsG_65CA" -} -``` - -
- -## `GET /key/:table` {#get-table} - -This HTTP RESTful endpoint selects all records in a specific table in the database. - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, database, or scope authentication data
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Translated query - -```surql -SELECT * FROM type::table($table); -``` - -
- -## `POST /key/:table` {#post-table} - -This HTTP RESTful endpoint creates a record in a specific table in the database. - -:::note -This HTTP endpoint expects the HTTP body to be a JSON or SurrealQL `object`. -::: - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, database, or scope authentication data
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### translated query - -```surql -CREATE type::table($table) CONTENT $body; -``` - -
- -## `PUT /key/:table` {#put-table} - -This HTTP RESTful endpoint updates all records in a specific table in the database. - -:::note -This HTTP endpoint expects the HTTP body to be a JSON or SurrealQL object. -::: - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, database, or scope authentication data
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Translated query - -```surql -UPDATE type::table($table) CONTENT $body; -``` - -
- -## `PATCH /key/:table` {#patch-table} - -This HTTP RESTful endpoint modifies all records in a specific table in the database. - -:::note -This HTTP endpoint expects the HTTP body to be a JSON or SurrealQL object. -::: - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, database, or scope authentication data
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Translated query - -```surql -UPDATE type::table($table) MERGE $body; -``` - -
- -## `DELETE /key/:table` {#delete-table} - -This HTTP RESTful endpoint deletes all records from the specified table in the database. - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, database, or scope authentication data
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Translated query - -```surql -DELETE FROM type::table($table); -``` - -
- -## `GET /key/:table/:id` {#get-record} - -This HTTP RESTful endpoint selects a specific record from the database. - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, database, or scope authentication data
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Translated query - -```surql -SELECT * FROM type::thing($table, $id); -``` - -
- -## `POST /key/:table/:id` {#post-record} - -This HTTP RESTful endpoint creates a specific record in a table in the database. - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, database, or scope authentication data
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Translated query - -```surql -CREATE type::thing($table, $id) CONTENT $body; -``` - -
- -## `PUT /key/:table/:id` {#put-record} - -This HTTP RESTful endpoint updates a specific record in a table in the database. - -:::note -This HTTP endpoint expects the HTTP body to be a JSON or SurrealQL object. -::: - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, database, or scope authentication data
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Translated query - -```surql -UPDATE type::thing($table, $id) CONTENT $body; -``` - -
- -## `PATCH /key/:table/:id` {#patch-record} - -This HTTP RESTful endpoint modifies a specific record in a table in the database. - -:::note -This HTTP endpoint expects the HTTP body to be a JSON or SurrealQL object. -::: - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, database, or scope authentication data
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Translated query - -```surql -UPDATE type::thing($table, $id) MERGE $body; -``` - -
- -## `DELETE /key/:table/:id` {#delete-record} - -This HTTP RESTful endpoint deletes a single specific record from the database. - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, database, or scope authentication data
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Translated query - -```surql -DELETE FROM type::thing($table, $id); -``` - -
- -## `POST /sql` {#sql} - -The SQL endpoint enables use of SurrealQL queries. - -:::note - - Note: This HTTP endpoint expects the HTTP body to be a set of SurrealQL -statements. ::: - -### Headers - - - - - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, database, or scope authentication data
- Accept - REQUIRED - Sets the desired content-type of the response
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Example usage - -```bash title="Request" -curl -X POST -u "root:root" -H "NS: mynamespace" -H "DB: mydatabase" -H "Accept: application/json" -d "SELECT * FROM person WHERE age > 18" http://localhost:8000/sql -``` - -```json title="Response" -[ - { - "time": "14.357166ms", - "status": "OK", - "result": [ - { - "age": "23", - "id": "person:6r7wif0uufrp22h0jr0o" - "name": "Simon", - }, - { - "age": "28", - "id": "person:6r7wif0uufrp22h0jr0o" - "name": "Marcus", - }, - ] - } -] -``` - -
- -## `POST /ml/import` {#ml-import} - -This HTTP RESTful endpoint imports a SurrealML machine learning model into a specific Namespace and Database. It expects the file to be a SurrealML file packaged in the `.surml` file format. As machine learning files can be large, the endpoint expects a chunked HTTP request. - -### Headers - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, database, or scope authentication data
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Example usage - -```bash title="Request" -curl -X POST -u "root:root" -H "NS: mynamespace" -H "DB: mydatabase" -H "Accept: application/json" -d path/to/file.surml http://localhost:8000/ml/import -``` - -### Usage in Python - -When using Python, the [surreaml](https://github.com/surrealdb/surrealml) package can be used to upload the model with the following code: - -```python -from surrealml import SurMlFile - -url = "http://0.0.0.0:8000/ml/import" -SurMlFile.upload("./linear_test.surml", url, 5) -``` - -
- -## `GET /ml/export/:name/:version` {#ml-export} - -This HTTP RESTful endpoint exports a SurrealML machine learning model from a specific Namespace and Database. The output file with be a SurrealML file packaged in the `.surml` file format. As machine learning files can be large, the endpoint outputs a chunked HTTP response. - -### Headers - - - - - - - - - - - - - - - - - - - - - - -
HeaderDescription
- Authorization - OPTIONAL - Sets the root, namespace, or database authentication data
- NS - REQUIRED - Sets the selected Namespace for queries
- DB - REQUIRED - Sets the selected Database for queries
- -### Example usage - -```bash title="Request" -curl -X GET -u "root:root" -H "NS: mynamespace" -H "DB: mydatabase" -H "Accept: application/json" -o path/to/file.surml http://localhost:8000/ml/export/prediction/1.0.0 -``` diff --git a/versioned_docs/version-1.0.x/integration/sdks/_category_.json b/versioned_docs/version-1.0.x/integration/sdks/_category_.json deleted file mode 100644 index 684b1eb20..000000000 --- a/versioned_docs/version-1.0.x/integration/sdks/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "SDKs", - "position": 1 -} \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/integration/sdks/deno.mdx b/versioned_docs/version-1.0.x/integration/sdks/deno.mdx deleted file mode 100644 index 8c357b436..000000000 --- a/versioned_docs/version-1.0.x/integration/sdks/deno.mdx +++ /dev/null @@ -1,1404 +0,0 @@ ---- -sidebar_position: 6 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Deno - - - -# Deno SDK for SurrealDB - -The SurrealDB SDK for Deno enables simple and advanced querying of a remote database from server-side code. All connections to SurrealDB are made over WebSockets, and automatically reconnect when the connection is terminated. - -To contribute to this documentation, edit this file on GitHub. - -To contribute to the SDK code, submit an Issue or Pull Request here. - -
- -### Connect to SurrealDB - -Create a new mod.ts file and add the following code to try out some basic operations using the SurrealDB SDK. - -```ts -import Surreal from "https://deno.land/x/surrealdb/mod.ts"; - -const db = new Surreal(); - -async function main() { - try { - // Connect to the database - await db.connect('http://127.0.0.1:8000/rpc', { - // Set the namespace and database for the connection - namespace: 'test', - database: 'test', - - // Set the authentication details for the connection - auth: { - namespace: 'test', - database: 'test', - scope: 'user', - username: 'info@surrealdb.com', - password: 'my-secret-password', - }, - }); - - // Create a new person with a random id - const created = await db.create('person', { - title: 'Founder & CEO', - name: { - first: 'Tobie', - last: 'Morgan Hitchcock', - }, - marketing: true, - identifier: Math.random().toString(36).substr(2, 10), - }); - - // Update a person record with a specific id - const updated = await db.merge('person:jaime', { - marketing: true, - }); - - // Select all people records - const people = await db.select('person'); - - // Perform a custom advanced query - const groups = await db.query( - 'SELECT marketing, count() FROM type::table($tb) GROUP BY marketing', - { - tb: 'person', - } - ); - } catch (e) { - console.error('ERROR', e); - } -} - -main(); -``` - -Then run your app from the command line with: - -``` -deno run --allow-net=127.0.0.1:8000 mod.ts -``` - -
- -### SDK methods - -The JavaScript SDK comes with a number of built-in functions. - -The JavaScript SDK comes with a number of built-in functions. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
async db.connect(url, options) Connects to a local or remote database endpoint
async db.wait() Waits for the connection to the database to succeed
async db.close() Closes the persistent connection to the database
async db.use(namespace,database)Switch to a specific namespace and database
async db.info<T>()Returns the record of an authenticated scope user
async db.signup(vars)Signs this connection up to a specific authentication scope
async db.signin(vars)Signs this connection in to a specific authentication scope
async db.invalidate()Invalidates the authentication for the current connection
async db.authenticate(token)Assigns a value as a parameter for this connection
async db.let(key,val)Runs a set of SurrealQL statements against the database
async db.unset(key)Removes a parameter for this connection
async db.live<T>(tabel, callback,diff)Initiate a live query
async db.listenLive<T>(queryUuid,callback)Register a callback for a running live query
async db.kill(queryUuid)Kill a running live query
async db.query<T>(sql,vars)Runs a set of SurrealQL statements against the database
async db.select<T>(thing)Selects all records in a table, or a specific record
async db.create<T,U>(thing,data)Creates a record in the database
async db.insert<T,U>(thing,data)Inserts one or multiple records in the database
async db.update<T,U>(thing,data)Updates all records in a table, or a specific record
async db.merge<T,U>(thing,data)Modifies all records in a table, or a specific record
async db.patch<T,U>(thing,data)Applies JSON Patch changes to all records in a table, or a specific record
async db.delete<T,U>(thing,data)Deletes all records, or a specific record
- -
- -## `.connect()` {#connect} - -Connects to a local or remote database endpoint. - -```ts title="Method Syntax" -async db.connect(url, options) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- url - - The url of the database endpoint to connect to. -
- options - - An object with options to initiate the connection to SurrealDB. -
- -### Example usage -```ts -// Connect to a local endpoint -await db.connect('http://127.0.0.1:8000/rpc'); - -// Connect to a remote endpoint -await db.connect('https://cloud.surrealdb.com/rpc'); - -// Specify a namespace and database pair to use -await db.connect('https://cloud.surrealdb.com/rpc', { - namespace: 'surrealdb', - database: 'docs', -}); - -// Authenticate with an existing token -// The .authenticate() function is used under the hood. -await db.connect('https://cloud.surrealdb.com/rpc', { - auth: '.....', -}); - -// Authenticate using a pair of credentials -await db.connect('https://cloud.surrealdb.com/rpc', { - auth: { - username: 'root', - password: 'surrealdb', - }, -}); - -// Use advanced custom logic to prepare the connection to the database -await db.connect('https://cloud.surrealdb.com/rpc', { - prepare: async (db) => { - await db.use({ namespace: 'surrealdb', database: 'docs' }); - - const token = await retrieveToken(); - if (token) await db.authenticate(token); - - // Any queries executed before the .prepare() function finishes will be forced to wait - // Please note that this is also the case for queries executed within the prepare function - // Doing so can cause the connection to stay in a initializing state - }, -}); -``` - -
- -## `.wait()` {#wait} - -Waits for the connection to the database to succeed. - -```ts title="Method Syntax" -async db.wait() -``` - -### Example usage -```ts -await db.wait(); -``` - -
- -## `.close()` {#close} - -Closes the persistent connection to the database. - -```ts title="Method Syntax" -async db.close() -``` - -### Example usage -```ts -await db.close(); -``` - -
- -## `.use()` {#use} - -Switch to a specific namespace and database. If only the ns or db property is specified, the current connection details will be used to fill the other property. - -```ts title="Method Syntax" -db.use({` { namespace, database } `}) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- namespace - INITIALLY REQUIRED - - Switches to a specific namespace. -
- database - INITIALLY REQUIRED - - Switches to a specific database. -
- -### Example usage -```ts -await db.use({ namespace: 'surrealdb', database: 'docs' }); -``` - -
- -## `.info()` {#info} - -This method returns the record of an authenticated scope user. - -```ts title="Method Syntax" -async db.info() -``` - -### Example usage -```ts -const user = await db.info(); -``` - -
- -## `.signup()` {#signup} - -Signs up to a specific authentication scope. - -```ts title="Method Syntax" -async db.signup({`{ namespace, database, scope, [...] }`}) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- namespace - REQUIRED - - The namespace to sign up to -
- database - REQUIRED - - The database to sign up to -
- scope - REQUIRED - - The scope to sign up to. Also pass any variables used in the scope -
- -### Example usage -```ts -const token = await db.signup({ - namespace: 'surrealdb', - database: 'docs', - scope: 'user', - - // Also pass any properties required by the scope definition - email: 'info@surrealdb.com', - pass: '123456', -}); -``` - -
- -## `.signin()` {#signin} - -Signs in to a root, namespace, database or scope user. - -```ts title="Method Syntax" -async db.signin({`{ ... }`}) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertiesDescription
- username - REQUIRED FOR ROOT, NAMESPACE & DATABASE - - The username of the database user -
- password - REQUIRED FOR ROOT, NAMESPACE & DATABASE - - The password of the database user -
- namespace - REQUIRED FOR DATABASE & SCOPE - - The namespace to sign in to -
- database - REQUIRED FOR SCOPE - - The database to sign in to -
- scope - - The scope to sign in to. Also pass any variables used in the scope -
- -### Example usage -```ts -// Authenticate with a root user -const token = await db.signin({ - username: 'root', - password: 'surrealdb', -}); - -// Authenticate with a Namespace user -const token = await db.signin({ - namespace: 'surrealdb', - username: 'tobie', - password: 'surrealdb', -}); - -// Authenticate with a Database user -const token = await db.signin({ - namespace: 'surrealdb', - database: 'docs', - username: 'tobie', - password: 'surrealdb', -}); - -// Authenticate with a Scope user -const token = await db.signin({ - namespace: 'surrealdb', - database: 'docs', - scope: 'user', - - // Also pass any properties required by the scope definition - email: 'info@surrealdb.com', - pass: '123456', -}); -``` - -
- -## `.invalidate()` {#invalidate} - -Invalidates the authentication for the current connection. - -```ts title="Method Syntax" -async db.invalidate() -``` - -### Example usage -```ts -await db.invalidate(); -``` - -
- -## `.authenticate()` {#authenticate} - -Authenticates the current connection with a JWT token. - -```ts title="Method Syntax" -async db.authenticate(token) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- token - REQUIRED - - The JWT authentication token. -
- -### Example usage -```ts -await db.authenticate('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJTdXJyZWFsREIiLCJpYXQiOjE1MTYyMzkwMjIsIm5iZiI6MTUxNjIzOTAyMiwiZXhwIjoxODM2NDM5MDIyLCJOUyI6InRlc3QiLCJEQiI6InRlc3QiLCJTQyI6InVzZXIiLCJJRCI6InVzZXI6dG9iaWUifQ.N22Gp9ze0rdR06McGj1G-h2vu6a6n9IVqUbMFJlOxxA'); -``` - -
- -## `.let()` {#let} - -Assigns a value as a parameter for this connection. - -```ts title="Method Syntax" -async db.let(key, val) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - Specifies the name of the variable. -
- val - REQUIRED - - Assigns the value to the variable name. -
- -### Example Usage -```ts -// Assign the variable on the connection -await db.let('name', { - first: 'Tobie', - last: 'Morgan Hitchcock', -}); - -// Use the variable in a subsequent query -await db.query('CREATE person SET name = $name'); - -// Use the variable in a subsequent query -await db.query('SELECT * FROM person WHERE name.first = $name.first'); -``` - -
- -## `.unset()` {#unset} - -Removes a parameter for this connection. - -```ts title="Method Syntax" -async db.unset(key) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - Specifies the name of the variable. -
- -### Example usage -```ts -// Remove the variable from the connection -await db.unset('name'); -``` - -
- -## `.live()` {#live} - -Initiates a live query. - -```ts title="Method Syntax" -async db.live(table, callback, diff) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- table - REQUIRED - - The table name to listen for changes for -
- callback - OPTIONAL - - A callback function that processes live notifications -
- diff - OPTIONAL - - If set to true, live notifications will include an array of JSON Patch objects, rather than the entire record for each notification. -
- -### Example usage -```ts -// The uuid of the live query will be returned -const queryUuid = await db.live( - "person", - // The callback function takes an object with the 'action' and 'result' properties - ({ action, result }) => { - // action can be: 'CREATE', 'UPDATE', 'DELETE' or 'CLOSE' - if (action === 'CLOSE') return; - - // result contains either the entire record, or a set of JSON patches when diff mode is enabled - processSomeLiveQueryUpdate(result); - } -) -``` - -
- -## `.listenLive()` {#listenLive} - -Registers a callback function for a running live query. - -```ts title="Method Syntax" -async db.listenLive(queryUuid, callback) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- queryUuid - REQUIRED - - The UUID of a running live query -
- callback - REQUIRED - - A callback function that processes live notifications -
- -### Example usage -```ts -await db.listenLive( - queryUuid, - // The callback function takes an object with the "action" and "result" properties - ({ action, result }) => { - // action can be: "CREATE", "UPDATE", "DELETE" or "CLOSE" - if (action === 'CLOSE') return; - - // result contains either the entire record, or a set of JSON patches when diff mode is enabled - processSomeLiveQueryUpdate(result); - } -) -``` - -
- -## `.kill()` {#kill} - -Kills a running live query by it's UUID - -```ts title="Method Syntax" -async db.kill(queryUuid) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- queryUuid - REQUIRED - - The UUID of the live query you wish to kill -
- -### Example usage -```ts -await db.kill(queryUuid) -``` - - -
- -## `.query()` {#query} - -Runs a set of SurrealQL statements against the database. - -```ts title="Method Syntax" -async db.query(query, vars) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- query - REQUIRED - - Specifies the SurrealQL statements. -
- vars - OPTIONAL - - Assigns variables which can be used in the query. -
- -### Example usage -```ts -type Person = { - id: string; - name: string; -}; - -// Assign the variable on the connection -const result = await db.query<[Person[], Person[]]>( - 'CREATE person SET name = "John"; SELECT * FROM type::table($tb);', - { tb: 'person' } -); - -// Get the first result from the first query -const created = result[0].result[0]; - -// Get all of the results from the second query -const people = result[1].result; -``` - - -
- -## `.select()` {#select} - -Selects all records in a table, or a specific record, from the database. - -```ts title="Method Syntax" -async db.select(thing) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or a record ID to select. -
- -### Example usage -```ts -type Person = { - id: string; - name: string; -}; - -// Select all records from a table -const people = await db.select('person'); - -// Select a specific record from a table -const [person] = await db.select('person:h5wxrf2ewk8xjxosxtyc'); -``` - -### Translated query -This function will run the following query in the database. - -```surql -SELECT * FROM $thing; -``` - -
- -## `.create()` {#create} - -Creates a record in the database. - -```ts title="Method Syntax" -async db.create(thing, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or a record ID to create. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```ts -type Person = { - id: string; - name: string; - settings: { - active: boolean; - marketing: boolean; - }; -}; - -// Create a record with a random ID -const [person] = await db.create('person'); - -// Create a record with a specific ID -const [record] = await db.create('person:tobie', { - name: 'Tobie', - settings: { - active: true, - marketing: true, - }, -}); - -// The content you are creating the record with might differ from the return type -const [record] = await db.create< - Person, - Pick ->('person:tobie', { - name: 'Tobie', -}); -``` - -### Translated query -This function will run the following query in the database. - -```surql -CREATE $thing CONTENT $data; -``` - -
- -## `.insert()` {#insert} - -Inserts one or multiple records in the database. - -```ts title="Method Syntax" -async db.insert(thing, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name to insert to. -
- data - OPTIONAL - - Either a single document/record or an array of documents/records to insert -
- -### Example usage -```ts -type Person = { - id: string; - name: string; - settings: { - active: boolean; - marketing: boolean; - }; -}; - -// Insert a single record -const [person] = await db.insert('person', { - name: 'Tobie', - settings: { - active: true, - marketing: true, - }, -}); - -// Insert multiple records -const people = await db.insert('person', [ - { - name: 'Tobie', - settings: { - active: true, - marketing: true, - }, - }, - { - name: 'Jaime', - settings: { - active: true, - marketing: true, - }, - }, -]); - -// The content you are creating the record with might differ from the return type -const people = await db.insert< - Person, - Pick ->('person', [ - { name: 'Tobie' }, - { name: 'Jaime' }, -]); -``` - -### Translated query -This function will run the following query in the database. - -```surql -INSERT INTO $thing $data; -``` - -
- -## `.update()` {#update} - -Updates all records in a table, or a specific record, in the database. - -```ts title="Method Syntax" -async db.update(thing, data) -``` - -:::note -NOTE:This function replaces the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to update. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```ts -type Person = { - id: string; - name: string; - settings: { - active: boolean; - marketing: boolean; - }; -}; - -// Update all records in a table -const people = await db.update('person'); - -// Update a record with a specific ID -const [person] = await db.update('person:tobie', { - name: 'Tobie', - settings: { - active: true, - marketing: true, - }, -}); - -// The content you are updating the record with might differ from the return type -const [record] = await db.update< - Person, - Pick ->('person:tobie', { - name: 'Tobie', -}); -``` - -### Translated query -This function will run the following query in the database. - -```surql -UPDATE $thing CONTENT $data; -``` - -
- -## `.merge()` {#merge} - -Modifies all records in a table, or a specific record, in the database. - -```ts title="Method Syntax" -async db.merge(thing, data) -``` - -:::note -NOTE:This function merges the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to merge. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```ts -type Person = { - id: string; - name: string; - updated_at: Date; - settings: { - active: boolean; - marketing: boolean; - }; -}; - -// Update all records in a table -const people = await db.merge('person', { - updated_at: new Date(), -}); - -// Update a record with a specific ID -const [person] = await db.merge('person:tobie', { - updated_at: new Date(), - settings: { - active: true, - }, -}); - -// The content you are merging the record with might differ from the return type -const [record] = await db.merge< - Person, - Pick ->('person:tobie', { - name: 'Tobie', -}); -``` - -### Translated query -This function will run the following query in the database. - -```surql -UPDATE $thing MERGE $data; -``` - -
- -## `.patch()` {#patch} - -Applies JSON Patch changes to all records, or a specific record, in the database. - -```ts title="Method Syntax" -async db.patch(thing, data) -``` - -:::note -NOTE:This function patches the current document / record data with the specified JSON Patch data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to patch. -
- data - OPTIONAL - - The JSON Patch data with which to patch the records. -
- -### Example usage -```ts -// Update all records in a table -const people = await db.patch('person', [ - { op: 'replace', path: '/created_at', value: new Date() }, -]); - -// Update a record with a specific ID -const [person] = await db.patch('person:tobie', [ - { op: 'replace', path: '/settings/active', value: false }, - { op: 'add', path: '/tags', value: ['developer', 'engineer'] }, - { op: 'remove', path: '/temp' }, -]); -``` - -### Translated query -This function will run the following query in the database. - -```surql -UPDATE $thing PATCH $data; -``` - -
- -## `.delete()` {#delete} - -Deletes all records in a table, or a specific record, from the database. - -```ts title="Method Syntax" -async db.delete(thing) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or a record ID to delete. -
- -### Example usage -```ts -// Delete all records from a table -await db.delete('person'); - -// Delete a specific record from a table -await db.delete('person:h5wxrf2ewk8xjxosxtyc'); -``` - -### Translated query -This function will run the following query in the database. - -```surql -DELETE * FROM $thing; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/integration/sdks/dotnet.mdx b/versioned_docs/version-1.0.x/integration/sdks/dotnet.mdx deleted file mode 100644 index 13785e781..000000000 --- a/versioned_docs/version-1.0.x/integration/sdks/dotnet.mdx +++ /dev/null @@ -1,1977 +0,0 @@ ---- -sidebar_position: 8 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# .NET - - - -# .NET SDK for SurrealDB - -The SurrealDB SDK for .NET enables simple and advanced querying of a remote database from client or server-side code. Remote connections automatically reconnect when the connection is terminated. - -To contribute to this documentation, edit this file on GitHub. - -To contribute to the SDK code, submit an Issue or Pull Request here. - -
- -### Install the SDK - -- Create a new project using your favorite IDE (Visual Studio, JetBrains Rider, etc...) -- or use the dotnet new command. - -Once ready, add the SurrealDB SDK to your dependencies: - -``` -dotnet add package SurrealDb.Net -``` - -
- -### Connect to SurrealDB - -Let's start by creating a new console app. - -```sh -dotnet new console -o SurrealDbExample -cd SurrealDbExample -dotnet add package SurrealDb.Net -``` - -Open Program.cs and replace everything in there with the following code to try out some basic operations using the SurrealDB SDK. - -```csharp -using SurrealDb.Net; -using SurrealDb.Net.Models; -using SurrealDb.Net.Models.Auth; -using System.Text.Json; - -var db = new SurrealDbClient("ws://127.0.0.1:8000/rpc"); - -await db.SignIn(new RootAuth { Username = "root", Password = "root" }); -await db.Use("test", "test"); - -var person = new Person -{ - Title = "Founder & CEO", - Name = new() { FirstName = "Tobie", LastName = "Morgan Hitchcock" }, - Marketing = true -}; -var created = await db.Create("person", person); -Console.WriteLine(ToJsonString(created)); - -var updated = await db.Merge( - new() { Id = ("person", "jaime"), Marketing = true } -); -Console.WriteLine(ToJsonString(updated)); - -var people = await db.Select("person"); -Console.WriteLine(ToJsonString(people)); - -var queryResponse = await db.Query( - "SELECT marketing, count() FROM type::table($table) GROUP BY marketing", - new Dictionary { { "table", "person" } } -); -var groups = queryResponse.GetValue>(0); -Console.WriteLine(ToJsonString(groups)); - -static string ToJsonString(object? o) -{ - return JsonSerializer.Serialize(o, new JsonSerializerOptions { WriteIndented = true, }); -} - -public class Person : Record -{ - public string? Title { get; set; } - public Name? Name { get; set; } - public bool Marketing { get; set; } -} -public class Name -{ - public string? FirstName { get; set; } - public string? LastName { get; set; } -} -public class ResponsibilityMerge : Record -{ - public bool Marketing { get; set; } -} -public class Group -{ - public bool Marketing { get; set; } - public int Count { get; set; } -} -``` - -Then make sure your SurrealDB server is running on 127.0.0.1:8000 and run your app from the command line with: - -```sh -dotnet run -``` - -
- -### SDK methods - -The .NET SDK comes with a number of built-in functions. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
new SurrealDbClient(endpoint)Creates a new client, detecting the right protocol from the endpoint
db.Configure(ns, db, credentials) Configures the client to use a specific namespace and database, with credentials
await db.Connect(url, options) Connects the client to the underlying endpoint, also improving performance to avoid cold starts
await db.Use(ns, db)Switch to a specific namespace and database
await db.Signup(credentials)Signs up a user to a specific authentication scope
await db.Signin(credentials)Signs this connection in to a specific authentication scope
await db.Authenticate(token)Authenticates the current connection with a JWT token
await db.Invalidate()Invalidates the authentication for the current connection
await db.Info<T>()Returns the record of an authenticated scope user
await db.Set(key, value)Assigns a value as a parameter for this connection
await db.Unset(key)Removes a parameter for this connection
await db.Query(sql, params)Runs a set of SurrealQL statements against the database
await db.Select<T>(resource)Selects all records in a table, or a specific record
await db.Create<T>(resource, data)Creates a record in the database
await db.Upsert<T>(data)Creates or updates a specific record
await db.UpdateAll<T>(table, data)Updates all records in a table
await db.Merge<T>(resource, data)Modifies all records in a table, or a specific record
await db.MergeAll<T>(table, data)Modifies all records in a table
await db.Patch<T>(resource, data)Applies JSON Patch changes to a specific record
await db.PatchAll<T>(table, data)Applies JSON Patch changes to all records in a table
await db.Delete(resource, data)Deletes all records, or a specific record
db.ListenLive<T>(queryUuid)Listen for live query responses
await db.LiveQuery<T>(sql, params)Initiate a live query from a SurrealQL statement
await db.LiveTable<T>(table, diff)Initiate a live query from a table
await db.Kill(queryUuid)Kill a running live query
await db.Version()Retrieves the version of the SurrealDB instance
await db.Health()Checks the status of the database server and storage engine
- -
- -## `SurrealDbClient` {#surrealdbclient} - -Creates a new client, detecting the right protocol from the endpoint. - -```csharp title="Method Syntax" -new SurrealDbClient(endpoint) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- endpoint - REQUIRED - - The database endpoint to connect to. -
- httpClientFactory - OPTIONAL - - An IHttpClientFactory instance. -
- -### Example usage -```csharp -// Creates a new client using a local endpoint -var db = new SurrealDbClient("http://127.0.0.1:8000"); - -// Creates a new client using a remote endpoint -var db = new SurrealDbClient("wss://cloud.surrealdb.com"); -``` - -
- -## `.Configure()` {#configure} - -Configures the client to use a specific namespace and database, with credentials. - -```csharp title="Method Syntax" -db.Configure(ns, db, credentials) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- ns - OPTIONAL - - The table namespace to use. -
- db - OPTIONAL - - The table database to use. -
- username - OPTIONAL - - The username with root access. -
- password - OPTIONAL - - The password with root access. -
- token - OPTIONAL - - The value of the JWT token. -
- -### Example usage -```csharp -// Configure a connection to use ns/db -client.Configure("ns", "db"); - -// Configure a connection to use ns/db, as well as root access (with username and password) -client.Configure("ns", "db", "root", "root"); - -// Configure a connection to use ns/db, as well as user auth via JWT token -string token = "eyJhbGciOiJIUzI1..."; -client.Configure("ns", "db", token); -``` - -
- -## `.Connect()` {#connect} - -Connects the client to the underlying endpoint, also improving performance to avoid cold starts. - -```csharp title="Method Syntax" -await db.Connect() -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -await db.Connect(); -``` - -
- -## `.Use()` {#use} - -Switch to a specific namespace and database. - -```csharp title="Method Syntax" -await db.Use(ns, db) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- ns - INITIALLY REQUIRED - - Switches to a specific namespace. -
- db - INITIALLY REQUIRED - - Switches to a specific database. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -await db.Use("test", "test"); -``` - -
- -## `.SignUp()` {#signup} - -Signs up to a specific authentication scope. - -```csharp title="Method Syntax" -await db.SignUp(credentials) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- credentials - REQUIRED - - Credentials to sign up as a scoped user. -
- cancellationToken - REQUIRED - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -```csharp -var authParams = new AuthParams -{ - Namespace = "test", - Database = "test", - Scope = "user", - Email = "info@surrealdb.com", - Password = "123456" -}; - -Jwt jwt = await db.SignUp(authParams); - -public class AuthParams : ScopeAuth -{ - public string? Username { get; set; } - public string? Email { get; set; } - public string? Password { get; set; } -} -``` - -
- -## `.SignIn()` {#signin} - -Signs in to a specific authentication scope. - -```csharp title="Method Syntax" -await db.SignIn(credentials) -``` - - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- credentials - REQUIRED - - Variables used in a signin query. -
- cancellationToken - REQUIRED - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -// Option 1: Sign in as root user -await db.SignIn(new RootAuth { Username = "root", Password = "root" }); - -// Option 2: Sign in using namespace auth -await db.SignIn( - new NamespaceAuth - { - Namespace = "test", - Username = "johndoe", - Password = "password123" - } -); - -// Option 3: Sign in using database auth -await db.SignIn( - new DatabaseAuth - { - Namespace = "test", - Database = "test", - Username = "johndoe", - Password = "password123" - } -); - -// Option 4: Sign in as a scoped used -var authParams = new AuthParams -{ - Namespace = "test", - Database = "test", - Scope = "user", - Email = "info@surrealdb.com", - Password = "123456" -}; - -Jwt jwt = await db.SignIn(authParams); - -public class AuthParams : ScopeAuth -{ - public string? Username { get; set; } - public string? Email { get; set; } - public string? Password { get; set; } -} -``` - - - -## `.Authenticate()` {#authenticate} - -Authenticates the current connection with a JWT token. - -```csharp title="Method Syntax" -await db.Authenticate(jwt) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- jwt - REQUIRED - - The JWT object holder of the authentication token. -
- cancellationToken - REQUIRED - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -// Sign in or sign up as a scoped user -Jwt jwt = await db.SignUp(authParams); - -await db.Authenticate(jwt); -``` - -
- -## `.Invalidate()` {#invalidate} - -Invalidates the authentication for the current connection. - -```csharp title="Method Syntax" -await db.Invalidate() -``` - -### Arguments - - - - - - - - - - - - - -
PropertiesDescription
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -await db.Invalidate(); -``` - -
- -## `.Info()` {#info} - -This method returns the record of an authenticated scope user. - -```csharp title="Method Syntax" -await db.Info() -``` - -### Arguments - - - - - - - - - - - - - -
PropertiesDescription
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -var currentUser = await db.Info(); -``` - -
- -## `.Set()` {#set} - -Assigns a value as a parameter for this connection. - -```csharp title="Method Syntax" -await db.Set(key, val) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - Specifies the name of the variable. -
- value - REQUIRED - - Assigns the value to the variable name. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -// Assign the variable on the connection -await db.Set("name", new Name { FirstName = "Tobie", LastName = "Morgan Hitchcock" }); - -// Use the variable in a subsequent query -await db.Query("CREATE person SET name = $name"); - -// Use the variable in a subsequent query -await db.Query("SELECT * FROM person WHERE name.first_name = $name.first_name"); -``` - -
- -## `.Unset()` {#unset} - -Removes a parameter for this connection. - -```csharp title="Method Syntax" -await db.Unset(key) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - Specifies the SurrealQL statements. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -await db.Unset("name"); -``` - -
- -## `.Query()` {#query} - -Runs a set of SurrealQL statements against the database. - -```csharp title="Method Syntax" -await db.Query(sql, params) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- sql - REQUIRED - - Specifies the SurrealQL statements. -
- params - OPTIONAL - - Assigns variables which can be used in the query. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -// Assign the variable on the connection -var @params = new Dictionary { { "table", "person" } }; -var result = await db.Query("CREATE person; SELECT * FROM type::table($table);", @params); - -// Get the first result from the first query -var created = result.GetValue(0); - -// Get all of the results from the second query -var people = result.GetValue>(1); -``` - -
- -## `.Select()` {#select} - -Selects all records in a table, or a specific record, from the database. - -```csharp title="Method Syntax" -await db.Select(resource) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or a record ID to select. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -// Select all records from a table -var people = await db.Select("person"); - -// Select a specific record from a table -var person = await db.Select(("person", "h5wxrf2ewk8xjxosxtyc");); - -// Select a specific record from a table, given a non-string id -var person = await db.Select(("person", new Guid("8424486b-85b3-4448-ac8d-5d51083391c7"))); -``` - -
- -## `.Create()` {#create} - -Creates a record in the database. - -```csharp title="Method Syntax" -await db.Create(resource, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or the specific record ID to create. -
- data - OPTIONAL - - The document / record data to insert. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -// Create a record with a random ID -var person = await db.Create("person"); - -// Create a record with a random ID & specific fields -var person = await db.Create("person", new Person { Name = "Tobie" }); - -// Create a record with a specific ID -var personToCreate = new Person -{ - Id = ("person", "tobie"), - Name = "Tobie", - Settings = new Settings - { - Active = true, - Marketing = true, - }, -}; -var result = await db.Create(personToCreate); -``` - - -
- -## `.Upsert()` {#upsert} - -Creates or updates a specific record. - -```csharp title="Method Syntax" -await db.Upsert(data) -``` - -:::note -NOTE: This function creates a new document / record or replaces the current one with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- data - REQUIRED - - The document / record data to insert. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -var person = new Person -{ - Id = ("person", "tobie"), // Id is mandatory to apply create or update - Name = "Tobie", - Settings = new Settings - { - Active = true, - Marketing = true, - }, -}; - -// Create a new record when it doesn't exist -var created = await db.Upsert(person); - -// Update an existing record when it does exist -var updated = await db.Upsert(person); -``` - -
- -## `.UpdateAll()` {#update-all} - -Updates all records in a table. - -```csharp title="Method Syntax" -await db.UpdateAll(table, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- table - REQUIRED - - The table name. -
- data - REQUIRED - - The document / record data to update. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -var data = new Person -{ - Name = "Tobie", - Settings = new Settings - { - Active = true, - Marketing = true, - }, -}; - -await db.UpdateAll("person", data); -``` - -
- -## `.Merge()` {#merge} - -Modifies all records in a table, or a specific record. - -```csharp title="Method Syntax" -await db.Merge(resource, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The specific record ID to modify. -
- data - OPTIONAL - - The data with which to modify the records. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -// Only changes the fields specified in the merge object -var merge = new PersonMerge -{ - Id = ("person", "tobie"), - Settings = new Settings - { - Active = true, - Marketing = false, - }, -}; -var result = await db.Merge(merge); - -// Only changes the fields specified in the Dictionary -var data = new Dictionary -{ - { "tags", new List { "developer", "engineer" } } -}; - -var result = await db.Merge(("person", "tobie"), data); -``` - -
- -## `.MergeAll()` {#merge-all} - -Modifies all records in a table. - -```csharp title="Method Syntax" -await db.MergeAll(table, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- table - REQUIRED - - The table name. -
- data - OPTIONAL - - The data with which to modify the records. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -// Only changes the fields specified in the merge object -var merge = new PersonMerge -{ - Settings = new Settings - { - Active = true, - Marketing = false, - }, -}; -var result = await db.MergeAll("person", merge); - -// Only changes the fields specified in the Dictionary -var data = new Dictionary -{ - { "tags", new List { "developer", "engineer" } } -}; - -var result = await db.MergeAll("person", data); -``` - -
- -## `.Patch()` {#patch} - -Applies
JSON Patch changes to a specific record in the database. - -```csharp title="Method Syntax" -await db.Patch(resource, data) -``` - -:::note -NOTE: This function patches document / record data with the specified JSON Patch data. -::: - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The specific record ID to modify. -
- data - OPTIONAL - - The JSON Patch data with which to patch the records. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -var result = await db.Patch(("person", "tobie"), patches); -``` - -
- -## `.PatchAll()` {#patch-all} - -Applies JSON Patch changes to all records in the database. - -```csharp title="Method Syntax" -await db.PatchAll(table, data) -``` - -:::note -NOTE: This function patches document / record data with the specified JSON Patch data. -::: - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- table - REQUIRED - - The table name. -
- data - OPTIONAL - - The JSON Patch data with which to patch the records. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -var result = await db.PatchAll("person", patches); -``` - -
- -## `.Delete()` {#delete} - -Deletes all records in a table, or a specific record, from the database. - -```csharp title="Method Syntax" -await db.Delete(resource) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or a record ID to select. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -// Delete all records from a table -await db.Delete("person"); - -// Delete a specific record from a table -await db.Delete(("person", "h5wxrf2ewk8xjxosxtyc")); -``` - -
- -## `.ListenLive()` {#listen-live} - -Listen responses from an existing live query. - -```csharp title="Method Syntax" -db.ListenLive(queryUuid) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- queryUuid - REQUIRED - - The UUID of the live query to consume. -
- -### Example usage -```csharp -await using var liveQuery = db.ListenLive(queryUuid); - -// Option 1 -// Consume the live query via an IAsyncEnumerable, -// blocking the current thread until the query is killed. -await foreach (var response in liveQuery) -{ - // Either a Create, Update, Delete or Close response... -} - -// ------------------------------ - -// Option 2 -// Consume the live query via an Observable. -liveQuery - .ToObservable() - .Subscribe(() => - { - // Either a Create, Update, Delete or Close response... - }); -``` - -
- -## `.LiveQuery()` {#live-query} - -Initiate a live query from a SurrealQL statement. - -```csharp title="Method Syntax" -await db.LiveQuery(sql, params) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- sql - REQUIRED - - Specifies the SurrealQL statements. -
- params - OPTIONAL - - Assigns variables which can be used in the query. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -await using var liveQuery = await db.LiveQuery("LIVE SELECT * FROM person;"); - -// Consume the live query... -``` - -
- -## `.LiveTable()` {#live-table} - -Initiate a live query from a table. - -```csharp title="Method Syntax" -await db.LiveTable(table, diff) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- table - REQUIRED - - The table name to listen for changes for. -
- diff - OPTIONAL - - If set to true, live notifications will include an array of JSON Patch objects, rather than the entire record for each notification. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -await using var liveQuery = await db.LiveTable("person"); - -// Consume the live query... -``` - -
- -## `.Kill()` {#kill} - -Kills a running live query by it's UUID. - -```csharp title="Method Syntax" -await db.Kill(queryUuid) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- queryUuid - REQUIRED - - The UUID of the live query you wish to kill. -
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -await db.Kill(queryUuid); -``` - -
- -## `.Version()` {#version} - -Retrieves the version of the SurrealDB instance. - -```csharp title="Method Syntax" -await db.Version() -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -string version = await db.Version(); // Will return "surrealdb-1.0.0" -``` - -
- -## `.Health()` {#health} - -Checks the status of the database server and storage engine. - -```csharp title="Method Syntax" -await db.Health() -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- cancellationToken - OPTIONAL - - The cancellationToken enables graceful cancellation of asynchronous operations. -
- -### Example usage -```csharp -bool status = await db.Health(); -``` - -

- -## Dependency Injection - -The .NET SDK also support Dependency Injection to ease the use of the SurrealDbClient in your application. - -Let's start by creating a new ASP.NET Core web app. - -```sh -dotnet new webapp -o SurrealDbWeatherApi -cd SurrealDbWeatherApi -dotnet add package SurrealDb.Net -``` - -Open appsettings.Development.json and replace everything in there with the following code. -We have added a new Connection String called SurrealDB with the default configuration. - -```bash -{ - "AllowedHosts": "*", - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "ConnectionStrings": { - "SurrealDB": "Server=http://127.0.0.1:8000;Namespace=test;Database=test;Username=root;Password=root" - } -} -``` - -Open Program.cs and replace everything in there with the following code. -This code is using the AddSurreal() extension method to inject services automatically. -Notice that all we have to do is one line of code to configure the SurrealDB client with the previously set Connection String. - -:::note -NOTE: By default, this function will register both ISurrealDbClient and SurrealDbClient using the Singleton service lifetime. -::: - -```csharp -var builder = WebApplication.CreateBuilder(args); - -var services = builder.Services; -var configuration = builder.Configuration; - -services.AddControllers(); -services.AddEndpointsApiExplorer(); -services.AddSwaggerGen(); -services.AddSurreal(configuration.GetConnectionString("SurrealDB")); - -var app = builder.Build(); - -if (app.Environment.IsDevelopment()) -{ - app.UseSwagger(); - app.UseSwaggerUI(); -} - -app.UseHttpsRedirection(); -app.UseAuthorization(); - -app.MapControllers(); - -app.Run(); -``` - -Open WeatherForecastController.cs and replace everything in there with the following code. -Finally, we can inject the ISurrealDbClient inside our Controller. - -```csharp -using Microsoft.AspNetCore.Mvc; - -namespace SurrealDbWeatherApi.Controllers; - -[ApiController] -[Route("[controller]")] -public class WeatherForecastController : ControllerBase -{ - private const string Table = "weatherForecast"; - - private readonly ISurrealDbClient _surrealDbClient; - - public WeatherForecastController(ISurrealDbClient surrealDbClient) - { - _surrealDbClient = surrealDbClient; - } - - [HttpGet] - [Route("/")] - public Task> GetAll(CancellationToken cancellationToken) - { - return _surrealDbClient.Select(Table, cancellationToken); - } - - [HttpPost] - [Route("/")] - public Task Create(CreateWeatherForecast data, CancellationToken cancellationToken) - { - var weatherForecast = new WeatherForecast - { - Date = data.Date, - Country = data.Country, - TemperatureC = data.TemperatureC, - Summary = data.Summary - }; - - return _surrealDbClient.Create(Table, weatherForecast, cancellationToken); - } - - // ... - // Other methods omitted for brevity -} - -public class CreateWeatherForecast -{ - public DateTime Date { get; set; } - public string? Country { get; set; } - public int TemperatureC { get; set; } - public string? Summary { get; set; } -} -``` - -Then make sure your SurrealDB server is running on 127.0.0.1:8000 and run your app from the command line with: - -```sh -dotnet run -``` - -## Connection Strings - -Connection Strings are an easy way to configure your application to connect to a SurrealDB instance. -They are stored in the appsettings.json file and can be used to configure the SurrealDbClient. - -In general, it is known as a best practice to: -- set a development Connection String in appsettings.Development.json, -- store your production Connection String in a Secret environment variable, or even better in a Vault. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeysDescriptionAliases
- Endpoint - REQUIRED - - The database endpoint to connect to. - - Server -
- Namespace - OPTIONAL - - Switches to a specific namespace. - - NS -
- Database - OPTIONAL - - Switches to a specific database. - - DB -
- Username - OPTIONAL - - Username used to have root access. - - User -
- Password - OPTIONAL - - Password used to have root access. - - Pass -
- Token - OPTIONAL - - Token (JWT) used to have user access. - - -
- - -Here is a couple of examples of Connection Strings: - -```sh -Server=http://127.0.0.1:8000;Namespace=test;Database=test;Username=root;Password=root -``` - -```sh -Endpoint=http://127.0.0.1:8000;NS=test;DB=test;User=root;Pass=root -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/integration/sdks/golang.mdx b/versioned_docs/version-1.0.x/integration/sdks/golang.mdx deleted file mode 100644 index e9393897e..000000000 --- a/versioned_docs/version-1.0.x/integration/sdks/golang.mdx +++ /dev/null @@ -1,1059 +0,0 @@ ---- -sidebar_position: 5 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Golang - - - -# Golang SDK for SurrealDB - -The SurrealDB SDK for Golang enables to use the SurrealDB database in your Golang applications. - -For more information about the SurrealDB Go SDK API, see the documentation. - -To contribute to this documentation, edit this file on GitHub. - -To contribute to the SDK code, submit an Issue or Pull Request here. - -
- -### Create Module - -First we need to create module if it is not exist - -```sh -go mod init github.com/$username/$projectname -``` - -
- -### Install the SDK - -First, install the SurrealDB SDK using go get: - -```sh -go get github.com/surrealdb/surrealdb.go -``` - -
- -### Connect to SurrealDB - -Create a new main.go file and add the following code to try out some basic operations using the SurrealDB SDK. - -```go -package main - -import ( - "github.com/surrealdb/surrealdb.go" -) - -type User struct { - ID string `json:"id,omitempty"` - Name string `json:"name"` - Surname string `json:"surname"` -} - -func main() { - db, err := surrealdb.New("ws://localhost:8000/rpc") - if err != nil { - panic(err) - } - - if _, err = db.Signin(map[string]interface{}{ - "user": "root", - "pass": "root", - }); err != nil { - panic(err) - } - - if _, err = db.Use("test", "test"); err != nil { - panic(err) - } - - // Create user - user := User{ - Name: "John", - Surname: "Doe", - } - - // Insert user - data, err := db.Create("user", user) - if err != nil { - panic(err) - } - - // Unmarshal data - createdUser := make([]User, 1) - err = surrealdb.Unmarshal(data, &createdUser) - if err != nil { - panic(err) - } - - // Get user by ID - data, err = db.Select(createdUser[0].ID) - if err != nil { - panic(err) - } - - // Unmarshal data - selectedUser := new(User) - err = surrealdb.Unmarshal(data, &selectedUser) - if err != nil { - panic(err) - } - - // Change part/parts of user - changes := map[string]string{"name": "Jane"} - if _, err = db.Change(selectedUser.ID, changes); err != nil { - panic(err) - } - - // Update user - if _, err = db.Update(selectedUser.ID, changes); err != nil { - panic(err) - } - - if _, err = db.Query("SELECT * FROM $record", map[string]interface{}{ - "record": createdUser[0].ID, - }); err != nil { - panic(err) - } - - // Delete user by ID - if _, err = db.Delete(selectedUser.ID); err != nil { - panic(err) - } - -} -``` - -
- -### SDK methods - -The Golang SDK comes with a number of built-in functions. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
surrealdb.New(url, options...)Connects to a remote database endpoint.
db.Close()Closes the persistent connection to the database.
db.Use(namespace, database)Switch to a specific namespace and database.
db.Signup(vars)Switch to a specific namespace and database
db.Signin(vars)Signs in to a specific authentication scope.
db.Invalidate()Invalidates the authentication for the current connection
db.Authenticate(token)Authenticates the current connection with a JWT token
db.Let(key, val)Assigns a value as a parameter for this connection
db.Query(sql, vars)Runs a set of SurrealQL statements against the database
db.Create(thing, data)Creates a record in the database
db.Select(what)Selects all records in a table, or a specific record
db.Update(what, data)Updates all records in a table, or a specific record
db.Change(what, data)Modifies all records in a table, or a specific record
db.Modify(what, data)Applies JSON Patch changes to all records in a table, or a specific record
db.Delete(what)Deletes all records, or a specific record
surrealdb.Unmarshal(data, v)Unmarshal loads a SurrealDB response into a struct. It is perfectly fine to use this function however it requires casting types.
surrealdb.UnmarshalRaw(rawData, v)UnmarshalRaw loads a raw SurrealQL response returned by Query into a struct. This is not the same as a query result. The value of this function will include additional information such as execution time and status - details that tend to be omitted from the SurrealQL query the user would be interested in.
- -
- -## `.New()` {#new} - -Connects to a remote database endpoint. - -```go title="Method Syntax" -surrealdb.New(url, options...)() -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- url - REQUIRED - - The URL of the database endpoint to connect to. Examples may include http://hostname:8000 or ws://hostname:8000/rpc . -
- options - OPTIONAL - - Set SurrealDB clients options such as Timeout etc. -
- -### Example usage -```go -// Connect to a local endpoint -surrealdb.New("ws://localhost:8000/rpc"); -// Connect to a remote endpoint -surrealdb.New("ws://cloud.surrealdb.com/rpc"); -``` - -
- -## `.Close()` {#close} - -Closes the persistent connection to the database. - -```go title="Method Syntax" -db.Close() -``` - -### Example usage -```go -db.Close(); -``` - -
- -## `.Use()` {#use} - -Switch to a specific namespace and database. - -```go title="Method Syntax" -db.Use(namespace, database) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- ns - REQUIRED - - Switches to a specific namespace. -
- db - REQUIRED - - Switches to a specific database. -
- -### Example usage -```go -db.Use("happy-hippo-staging", "my-service") -``` - -
- -## `.Signup()` {#signup} - -Signs up to a specific authentication scope. - -```go title="Method Syntax" -db.Signup(vars) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- vars - REQUIRED - - Variables used in a signup query. -
- -### Example usage -```go -db.Signup(map[string]string{ - "NS": "clear-crocodile-production", - "DB": "web-scraping-application", - "SC": "user", - "email": "info@surrealdb.com", - "pass": "123456", -}) -``` - - -
- -## `.Signin()` {#signin} - -Signs in to a specific authentication scope. - -```go title="Method Syntax" -db.Signin(vars) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- vars - REQUIRED - - Variables used in a signin query. -
- -### Example usage -```go -db.Signin(map[string]string{ - "user": "root", - "pass": "root", -}) -``` - - -
- -## `.Invalidate()` {#invalidate} - -Invalidates the authentication for the current connection. Invalidates close the authenticated connection. - -```go title="Method Syntax" -db.Invalidate() -``` - -### Example usage -```go -db.invalidate(); -``` - -
- -## `.Authenticate()` {#authenticate} - -Authenticates the current connection with a JWT token. - -```go title="Method Syntax" -db.Authenticate(token) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- token - REQUIRED - - The JWT authentication token. -
- -### Example usage -```go -db.Authenticate("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJTdXJyZWFsREIiLCJpYXQiOjE1MTYyMzkwMjIsIm5iZiI6MTUxNjIzOTAyMiwiZXhwIjoxODM2NDM5MDIyLCJOUyI6InRlc3QiLCJEQiI6InRlc3QiLCJTQyI6InVzZXIiLCJJRCI6InVzZXI6dG9iaWUifQ.N22Gp9ze0rdR06McGj1G-h2vu6a6n9IVqUbMFJlOxxA"); -``` - -
- -## `.Let()` {#let} - -Assigns a value as a parameter for this connection. - -```go title="Method Syntax" -db.Let(key, val) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - Specifies the name of the variable. -
- val - REQUIRED - - Assigns the value to the variable name. -
- -### Example usage -```go -// Assign the variable on the connection -db.Let("name", map[string]string{ - "first": "ElecTwix", - "last": "Morgan Hitchcock", -}); -// Use the variable in a subsequent query -db.Query("CREATE person SET name = $name", nil); -// Use the variable in a subsequent query -db.Query("SELECT * FROM person WHERE name.first = $name.first", nil); -``` - -
- -## `.Query()` {#query} - -Runs a set of SurrealQL statements against the database. - -```go title="Method Syntax" -db.Query(sql, vars) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- sql - REQUIRED - - Specifies the SurrealQL statements. -
- vars - OPTIONAL - - Assigns variables which can be used in the query. -
- -### Example usage -```go -// Assign the variable on the connection -result, err := db.Query("CREATE person; SELECT * FROM type::table($tb);", map[string]string{ - "tb": "person" -}); -``` - -
- -## `.Create()` {#create} - -Creates a record in the database. - -```go title="Method Syntax" -db.Create(thing, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to create. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```go -// Create a record with a random ID -db.Create("person", map[string]interface{}{}) - -// Create a record with a specific ID w/ a map -db.Create("person:tobie", map[string]interface{}{ - "name": "Tobie", - "settings": map[string]bool{ - "active": true, - "marketing": true, - }, -}) - -// Create a record with a specific ID w/ a struct -type Person struct { - Name string - Surname string - Settings settings -} - -type settings struct { - Active bool - Marketing bool -} - -data := Person{ - Name: "Hugh", - Settings: settings{ - Active: true, - Marketing: true, - }, -} - -db.Create("person:hugh", data) -``` - -### Translated query -This function will run the following query in the database: - -```surql -CREATE $thing CONTENT $data; -``` - -
- -## `.Select()` {#select} - -Selects all records in a table, or a specific record, from the database. - -```go title="Method Syntax" -db.Select(what) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or a record ID to select. -
- -### Example usage -```go -// Select all records from a table -db.Select("person"); -// Select a specific record from a table -db.Select("person:h5wxrf2ewk8xjxosxtyc"); -``` - -### Translated query -This function will run the following query in the database: - -```surql -SELECT * FROM $thing; -``` - -
- -## `.Update()` {#update} - -Updates all records in a table, or a specific record, in the database. - -```go title="Method Syntax" -db.Update(what, data) -``` - -:::note -NOTE: This function replaces the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to update. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```go -// Update all records in a table -db.Update("person"); -// Update a record with a specific ID -db.Update("person:ElecTwix", map[string]interface{}{ - "name": "ElecTwix", - "settings": map[string]bool{ - "active": true, - "marketing": true, - }, -}); -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $thing CONTENT $data; -``` - -
- -## `.Change()` {#change} - -Modifies all records in a table, or a specific record, in the database. - -```go title="Method Syntax" -db.Change(what, data) -``` - -:::note -NOTE: This function merges the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to change. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```go -// Update all records in a table -db.Change("person", map[string]interface{}{ - "updated_at": time.Now(), -}); -// Update a record with a specific ID -db.Change("person:tobie", map[string]interface{}{ - "updated_at": time.Now(), - "settings": map[string]bool{ - "active": true, - }, -}); -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $thing MERGE $data; -``` - -
- -## `.Modify()` {#modify} - -Applies JSON Patch changes to all records, or a specific record, in the database. - -```go title="Method Syntax" -db.Modify(what, data) -``` - -:::note -NOTE: This function patches the current document / record data with the specified JSON Patch data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to modify. -
- data - OPTIONAL - - The JSON Patch data with which to modify the records. -
- -### Example usage -```go -// Update all records in a table -db.Modify("person", []surrealdb.Patch{op: "replace", path: "/created_at", value: time.Now()}) -// Update a record with a specific ID -db.Modify("person:tobie", []surrealdb.Patch{ - {op: "replace", path: "/settings/active", value: false}, - {op: "add", path: "/tags", value: []string{"developer", "engineer"}}, - {op: "remove", path: "/temp"}, -}) -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $thing PATCH $data; -``` - -
- -## `.Delete()` {#delete} - -Deletes all records in a table, or a specific record, from the database. - -```go title="Method Syntax" -db.Delete(resource) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or a record ID to select. -
- -### Example usage -```go -// Delete all records from a table -db.Delete("person"); -// Delete a specific record from a table -db.delete("person:h5wxrf2ewk8xjxosxtyc"); -``` - -### Translated query -This function will run the following query in the database: - -```surql -DELETE * FROM $thing; -``` - -
- -## `.Unmarshal()` {#unmarshal} - -Unmarshal loads a SurrealDB response into a struct. This function does not use generics. - -```go title="Method Syntax" -surrealdb.Unmarshal(data, target) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- data - REQUIRED - - The response from other queries. -
- target - REQUIRED - - The target struct to unmarshal the data into. -
- -### Example usage -```go -// a simple user struct -type testUser struct { - surrealdb.Basemodel `table:"test"` - Username string `json:"username,omitempty"` - Password string `json:"password,omitempty"` - ID string `json:"id,omitempty"` -} - -// select a user -userData, err := db.Select("person:electwix") - -var user testUser -err = surrealdb.Unmarshal(userData, &user) -``` - - -
- -## `.UnmarshalRaw()` {#unmarshal-raw} - -UnmarshalRaw loads a raw SurrealQL response returned by Query into a struct. The raw response includes metadata that was not part of the intended query, such as duration of query. - -```go title="Method Syntax" -surrealdb.UnmarshalRaw(rawData, target) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- rawData - REQUIRED - - Raw Query response. -
- target - REQUIRED - - The target struct that will be unmarshalled to. -
- -### Example usage -```go -// a simple user struct -type testUser struct { - Username string `json:"username,omitempty"` - Password string `json:"password,omitempty"` - ID string `json:"id,omitempty"` -} - -username := "johnny" -password := "123" - -// create test user with raw SurrealQL and unmarshal -userData, err := db.Query("create users:johnny set Username = $user, Password = $pass", map[string]interface{}{ - "user": username, - "pass": password, -}) - -var userSlice []testUser -ok, err := surrealdb.UnmarshalRaw(userData, &userSlice) -``` diff --git a/versioned_docs/version-1.0.x/integration/sdks/java.mdx b/versioned_docs/version-1.0.x/integration/sdks/java.mdx deleted file mode 100644 index d172ace50..000000000 --- a/versioned_docs/version-1.0.x/integration/sdks/java.mdx +++ /dev/null @@ -1,813 +0,0 @@ ---- -sidebar_position: 7 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Java - - - -# Java SDK for SurrealDB - -The SurrealDB SDK for Java enables simple and advanced querying of a remote database from client or server-side code. Remote connections automatically reconnect when the connection is terminated. - -To contribute to this documentation, edit this file on GitHub. - -To contribute to the SDK code, submit an Issue or Pull Request here. - -
- -### Install the SDK - -You can add the SDK to your project like you would any standard dependency. - -To include the driver in your maven project it is sufficient to add the following dependency to your dependency block. - - -```xml - - com.surrealdb - surrealdb-driver - 0.1.0 - -``` - -To include the driver in your gradle project, add the following - -```java -ext { - surrealdbVersion = "0.1.0" -} - -dependencies { - implementation "com.surrealdb:surrealdb-driver:${surrealdbVersion}" -} -``` - -
- -### Connect - -Below is a snippet of code that demonstrates how you can connect to SurrealDB. - -```java -import com.surrealdb.connection.SurrealWebSocketConnection; -import com.surrealdb.driver.SyncSurrealDriver; - -import java.util.List; -import java.util.Map; - -public class App -{ - public static void main( String[] args ) - { - SurrealWebSocketConnection conn = new SurrealWebSocketConnection("localhost", 8000, false); - conn.connect(5); - SyncSurrealDriver driver = new SyncSurrealDriver(conn); - driver.signIn("root", "root"); - driver.use("namespace-name", "database-name"); - String tableName = "user"; - driver.delete(tableName); - User tobie = driver.create(tableName, User.builder().name("Tobie").build()); - User jaime = driver.create(tableName, User.builder().name("Tobie").build()); - List> updates = driver.update(jaime.id, Map.of("name", "Jaime")); - List allUsers = driver.select(tableName, User.class); - System.out.printf("All users = %s", allUsers); - conn.disconnect(); - } -} -``` - -
- -### SDK methods - -The Java SDK comes with a number of built-in functions. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
new SurrealWebSocketConnection(host, port, tls)Creates a new connection instance. The connection will upgrade the protocol to WebSockets, providing better performance and functionality. This class is used to connect to the database but is not the driver.
SurrealWebSocketConnection.connect(timeout)Initiates the connection to the database. This is necessary before the driver can be used.
new SyncSurrealDriver(conn)Creates an instance of the driver to interact with the database remotely.
driver.signIn(user, pass)Sign in to the database. This is a necessary step before using the database.
driver.signUp(namespace, database, scope, email, password)Signs up a user to a specific authentication scope.
driver.authenticate(token)Authenticates the current connection with a JWT token.
driver.invalidate()Signs this connection in to a specific authentication scope
driver.use(namespace, database)Switch to a specific namespace and database.
driver.let(key, value)Set a variable that can be used throughout the database session.
driver.query(query, args, rowType)Runs a set of SurrealQL statements against the database.
driver.select(thing, rowType)Selects all records in a table, or a specific record.
driver.create(thing, data)Creates a record in the database.
driver.update(thing, data)Updates all records in a table, or a specific record.
driver.change(thing, data, rowType)Change all records in a table, or a specific record.
driver.patch(thing, patches)Patch all records in a table, or a specific record.
driver.delete(thing)Deletes all records, or a specific record.
- -
- -## `.new()` {#new} - -Initiates a connection instance that can be used to make a connection to a SurrealDB instance. - -```java title="Method Syntax" -new SurrealWebSocketConnection(host, port, tls) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- host - REQUIRED - - The database endpoint to connect to. -
- port - REQUIRED - - The database port to connect to. -
- tls - REQUIRED - - Whether to use TLS or not. -
- - -
- -## `.connect()` {#connect} - -Connects to the SurrealDB instance within the timeout of seconds. - -```java title="Method Syntax" -SurrealWebSocketConnection.connect(timeout) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- timeout - REQUIRED - - The time to wait to connect before erroring, in seconds. -
- - -
- -## `.SyncSurrealDriver()` {#sync-surreal-driver} - -Creates an instance of the synchronous driver. There is an asynchronous counterpart - AsyncSurrealDriver that fills the same functionality. - -```java title="Method Syntax" -new SyncSurrealDriver(conn) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- conn - REQUIRED - - The connection to the database. -
- - -
- -## `.signIn()` {#signin} - -Signs in a user to a specific authentication scope. - -```java title="Method Syntax" -driver.signIn(user, pass) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- user - REQUIRED - - The user used for authentication. -
- pass - REQUIRED - - The password used for authentication. -
- - -
- -## `.signUp()` {#signup} - -Signs up a user to a specific authentication scope. - -```java title="Method Syntax" -driver.signUp(namespace, database, scope, email, password) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- namespace - REQUIRED - - The namespace to sign up for. -
- database - REQUIRED - - The database to sign up for. -
- scope - REQUIRED - - The scope to sign up for. -
- email - REQUIRED - - The email for sign up. -
- password - REQUIRED - - The password used for authentication. -
- - -
- -## `.authenticate()` {#authenticate} - -Authenticates the current connection with a JWT token. - -```java title="Method Syntax" -driver.authenticate(token) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- token - REQUIRED - - The JWT authentication token. -
- - -
- -## `.invalidate()` {#invalidate} - -Invalidates the authentication for the current connection. - -```java title="Method Syntax" -driver.invalidate() -``` - - -
- -## `.use()` {#use} - -Switch to a specific namespace and database. - -```java title="Method Syntax" -driver.use(namespace, database) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- namespace - REQUIRED - - The namespace to use throughout the database session. -
- database - REQUIRED - - The database to use throughout the database session. -
- - -
- -## `.let()` {#let} - -Set a variable that can be used throughout the database session. - -```java title="Method Syntax" -driver.let(key, value) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - The key of the variable being used within queries. -
- value - REQUIRED - - The value of the variable being used within queries. -
- - -
- -## `.query()` {#query} - -Runs a set of SurrealQL statements against the database. - -```java title="Method Syntax" -driver.query(query, args, rowType) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- query - REQUIRED - - The database endpoint to connect to. -
- args - REQUIRED - - The arguments passed to the query in place of named parameters. -
- rowType - REQUIRED - - The class of the return type of the response. -
- - -
- -## `.select()` {#select} - -Selects all records in a table, or a specific record. - -```java title="Method Syntax" -driver.select(thing, rowType) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The thing we are selecting, table or specific rows. -
- rowType - REQUIRED - - The class of the expected result. -
- - -
- -## `.create()` {#create} - -Creates a record in the database. - -```java title="Method Syntax" -driver.create(thing, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The thing being created - table or specific records. -
- data - REQUIRED - - The data being used for creation. -
- - -
- -## `.update()` {#update} - -Updates all records in a table, or a specific record. - -```java title="Method Syntax" -driver.update(thing, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - What is being updated - table or specific records. -
- data - REQUIRED - - The data being replaced in the record. -
- - -
- -## `.change()` {#change} - -Change all records in a table, or a specific record. - -```java title="Method Syntax" -driver.change(thing, data, rowType) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - What is being changed - table or records. -
- data - REQUIRED - - What data is used to apply the change. -
- rowType - REQUIRED - - The returned type of the query. -
- - -
- -## `.patch()` {#patch} - -Patch all records in a table, or a specific record. - -```java title="Method Syntax" -driver.patch(thing, patches) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - What is being patched - table or records. -
- patches - REQUIRED - - The list of patches to apply. -
- - -
- -## `.delete()` {#delete} - -Deletes all records, or a specific record. - -```java title="Method Syntax" -driver.delete(thing) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - What is being deleted - table or selected records. -
\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/integration/sdks/javascript.mdx b/versioned_docs/version-1.0.x/integration/sdks/javascript.mdx deleted file mode 100644 index e0648d415..000000000 --- a/versioned_docs/version-1.0.x/integration/sdks/javascript.mdx +++ /dev/null @@ -1,1423 +0,0 @@ ---- -sidebar_position: 9 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Javascript - - - -# Javascript SDK for SurrealDB - -The SurrealDB SDK for JavaScript enables simple and advanced querying of a remote database from a browser or from server-side code. All connections to SurrealDB are made over WebSockets, and automatically reconnect when the connection is terminated. - -To contribute to this documentation, edit this file on GitHub. - -To contribute to the SDK code, submit an Issue or Pull Request here. - -:::note -NOTE: This SDK is compatible with V1.x.x -::: - -
- -### Install the SDK - -First, install the SurrealDB SDK using npm: - -``` -npm install --save surrealdb.js -``` - -Alternatively, you can use install the SurrealDB SDK using yarn, pnpm or similar: - -``` -yarn add surrealdb.js -pnpm install surrealdb.js -``` - -
- -### Connect to SurrealDB - -Create a new app.js file and add the following code to try out some basic operations using the SurrealDB SDK. - -```ts -import { Surreal } from 'surrealdb.js'; - -const db = new Surreal(); - -async function main() { - try { - // Connect to the database - await db.connect('http://127.0.0.1:8000/rpc', { - // Set the namespace and database for the connection - namespace: 'test', - database: 'test', - - // Set the authentication details for the connection - auth: { - namespace: 'test', - database: 'test', - scope: 'user', - username: 'info@surrealdb.com', - password: 'my-secret-password', - }, - }); - - // Create a new person with a random id - const created = await db.create('person', { - title: 'Founder & CEO', - name: { - first: 'Tobie', - last: 'Morgan Hitchcock', - }, - marketing: true, - identifier: Math.random().toString(36).substr(2, 10), - }); - - // Update a person record with a specific id - const updated = await db.merge('person:jaime', { - marketing: true, - }); - - // Select all people records - const people = await db.select('person'); - - // Perform a custom advanced query - const groups = await db.query( - 'SELECT marketing, count() FROM type::table($tb) GROUP BY marketing', - { - tb: 'person', - } - ); - } catch (e) { - console.error('ERROR', e); - } -} - -main(); -``` - -Then run your app from the command line with: - -``` -node app.js -``` - -
- -### SDK methods - -The JavaScript SDK comes with a number of built-in functions. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
async db.connect(url, options) Connects to a local or remote database endpoint
async db.wait() Waits for the connection to the database to succeed
async db.close() Closes the persistent connection to the database
async db.use(namespace,database)Switch to a specific namespace and database
async db.info<T>()Returns the record of an authenticated scope user
async db.signup(vars)Signs this connection up to a specific authentication scope
async db.signin(vars)Signs this connection in to a specific authentication scope
async db.invalidate()Invalidates the authentication for the current connection
async db.authenticate(token)Assigns a value as a parameter for this connection
async db.let(key,val)Runs a set of SurrealQL statements against the database
async db.unset(key)Removes a parameter for this connection
async db.live<T>(table, callback,diff)Initiate a live query
async db.listenLive<T>(queryUuid,callback)Register a callback for a running live query
async db.kill(queryUuid)Kill a running live query
async db.query<T>(sql,vars)Runs a set of SurrealQL statements against the database
async db.select<T>(thing)Selects all records in a table, or a specific record
async db.create<T,U>(thing,data)Creates a record in the database
async db.insert<T,U>(thing,data)Inserts one or multiple records in the database
async db.update<T,U>(thing,data)Updates all records in a table, or a specific record
async db.merge<T,U>(thing,data)Modifies all records in a table, or a specific record
async db.patch<T,U>(thing,data)Applies JSON Patch changes to all records in a table, or a specific record
async db.delete<T,U>(thing,data)Deletes all records, or a specific record
- -
- -## `.connect()` {#connect} - -Connects to a local or remote database endpoint. - -```ts title="Method Syntax" -async db.connect(url, options) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- url - - The url of the database endpoint to connect to. -
- options - - An object with options to initiate the connection to SurrealDB. -
- -### Example usage -```ts -// Connect to a local endpoint -await db.connect('http://127.0.0.1:8000/rpc'); - -// Connect to a remote endpoint -await db.connect('https://cloud.surrealdb.com/rpc'); - -// Specify a namespace and database pair to use -await db.connect('https://cloud.surrealdb.com/rpc', { - namespace: 'surrealdb', - database: 'docs', -}); - -// Authenticate with an existing token -// The .authenticate() function is used under the hood. -await db.connect('https://cloud.surrealdb.com/rpc', { - auth: '.....', -}); - -// Authenticate using a pair of credentials -await db.connect('https://cloud.surrealdb.com/rpc', { - auth: { - username: 'root', - password: 'surrealdb', - }, -}); - -// Use advanced custom logic to prepare the connection to the database -await db.connect('https://cloud.surrealdb.com/rpc', { - prepare: async (db) => { - await db.use({ namespace: 'surrealdb', database: 'docs' }); - - const token = await retrieveToken(); - if (token) await db.authenticate(token); - - // Any queries executed before the .prepare() function finishes will be forced to wait - // Please note that this is also the case for queries executed within the prepare function - // Doing so can cause the connection to stay in a initializing state - }, -}); -``` - -
- -## `.wait()` {#wait} - -Waits for the connection to the database to succeed. - -```ts title="Method Syntax" -async db.wait() -``` - -### Example usage -```ts -await db.wait(); -``` - -
- -## `.close()` {#close} - -Closes the persistent connection to the database. - -```ts title="Method Syntax" -async db.close() -``` - -### Example usage -```ts -await db.close(); -``` - -
- -## `.use()` {#use} - -Switch to a specific namespace and database. If only the ns or db property is specified, the current connection details will be used to fill the other property. - -```ts title="Method Syntax" -db.use({` { namespace, database } `}) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- namespace - INITIALLY REQUIRED - - Switches to a specific namespace. -
- database - INITIALLY REQUIRED - - Switches to a specific database. -
- -### Example usage -```ts -await db.use({ namespace: 'surrealdb', database: 'docs' }); -``` - -
- -## `.info()` {#info} - -This method returns the record of an authenticated scope user. - -```ts title="Method Syntax" -async db.info() -``` - -### Example usage -```ts -const user = await db.info(); -``` - -
- -## `.signup()` {#signup} - -Signs up to a specific authentication scope. - -```ts title="Method Syntax" -async db.signup({`{ namespace, database, scope, [...] }`}) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- namespace - REQUIRED - - The namespace to sign up to -
- database - REQUIRED - - The database to sign up to -
- scope - REQUIRED - - The scope to sign up to. Also pass any variables used in the scope -
- -### Example usage -```ts -const token = await db.signup({ - namespace: 'surrealdb', - database: 'docs', - scope: 'user', - - // Also pass any properties required by the scope definition - email: 'info@surrealdb.com', - pass: '123456', -}); -``` - -
- -## `.signin()` {#signin} - -Signs in to a root, namespace, database or scope user. - -```ts title="Method Syntax" -async db.signin({`{ ... }`}) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertiesDescription
- username - REQUIRED FOR ROOT, NAMESPACE & DATABASE - - The username of the database user -
- password - REQUIRED FOR ROOT, NAMESPACE & DATABASE - - The password of the database user -
- namespace - REQUIRED FOR DATABASE & SCOPE - - The namespace to sign in to -
- database - REQUIRED FOR SCOPE - - The database to sign in to -
- scope - - The scope to sign in to. Also pass any variables used in the scope -
- -### Example usage -```ts -// Authenticate with a root user -const token = await db.signin({ - username: 'root', - password: 'surrealdb', -}); - -// Authenticate with a Namespace user -const token = await db.signin({ - namespace: 'surrealdb', - username: 'tobie', - password: 'surrealdb', -}); - -// Authenticate with a Database user -const token = await db.signin({ - namespace: 'surrealdb', - database: 'docs', - username: 'tobie', - password: 'surrealdb', -}); - -// Authenticate with a Scope user -const token = await db.signin({ - namespace: 'surrealdb', - database: 'docs', - scope: 'user', - - // Also pass any properties required by the scope definition - email: 'info@surrealdb.com', - pass: '123456', -}); -``` - -
- -## `.invalidate()` {#invalidate} - -Invalidates the authentication for the current connection. - -```ts title="Method Syntax" -async db.invalidate() -``` - -### Example usage -```ts -await db.invalidate(); -``` - -
- -## `.authenticate()` {#authenticate} - -Authenticates the current connection with a JWT token. - -```ts title="Method Syntax" -async db.authenticate(token) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- token - REQUIRED - - The JWT authentication token. -
- -### Example usage -```ts -await db.authenticate('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJTdXJyZWFsREIiLCJpYXQiOjE1MTYyMzkwMjIsIm5iZiI6MTUxNjIzOTAyMiwiZXhwIjoxODM2NDM5MDIyLCJOUyI6InRlc3QiLCJEQiI6InRlc3QiLCJTQyI6InVzZXIiLCJJRCI6InVzZXI6dG9iaWUifQ.N22Gp9ze0rdR06McGj1G-h2vu6a6n9IVqUbMFJlOxxA'); -``` - -
- -## `.let()` {#let} - -Assigns a value as a parameter for this connection. - -```ts title="Method Syntax" -async db.let(key, val) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - Specifies the name of the variable. -
- val - REQUIRED - - Assigns the value to the variable name. -
- -### Example Usage -```ts -// Assign the variable on the connection -await db.let('name', { - first: 'Tobie', - last: 'Morgan Hitchcock', -}); - -// Use the variable in a subsequent query -await db.query('CREATE person SET name = $name'); - -// Use the variable in a subsequent query -await db.query('SELECT * FROM person WHERE name.first = $name.first'); -``` - -
- -## `.unset()` {#unset} - -Removes a parameter for this connection. - -```ts title="Method Syntax" -async db.unset(key) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - Specifies the name of the variable. -
- -### Example usage -```ts -// Remove the variable from the connection -await db.unset('name'); -``` - -
- -## `.live()` {#live} - -Initiates a live query. - -```ts title="Method Syntax" -async db.live(table, callback, diff) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- table - REQUIRED - - The table name to listen for changes for -
- callback - OPTIONAL - - A callback function that processes live notifications -
- diff - OPTIONAL - - If set to true, live notifications will include an array of JSON Patch objects, rather than the entire record for each notification. -
- -### Example usage -```ts -// The uuid of the live query will be returned -const queryUuid = await db.live( - "person", - // The callback function takes an object with the 'action' and 'result' properties - ({ action, result }) => { - // action can be: 'CREATE', 'UPDATE', 'DELETE' or 'CLOSE' - if (action === 'CLOSE') return; - - // result contains either the entire record, or a set of JSON patches when diff mode is enabled - processSomeLiveQueryUpdate(result); - } -) -``` - -
- -## `.listenLive()` {#listenLive} - -Registers a callback function for a running live query. - -```ts title="Method Syntax" -async db.listenLive(queryUuid, callback) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- queryUuid - REQUIRED - - The UUID of a running live query -
- callback - REQUIRED - - A callback function that processes live notifications -
- -### Example usage -```ts -await db.listenLive( - queryUuid, - // The callback function takes an object with the "action" and "result" properties - ({ action, result }) => { - // action can be: "CREATE", "UPDATE", "DELETE" or "CLOSE" - if (action === 'CLOSE') return; - - // result contains either the entire record, or a set of JSON patches when diff mode is enabled - processSomeLiveQueryUpdate(result); - } -) -``` - -
- -## `.kill()` {#kill} - -Kills a running live query by it's UUID - -```ts title="Method Syntax" -async db.kill(queryUuid) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- queryUuid - REQUIRED - - The UUID of the live query you wish to kill -
- -### Example usage -```ts -await db.kill(queryUuid) -``` - - -
- -## `.query()` {#query} - -Runs a set of SurrealQL statements against the database. - -```ts title="Method Syntax" -async db.query(query, vars) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- query - REQUIRED - - Specifies the SurrealQL statements. -
- vars - OPTIONAL - - Assigns variables which can be used in the query. -
- -### Example usage -```ts -type Person = { - id: string; - name: string; -}; - -// Assign the variable on the connection -const result = await db.query<[Person[], Person[]]>( - 'CREATE person SET name = "John"; SELECT * FROM type::table($tb);', - { tb: 'person' } -); - -// Get the first result from the first query -const created = result[0].result[0]; - -// Get all of the results from the second query -const people = result[1].result; -``` - - -
- -## `.select()` {#select} - -Selects all records in a table, or a specific record, from the database. - -```ts title="Method Syntax" -async db.select(thing) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or a record ID to select. -
- -### Example usage -```ts -type Person = { - id: string; - name: string; -}; - -// Select all records from a table -const people = await db.select('person'); - -// Select a specific record from a table -const [person] = await db.select('person:h5wxrf2ewk8xjxosxtyc'); -``` - -### Translated query -This function will run the following query in the database. - -```surql -SELECT * FROM $thing; -``` - -
- -## `.create()` {#create} - -Creates a record in the database. - -```ts title="Method Syntax" -async db.create(thing, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or a record ID to create. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```ts -type Person = { - id: string; - name: string; - settings: { - active: boolean; - marketing: boolean; - }; -}; - -// Create a record with a random ID -const [person] = await db.create('person'); - -// Create a record with a specific ID -const [record] = await db.create('person:tobie', { - name: 'Tobie', - settings: { - active: true, - marketing: true, - }, -}); - -// The content you are creating the record with might differ from the return type -const [record] = await db.create< - Person, - Pick ->('person:tobie', { - name: 'Tobie', -}); -``` - -### Translated query -This function will run the following query in the database. - -```surql -CREATE $thing CONTENT $data; -``` - -
- -## `.insert()` {#insert} - -Inserts one or multiple records in the database. - -```ts title="Method Syntax" -async db.insert(thing, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name to insert to. -
- data - OPTIONAL - - Either a single document/record or an array of documents/records to insert -
- -### Example usage -```ts -type Person = { - id: string; - name: string; - settings: { - active: boolean; - marketing: boolean; - }; -}; - -// Insert a single record -const [person] = await db.insert('person', { - name: 'Tobie', - settings: { - active: true, - marketing: true, - }, -}); - -// Insert multiple records -const people = await db.insert('person', [ - { - name: 'Tobie', - settings: { - active: true, - marketing: true, - }, - }, - { - name: 'Jaime', - settings: { - active: true, - marketing: true, - }, - }, -]); - -// The content you are creating the record with might differ from the return type -const people = await db.insert< - Person, - Pick ->('person', [ - { name: 'Tobie' }, - { name: 'Jaime' }, -]); -``` - -### Translated query -This function will run the following query in the database. - -```surql -INSERT INTO $thing $data; -``` - -
- -## `.update()` {#update} - -Updates all records in a table, or a specific record, in the database. - -```ts title="Method Syntax" -async db.update(thing, data) -``` - -:::note -NOTE:This function replaces the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to update. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```ts -type Person = { - id: string; - name: string; - settings: { - active: boolean; - marketing: boolean; - }; -}; - -// Update all records in a table -const people = await db.update('person'); - -// Update a record with a specific ID -const [person] = await db.update('person:tobie', { - name: 'Tobie', - settings: { - active: true, - marketing: true, - }, -}); - -// The content you are updating the record with might differ from the return type -const [record] = await db.update< - Person, - Pick ->('person:tobie', { - name: 'Tobie', -}); -``` - -### Translated query -This function will run the following query in the database. - -```surql -UPDATE $thing CONTENT $data; -``` - -
- -## `.merge()` {#merge} - -Modifies all records in a table, or a specific record, in the database. - -```ts title="Method Syntax" -async db.merge(thing, data) -``` - -:::note -NOTE:This function merges the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to merge. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```ts -type Person = { - id: string; - name: string; - updated_at: Date; - settings: { - active: boolean; - marketing: boolean; - }; -}; - -// Update all records in a table -const people = await db.merge('person', { - updated_at: new Date(), -}); - -// Update a record with a specific ID -const [person] = await db.merge('person:tobie', { - updated_at: new Date(), - settings: { - active: true, - }, -}); - -// The content you are merging the record with might differ from the return type -const [record] = await db.merge< - Person, - Pick ->('person:tobie', { - name: 'Tobie', -}); -``` - -### Translated query -This function will run the following query in the database. - -```surql -UPDATE $thing MERGE $data; -``` - -
- -## `.patch()` {#patch} - -Applies JSON Patch changes to all records, or a specific record, in the database. - -```ts title="Method Syntax" -async db.patch(thing, data) -``` - -:::note -NOTE:This function patches the current document / record data with the specified JSON Patch data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to patch. -
- data - OPTIONAL - - The JSON Patch data with which to patch the records. -
- -### Example usage -```ts -// Update all records in a table -const people = await db.patch('person', [ - { op: 'replace', path: '/created_at', value: new Date() }, -]); - -// Update a record with a specific ID -const [person] = await db.patch('person:tobie', [ - { op: 'replace', path: '/settings/active', value: false }, - { op: 'add', path: '/tags', value: ['developer', 'engineer'] }, - { op: 'remove', path: '/temp' }, -]); -``` - -### Translated query -This function will run the following query in the database. - -```surql -UPDATE $thing PATCH $data; -``` - -
- -## `.delete()` {#delete} - -Deletes all records in a table, or a specific record, from the database. - -```ts title="Method Syntax" -async db.delete(thing) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or a record ID to delete. -
- -### Example usage -```ts -// Delete all records from a table -await db.delete('person'); - -// Delete a specific record from a table -await db.delete('person:h5wxrf2ewk8xjxosxtyc'); -``` - -### Translated query -This function will run the following query in the database. - -```surql -DELETE * FROM $thing; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/integration/sdks/nodejs.mdx b/versioned_docs/version-1.0.x/integration/sdks/nodejs.mdx deleted file mode 100644 index 4cf5f3505..000000000 --- a/versioned_docs/version-1.0.x/integration/sdks/nodejs.mdx +++ /dev/null @@ -1,1131 +0,0 @@ ---- -sidebar_position: 4 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Node.js - - - -# Node.js SDK for SurrealDB - -The SurrealDB SDK for Node.js enables simple and advanced querying of a remote database from server-side code. All connections to SurrealDB are made over WebSockets, and automatically reconnect when the connection is terminated. - -To contribute to this documentation, edit this file on GitHub. - -To contribute to the SDK code, submit an Issue or Pull Request here. - -:::note - -NOTE: This SDK is compatible with V1.x.x - -::: - -
- -### Install the SDK - -First, install the SurrealDB SDK using npm: - -```bash -npm install --save surrealdb.node -``` - -Alternatively, you can use install the SurrealDB SDK using yarn, pnpm or similar: - -```bash -yarn add surrealdb.node -pnpm install surrealdb.node -``` - -
- -### Connect to SurrealDB - -Create a new app.js file and add the following code to try out some basic operations using the SurrealDB SDK. - -:::note -__NOTE:__ Currently, the connection for this SDK is only available via WebSockets. ```ws://``` is the only supported protocols. -::: - -```ts -const { default: Surreal } = require('surrealdb.node'); - -const db = new Surreal(); - -async function main() { - - try { - // Connect to the database - await db.connect('ws://127.0.0.1:8000'); - - // Signin as a namespace, database, or root user - await db.signin({ - username: 'root', - password: 'root', - }); - - // Select a specific namespace / database - await db.use({ ns: 'test', db: 'test' }); - - // Create a new person with a random id - let created = await db.create("person", { - title: 'Founder & CEO', - name: { - first: 'Tobie', - last: 'Morgan Hitchcock', - }, - marketing: true, - identifier: Math.random().toString(36).slice(2, 12), - }); - - // Update a person record with a specific id - let updated = await db.merge("person:jaime", { - marketing: true, - }); - - // Select all people records - let people = await db.select("person"); - - // Perform a custom advanced query - let groups = await db.query('SELECT marketing, count() FROM type::table($tb) GROUP BY marketing', { - tb: 'person', - }); - - } catch (e) { - - console.error('ERROR', e); - - } - -} - -main(); -``` - -Then run your app from the command line with: - -```bash -node app.js -``` - -
- - -### SDK methods - -The JavaScript SDK comes with a number of built-in functions. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
async db.connect(url, options) Connects to a local or remote database endpoint
async db.wait() Waits for the connection to the database to succeed
async db.close() Closes the persistent connection to the database
async db.use({ ns, db })Switch to a specific namespace and database
async db.info()Returns the record of an authenticated scope user
async db.signup(vars)Signs this connection up to a specific authentication scope
async db.signin(vars)Signs this connection in to a specific authentication scope
async db.invalidate()Invalidates the authentication for the current connection
async db.authenticate(token)Assigns a value as a parameter for this connection
async db.let(key,val)Runs a set of SurrealQL statements against the database
async db.unset(key)Removes a parameter for this connection
async db.query(sql,vars)Runs a set of SurrealQL statements against the database
async db.select(thing)Selects all records in a table, or a specific record
async db.create(thing,data)Creates a record in the database
async db.insert(thing,data)Inserts one or multiple records in the database
async db.update(thing,data)Updates all records in a table, or a specific record
async db.merge(thing,data)Modifies all records in a table, or a specific record
async db.patch(thing,data)Applies JSON Patch changes to all records in a table, or a specific record
async db.delete(thing,data)Deletes all records, or a specific record
- -
- - -## `.connect()` {#connect} - -Connects to a local or remote database endpoint. - -```ts title="Method Syntax" -async db.connect(url, options) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- url - - The url of the database endpoint to connect to. -
- options - - An object with options to initiate the connection to SurrealDB. -
- -### Example usage -```ts -// Connect to a local endpoint -await db.connect('ws://127.0.0.1:8000'); - -// Connect to a remote endpoint -await db.connect('https://cloud.surrealdb.com/rpc'); -``` - -
- -## `.close()` {#close} - -Closes the persistent connection to the database. - -```ts title="Method Syntax" -async db.close() -``` - -### Example usage -```ts -await db.close(); -``` - -
- -## `.use()` {#use} - -Switch to a specific namespace and database. If only the namespace or database property is specified, the current connection details will be used to fill the other property. - -```ts title="Method Syntax" -db.use({ ns, db }) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- ns - INITIALLY REQUIRED - - Switches to a specific namespace. -
- db - INITIALLY REQUIRED - - Switches to a specific database. -
- -### Example usage -```ts -await db.use({ ns: 'surrealdb', db: 'docs' }); -``` - -
- -## `.info()` {#info} - -This method returns the record of an authenticated scope user. - -```ts title="Method Syntax" -async db.info() -``` - -### Example usage -```ts -const user = await db.info(); -``` - -
- -## `.signup()` {#signup} - -Signs up to a specific authentication scope. - -```ts title="Method Syntax" -async db.signup({ ns, db, sc, ... }) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - -
PropertiesDescription
- ns - REQUIRED - - The namespace to sign up to -
- db - REQUIRED - - The database to sign up to -
- sc - REQUIRED - - The scope to sign up to. Also pass any variables used in the scope -
- -### Example usage -```ts -const token = await db.signup({ - ns: 'surrealdb', - db: 'docs', - sc: 'user', - - // Also pass any properties required by the scope definition - email: 'info@surrealdb.com', - password: '123456', -}); -``` - -
- -## `.signin()` {#signin} - -Signs in to a root, namespace, database or scope user. - -```ts title="Method Syntax" -async db.signin({ ... }) -``` - -### Arguments - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertiesDescription
- user - REQUIRED - - The username of the database user -
- pass - REQUIRED - - The password of the database user -
- ns - REQUIRED - - The namespace to sign in to -
- db - REQUIRED - - The database to sign in to -
- sc - REQUIRED - - The scope to sign in to. Also pass any variables used in the scope -
- -### Example usage -```ts -// Authenticate with a root user -const token = await db.signin({ - user: 'root', - pass: 'surrealdb', -}); - -// Authenticate with a Namespace user -const token = await db.signin({ - ns: 'surrealdb', - user: 'tobie', - pass: 'surrealdb', -}); - -// Authenticate with a Database user -const token = await db.signin({ - ns: 'surrealdb', - db: 'docs', - user: 'tobie', - pass: 'surrealdb', -}); - -// Authenticate with a Scope user -const token = await db.signin({ - ns: 'surrealdb', - db: 'docs', - sc: 'user', - - // Also pass any properties required by the scope definition - email: 'info@surrealdb.com', - password: '123456', -}); -``` - -
- -## `.invalidate()` {#invalidate} - -Authenticates the current connection with a JWT token. - -```ts title="Method Syntax" -async db.invalidate() -``` - -### Example usage -```ts -await db.invalidate(); -``` - -
- -## `.authenticate()` {#authenticate} - -Authenticates the current connection with a JWT token. - -```ts title="Method Syntax" -async db.authenticate() -``` - -### Example usage -```ts -await db.authenticate('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJTdXJyZWFsREIiLCJpYXQiOjE1MTYyMzkwMjIsIm5iZiI6MTUxNjIzOTAyMiwiZXhwIjoxODM2NDM5MDIyLCJOUyI6InRlc3QiLCJEQiI6InRlc3QiLCJTQyI6InVzZXIiLCJJRCI6InVzZXI6dG9iaWUifQ.N22Gp9ze0rdR06McGj1G-h2vu6a6n9IVqUbMFJlOxxA'); -``` - -
- -## `.let()` {#let} - -Assigns a value as a parameter for this connection. - -```ts title="Method Syntax" -async db.let(key, val) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - Specifies the name of the variable. -
- val - REQUIRED - - Assigns the value to the variable name. -
- -### Example usage -```ts -// Assign the variable on the connection -await db.let('name', { - first: 'Tobie', - last: 'Morgan Hitchcock', -}); - -// Use the variable in a subsequent query -await db.query('CREATE person SET name = $name'); - -// Use the variable in a subsequent query -await db.query('SELECT * FROM person WHERE name.first = $name.first'); -``` - -
- -## `.unset()` {#unset} - -Removes a parameter for this connection. - -```ts title="Method Syntax" -async db.unset(key) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - Specifies the name of the variable. -
- -### Example usage -```ts -// Remove the variable from the connection -await db.unset('name'); -``` - -
- -## `.query()` {#query} - -Runs a set of SurrealQL statements against the database. - -```ts title="Method Syntax" -async db.query(query, vars) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- query - REQUIRED - - Specifies the name of the variable. -
- vars - OPTIONAL - - Specifies the name of the variable. -
- -### Example usage -```ts -// Assign the variable on the connection - const result = await db.query( - 'CREATE person SET name = "John"; SELECT * FROM type::table($tb);', -{ tb: 'person' } -); - -// Get the first result from the first query -const created = result[0].result[0]; - -// Get all of the results from the second query -const people = result[1].result; -``` - -
- -## `.select()` {#select} - -Selects all records in a table, or a specific record, from the database. - -```ts title="Method Syntax" -async db.select(thing) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or a record ID to select. -
- -### Example usage -```ts -// Select all records from a table -const people = await db.select('person'); - -// Select a specific record from a table -const [person] = await db.select('person:h5wxrf2ewk8xjxosxtyc'); -``` - -### Translated query -This function will run the following query in the database: - -```surql -SELECT * FROM $thing; -``` - -
- -## `.create()` {#create} - -Creates a record in the database. - -```ts title="Method Syntax" -async db.create(thing, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to create. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```ts -// Create a record with a random ID -const [person] = await db.create('person'); - -// Create a record with a specific ID -const [record] = await db.create('person:tobie', { - name: 'Tobie', - settings: { - active: true, - marketing: true, - }, -}); - -// The content you are creating the record with might differ from the return type -const [record] = await db.create('person:tobie', { - name: 'Tobie', -}); -``` - -### Translated query -This function will run the following query in the database: - -```surql -CREATE $thing CONTENT $data; -``` - -
- -## `.insert()` {#insert} - -Inserts one or multiple records in the database. - -```ts title="Method Syntax" -async db.insert(thing, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name to insert to. -
- data - OPTIONAL - - Either a single document/record or an array of documents/records to insert -
- -### Example usage -```ts -// Insert a single record -const [person] = await db.insert('person', { - name: 'Tobie', - settings: { - active: true, - marketing: true, - }, -}); - -// Insert multiple records -const people = await db.insert('person', [ - { - name: 'Tobie', - settings: { - active: true, - marketing: true, - }, - }, - { - name: 'Jaime', - settings: { - active: true, - marketing: true, - }, - }, -]); - -// The content you are creating the record with might differ from the return type -const people = await db.insert('person', [ - { name: 'Tobie' }, - { name: 'Jaime' }, -]); -``` - -### Translated query -This function will run the following query in the database: - -```surql -INSERT INTO $thing $data; -``` - -
- -## `.update()` {#update} - -Updates all records in a table, or a specific record, in the database. - -```ts title="Method Syntax" -async db.update(thing, data) -``` - -:::note -NOTE: This function replaces the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to update. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```ts -// Update all records in a table -const people = await db.update('person'); - -// Update a record with a specific ID -const [person] = await db.update('person:tobie', { - name: 'Tobie', - settings: { - active: true, - marketing: true, - }, -}); - -// The content you are updating the record with might differ from the return type -const [record] = await db.update('person:tobie', { - name: 'Tobie', -}); -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $thing CONTENT $data; -``` - -
- -## `.merge()` {#merge} - -Modifies all records in a table, or a specific record, in the database. - -```ts title="Method Syntax" -async db.merge(thing, data) -``` - -:::note -NOTE: This function merges the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to merge. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```ts -// Update all records in a table -const people = await db.merge('person', { - updated_at: new Date(), -}); - -// Update a record with a specific ID -const [person] = await db.merge('person:tobie', { - updated_at: new Date(), - settings: { - active: true, - }, -}); - -// The content you are merging the record with might differ from the return type -const [record] = await db.merge('person:tobie', { - name: 'Tobie', -}); -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $thing MERGE $data; -``` - -
- -## `.patch()` {#patch} - -Applies JSON Patch changes to all records, or a specific record, in the database. - -```ts title="Method Syntax" -async db.patch(thing, data) -``` - -:::note -NOTE: This function patches the current document / record data with the specified JSON Patch data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to patch. -
- data - OPTIONAL - - The JSON Patch data with which to patch the records. -
- -### Example usage -```ts -// Update all records in a table -const people = await db.patch('person', [ - { op: 'replace', path: '/created_at', value: new Date() }, -]); - -// Update a record with a specific ID -const [person] = await db.patch('person:tobie', [ - { op: 'replace', path: '/settings/active', value: false }, - { op: 'add', path: '/tags', value: ['developer', 'engineer'] }, - { op: 'remove', path: '/temp' }, -]); -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $thing PATCH $data; -``` - -
- -## `.delete()` {#delete} - -Deletes all records in a table, or a specific record, from the database. - -```ts title="Method Syntax" -async db.delete(thing) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or a record ID to delete. -
- -### Example usage -```ts -// Delete all records from a table -await db.delete('person'); - -// Delete a specific record from a table -await db.delete('person:h5wxrf2ewk8xjxosxtyc'); -``` - -### Translated query -This function will run the following query in the database: - -```surql -DELETE * FROM $thing; -``` diff --git a/versioned_docs/version-1.0.x/integration/sdks/overview.mdx b/versioned_docs/version-1.0.x/integration/sdks/overview.mdx deleted file mode 100644 index 87f659930..000000000 --- a/versioned_docs/version-1.0.x/integration/sdks/overview.mdx +++ /dev/null @@ -1,359 +0,0 @@ ---- -sidebar_position: 1 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; -import SdkContainer from '../../../../src/components/SDK/sdks_container.mdx' -import SDKServerBoxes from '../../../../src/components/SDK/SDKServerBoxes.mdx'; -import SDKClientBoxes from '../../../../src/components/SDK/SDKClientBoxes.mdx'; - - -# Overview - - - -# Overview - -SurrealDB supports a number of methods for connecting to the database and performing data queries. - -, - label: 'Rust', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/integration/sdks/nodejs', - icon: , - label: 'Node.js', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/integration/sdks/python', - icon: , - label: 'Python', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/integration/sdks/golang', - icon: , - icon: , - label: 'Golang', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/integration/sdks/deno', - icon: , - label: 'Deno', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/integration/sdks/dotnet', - icon: , - label: '.NET', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/integration/sdks/java', - icon: , - label: 'Java', - available: true, - }, - { - icon: , - label: 'C', - available: false, - }, - { - icon: , - label: 'Ruby', - available: false, - }, - { - icon: , - label: 'PHP', - available: false, - }, - { - icon: , - label: 'Swift', - available: false, - }, - { - icon: , - label: 'R', - available: false, - }, - { - icon: , - label: 'Erlang', - available: false, - }, - { - icon: , - label: 'Dart', - available: false, - }, - ]} -/> - -### Client side SDKs - -, - label: 'Javascript', - available: true, - }, - { - icon: , - label: 'Ember.js', - available: false, - }, - { - icon: , - label: 'React.js', - available: false, - }, - { - icon: , - label: 'Angular', - available: false, - }, - { - icon: , - label: 'Vue.js', - available: false, - }, - { - icon: , - label: 'Next.js', - available: false, - }, - { - icon: , - label: 'Nuxt.js', - available: false, - }, - { - icon: , - label: 'Nest.js', - available: false, - }, - { - icon: , - label: 'Svelte', - available: false, - }, - { - icon: , - label: 'Flutter', - available: false, - }, - ]} -/> \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/integration/sdks/python.mdx b/versioned_docs/version-1.0.x/integration/sdks/python.mdx deleted file mode 100644 index ce170e380..000000000 --- a/versioned_docs/version-1.0.x/integration/sdks/python.mdx +++ /dev/null @@ -1,975 +0,0 @@ ---- -sidebar_position: 3 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Python - - - -# Python SDK for SurrealDB - -The SurrealDB SDK for Python enables simple and advanced querying of a remote database from a browser or from server-side code. By default connections to SurrealDB are made over WebSockets, and automatically reconnect when the connection is terminated. We however also support connecting through a http client, however that is not as fully implemented yet. - -To contribute to this documentation, edit this file on GitHub. - -To contribute to the SDK code, submit an Issue or Pull Request here. - -:::note -NOTE: This SDK is compatible with V1.x.x -::: - -
- -### Install the SDK - -First, install the SurrealDB SDK using pip: - -```sh -pip install surrealdb -``` - -Alternatively, you can use install the SurrealDB SDK using poetry: - -```sh -poetry add surrealdb -``` - -
- -### Connect to SurrealDB - -Create a new surreal.py file and add the following code to try out some basic operations using the SurrealDB SDK. - -```python -from surrealdb import Surreal - -async def main(): - """Example of how to use the SurrealDB client.""" - async with Surreal("ws://localhost:8000/rpc") as db: - await db.signin({"user": "root", "pass": "root"}) - await db.use("test", "test") - await db.create( - "person", - { - "user": "me", - "pass": "safe", - "marketing": True, - "tags": ["python", "documentation"], - }, - ) - print(await db.select("person")) - print(await db.update("person", { - "user":"you", - "pass":"very_safe", - "marketing": False, - "tags": ["Awesome"] - })) - print(await db.delete("person")) - - # You can also use the query method - # doing all of the above and more in SurrealQl - - # In SurrealQL you can do a direct insert - # and the table will be created if it doesn't exist - await db.query(""" - insert into person { - user: 'me', - pass: 'very_safe', - tags: ['python', 'documentation'] - }; - - """) - print(await db.query("select * from person")) - - print(await db.query(""" - update person content { - user: 'you', - pass: 'more_safe', - tags: ['awesome'] - }; - - """)) - print(await db.query("delete person")) - -if __name__ == "__main__": - import asyncio - - asyncio.run(main()) -``` - -Then run your app from the command line with: - -```sh -python surreal.py -``` - -Alternatively, you can run it in a notebook like Jupyter or VS code - -```python -# %% -"""Example of how to use the SurrealDB client in a notebook""" - -from surrealdb import Surreal - -db = Surreal("http://localhost:8000") -await db.connect() -await db.signin({"user": "root", "pass": "root"}) -await db.use("test", "test") - -# %% -await db.create( - "person", - { - "user": "me", - "pass": "safe", - "marketing": True, - "tags": ["python", "documentation"], - }, -) - -# %% -await db.select("person") - -# %% -await db.update("person", { - "user":"you", - "pass":"very_safe", - "marketing": False, - "tags": ["Awesome"] -}) - -# %% -await db.delete("person") -``` - -
- -### SDK methods - -The Python SDK comes with a number of built-in functions. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
Surreal(url)Surreal is a class that represents a Surreal server.
db.connect()Connects to a local or remote database endpoint
db.close()Closes the persistent connection to the database
db.use(ns, db)Switch to a specific namespace and database
db.signup(vars)Signs this connection up to a specific authentication scope
db.signin(vars)Signs this connection in to a specific authentication scope
db.invalidate()Invalidates the authentication for the current connection
db.authenticate(token)Authenticates the current connection with a JWT token
db.let(key, val)Assigns a value as a parameter for this connection
db.query(sql, vars)Runs a set of SurrealQL statements against the database
db.select(thing)Selects all records in a table, or a specific record
db.create(thing, data)Creates a record in the database
db.update(thing, data)Updates all records in a table, or a specific record
db.merge(thing, data)Modifies by deep merging all records in a table, or a specific record, in the database
db.patch(thing, data)Applies JSON Patch changes to all records in a table, or a specific record
db.delete(thing)Deletes all records, or a specific record
- -
- -## `Surreal()` {#init} - -Surreal is a class that represents a Surreal server. -The default way to connect is through WebSockets using Surreal(url) -If an http client is needed you can use SurrealHTTP(url) but be aware that it is currently not as stable and not as fully implemented. - -```python title="Method Syntax" -Surreal(url) -SurrealHTTP(url) -``` - -:::note -NOTE: The url is required in either the Surreal class or connect method -::: - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- url - REQUIRED - - The database endpoint to connect to. -
- -### Example usage -```python -# Connect to a local endpoint -db = Surreal() -await db.connect('http://127.0.0.1:8000/rpc') -# Connect to a remote endpoint -db = Surreal() -await db.connect('https://cloud.surrealdb.com/rpc') -``` - -
- -## `.connect()` {#connect} - -Connects to a local or remote database endpoint. - -```python title="Method Syntax" -db.connect(url) -``` - -:::note -NOTE: The url is required in either the Surreal class or connect method -::: - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- url - REQUIRED - - The database endpoint to connect to. -
- -### Example usage -```python -# Connect to a local endpoint -db = Surreal() -await db.connect('http://127.0.0.1:8000/rpc') -# Connect to a remote endpoint -db = Surreal() -await db.connect('https://cloud.surrealdb.com/rpc') -``` - -
- -## `.close()` {#close} - -Closes the persistent connection to the database. - -```python title="Method Syntax" -db.close() -``` - -### Example usage -```python -db.close() -``` - -
- -## `.use()` {#use} - -Switch to a specific namespace and database. - -```python title="Method Syntax" -db.use(ns, db) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- ns - REQUIRED - - Switches to a specific namespace. -
- db - REQUIRED - - Switches to a specific database. -
- -### Example usage -```python -await db.use('test', 'test') -``` - -
- -## `.signup()` {#signup} - -Signs up to a specific authentication scope. - -```python title="Method Syntax" -db.signup(vars) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- vars - REQUIRED - - Variables used in a signup query. -
- -### Example usage -```python -token = await db.signup({ - 'NS': 'test', - 'DB': 'test', - 'SC': 'user', - 'email': 'info@surrealdb.com', - 'pass': '123456', -}) -``` - -
- -## `.signin()` {#signin} - -Signs up to a specific authentication scope. - -```python title="Method Syntax" -db.signin(vars) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- vars - REQUIRED - - Variables used in a signup query. -
- -### Example usage -```python -token = await db.signin({ - 'user': 'root', - 'pass': 'root', -}) -``` - -
- -## `.invalidate()` {#invalidate} - -Invalidates the authentication for the current connection. - -```python title="Method Syntax" -db.invalidate(vars) -``` - -### Example usage -```python -await db.invalidate() -``` - -
- -## `.authenticate()` {#authenticate} - -Authenticates the current connection with a JWT token. - -```python title="Method Syntax" -db.authenticate(token) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- token - REQUIRED - - The JWT authentication token. -
- -### Example usage -```python -await db.authenticate('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJTdXJyZWFsREIiLCJpYXQiOjE1MTYyMzkwMjIsIm5iZiI6MTUxNjIzOTAyMiwiZXhwIjoxODM2NDM5MDIyLCJOUyI6InRlc3QiLCJEQiI6InRlc3QiLCJTQyI6InVzZXIiLCJJRCI6InVzZXI6dG9iaWUifQ.N22Gp9ze0rdR06McGj1G-h2vu6a6n9IVqUbMFJlOxxA') -``` - -
- -## `.let()` {#let} - -Assigns a value as a parameter for this connection. - -```python title="Method Syntax" -db.let(key, val) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - Specifies the name of the variable. -
- val - REQUIRED - - Assigns the value to the variable name. -
- -### Example usage -```python -# Assign the variable on the connection - await db.let("name", { - "first": "Tobie", - "last": "Morgan Hitchcock", - }) -# Use the variable in a subsequent query -await db.query('CREATE person SET name = $name') -# Use the variable in a subsequent query -await db.query('SELECT * FROM person WHERE name.first = $name.first') -``` - -
- -## `.query()` {#query} - -Runs a set of SurrealQL statements against the database. - -```python title="Method Syntax" -db.query(sql, vars) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- sql - REQUIRED - - Specifies the SurrealQL statements. -
- vars - OPTIONAL - - Assigns variables which can be used in the query. -
- -### Example usage -```python -# Assign the variable on the connection -result = await db.query('CREATE person; SELECT * FROM type::table($tb)', { - 'tb': 'person', -}) -# Get the first result from the first query -result[0]['result'][0] -# Get all of the results from the second query -result[1]['result'] -``` - -
- -## `.select()` {#select} - -Selects all records in a table, or a specific record, from the database. - -```python title="Method Syntax" -db.select(thing) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or a record ID to select. -
- -### Example usage -```python -# Select all records from a table -people = await db.select('person') -# Select a specific record from a table -person = await db.select('person:h5wxrf2ewk8xjxosxtyc') -``` - -### Translated query -This function will run the following query in the database: - -```surql -SELECT * FROM $thing; -``` - -
- -## `.create()` {#create} - -Creates a record in the database. - -```python title="Method Syntax" -db.create(thing, data) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to create. -
- data - REQUIRED - - The document / record data to insert. -
- -### Example usage -```python -# Create a record with a random ID -person = await db.create('person') -# Create a record with a specific ID -record = await db.create('person:tobie', { - 'name': 'Tobie', - 'settings': { - 'active': true, - 'marketing': true, - }, -}) -``` - -### Translated query -This function will run the following query in the database: - -```surql -CREATE $thing CONTENT $data; -``` - - -
- -## `.update()` {#update} - -Updates all records in a table, or a specific record, in the database. - -```python title="Method Syntax" -db.update(thing, data) -``` - -:::note -NOTE: This function replaces the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to update. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```python -# Update all records in a table -people = await db.update('person') -# Update a record with a specific ID -person = await db.update('person:tobie', { - 'name': 'Tobie', - 'settings': { - 'active': true, - 'marketing': true, - }, -}) -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $thing CONTENT $data; -``` - -
- -## `.merge()` {#merge} - -Modifies by deep merging all records in a table, or a specific record, in the database. - -```python title="Method Syntax" -db.merge(thing, data) -``` - -:::note -NOTE: This function merges the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to change -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```python -# Update all records in a table -people = await db.merge('person', { - updated_at: new Date(), -}) -# Update a record with a specific ID - person = await db.merge('person:tobie', { - 'updated_at': datetime.datetime.utcnow(), - 'settings': { - 'active': True, - }, - }) -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $thing MERGE $data; -``` - -
- -## `.patch()` {#patch} - -Applies JSON Patch changes to all records, or a specific record, in the database. - -```python title="Method Syntax" -db.patch(thing, data) -``` - -:::note -NOTE: This function patches the current document / record data with the specified JSON Patch data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or the specific record ID to modify. -
- data - OPTIONAL - - The JSON Patch data with which to modify the records. -
- -### Example usage -```python -# Update all records in a table -people = await db.patch('person', [ - { 'op': "replace", 'path': "/created_at", 'value': str(datetime.datetime.utcnow()) }, -]) -# Update a record with a specific ID -person = await db.patch('person:tobie', [ - { 'op': "replace", 'path': "/settings/active", 'value': False }, - { 'op': "add", "path": "/tags", "value": ["developer", "engineer"] }, - { 'op': "remove", "path": "/temp" }, -]) -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $thing PATCH $data; -``` - -
- -## `.delete()` {#delete} - -Deletes all records in a table, or a specific record, from the database. - -```python title="Method Syntax" -db.delete(thing) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- thing - REQUIRED - - The table name or a record ID to select. -
- -### Example usage -```python -# Delete all records from a table -await db.delete('person') -# Delete a specific record from a table -await db.delete('person:h5wxrf2ewk8xjxosxtyc') -``` - -### Translated query -This function will run the following query in the database: - -```surql -DELETE * FROM $thing; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/integration/sdks/rust.mdx b/versioned_docs/version-1.0.x/integration/sdks/rust.mdx deleted file mode 100644 index ccb0161eb..000000000 --- a/versioned_docs/version-1.0.x/integration/sdks/rust.mdx +++ /dev/null @@ -1,1051 +0,0 @@ ---- -sidebar_position: 2 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Rust - - - -# Rust SDK for SurrealDB - -The SurrealDB SDK for Rust enables simple and advanced querying of a remote or embedded database from a browser or from server-side code. Remote connections automatically reconnect when the connection is terminated. - -To contribute to this documentation, edit this file on GitHub. - -To contribute to the SDK code, submit an Issue or Pull Request here. - -:::note - -NOTE: This SDK is compatible with V1.x.x - -::: - -

- -### Install the SDK - -First, create a new project using cargo new and add the SurrealDB SDK to your dependencies: - -```sh -cargo add surrealdb -``` - -
- -### Connect to SurrealDB - -Open src/main.rs and replace everything in there with the following code to try out some basic operations using the SurrealDB SDK. - -```rust -use serde::{Deserialize, Serialize}; -use surrealdb::engine::remote::ws::Ws; -use surrealdb::opt::auth::Root; -use surrealdb::sql::Thing; -use surrealdb::Surreal; - -#[derive(Debug, Serialize)] -struct Name<'a> { - first: &'a str, - last: &'a str, -} - -#[derive(Debug, Serialize)] -struct Person<'a> { - title: &'a str, - name: Name<'a>, - marketing: bool, -} - -#[derive(Debug, Serialize)] -struct Responsibility { - marketing: bool, -} - -#[derive(Debug, Deserialize)] -struct Record { - #[allow(dead_code)] - id: Thing, -} - -#[tokio::main] -async fn main() -> surrealdb::Result<()> { - // Connect to the server - let db = Surreal::new::("127.0.0.1:8000").await?; - - // Signin as a namespace, database, or root user - db.signin(Root { - username: "root", - password: "root", - }) - .await?; - - // Select a specific namespace / database - db.use_ns("test").use_db("test").await?; - - // Create a new person with a random id - let created: Vec = db - .create("person") - .content(Person { - title: "Founder & CEO", - name: Name { - first: "Tobie", - last: "Morgan Hitchcock", - }, - marketing: true, - }) - .await?; - dbg!(created); - - // Update a person record with a specific id - let updated: Option = db - .update(("person", "jaime")) - .merge(Responsibility { marketing: true }) - .await?; - dbg!(updated); - - // Select all people records - let people: Vec = db.select("person").await?; - dbg!(people); - - // Perform a custom advanced query - let groups = db - .query("SELECT marketing, count() FROM type::table($table) GROUP BY marketing") - .bind(("table", "person")) - .await?; - dbg!(groups); - - Ok(()) -} -``` - -To run the example above, you will need to add the following additional dependencies: -```sh -cargo add serde --features derive -cargo add tokio --features macros,rt-multi-thread -``` - -Then make sure your SurrealDB server is running on 127.0.0.1:8000 and run your app from the command line with: - -```sh -cargo run -``` - -
- -### SDK methods - -The Rust SDK comes with a number of built-in functions. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
Surreal::init()Initialises a static database engine
db.connect(endpoint)Connects to a specific database endpoint, saving the connection on the static client
Surreal::new::<T>(endpoint)Connects to a local or remote database endpoint
db.use_ns(namespace).use_db(database)Switch to a specific namespace and database
db.signup(credentials)Signs up a user to a specific authentication scope
db.signin(credentials)Signs this connection in to a specific authentication scope
db.invalidate()Invalidates the authentication for the current connection
db.authenticate(token)Authenticates the current connection with a JWT token
db.set(key, val)Assigns a value as a parameter for this connection
db.query(sql)Runs a set of SurrealQL statements against the database
db.select(resource)Selects all records in a table, or a specific record
db.create(resource).content(data)Creates a record in the database
db.update(resource).content(data)Updates all records in a table, or a specific record
db.update(resource).merge(data)Modifies all records in a table, or a specific record
db.update(resource).patch(data)Applies JSON Patch changes to all records in a table, or a specific record
db.delete(resource)Deletes all records, or a specific record
- -
- -## `.init()` {#init} - -The DB static singleton ensures that a single database instance is available across very large or complicated applications. With the singleton, only one connection to the database is instantiated, and the database connection does not have to be shared across components or controllers. - -```rust title="Method Syntax" -Surreal::init() -``` - -### Example usage -```rust -static DB: Lazy> = Lazy::new(Surreal::init); - -#[tokio::main] -async fn main() -> surrealdb::Result<()> { - // Connect to the database - DB.connect::("cloud.surrealdb.com").await?; - // Select a namespace + database - DB.use_ns("test").use_db("test").await?; - // Create or update a specific record - let tobie: Option = DB - .update(("person", "tobie")) - .content(Person { name: "Tobie" }) - .await?; - Ok(()) -} -``` - -
- -## `.connect()` {#connect} - -Connects to a local or remote database endpoint. - -```rust title="Method Syntax" -db.connect(endpoint) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- endpoint - REQUIRED - - The database endpoint to connect to. -
- -### Example usage -```rust -// Connect to a local endpoint -DB.connect::("127.0.0.1:8000").await?; -// Connect to a remote endpoint -DB.connect::("cloud.surrealdb.com").await?; -``` - -
- -## `.new()` {#new} - -Connects to a local or remote database endpoint. - -```rust title="Method Syntax" -Surreal::new::(endpoint) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- endpoint - REQUIRED - - The database endpoint to connect to. -
- -### Example usage -```rust -let db = Surreal::new::("127.0.0.1:8000").await?; -``` - -
- -## `.use_ns()` and `.use_db()` {#use-ns-db} - -Switch to a specific namespace and database. - -```rust title="Method Syntax" -db.use_ns(ns).use_db(db) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- ns - REQUIRED - - Switches to a specific namespace. -
- db - REQUIRED - - Switches to a specific database. -
- -### Example usage -```rust -db.use_ns("test").use_db("test").await?; -``` - -
- -## `.signup()` {#signup} - -Signs up to a specific authentication scope. - -```rust title="Method Syntax" -db.signup(credentials) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- credentials - REQUIRED - - Variables used in a signup query. -
- -### Example usage -```rust -use serde::Serialize; -use surrealdb::opt::auth::Scope; - -#[derive(Serialize)] -struct Credentials<'a> { - email: &'a str, - pass: &'a str, -} - -let jwt = db.signup(Scope { - namespace: "test", - database: "test", - scope: "user", - params: Credentials { - email: "info@surrealdb.com", - pass: "123456", - }, -}).await?; - -// ⚠️: It is important to note that the token should be handled securely and protected from unauthorized access. -let token = jwt.as_insecure_token(); -``` - -
- -## `.signin()` {#signin} - -Signs in to a specific authentication scope. - -```rust title="Method Syntax" -db.signin(credentials) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- credentials - REQUIRED - - Variables used in a signin query. -
- -### Example usage -```rust -use serde::Serialize; -use surrealdb::opt::auth::Scope; - -#[derive(Serialize)] -struct Credentials<'a> { - email: &'a str, - pass: &'a str, -} - -let jwt = db.signin(Scope { - namespace: "test", - database: "test", - scope: "user", - params: Credentials { - email: "info@surrealdb.com", - pass: "123456", - }, -}).await?; - -// ⚠️: It is important to note that the token should be handled securely and protected from unauthorized access. -let token = jwt.as_insecure_token(); -``` - -
- -## `.invalidate()` {#invalidate} - -Invalidates the authentication for the current connection. - -```rust title="Method Syntax" -db.invalidate(credentials) -``` - -### Example usage -```surql -db.invalidate().await?; -``` - -
- -## `.authenticate()` {#authenticate} - -Authenticates the current connection with a JWT token. - -```rust title="Method Syntax" -db.authenticate(token) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- token - REQUIRED - - The JWT authentication token. -
- -### Example usage -```rust -db.authenticate(jwt).await?; -``` - -
- -## `.set()` {#set} - -Assigns a value as a parameter for this connection. - -```rust title="Method Syntax" -db.set(key, val) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- key - REQUIRED - - Specifies the name of the variable. -
- val - REQUIRED - - Assigns the value to the variable name. -
- -### Example usage -```rust -// Assign the variable on the connection -db.set("name", Name { - first: "Tobie", - last: "Morgan Hitchcock", -}).await?; -// Use the variable in a subsequent query -db.query("CREATE person SET name = $name").await?; -// Use the variable in a subsequent query -db.query("SELECT * FROM person WHERE name.first = $name.first").await?; -``` - -
- -## `.query()` {#query} - -Runs a set of SurrealQL statements against the database. - -```rust title="Method Syntax" -db.query(sql).bind(vars) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- sql - REQUIRED - - Specifies the SurrealQL statements. -
- vars - OPTIONAL - - Assigns variables which can be used in the query. -
- -### Example usage -```rust -// Run some queries -let sql = " - CREATE person; - SELECT * FROM type::table($table); -"; -let mut result = db - .query(sql) - .bind(("table", "person")) - .await?; -// Get the first result from the first query -let created: Option = result.take(0)?; -// Get all of the results from the second query -let people: Vec = result.take(1)?; -``` - -
- -## `.select()` {#select} - -Selects all records in a table, or a specific record, from the database. - -```rust title="Method Syntax" -db.select(resource) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or a record ID to select. -
- -### Example usage -```rust -// Select all records from a table -let people: Vec = db.select("person").await?; -// Select a specific record from a table -let person: Option = db.select(("person", "h5wxrf2ewk8xjxosxtyc")).await?; -``` - -### Example usage: Retrieve unique id of a record -```rust -use serde::Deserialize; -use surrealdb::engine::remote::ws::Ws; -use surrealdb::opt::auth::Root; -use surrealdb::sql::Id; -use surrealdb::Surreal; - -// defining your own custom Thing struct and using that in place of `Thing` in the `Id` struct -#[derive(Debug, Deserialize)] -struct CustomThing { - id: Id, -} - -#[derive(Debug, Deserialize)] -struct Person { - id: CustomThing, - name: String, - age: u8, -} - -#[tokio::main] -async fn main() -> surrealdb::Result<()> { - // Connect to the database - let db = Surreal::new::("localhost:8000").await?; - - // Sign in - db.signin(Root { - username: "root", - password: "root", - }) - .await?; - - // Select namespace and database to use - db.use_ns("namespace").use_db("database").await?; - - // Create a person - db.query("CREATE person:john SET name = 'John Doe', age = 25").await?.check()?; - - // Query that person - let john: Option = db.select(("person", "john")).await?; - dbg!(john); - - Ok(()) -} - -``` - -### Translated query -This function will run the following query in the database: - -```surql -SELECT * FROM $resource; -``` - -
- -## `.create()` {#create} - -Creates a record in the database. - -```rust title="Method Syntax" -db.create(resource).content(data) -``` - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or the specific record ID to create. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```rust -// Create a record with a random ID -let people: Vec = db.create("person").await?; -// Create a record with a specific ID -let record: Option = db - .create(("person", "tobie")) - .content(Person { - name: "Tobie", - settings: { - active: true, - marketing: true, - }, - }).await?; -``` - -### Translated query -This function will run the following query in the database: - -```surql -CREATE $resource CONTENT $data; -``` - -
- -## `.update().content()` {#update-content} - -Updates all records in a table, or a specific record, in the database. - -```rust title="Method Syntax" -db.update(resource).content(data) -``` - -:::note -NOTE: This function replaces the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or the specific record ID to create. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```rust -// Update all records in a table -let people: Vec = db.update("person").await?; -// Update a record with a specific ID -let person: Option = db - .update(("person", "tobie")) - .content(Person { - name: "Tobie", - settings: { - active: true, - marketing: true, - }, - }).await?; -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $resource CONTENT $data; -``` - -
- -## `.update().merge()` {#update-merge} - -Modifies all records in a table, or a specific record, in the database. - -```rust title="Method Syntax" -db.update(resource).merge(data) -``` - -:::note -NOTE: This function merges the current document / record data with the specified data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or the specific record ID to create. -
- data - OPTIONAL - - The document / record data to insert. -
- -### Example usage -```rust -// Update all records in a table -let people: Vec = db.update("person") - .merge(Document { - updated_at: Datetime::default(), - }) - .await?; -// Update a record with a specific ID -let person: Option = db.update(("person", "tobie")) - .merge(Document { - updated_at: Datetime::default(), - settings: Settings { - active: true, - }, - }) - .await?; -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $resource MERGE $data; -``` - -
- -## `.update().patch()` {#update-patch} - -Applies JSON Patch changes to all records, or a specific record, in the database. - -```rust title="Method Syntax" -db.update(resource).patch(data) -``` - -:::note -NOTE: This function patches the current document / record data with the specified JSON Patch data. -::: - -### Arguments - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or the specific record ID to modify. -
- data - OPTIONAL - - The JSON Patch data with which to modify the records. -
- -### Example usage -```rust -// Update all records in a table -let people: Vec = db.update("person") - .patch(PatchOp::replace("/created_at", Datetime::default())) - .await?; - -// Update a record with a specific ID -let person: Option = db.update(("person", "tobie")) - .patch(PatchOp::replace("/settings/active", false)) - .patch(PatchOp::add("/tags", &["developer", "engineer"])) - .patch(PatchOp::remove("/temp")) - .await?; -``` - -### Translated query -This function will run the following query in the database: - -```surql -UPDATE $resource PATCH $data; -``` - -
- -## `.delete()` {#delete} - -Deletes all records in a table, or a specific record, from the database. - -```rust title="Method Syntax" -db.delete(resource) -``` - -### Arguments - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - The table name or a record ID to select. -
- -### Example usage -```rust -// Delete all records from a table -let people: Vec = db.delete("person").await?; -// Delete a specific record from a table -let person: Option = db.delete(("person", "h5wxrf2ewk8xjxosxtyc")).await?; -``` - -### Translated query -This function will run the following query in the database: - -```surql -DELETE FROM $resource RETURN BEFORE; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/integration/websocket.mdx b/versioned_docs/version-1.0.x/integration/websocket.mdx deleted file mode 100644 index 5995d705a..000000000 --- a/versioned_docs/version-1.0.x/integration/websocket.mdx +++ /dev/null @@ -1,1283 +0,0 @@ ---- -sidebar_position: 2 ---- - -# WebSocket - -# WebSocket (text protocol) - -The WebSocket protocol allows for easy bi-directional communication with SurrealDB. This allows you to maintain a single connection to run all your queries, but also opens up the possibility of Live Queries! - -:::note -Live queries are still under development, though available soon. -::: - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
use [ ns, db ]Specifies the namespace and database for the current connection
infoReturns the record of an authenticated scope user
signup [ { NS, DB, SC,... } ]Signup a user against a scope's SIGNUP method
signin [ { ... } ]Signin a root, NS, DB or SC user against SurrealDB
authenticate [ token ]Authenticate a user against SurrealDB with a token
invalidateInvalidate a user's session for the current connection
let [ name, value ]Define a variable on the current connection
unset [ name ]Remove a variable from the current connection
live [ table, diff ]Initiate a live query
kill [ queryUuid ]Kill an active live query
query [ sql, vars ]Execute a custom query with optional variables
select [ thing ]Select either all records in a table or a single record
create [ thing, data ]Create a record with a random or specified ID
insert [ thing, data ]Insert one or multiple records in a table
update [ thing, data ]Replace either all records in a table or a single record with specified data
merge [ thing, data ]Merge specified data into either all records in a table or a single record
patch [ thing, patches, diff ]Patch either all records in a table or a single record with specified patches
delete [ thing ]Delete either all records in a table or a single record
- -
- -## `use` - -This method specifies the namespace and database for the current connection - -```json title="Method Syntax" -use [ ns, db ] -``` - -### Parameters - - - - - - - - - - - - - - - - - -
ParameterDescription
- NS - OPTIONAL - - Sets the selected Namespace for queries -
- DB - OPTIONAL - - Sets the selected Database for queries -
- -### Example usage - -```json title="Request" -{ - "id": 1, - "method": "use", - "params": [ "surrealdb", "docs" ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": null -} -``` - -
- -## `info` - -This method returns the record of an authenticated scope user. - -```json title="Method Syntax" -info -``` - -### Example usage -```json title="Request" -{ - "id": 1, - "method": "info" -} -``` - -The result property of the response is likely different depending on your schema and the authenticated user. However, it does represent the overall structure of the responding message. - -```json title="Response" -{ - "id": 1, - "result": { - "id": "user:john", - "name": "John Doe" - } -} -``` - -
- -## `signup` - -This method allows you to signup a user against a scope's `SIGNUP` method - -```json title="Method Syntax" -signup [ { NS, DB, SC,...} ] -``` - -### Parameters - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescription
- NS - REQUIRED - - Specifies the namespace of the scope -
- DB - REQUIRED - - Specifies the database of the scope -
- SC - REQUIRED - - Specifies the scope -
- ... - REQUIRED - - Specifies any variables used by the scope's SIGNUP method -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "signup", - "params": [ - { - "NS": "surrealdb", - "DB": "docs", - "SC": "commenter", - - "username": "johndoe", - "password": "SuperStrongPassword!" - } - ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJTdXJyZWFsREIiLCJpYXQiOjE1MTYyMzkwMjIsIm5iZiI6MTUxNjIzOTAyMiwiZXhwIjoxODM2NDM5MDIyLCJOUyI6InRlc3QiLCJEQiI6InRlc3QiLCJTQyI6InVzZXIiLCJJRCI6InVzZXI6dG9iaWUifQ.N22Gp9ze0rdR06McGj1G-h2vu6a6n9IVqUbMFJlOxxA" -} -``` - -
- -## `signin` - -This method allows you to signin a root, NS, DB or SC user against SurrealDB - -```json title="Method Syntax" -signin [ { NS, DB, SC, ... } ] -``` - -### Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescription
- NS - REQUIRED FOR DB & SC - - The namespace to sign in to -
- DB - REQUIRED FOR SC - - The database to sign in to -
- SC - - Specifies the scope -
- user - REQUIRED FOR ROOT, NS & DB - - The username of the database user -
- pass - REQUIRED FOR ROOT, NS & DB - - The password of the database user -
- ... - - Specifies any variables used by the scope's SIGNUP method -
- -### Example with Root user - -```json title="Request" - "id": 1, - "method": "signin", - "params": [ - { - "user": "tobie", - "pass": "3xtr3m3ly-s3cur3-p@ssw0rd" - } - ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": null -} -``` - -### Example with Scope user - -```json title="Request" -{ - "id": 1, - "method": "signin", - "params": [ - { - "NS": "surrealdb", - "DB": "docs", - "SC": "commenter", - - "username": "johndoe", - "password": "SuperStrongPassword!" - } - ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJTdXJyZWFsREIiLCJpYXQiOjE1MTYyMzkwMjIsIm5iZiI6MTUxNjIzOTAyMiwiZXhwIjoxODM2NDM5MDIyLCJOUyI6InRlc3QiLCJEQiI6InRlc3QiLCJTQyI6InVzZXIiLCJJRCI6InVzZXI6dG9iaWUifQ.N22Gp9ze0rdR06McGj1G-h2vu6a6n9IVqUbMFJlOxxA" -} -``` - -
- -## `authenticate` - -This method specifies the namespace and database for the current connection - -```json title="Method Syntax" -authenticate [ token ] -``` - -### Parameters - - - - - - - - - - - - - -
ParameterDescription
- token - REQUIRED - - The token that authenticates the user -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "authenticate", - "params": [ "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJTdXJyZWFsREIiLCJpYXQiOjE1MTYyMzkwMjIsIm5iZiI6MTUxNjIzOTAyMiwiZXhwIjoxODM2NDM5MDIyLCJOUyI6InRlc3QiLCJEQiI6InRlc3QiLCJTQyI6InVzZXIiLCJJRCI6InVzZXI6dG9iaWUifQ.N22Gp9ze0rdR06McGj1G-h2vu6a6n9IVqUbMFJlOxxA" ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": null -} -``` - -
- -## `invalidate` - -This method will invalidate the user's session for the current connection - -```json title="Method Syntax" -invalidate -``` - -### Example usage -```json title="Request" -{ - "id": 1, - "method": "invalidate" -} -``` - -```json title="Response" -{ - "id": 1, - "result": null -} -``` - -
- -## `let` - -This method specifies the namespace and database for the current connection - -```json title="Method Syntax" -let [ name, value ] -``` - -### Parameters - - - - - - - - - - - - - - - - - -
ParameterDescription
- name - REQUIRED - - The name for the variable without a prefixed $ character -
- value - REQUIRED - - The value for the variable -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "let", - "params": [ "website", "https://surrealdb.com/" ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": null -} -``` - -
- -## `unset` - -This method specifies the namespace and database for the current connection - -```json title="Method Syntax" -unset [ name ] -``` - -### Parameters - - - - - - - - - - - - - - - - - -
ParameterDescription
- name - REQUIRED - - The name of the variable without a prefixed $ character -
- value - REQUIRED - - The value for the variable -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "unset", - "params": [ "website" ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": null -} -``` - -
- -## `live` - -```json title="Method Syntax" -live[ table ] -``` - -:::note -INFORMATION: For more advanced live queries where filters are needed, use the Query method to initiate a custom live query. -::: - -### Parameters - - - - - - - - - - - - - - - - - -
ParameterDescription
- table - REQUIRED - - The table to initiate a live query for -
- diff - OPTIONAL - - The value for the variable -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "live", - "params": [ "person" ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": "0189d6e3-8eac-703a-9a48-d9faa78b44b9" -} -``` - -### Live notification -For every creation, update or deletion on the specified table, a live notification will be sent. Live notifications do not have an ID attached, but rather include the Live Query's UUID in the result object. - -```json -{ - "result": { - "action": "CREATE", - "id": "0189d6e3-8eac-703a-9a48-d9faa78b44b9", - "result": { - "id": "person:8s0j0bbm3ngrd5c9bx53", - "name": "John" - } - } -} -``` - - -
- -## `kill` - -This method kills an active live query - -```json title="Method Syntax" -kill [ queryUuid ] -``` - -### Parameters - - - - - - - - - - - - - -
ParameterDescription
- queryUuid - REQUIRED - - The UUID of the live query to kill -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "kill", - "params": [ "0189d6e3-8eac-703a-9a48-d9faa78b44b9" ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": null -} -``` - -
- -## `query` - -This methods sends a custom SurrealQL query - -```json title="Method Syntax" -query [ sql, vars ] -``` - -### Parameters - - - - - - - - - - - - - - - - - -
ParameterDescription
- sql - REQUIRED - - The query to execute against SurrealDB -
- vars - OPTIONAL - - A set of variables used by the query -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "query", - "params": [ - "CREATE person SET name = 'John'; SELECT * FROM type::table($tb);", - { - "tb": "person" - } - ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": [ - { - "status": "OK", - "time": "152.5µs", - "result": [ - { - "id": "person:8s0j0bbm3ngrd5c9bx53", - "name": "John" - } - ] - }, - { - "status": "OK", - "time": "32.375µs", - "result": [ - { - "id": "person:8s0j0bbm3ngrd5c9bx53", - "name": "John" - } - ] - } - ] -} -``` - -
- -## `select` - -This method selects either all records in a table or a single record - -```json title="Method Syntax" -select [ thing ] -``` - -### Parameters - - - - - - - - - - - - - -
ParameterDescription
- thing - REQUIRED - - The thing (Table or Record ID) to select -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "select", - "params": [ "person" ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": [ - { - "id": "person:8s0j0bbm3ngrd5c9bx53", - "name": "John" - } - ] -} -``` - -
- -## `create` - -This method creates a record either with a random or specified ID - -```json title="Method Syntax" -create [ thing, data ] -``` - -### Parameters - - - - - - - - - - - - - - - - - -
ParameterDescription
- thing - REQUIRED - - The thing (Table or Record ID) to create. Passing just a table will result in a randomly generated ID -
- data - OPTIONAL - - The content of the record -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "create", - "params": [ - "person", - { - "name": "Mary Doe" - } - ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": [ - { - "id": "person:s5fa6qp4p8ey9k5j0m9z", - "name": "Mary Doe" - } - ] -} -``` - -
- -## `insert` - -This method creates a record either with a random or specified ID - -```json title="Method Syntax" -insert [ thing, data ] -``` - -### Parameters - - - - - - - - - - - - - - - - - -
ParameterDescription
- thing - REQUIRED - - The table to insert in to -
- data - OPTIONAL - - One or multiple record(s) -
- -### Example usage - -```json title="Request" -{ - "id": 1, - "method": "insert", - "params": [ - "person", - { - "name": "Mary Doe" - } - ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": [ - { - "id": "person:s5fa6qp4p8ey9k5j0m9z", - "name": "Mary Doe" - } - ] -} -``` - -### Bulk insert - -```json title="Request" -{ - "id": 1, - "method": "insert", - "params": [ - "person", - [ - { - "name": "Mary Doe" - }, - { - "name": "John Doe" - } - ] - ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": [ - { - "id": "person:s5fa6qp4p8ey9k5j0m9z", - "name": "Mary Doe" - }, - { - "id": "person:xtbbojcm82a97vus9x0j", - "name": "John Doe" - } - ] -} -``` - -
- -## `update` - -```json title="Method Syntax" -update [ thing, data ] -``` - -:::note - NOTE: This function replaces the current document / record data with the specified data. If no replacement data is passed it will simply trigger an update. -::: - -### Parameters - - - - - - - - - - - - - - - - - -
ParameterDescription
- thing - REQUIRED - - The thing (Table or Record ID) to update -
- data - OPTIONAL - - The content of the record -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "update", - "params": [ - "person:8s0j0bbm3ngrd5c9bx53", - { - "name": "John Doe" - } - ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": { - "id": "person:8s0j0bbm3ngrd5c9bx53", - "name": "John Doe" - } -} -``` - -
- -## `merge` - -This method merges specified data into either all records in a table or a single record - -```json title="Method Syntax" -merge [ thing, data ] -``` - -:::note - NOTE: This function merges the current document / record data with the specified data. If no merge data is passed it will simply trigger an update. -::: - -### Parameters - - - - - - - - - - - - - - - - - -
ParameterDescription
- thing - REQUIRED - - The thing (Table or Record ID) to merge into -
- data - REQUIRED - - The content of the record -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "merge", - "params": [ - "person", - { - "active": true - } - ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": [ - { - "active": true, - "id": "person:8s0j0bbm3ngrd5c9bx53", - "name": "John Doe" - }, - { - "active": true, - "id": "person:s5fa6qp4p8ey9k5j0m9z", - "name": "Mary Doe" - } - ] -} -``` - -
- -## `patch` - -This method patches either all records in a table or a single record with specified patches - -```json title="Method Syntax" -patch [ thing, patches, diff ] -``` - -:::note - NOTE: This function patches the current document / record data with the specified [JSON Patch](https://jsonpatch.com) data. -::: - -### Parameters - - - - - - - - - - - - - - - - - - - - - -
ParameterDescription
- thing - REQUIRED - - The thing (Table or Record ID) to patch -
- patches - REQUIRED - - An array of patches following the [JSON Patch specification](https://jsonpatch.com) -
- diff - OPTIONAL - - A boolean representing if just a diff should be returned. -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "patch", - "params": [ - "person", - [ - { "op": "replace", "path": "/last_updated", "value": "2023-06-16T08:34:25Z" } - ] - ] -} -``` - -```json title="Response" -{ - "id": 1, - "result": [ - [ - { - "op": "add", - "path": "/last_updated", - "value": "2023-06-16T08:34:25Z" - } - ], - [ - { - "op": "add", - "path": "/last_updated", - "value": "2023-06-16T08:34:25Z" - } - ] - ] -} -``` - -
- -## `delete` - -This method deletes either all records in a table or a single record - -```json title="Method Syntax" -delete [ thing ] -``` - -### Parameters - - - - - - - - - - - - - -
ParameterDescription
- thing - REQUIRED - - The thing (Table or Record ID) to delete -
- -### Example usage -```json title="Request" -{ - "id": 1, - "method": "delete", - "params": [ "person:8s0j0bbm3ngrd5c9bx53" ] -} -``` - -Notice how the deleted record is being returned here - -```json title="Response" -{ - "id": 1, - "result": { - "active": true, - "id": "person:8s0j0bbm3ngrd5c9bx53", - "last_updated": "2023-06-16T08:34:25Z", - "name": "John Doe" - } -} -``` diff --git a/versioned_docs/version-1.0.x/intro.mdx b/versioned_docs/version-1.0.x/intro.mdx deleted file mode 100644 index b660bab32..000000000 --- a/versioned_docs/version-1.0.x/intro.mdx +++ /dev/null @@ -1,382 +0,0 @@ ---- -sidebar_position: 1 -pagination_next: null ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; -import SdkContainer from '../../src/components/SDK/sdks_container.mdx'; -import Version from '../../src/components/Version'; -import SDKServerBoxes from '../../src/components/SDK/SDKServerBoxes.mdx'; -import SDKClientBoxes from '../../src/components/SDK/SDKClientBoxes.mdx'; - -# Overview - - - -# SurrealDB Docs - - - -SurrealDB makes building and scaling realtime apps dramatically quicker and easier. Get started by [installing the server](/docs/surrealdb/1.0.x/installation/overview), and jump into our [getting started guide](/docs/surrealdb/1.0.x/introduction/start) to learn how to insert and query data in SurrealDB in minutes. - -To quickly test out SurrealDB and [SurrealQL](/docs/surrealdb/1.0.x/surrealql/overview) functionality, we've included [demo dataset](/docs/surrealdb/1.0.x/surrealql/demo) which you can download and [import ](/docs/surrealdb/1.0.x/cli/import)into your SurrealDB instance. - -The current stable version of SurrealDB is - - -## SDKs - -Connect your application to your database with one of our official SDKs. The following SDKs are officially supported by SurrealDB. They are actively maintained, support new SurrealDB features, and receive bug fixes, performance enhancements, and security patches. - - -, - label: 'Rust', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/integration/sdks/nodejs', - icon: , - label: 'Node.js', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/integration/sdks/python', - icon: , - label: 'Python', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/integration/sdks/golang', - icon: , - icon: , - label: 'Golang', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/integration/sdks/deno', - icon: , - label: 'Deno', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/integration/sdks/dotnet', - icon: , - label: '.NET', - available: true, - }, - { - link: '/docs/surrealdb/1.0.x/integration/sdks/java', - icon: , - label: 'Java', - available: true, - }, - { - icon: , - label: 'C', - available: false, - }, - { - icon: , - label: 'Ruby', - available: false, - }, - { - icon: , - label: 'PHP', - available: false, - }, - { - icon: , - label: 'Swift', - available: false, - }, - { - icon: , - label: 'R', - available: false, - }, - { - icon: , - label: 'Erlang', - available: false, - }, - { - icon: , - label: 'Dart', - available: false, - }, - ]} -/> - -### Client side SDKs - -, - label: 'Javascript', - available: true, - }, - { - icon: , - label: 'Ember.js', - available: false, - }, - { - icon: , - label: 'React.js', - available: false, - }, - { - icon: , - label: 'Angular', - available: false, - }, - { - icon: , - label: 'Vue.js', - available: false, - }, - { - icon: , - label: 'Next.js', - available: false, - }, - { - icon: , - label: 'Nuxt.js', - available: false, - }, - { - icon: , - label: 'Nest.js', - available: false, - }, - { - icon: , - label: 'Svelte', - available: false, - }, - { - icon: , - label: 'Flutter', - available: false, - }, - ]} -/> - - diff --git a/versioned_docs/version-1.0.x/introduction/_category_.json b/versioned_docs/version-1.0.x/introduction/_category_.json deleted file mode 100644 index 73ba2773d..000000000 --- a/versioned_docs/version-1.0.x/introduction/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Introduction", - "position": 2, - "link": { - "label": "introduction", - "path": "/introduction/overview" - } -} diff --git a/versioned_docs/version-1.0.x/introduction/concepts.mdx b/versioned_docs/version-1.0.x/introduction/concepts.mdx deleted file mode 100644 index 4b3e8fc6d..000000000 --- a/versioned_docs/version-1.0.x/introduction/concepts.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Concepts - -# Concepts - -This page aims to give details about some of the core concepts of SurrealDB, including the intended usecases, design choices, and overarching features. - -## Traditional database or backend layer -SurrealDB can be used either as a traditional database platform, with backend languages and frameworks including Golang, Python, Rust, C, Java, .Net, Node.js, and PHP. Alternatively, you can use SurrealDB as a complete backend platform, connecting directly to it from frontend languages and frameworks including JavaScript, [WebAssembly](https://webassembly.org/), [React.js](https://react.dev/), [Next.js](https://nextjs.org/), and [Ember.js](https://emberjs.com/). In this mode, permissions can be defined on a table, record, and field level, allow for granular data access patterns for multiple different types of users. - -## Relational, document, or graph -SurrealDB is, at its core, a document database. Each record is stored on an underlying key-value store storage engine, with the ability to store arbitrary arrays, objects, and many other types of data. However, SurrealDB isn't just a document database. Because of the way that SurrealDB handles Record IDs and the fetching of individual records from the underlying key-value storage engine, it can be used to store time-series ordered data, and highly-connected graph data. With the addition of an SQL-like query language (named [SurrealQL](/docs/surrealdb/surrealql/overview)), it is easy to create, update, and read data from across the database. - -## Single-node or distributed -SurrealDB is designed to be run in many different ways, and environments. Due to the [separation of the storage and compute layers](/docs/surrealdb/introduction/architecture), SurrealDB can be run in embedded mode, as a vertically-scalable, single-node database server, or as a horizontally-scalable, multi-node, distributed cluster. In embedded mode, SurrealDB can be run with an in-memory storage engine, in a web browser it can persist data using [IndexedDB](https://web.dev/indexeddb/), or it can persist data using the file-based [RocksDB](https://rocksdb.org/) storage engine. As a database server, SurrealDB can currently be configured to store data using [RocksDB](https://rocksdb.org/), [TiKV](https://tikv.org/), or [FoundationDB](https://www.foundationdb.org/). - -## System structure -SurrealDB works similarly to other traditional relational databases, and document databases, with a few slight differences. SurrealDB is designed and developed to be a multi-tenant database platform with a high-level [`namespace`](/docs/surrealdb/surrealql/statements/define/namespace) layer designed as a separation for each organisations, department, or development team. There is no limit to the number of namespaces on SurrealDB. Below this, the [`databases`](/docs/surrealdb/surrealql/statements/define/database) layer is similar to databases in other database management systems. There is no limit to the number of databases on each namespace. Within each database, data can be stored within [`table`](/docs/surrealdb/surrealql/statements/define/table) definitions, otherwise known as collections in other database management systems. In SurrealDB each row or document is called a [`records`](/docs/surrealdb/surrealql/datamodel/ids) and columns are called [`fields`](/docs/surrealdb/surrealql/statements/define/field). While you can [`define`](/docs/surrealdb/surrealql/statements/define/overview): - -- [`namespace`](/docs/surrealdb/surrealql/statements/define/namespace) -- [`databases`](/docs/surrealdb/surrealql/statements/define/database) -- [`table`](/docs/surrealdb/surrealql/statements/define/table) -- [`fields`](/docs/surrealdb/surrealql/statements/define/field) - -You cannot define [`records`](/docs/surrealdb/surrealql/datamodel/ids), you can only [create](/docs/surrealdb/surrealql/statements/create), read, [update](/docs/surrealdb/surrealql/statements/update) and [delete](/docs/surrealdb/surrealql/statements/delete) them. - -Multiple authentication `scope` definitions can be defined on each `database`, allowing for custom authentication across tables, records, and fields. diff --git a/versioned_docs/version-1.0.x/introduction/mongo.mdx b/versioned_docs/version-1.0.x/introduction/mongo.mdx deleted file mode 100644 index 4fc679e17..000000000 --- a/versioned_docs/version-1.0.x/introduction/mongo.mdx +++ /dev/null @@ -1,86 +0,0 @@ ---- -sidebar_position: 8 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# SurrealDB for MongoDB developers - - - -# MongoDB to SurrealDB mapping - -Quickly learn how to map your MongoDB knowledge to corresponding SurrealDB concepts and syntax. - - -## Introduction -As a multi-model database, SurrealDB offers a lot of flexibility. Our SQL-like query language SurrealQL is a good example of this, where we often have more than one way to achieve the same result, depending on developer preference. In this mapping guide, we will focus on the syntax that most closely resembles the MongoDB query language (MQL). - -## Concepts mapping -For more in-depth explanations of SurrealDB concepts, see the [concepts page](/docs/surrealdb/introduction/concepts). - -| MongoDB | SurrealDB | -|--------------------------|----------------------------------------------| -| database | database | -| collection | table | -| document | record | -| field | field | -| index | index | -| Objectid | record id | -| transactions | transactions | -| reference and embedding | record links ,embedding and graph relations | -| | | - -## Syntax mapping -Let's get you up to speed with SurrealQL syntax with some CRUD examples. - -### Create -As MongoDB is schemaless, only the SurrealQL schemaless approach is shown below. For a schemafull option see the [define table](/docs/surrealdb/surrealql/statements/define/table) page. - -For more SurrealQL examples, see the [create](/docs/surrealdb/surrealql/statements/create) and [insert](/docs/surrealdb/surrealql/statements/insert) pages. - -| MQL | SurrealQL | -|---------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------| -| db.createCollection("person") | CREATE person | -| db.person.insertMany([ {name: "John"}, {name: "Jane"}, ]) | INSERT INTO person [ {name: "John"}, {name: "Jane"} ] | -| db.person.createIndex({name: 1}) | DEFINE INDEX idx_name ON TABLE person COLUMNS name | - -### Read -For more SurrealQL examples, see the [select](/docs/surrealdb/surrealql/statements/select), [live select](/docs/surrealdb/surrealql/statements/live-select) and [return](https://surrealdb.com/docs/surrealql/statements/return) pages. - -| MQL | SurrealQL | -|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------| -| db.person.find() | SELECT * FROM person | -| db.person.find( {}, {_id: 0, name: 1} ) | SELECT name FROM person | -| db.person.find( {name: "Jane"}, {_id: 0, name: 1} ) | SELECT name FROM person WHERE name = "Jane" | -| db.person.find( {name: "Jane"}, {_id: 0, name: 1} ).explain() | SELECT name FROM person WHERE name = "Jane" EXPLAIN | -| db.person.aggregate([ { $count: "personCount" } ]) | SELECT count() AS person_count FROM person GROUP ALL | -| db.person.aggregate([ { $group: { _id : "$name" } } ]) | SELECT array::distinct(name) FROM person GROUP ALL | -| db.person.find().limit(10) | SELECT * FROM person LIMIT 10 | -| db.review.aggregate([{ "$lookup": { "from": "person", "localField": "person", "foreignField": "_id", "as": "person_detail" } }]) | SELECT *, person.name as reviewer FROM review | - -### Update -For more SurrealQL examples, see the [update](/docs/surrealdb/surrealql/statements/update) page. - -| MQL | SurrealQL | -|----------------------------------------------------------------------------------|---------------------------------------------------------| -| db.person.updateMany( { name: "Jane" }, { $set: { last_name: "Doe" } } ) | UPDATE person SET last_name = "Doe" WHERE name = "Jane" | -| db.person.updateMany( { name: "Jane" }, { $unset: { last_name: 1 } } ) | UPDATE person UNSET last_name WHERE name = "Jane" | - -### Delete -For more SurrealQL examples, see the [delete](/docs/surrealdb/surrealql/statements/delete) and [remove](/docs/surrealdb/surrealql/statements/remove) pages. - -| MQL | SurrealQL | -|----------------------------------------------|-----------------------------------| -| db.person.deleteMany( { name: "Jane" } ) | DELETE person WHERE name = "Jane" | -| db.person.deleteMany({}) | DELETE person | -| db.person.drop() | REMOVE TABLE person | \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/introduction/neo4j.mdx b/versioned_docs/version-1.0.x/introduction/neo4j.mdx deleted file mode 100644 index e18aae853..000000000 --- a/versioned_docs/version-1.0.x/introduction/neo4j.mdx +++ /dev/null @@ -1,86 +0,0 @@ ---- -sidebar_position: 10 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# SurrealDB for Neo4j developers - - - -# Neo4j to SurrealDB mapping - -Quickly learn how to map your Neo4j knowledge to corresponding SurrealDB concepts and syntax. - -## Introduction -As a multi-model database, SurrealDB offers a lot of flexibility. Our SQL-like query language SurrealQL is a good example of this, where we often have more than one way to achieve the same result, depending on developer preference. In this mapping guide, we will focus on the syntax that most closely resembles the Cypher query language. - -## Concepts mapping -For more in-depth explanations of SurrealDB concepts, see the [concepts page](/docs/surrealdb/introduction/concepts). - -| Neo4j | SurrealDB | -|---------------|---------------------------------------------| -| database | database | -| node label | table | -| node | record | -| node property | field | -| index | index | -| id | record id | -| transaction | transaction | -| relationships | record links, embedding and graph relations | - -## Syntax mapping -Let's get you up to speed with SurrealQL syntax with some CRUD examples. - -### Create -As Neo4j is schemafull, only the SurrealQL schemafull approach is shown below. For a schemafull option see the [define table](/docs/surrealdb/surrealql/statements/define/table) page. - -For more SurrealQL examples, see the [create](/docs/surrealdb/surrealql/statements/create), [insert](/docs/surrealdb/surrealql/statements/insert) and [relate](/docs/surrealdb/surrealql/statements/relate) pages. - -| Cypher | SurrealQL | -|----------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| CREATE (John:Person {name:'John'}), (Jane:Person {name: 'Jane'}) | INSERT INTO person [ {id: "John", name: "John"}, {id: "Jane", name: "Jane"} ] Table implicitly created if it doesn't exist | -| MATCH (p:Person {name:'Jane'}), (pr:Product {name:'iPhone'}) CREATE (p)-[:ORDER]->(pr) | RELATE person:Jane -> order -> product:iPhone There are many differences between how SurrealDB and Neo4j do graph relations. Check out the relate docs for more. | -| CREATE INDEX personNameIndex FOR (p:Person) ON (p.name) | DEFINE INDEX idx_name ON TABLE person COLUMNS name | - -### Read -For more SurrealQL examples, see the [select](/docs/surrealdb/surrealql/statements/select), [live select](/docs/surrealdb/surrealql/statements/live-select) and [return](https://surrealdb.com/docs/surrealql/statements/return) pages. - -| Cypher | SurrealQL | -|----------------------------------------------------------------|------------------------------------------------------| -| MATCH (p:Person) RETURN p | SELECT * FROM person | -| MATCH (p:Person) RETURN p.name | SELECT name FROM person | -| MATCH (p:Person) WHERE p.name = "Jane" RETURN p.name | SELECT name FROM person WHERE name = "Jane" | -| EXPLAIN MATCH (p:Person) WHERE p.name = "Jane" RETURN p.name | SELECT name FROM person WHERE name = "Jane" EXPLAIN | -| MATCH (p:Person) RETURN count(*) as person_count | SELECT count() AS person_count FROM person GROUP ALL | -| MATCH (p:Person) RETURN distinct p.name | SELECT array::distinct(name) FROM person GROUP ALL | -| MATCH (p:Person) RETURN p LIMIT 10 | SELECT * FROM person LIMIT 10 | -| MATCH (p:Person)-[:ORDER]->(pr:Product) RETURN p.name, pr.name | SELECT name, ->order->product.name FROM person | - - -### Update -For more SurrealQL examples, see the [update](/docs/surrealdb/surrealql/statements/update) page. - -| Cypher | SurrealQL | -|----------------------------------------------------------------------------|---------------------------------------------------------| -| MATCH (p:Person) WHERE p.name = "Jane" SET p.last_name = 'Doe' RETURN p | UPDATE person SET last_name = "Doe" WHERE name = "Jane" | -| MATCH (p:Person) WHERE p.name = "Jane" REMOVE p.last_name RETURN p | UPDATE person UNSET last_name WHERE name = "Jane" | -| MATCH (p:Person) WHERE p.name = "Jane" RETURN p.name | SELECT name FROM person WHERE name = "Jane" | - -### Delete -For more SurrealQL examples, see the [delete](/docs/surrealdb/surrealql/statements/delete) and [remove](/docs/surrealdb/surrealql/statements/remove) pages. - -| Cypher | SurrealQL | -|---------------------------------------------------|---------------------------------------------------------| -| MATCH (p:Person) WHERE p.name = "Jane" DELETE p | DELETE person WHERE name = "Jane" | -| MATCH (p:Person) DELETE p | DELETE person Node/Table still exists here but is empty | -| MATCH (p:Person) DELETE p | REMOVE TABLE person Node/Table no longer exists | \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/introduction/overview.mdx b/versioned_docs/version-1.0.x/introduction/overview.mdx deleted file mode 100644 index 59dff1267..000000000 --- a/versioned_docs/version-1.0.x/introduction/overview.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -sidebar_position: 2 -pagination_prev: null ---- - -# Overview - -# Introduction - -The purpose of this document is to provide you with a comprehensive understanding of SurrealDB. Whether you are a beginner getting started with SurrealDB or an experienced user looking for specific information, this overview will serve as a valuable resource. - -Throughout this document, you will explore the core concepts that form the foundation of SurrealDB. You will also learn about the various features that are built into SurrealDB, as well as upcoming features that are planned for future releases. - -## Getting Started - -Before we delve into the features and functionalities of SurrealDB, it's important to grasp the core concepts that underpin this powerful database solution. In the next section, we will explore these core concepts in our getting started guide. diff --git a/versioned_docs/version-1.0.x/introduction/sql.mdx b/versioned_docs/version-1.0.x/introduction/sql.mdx deleted file mode 100644 index 976501a64..000000000 --- a/versioned_docs/version-1.0.x/introduction/sql.mdx +++ /dev/null @@ -1,72 +0,0 @@ ---- -sidebar_position: 9 ---- - -# SurrealDB for SQL developers - -# SQL to SurrealDB mapping - -Quickly learn how to map your SQL knowledge to corresponding SurrealDB concepts and syntax. - -## Introduction -As a multi-model database, SurrealDB offers a lot of flexibility. Our SQL-like query language SurrealQL is a good example of this, where we often have more than one way to achieve the same result, depending on developer preference. In this mapping guide, we will focus on the syntax that most closely resembles the ANSI Structured Query Language (SQL). - -## Concepts mapping -For more in-depth explanations of SurrealDB concepts, see the [concepts page](/docs/surrealdb/introduction/concepts). - -| Relational databases | SurrealDB | -|----------------------|---------------------------------------------| -| database | database | -| table | table | -| row | record | -| column | field | -| index | index | -| primary key | record id | -| transaction | transaction | -| join | record links, embedding and graph relations | - -## Syntax mapping -Let's get you up to speed with SurrealQL syntax with some CRUD examples. - -### Create -As relational databases are schemafull, only the SurrealQL schemafull approach is shown below. For a schemafull option see the [define table](/docs/surrealdb/surrealql/statements/define/table) page. - -For more SurrealQL examples, see the [create](/docs/surrealdb/surrealql/statements/create) and [insert](/docs/surrealdb/surrealql/statements/insert) pages. - -| SQL | SurrealQL | -|----------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------| -| CREATE TABLE person ( person_id SERIAL PRIMARY KEY, name varchar(255) ) // SERIAL is PosgresSQL syntax | DEFINE TABLE person SCHEMAFULL; DEFINE FIELD name ON TABLE person TYPE string; // record id field is defined by default | -| INSERT INTO person (name) VALUES ('John'), ('Jane') | INSERT INTO person (name) VALUES ('John'), ('Jane') | -| CREATE INDEX idx_name ON person (name) | DEFINE INDEX idx_name ON TABLE person COLUMNS name | - -### Read -For more SurrealQL examples, see the [select](/docs/surrealdb/surrealql/statements/select), [live select](/docs/surrealdb/surrealql/statements/live-select) and [return](/docs/surrealdb/surrealql/statements/return) pages. - -| SQL | SurrealQL | -|----------------------------------------------------------------------------------------------|------------------------------------------------------| -| SELECT * FROM person | SELECT * FROM person | -| SELECT name FROM person | SELECT name FROM person | -| SELECT name FROM person WHERE name = "Jane" | SELECT name FROM person WHERE name = "Jane" | -| EXPLAIN SELECT name FROM person WHERE name = "Jane" | SELECT name FROM person WHERE name = "Jane" EXPLAIN | -| SELECT count(*) AS person_count FROM person | SELECT count() AS person_count FROM person GROUP ALL | -| SELECT DISTINCT name FROM person | SELECT array::distinct(name) FROM person GROUP ALL | -| SELECT * FROM person LIMIT 10 | SELECT * FROM person LIMIT 10 | -| SELECT review.*, person.name as reviewer FROM review INNER JOIN review.person_id = person.id | SELECT *, person.name as reviewer FROM review | - -### Update -For more SurrealQL examples, see the [update](/docs/surrealdb/surrealql/statements/update) page. - -| SQL | SurrealQL | -|---------------------------------------------------------|---------------------------------------------------------| -| ALTER TABLE person ADD last_name varchar(255) | DEFINE FIELD last_name ON TABLE person TYPE string | -| UPDATE person SET last_name = "Doe" WHERE name = "Jane" | UPDATE person SET last_name = "Doe" WHERE name = "Jane" | -| ALTER TABLE person DROP COLUMN last_name | REMOVE FIELD last_name ON TABLE person | - -### Delete -For more SurrealQL examples, see the [delete](/docs/surrealdb/surrealql/statements/delete) and [remove](/docs/surrealdb/surrealql/statements/remove) pages. - -| SQL | SurrealQL | -|----------------------------------------|-----------------------------------| -| DELETE FROM person WHERE name = "Jane" | DELETE person WHERE name = "Jane" | -| DELETE FROM person | DELETE person | -| DROP TABLE person | REMOVE TABLE person | \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/introduction/start.mdx b/versioned_docs/version-1.0.x/introduction/start.mdx deleted file mode 100644 index a8c585e64..000000000 --- a/versioned_docs/version-1.0.x/introduction/start.mdx +++ /dev/null @@ -1,163 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Getting started - -# Getting started - -In this guide, we will walk you through installing SurrealDB on your machine, defining your schema, and writing some queries with SurrealQL. - -:::note - -**BEFORE YOU START :** Make sure you’ve [installed SurrealDB](/docs/surrealdb/1.0.x/installation/overview/) — it should only take a second! - -::: - -## Start the database - -First ensure that your database is set up correctly. To do so, run: - -```bash -surreal version -``` - -To start your database, run the start command specific to your machine. - -### macOS or Linux - -```bash -surreal start memory -A --auth --user root --pass root -``` - -### Windows - -```shell -surreal.exe start memory -A --auth --user root --pass root -``` - -Here's what each segment of this command does: - -- `surreal start`: This initiates the process of starting the SurrealDB database server. -- `-A`: Enable all capabilities. -- `--auth`: Enable authentication for the database. -- `--user root --pass root`: These flags set the initial username and password to access the database. Here both are set as root. Once the initial credentials are created, they are persisted in the datastore, which means you don't have to include the command line arguments next time you start SurrealDB. Instead, they should be securely stored in environment variables or some form of secret management system. -- `memory`: This argument indicates that the database should be run in memory. Databases run in memory can have quicker data access times because they're not reading and writing from disk, but the data will be lost when the server is restarted. - -## Using SurrealQL - -Using SurrealQL, you can query data from your SurrealDB database. While this is not a requirement for getting started, it is helpful to familiarise yourself with some commands. - -Once you have your database running, head over to [Surrealist](https://Surrealist.app). Before you can start using Surrealist you will have to input the credentials for your session, which include the `Endpoint URL`, `Namespace`, `Database`, `Username`, and `Password`. By default these fields are empty and you can set them to the values below. However, these values can be set to your preference. - -```js -EndpointURL: 'http://127.0.0.1:8000/' -Namespace: 'test', -Database: 'test', -Username: 'root', -Password: 'root', -``` - -> _Note_: Surrealist is a third-party web-based SurrealQL client that allows you to run queries against your SurrealDB, built and maintained by StarlaneStudios! - -### [`CREATE`](/docs/surrealdb/1.0.x/surrealql/statements/create) - -The [create statement](/docs/surrealdb/1.0.x/surrealql/statements/create) is used to add records to the database. - -```surql -CREATE account SET - name = 'ACME Inc', - created_at = time::now() -; -``` - -The `account` record will be created, and a random ID has been generated for this record. - -In SurrealDB, every record can be created and accessed directly by its ID. In the following query, we will create a record, but will use a specific ID. - -```surql -CREATE author:john SET - name.first = 'John', - name.last = 'Adams', - name.full = string::join(' ', name.first, name.last), - age = 29, - admin = true, - signup_at = time::now() -; -``` - -You can also link records to each other by creating a mutual record, for example, create a blog article record, which links to the author and account tables. In the following example we link to the author record directly by its ID, and we link to the account record with a subquery which searches using the `name` field. - -Let's now create a blog article record, which links to the `author` and `account` tables. In the following example we link to the author record directly by its ID, and we link to the account record with a subquery which gives us the ID for ACME Inc. - -```surql -CREATE article SET - created_at = time::now(), - author = author:john, - title = 'Lorem ipsum dolor', - text = 'Donec eleifend, nunc vitae commodo accumsan, mauris est fringilla.', - account = (SELECT VALUE id FROM account WHERE name = 'ACME Inc' LIMIT 1)[0] -; -``` - -### Querying data with [`SELECT`](/docs/surrealdb/1.0.x/surrealql/statements/select) - -The querying functionality in SurrealDB works similarly to a traditional SQL, but with many of the added benefits of NoSQL query languages. To retrieve data, we will use a [`SELECT` statement](/docs/surrealdb/1.0.x/surrealql/statements/select). You can query all the articles in your records and this will also return the record links. - -```surql -SELECT * FROM article; -``` - -Also, in SurrealDB we can retrieve data from multiple different tables or records at once. In the example below we'll retrieve data from both the `article` and the `account` table in one query. - -```surql -SELECT * FROM article, account; -``` - -Also, instead of pulling data from multiple tables and merging that data together, SurrealDB allows you to traverse related records efficiently without needing to use JOINs. In the following example, we will get all the articles where the author is younger than 30. In order to get the information for the author age for our filter condition we need to fetch the relevant records from the author table. - -```surql -SELECT * FROM article WHERE author.age < 30 FETCH author, account; -``` - -### [`UPDATE`](/docs/surrealdb/1.0.x/surrealql/statements/update) - -Similar to [UPDATE](/docs/surrealdb/1.0.x/surrealql/statements/update) in SQL you can also update specific IDs, for example say you wanted to update the first name of the author you can do so: - -```surql -UPDATE author:john SET name.first = 'David', name.full = string::join(' ', name.first, name.last); -``` - -The above code will update the firstname to be David and then create a new string for fullname with the updated first and last name. - -You can also update specific fields: - -```surql -UPDATE author:john SET admin = false WHERE name.last = 'Adams'; -``` - -### [`DELETE`](/docs/surrealdb/1.0.x/surrealql/statements/delete) - -You can also delete specific records from the recordID `DELETE author:john` with the [DELETE statement](/docs/surrealdb/1.0.x/surrealql/statements/delete) or, you could delete a record with specific conditions: - -```surql -DELETE article WHERE author.name.first = 'David'; -``` - -### [`REMOVE`](/docs/surrealdb/1.0.x/surrealql/statements/remove) - -You can also remove a specific table using the `REMOVE TABLE`: - -```surql -REMOVE TABLE author -``` - -```surql -REMOVE TABLE article -``` - -Congratulations, you’re now on your way to database and API simplicity! For the next steps, take a look at some of our in-depth guides to see some of the other advanced functionality that you can use in SurrealDB. - -## Learn more - -By completing this guide you have successfully set up a SurrealDB database and ran some SurrealQL queries. To learn more about [SurrealQL, refer to the SurrealQL guides](https://surrealdb.com/docs/1.0.x/surrealql). diff --git a/versioned_docs/version-1.0.x/reference-guide/_category_.json b/versioned_docs/version-1.0.x/reference-guide/_category_.json deleted file mode 100644 index a3b230a57..000000000 --- a/versioned_docs/version-1.0.x/reference-guide/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Reference Guides", - "position": 10 - } \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/reference-guide/full-text-search.mdx b/versioned_docs/version-1.0.x/reference-guide/full-text-search.mdx deleted file mode 100644 index e5a06538c..000000000 --- a/versioned_docs/version-1.0.x/reference-guide/full-text-search.mdx +++ /dev/null @@ -1,102 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Full-Text Search - -# Full-Text Search - - -Full-Text search is a feature that allows search capabilities within a database. This feature can be customized with specific analyzers and tokenizers to refine the search process. - -In SurrealDB, Full-Text Search supports advanced features like basic and advanced text matching, proximity searches, result ranking, and keyword highlighting⁠. - -Full-Text Search in SurrealDB is [ACID-compliant](https://en.wikipedia.org/wiki/ACID), which ensures data integrity and reliability.⁠ - -## Core Concepts and Definitions -In order to perform Full-Text Search on textual data within SurrealDB, we leverage analyzers, tokenizers, indexes and filters to optimize the search precision. -We also use different search functions to highlight keywords and improve their relevance. - -## Analyzers - -[Analyzers](/docs/surrealdb/1.0.x/surrealql/statements/define/analyzer) are configurations that use tokenizers or filters to prepare text data for searching. - -They are foundational to how text is processed in Full-Text Search. It is defined by its name, a set of tokenizers, and a collection of filters. - -## Tokenizers - -[Tokenizers](/docs/surrealdb/1.0.x/surrealql/statements/define/analyzer/#tokenizers) break down text into manageable tokens based on specified rules like spaces or punctuation. -If we tokenize the sentence '*Getting started with SurrealDB*' based on space, it would be broken down into tokens: `Getting`, `started`, `with`, `SurrealDB`. - -```surql --- Defining a tokenizer that splits text into words based on spaces -DEFINE ANALYZER space_tokenizer TOKENIZERS blank; - -``` - -## Filters - -[Filters](/docs/surrealdb/1.0.x/surrealql/statements/define/analyzer/#filters) process tokens for further refinement, such as converting to lowercase, removing special characters or breaking down tokens into useful prefixes to prepare for more effective searching. - -```surql --- Combining tokenizers and filters into a custom analyzer -DEFINE ANALYZER custom_analyzer TOKENIZERS blank FILTERS lowercase, snowball(english); - -``` - -## Define a Full-Text Index - -Your text field won't be "full text searchable" unless you define a [full-text index](/docs/surrealdb/1.0.x/surrealql/statements/define/indexes/) using the search keyword. - -Depending on the use case, each field can be associated with a different analyser. - -```surql --- Defining two full-text indexes on the 'title' and 'content' field of the 'book' table -DEFINE INDEX book_title ON book FIELDS title SEARCH ANALYZER custom_analyzer BM25; -DEFINE INDEX book_content ON book FIELDS content SEARCH ANALYZER custom_analyzer BM25; -``` - -## The MATCHES Operator - -The [MATCHES](/docs/surrealdb/1.0.x/surrealql/operators#matches)  operator (@@) is used in queries to find documents that contain the given keywords based on the full-text indexes. - -```surql --- Using the MATCHES (@@) operator in a query -SELECT * FROM book WHERE content @@ 'tools'; - -``` - -## Highlighting - -The [`search::highlight`](/docs/surrealdb/1.0.x/surrealql/functions/search/#searchhighlight) highlights the matching keywords for the predicate reference number. - -```surql --- Using search::highlight('', '', content) to highlight search terms -SELECT title, search::highlight('', '', content) AS highlighted_content -FROM book WHERE content @@ 'Linux'; -``` - -The [`search::offsets`](/docs/surrealdb/1.0.x/surrealql/functions/search/#searchoffsets) returns the position of the matching keywords for the predicate reference number. - -```surql -SELECT title, search::offsets(1) AS title_offsets -FROM book WHERE title @1@ 'linux'; -``` - -## Scoring and Ranking Search Results - -The [`search::score`](/docs/surrealdb/1.0.x/surrealql/functions/search/#searchscore) helps with scoring and ranking the search results based on their relevance to the search terms. - -The relevance score is a decimal number typically ranging from 0 to 1, where a score closer to 1 indicates a higher relevance of the search result to the query terms, and a score closer to 0 indicates lower relevance. This score helps in sorting or filtering results based on how closely they match the user's search intent - -```surql --- Ordering search results by relevance score, where the title should be more relevant than content -SELECT title, search::score(0) * 2 + search::score(1) * 1 AS relevance -FROM book WHERE title @0@ 'linux' AND content @1@ 'ubuntu' -ORDER BY relevance DESC; -LIMIT 10; -``` - -The `search::score(0)` retrieves the relevance score for the `title` field, and `search::score(1)` does the same for the `content` field. - -Results are ordered by the calculated score in descending order (`ORDER BY score DESC`), prioritizing books with higher scores, and we limit the results to the top 10 (`LIMIT 10`) relevant books. diff --git a/versioned_docs/version-1.0.x/reference-guide/overview.mdx b/versioned_docs/version-1.0.x/reference-guide/overview.mdx deleted file mode 100644 index 29e07a707..000000000 --- a/versioned_docs/version-1.0.x/reference-guide/overview.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -sidebar_position: 1 -title: Overview ---- - -# Reference Guides - -# Reference Guides - -In this section, you will find reference guides for SurrealDB and its features. - -## Introduction - -The purpose of this section is to help you connect the dots between different concepts explained in the documentation. -It will help you understand how different features and concepts are related to each other and how you can use them together to build powerful applications. - - -If you are new to SurrealDB, we recommend that you start with the [Getting Started](/docs/surrealdb/1.0.x/introduction/start) section of the documentation or the [SurrealQL](/docs/surrealdb/1.0.x/surrealql/overview). -This section will provide you with a solid foundation of the core concepts and features of SurrealDB. - -## Reference Guides - -Within this section, you will find a collection of "Reference" guides that cover a wide range of topics related to SurrealDB. -These guides will help you dig deeper into some of the core concepts and features of SurrealDB. -To get started, select a guide from the sidebar or use the search functionality to find a specific topic of interest. - -- [Full-Text Search](/docs/surrealdb/1.0.x/reference-guide/full-text-search) \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/security/_category_.json b/versioned_docs/version-1.0.x/security/_category_.json deleted file mode 100644 index 43671d7dd..000000000 --- a/versioned_docs/version-1.0.x/security/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Security", - "position": 6 -} \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/security/authentication.mdx b/versioned_docs/version-1.0.x/security/authentication.mdx deleted file mode 100644 index 6e668d4c8..000000000 --- a/versioned_docs/version-1.0.x/security/authentication.mdx +++ /dev/null @@ -1,231 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Authentication - -# Authentication - -There are multiple forms of authentication built into SurrealDB, supporting different use cases: - -- [System users](/docs/surrealdb/security/authentication#system-users): Created by the SurrealDB administrator and used for managing and consuming the database -- [Scope users](/docs/surrealdb/security/authentication#scope-users): Used for consuming the database, and they allow custom signup, signin and permissions logic - -## System users -System users is the term we use to describe users defined directly on SurrealDB by the administrator. Same concept as any other database. - -Users may belong to different levels (root, namespace or database) and have different roles assigned to limit what they can do to the system. Users are defined with the [DEFINE USER](/docs/surrealdb/surrealql/statements/define/user) statement. - -SurrealDB implements RBAC (Role Based Access Control) to define what a user can do. Each user is assigned one or more roles (currently limited to the built-in `OWNER`, `EDITOR` and `VIEWER` roles). - -Go to [DEFINE USER](/docs/surrealdb/surrealql/statements/define/user) for more information. - -### Example: Define a Root-level user -Root-level users have visibility into all namespaces and databases, which means that their permissions apply to all of those levels. - -In this example we will create a root-level user `john` with a password and the `OWNER` role: - -```surql -DEFINE USER john ON ROOT PASSWORD "VerySecurePassword!" ROLES OWNER; -``` - -### Sign in using the new user -Examples using the JavaScript SDK or a raw HTTP request. - -#### JavaScript SDK - -```javascript -const db = new Surreal(); -db.connect('ws://localhost:8000/rpc', { - ns: 'test', - db: 'test', -}); - -db.signin({ - user: 'john', - pass: 'VerySecurePassword!', -}); -``` - -#### HTTP Request - -```bash -curl -X POST \ - -H "Accept: application/json" \ - -d '{"user":"john", "pass":"VerySecurePassword!"}' \ - http://localhost:8000/signin -``` - - -### Example: Define a Database-level user -Database-level users have visibility into all resources that belong to the database where the user is defined. - -In this example we will create a database-level user `mary` with a password and the `EDITOR` role: - -```surql -DEFINE USER mary ON DATABASE PASSWORD "VerySecurePassword!" ROLES EDITOR; -``` - -### Sign in using the new user -Examples using the JavaScript SDK or a raw HTTP request. - -Notice how we need to pass along `NS` and `DB` properties here, to let SurrealDB know where the user is defined. - -#### JavaScript SDK -```javascript -const db = new Surreal(); -db.connect('ws://localhost:8000/rpc', { - ns: 'test', - db: 'test', -}); - -db.signin({ - // Because we are signin in a database user, we need to let SurrealDB know on which database this user is located. - NS: 'test', - DB: 'test', - - user: 'mary', - pass: 'VerySecurePassword!', -}); -``` -#### HTTP Request - -```bash -curl -X POST \ - -H "Accept: application/json" \ - -d '{"NS":"test", "DB":"test", "user":"mary", "pass":"VerySecurePassword!"}' \ - http://localhost:8000/signin -``` - -## Scope users -Scope is the term we use to describe the mechanism SurrealDB offers to define your own signin and signup logic. This feature contributes to making SurrealDB an all-in-one BaaS (Backend-as-a-Service). - -Scopes are defined with the [DEFINE SCOPE](/docs/surrealdb/surrealql/statements/define/scope) statement. A scope is configured with the following config: - -- `SIGNUP`: Defines the logic for when a user signs up to the scope. It usually creates a new entry to a table -- `SIGNIN`: Defines the logic for when a user signs in to the scope. It usually check the provided credentials against the data in a table -- `SESSION`: Defines the session duration - -By default, scopes have no permissions. They don't use the RBAC system and can only view data if allowed by a `PERMISSIONS` clause, which is defined on every data resource (i.e. tables) - -Go to [DEFINE SCOPE](/docs/surrealdb/surrealql/statements/define/scope) for more information. - -### Example: Setup scope authentication - -We will go over one of the many ways you can set up scope authentication. Given you can define your own logic, there is not a single way to do it. Feel free to modify where needed! - -#### Define the User table and fields -Typically, you would define a user table where new records are created every time a user signs up. - -In the following code snippet we will define the `user` table and a few `fields` that enforce the following: - -- An authenticated user can select, update and delete its own user record. -- Asserts that the email provided by the user is actually an email address. -- Forbid users to use an email that is already in use by another user. We do this by creating a unique index for the email field. - -```surql title="Define tables and fields" -DEFINE TABLE user SCHEMAFULL - PERMISSIONS - FOR select, update, delete WHERE id = $auth.id; - -DEFINE FIELD name ON user TYPE string; -DEFINE FIELD email ON user TYPE string ASSERT string::is::email($value); -DEFINE FIELD password ON user TYPE string; - -DEFINE INDEX email ON user FIELDS email UNIQUE; -``` - -##### Define the User scope - -Define the `user` scope: allow users to signin and signup by using the table and fields defined in the previous step - -The scope is configured like this: - -- Session tokens expire in 1 day. When a user signs up or signs in, a new session token is created. -- The sign in logic needs the `email` and `password` parameters to be provided by the user. In the scope logic, we use them as `$email` and `$password` -- The sign up logic needs the `name`, `email` and `password` parameters to be provided by the user. In the scope logic, we can use them as `$name`, `$email` and `$password` - -```surql title="Scope definition" -DEFINE SCOPE user SESSION 1d - SIGNIN ( - SELECT * FROM user WHERE email = $email AND crypto::argon2::compare(password, $password) - ) - SIGNUP ( - CREATE user CONTENT { - name: $name, - email: $email, - password: crypto::argon2::generate($password) - } - ); -``` - -### Sign up to the scope -Now that the scope is defined, we can start using it. - -Examples using the JavaScript SDK or a raw HTTP request. - -#### JavaScript SDK - -```js -const db = new Surreal(); -db.connect('ws://localhost:8000/rpc', { - ns: 'test', - db: 'test', -}); - -db.signup({ - NS: 'test', - DB: 'test', - - // Provide the name of the scope - SC: 'user', - - // Provide the variables used by the signup query - name: 'John Doe', - email: 'john@doe.org', - password: 'VerySecurePassword!', -}); -``` -#### HTTP Request -```bash -curl -X POST \ - -H "Accept: application/json" \ - -d '{"NS":"test", "DB":"test", "SC":"user", "name":"John Doe", "email":"john@doe.org", "password":"VerySecurePassword!"}' \ - http://localhost:8000/signup -``` - -### Sign in to the scope -Once a user has signed up, it can now sign in when needed. - -Examples using the JavaScript SDK or a raw HTTP request. - -#### JavaScript SDK - -```js -const db = new Surreal(); -db.connect('ws://localhost:8000/rpc', { - ns: 'test', - db: 'test', -}); - -db.signin({ - NS: 'test', - DB: 'test', - - // Provide the name of the scope - SC: 'user', - - // Provide the variables used by the signin query - email: 'john@doe.org', - password: 'VerySecurePassword!', -}); -``` - -#### HTTP Request - -```bash -curl -X POST \ - -H "Accept: application/json" \ - -d '{"NS":"test", "DB":"test", "SC":"user", "email":"john@doe.org", "password":"VerySecurePassword!"}' \ - http://localhost:8000/signin -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/security/overview.mdx b/versioned_docs/version-1.0.x/security/overview.mdx deleted file mode 100644 index 7a31c0349..000000000 --- a/versioned_docs/version-1.0.x/security/overview.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Overview - -# Overview - -Welcome to the Security section of the SurrealDB documentation! In this section, you will explore the robust security features and best practices that SurrealDB offers to protect your data and ensure the integrity of your applications. - - - -The security of your data is of utmost importance, and SurrealDB provides a comprehensive set of security features to safeguard your information. This section will guide you through the various security measures and best practices that you can implement when working with SurrealDB. - -## Authentication and Authorization - -SurrealDB supports various authentication mechanisms, allowing you to control access to your databases and resources. You will learn how to set up user authentication, manage roles and permissions, and implement secure access controls to protect sensitive data. - -## Best Practices - -In addition to the built-in security features, this section will provide you with best practices and guidelines to enhance the security of your SurrealDB deployments. You will learn about secure coding practices, network security considerations, and data protection strategies. - -By following the security recommendations and implementing the suggested measures, you can ensure that your SurrealDB-powered applications are protected against potential threats and vulnerabilities. - -Let's dive into the Security section and explore the robust security features that SurrealDB offers! \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/_category_.json b/versioned_docs/version-1.0.x/surrealql/_category_.json deleted file mode 100644 index 83bb82343..000000000 --- a/versioned_docs/version-1.0.x/surrealql/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "SurrealQL", - "position": 5 -} diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/_category_.json b/versioned_docs/version-1.0.x/surrealql/datamodel/_category_.json deleted file mode 100644 index cc493faa2..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Data Model", - "position": 3 -} diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/arrays.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/arrays.mdx deleted file mode 100644 index 9163dca15..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/arrays.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Arrays - -# Arrays - -Similar to Object-based Record IDs, records in SurrealDB can store arrays of values, with no limit to the depth of the arrays. Arrays can store any value stored within them, and can store different value types within the same array. - -```surql -CREATE person SET results = [ - { score: 76, date: "2017-06-18T08:00:00Z", name: "Algorithmics" }, - { score: 83, date: "2018-03-21T08:00:00Z", name: "Concurrent Programming" }, - { score: 69, date: "2018-09-17T08:00:00Z", name: "Advanced Computer Science 101" }, - { score: 73, date: "2019-04-20T08:00:00Z", name: "Distributed Databases" }, -]; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/casting.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/casting.mdx deleted file mode 100644 index 25b3e3adb..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/casting.mdx +++ /dev/null @@ -1,196 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Casting - -# Casting - -In the SurrealDB type system, values can be converted to other values efficiently. This is useful if input is specified in a query which must be of a certain type, or if a user has provided a parameter with an incorrect type. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
<bool>Casts the subsequent value into a boolean
<int>Casts the subsequent value into a int
<float>Casts the subsequent value into a float
<string>Casts the subsequent value into a string
<number>Casts the subsequent value into a decimal
<decimal>Casts the subsequent value into a decimal
<datetime>Casts the subsequent value into a datetime
<duration>Casts the subsequent value into a duration
- -## `` - -The <bool> casting function converts a value into a boolean. - -```surql -SELECT * FROM "true"; - -true -``` - -```surql -SELECT * FROM "false"; - -false -``` - -
- -## `` - -The <int> casting function converts a value into an integer. - - - -```surql -SELECT * FROM 53; - -53 -``` - -
- -## `` - -The <float> casting function converts a value into a floating point number. - -```surql -SELECT * FROM 13.572948467293847293841093845679289; - -13.572948467293847 -``` -```surql -SELECT * FROM "13.572948467293847293841093845679289"; - -13.572948467293847 -``` - -
- -## `` - -The <string> casting function converts a value into a string. - - -```surql -SELECT * FROM true; - -"true" -``` -```surql -SELECT * FROM 1.3463; - -"1.3463" -``` -```surql -SELECT * FROM false; - -"false" -``` - -
- -## `` - -The <number> casting function converts a value into an infinite precision decimal number. - -```surql -SELECT * FROM 13.572948467293847293841093845679289; - -"13.572948467293847293841093845679289" -``` -```surql -SELECT * FROM "13.572948467293847293841093845679289"; - -"13.572948467293847293841093845679289" -``` - -```surql -SELECT * FROM 1.193847193847193847193487E11; - -"119384719384.7193847193487" -``` - -
- -## `` - -The <decimal> casting function converts a value into an infinite precision decimal number. - -```surql -SELECT * FROM 13.572948467293847293841093845679289; - -"13.572948467293847293841093845679289" -``` -```surql -SELECT * FROM "13.572948467293847293841093845679289"; - -"13.572948467293847293841093845679289" -``` - -```surql -SELECT * FROM 1.193847193847193847193487E11; - -"119384719384.7193847193487" -``` - - -
- -## `` - -The <datetime> casting function converts a value into a datetime. - -```surql -SELECT * FROM "2022-06-07"; - -"2022-06-07T00:00:00Z" -``` - -
- -## `` - -The <duration> casting function converts a value into a duration. - -```surql -SELECT * FROM "1h30m"; - -"1h30m" -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/datetimes.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/datetimes.mdx deleted file mode 100644 index dbb320eb1..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/datetimes.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Datetimes - -# Datetimes - -SurrealDB has native support for datetimes with nanosecond precision. SurrealDB automatically parses and understands datetimes which are written as strings in the SurrealQL language. Times must also be formatted in an [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format. - -```surql -CREATE event SET time = "2022-07-03T07:18:52Z"; -``` -SurrealDB handles all datetimes with nanosecond precision. - -```surql -CREATE event SET time = "2022-07-03T07:18:52.841147Z"; -``` - -SurrealDB handles all timezones, and automatically converts and stores datetimes as a UTC date. - -```surql -CREATE event SET time = "2022-07-03T07:18:52.841147+02:00"; -``` - -## Datetime comparison -datetimes can be compared with each other using the advanced SurrealDB operators. - -```surql -SELECT * FROM "2022-07-03T07:18:52Z" > "2022-01-03T01:43:78Z"; -``` - -## Datetimes and Durations - -Durations can be used to modify and alter datetimes. - -```surql -CREATE event SET time = "2022-07-03T07:18:52Z" + 2w; -``` - -Multi-part durations can also be used to modify datetimes. - -```surql -CREATE event SET time = "2022-07-03T07:18:52.841147Z" + 1h30m20s1350ms; -``` - -## Duration units - -Durations can be specified in any of the following units: - -| Unit | Description | -| ---- | ----------- | -| `ns` | Nanoseconds | -| `us` | Microseconds, alternative: `µs` | -| `ms` | Milliseconds | -| `s` | Seconds | -| `m` | Minutes | -| `h` | Hours | -| `d` | Days | -| `w` | Weeks | -| `y` | Years | - -## Next steps -You've now seen how to store, modify, and handle dates and times in SurrealDB. For more advanced functionality, take a look at the [time](/docs/surrealdb/surrealql/functions/time) functions, which enable extracting, altering, rounding, and grouping datetimes into specific time intervals. \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/formatters.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/formatters.mdx deleted file mode 100644 index 24692c534..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/formatters.mdx +++ /dev/null @@ -1,355 +0,0 @@ ---- -sidebar_position: 6 ---- - -# Formatters - -# Formatters - -Formatting functions in SurrealQL accept certain text formats for date/time formatting. They're listed down below. - -### Date formatters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecifierExampleDescription
%Y2001The full proleptic Gregorian year, zero-padded to 4 digits.
%C20The proleptic Gregorian year divided by 100, zero-padded to 2 digits.
%y01The proleptic Gregorian year modulo 100, zero-padded to 2 digits.
%m07Month number (01 to 12), zero-padded to 2 digits.
%bJulAbbreviated month name. Always 3 letters.
%BJulyFull month name.
%hJulSame as %b.
%d08Day number (01 to 31), zero-padded to 2 digits.
%e8Same as %d but space-padded. Same as %_d.
%aSunAbbreviated weekday name. Always 3 letters.
%ASundayFull weekday name.
%w0Day of the week. Sunday = 0, Monday = 1, ..., Saturday = 6.
%u7Day of the week. Monday = 1, Tuesday = 2, ..., Sunday = 7. (ISO 8601)
%U28Week number starting with Sunday (00 to 53), zero-padded to 2 digits.
%W27Same as %U, but week 1 starts with the first Monday in that year instead.
%G2001Same as %Y but uses the year number in ISO 8601 week date.
%g01Same as %y but uses the year number in ISO 8601 week date.
%V27Same as %U but uses the week number in ISO 8601 week date (01 to 53).
%j189Day of the year (001 to 366), zero-padded to 3 digits.
%D07/08/01Month-day-year format. Same as %m/%d/%y.
%x07/08/01Locale's date representation.
%F2001-07-08Year-month-day format (ISO 8601). Same as %Y-%m-%d.
%v8-Jul-2001Day-month-year format. Same as %e-%b-%Y.
- -### Time formatters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecifierExampleDescription
%H00Hour number (00 to 23), zero-padded to 2 digits.
%k0Same as %H but space-padded. Same as %_H.
%I12Hour number in 12-hour clocks (01 to 12), zero-padded to 2 digits.
%l12Same as %I but space-padded. Same as %_I.
%Pamam or pm in 12-hour clocks.
%pAMAM or PM in 12-hour clocks.
%M34Minute number (00 to 59), zero-padded to 2 digits.
%S60Second number (00 to 60), zero-padded to 2 digits.
%f026490000The fractional seconds (in nanoseconds) since last whole second.
%.f.026490Similar to %f but left-aligned.
%.3f.026Similar to .%f but left-aligned but fixed to a length of 3.
%.6f.026490Similar to .%f but left-aligned but fixed to a length of 6.
%.9f.026490000Similar to .%f but left-aligned but fixed to a length of 9.
%3f026Similar to %.3f but without the leading dot.
%6f026490Similar to %.6f but without the leading dot.
%9f026490000Similar to %.9f but without the leading dot.
%R00:34Hour-minute format. Same as %H:%M.
%T00:34:59Hour-minute-second format. Same as %H:%M:%S.
%X00:34:59Locale's time representation.
%r12:34:59 AMHour-minute-second format in 12-hour clocks. Same as %I:%M:%S %p.
%x07/08/01Locale's date representation.
%F2001-07-08Year-month-day format (ISO 8601). Same as %Y-%m-%d.
%v8-Jul-2001Day-month-year format. Same as %e-%b-%Y.
- -### Timezones formatters - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecifierExampleDescription
%ZACSTLocal time zone name.
%z+0930Offset from the local time to UTC (with UTC being +0000).
%:z+09:30Same as %z but with a colon.
- -### Date & time formatters - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExampleDescription
%cSun Jul 8 00:34:59 2001Locale's date and time.
%+2001-07-08T00:34:59.026490+09:30ISO 8601 / RFC 3339 date & time format.
%s994518299UNIX timestamp, the number of seconds since 1970-01-01T00:00:00.
- -### Other formatters - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecifierExampleDescription
%tLiteral tab (\t).
%nLiteral newline (\n).
%%Literal percent sign.
- diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/futures.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/futures.mdx deleted file mode 100644 index c23618a3e..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/futures.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -sidebar_position: 7 ---- - -# Futures - -# Futures - -Futures are values which are only computed when the data is selected and returned to the client. Futures can be stored inside records, to enable dynamic values which are always calculated when queried. - -### Simple futures - -Any value or expression can be used inside a future. This value will be dynamically computed on every access to the record. - -```surql -CREATE person SET accessed_date = { time::now() }; -``` - -## Futures depending on other fields - -Futures can be used to calculate values which dynamically change based on other fields. This value will be dynamically computed, on every access to the record, and will use the other field when it is accessed. - -```surql -CREATE person SET - birthday = "2007-06-22", - can_drive = { time::now() > birthday + 18y } -; -``` -Futures can also dynamically access remote records, perform subqueries, or make use of graph traversal. - -```surql -CREATE person SET - name = 'Jason', - friends = [person:tobie, person:jaime], - adult_friends = { friends[WHERE age > 18].name } -; -``` - -## Next steps - -You've now seen how to create dynamically computed properties on records, using either simple values, and values which depend on local and remote record fields. Take a look at the next chapter to understand how types can be cast and converted to other types. - diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/geometries.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/geometries.mdx deleted file mode 100644 index 1f10b1843..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/geometries.mdx +++ /dev/null @@ -1,230 +0,0 @@ ---- -sidebar_position: 8 ---- - -# Geometries - -# Geometries - -SurrealDB makes working with GeoJSON easy, with support for `Point`, `Line`, `Polygon`, `MultiPoint`, `MultiLine`, `MultiPolygon`, and `Collection` values. SurrealQL automatically detects GeoJSON objects converting them into a single data type. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
PointA geolocation point with latitude and longitude
LineA GeoJSON LineString value for storing a geometric path
PolygonA GeoJSON Polygon value for storing a geometric area
MultiPointA value which contains multiple geometry points
MultiLineA value which contains multiple geometry lines
MultiPolygonA value which contains multiple geometry polygons
CollectionA value which contains multiple different geometry types
- -## `Point` - -The simplest form of GeoJSON that SurrealDB supports is a geolocation point. These can be written using two different formats. The first format is a simple 2-element tuple (longitude, latitude). - -```surql -UPDATE city:london SET centre = (-0.118092, 51.509865); -``` - -In addition, SurrealDB supports entering GeoJSON points using the traditional format. - -:::note - INFO: No other properties must be present in the Point object. -::: - -```surql -UPDATE city:london SET centre = { - type: "Point", - coordinates: [-0.118092, 51.509865], -}; -``` - -
- -## `Line` - -A GeoJSON LineString value for storing a geometric path. - - - -:::note - INFO: No other properties must be present in the LineString object. -::: - -```surql -UPDATE city:london SET distance = { - type: "Line", - coordinates: [[-0.118092, 51.509865],[0.1785278, 51.37692386]], -}; -``` - -
- -## `Polygon` - -A GeoJSON Polygon value for storing a geometric area. - - - -:::note - INFO: No other properties must be present in the Polygon object. -::: - -```surql -UPDATE city:london SET boundary = { - type: "Polygon", - coordinates: [[ - [-0.38314819, 51.37692386], [0.1785278, 51.37692386], - [0.1785278, 51.61460570], [-0.38314819, 51.61460570], - [-0.38314819, 51.37692386] - ]] -}; -``` - -
- -## `MultiPoint` - -MultiPoints can be used to store multiple geometry points in a single value. - - - -:::note - INFO: No other properties must be present in the MultiPoint object. -::: - -```surql -UPDATE person:tobie SET locations = { - type: "MultiPoint", - coordinates: [ - [10.0, 11.2], - [10.5, 11.9] - ], -}; -``` - -
- -## `MultiLine` - -MultiLines can be used to store multiple geometry lines in a single value. - - -:::note - INFO: No other properties must be present in the MultiLine object. -::: - -```surql -UPDATE travel:yellowstone SET routes = { - type: "MultiLineString", - coordinates: [ - [ [10.0, 11.2], [10.5, 11.9] ], - [ [11.0, 12.2], [11.5, 12.9], [12.0, 13.0] ] - ] -}; -``` - -
- -## `MultiPolygon` - -MultiPolygons can be used to store multiple geometry polygons in a single value. - - -:::note - INFO: No other properties must be present in the MultiPolygon object. -::: - -```surql -UPDATE university:oxford SET locations = { - type: "MultiPolygon", - coordinates: [ - [ - [ [10.0, 11.2], [10.5, 11.9], [10.8, 12.0], [10.0, 11.2] ] - ], - [ - [ [9.0, 11.2], [10.5, 11.9], [10.3, 13.0], [9.0, 11.2] ] - ] - ] -}; -``` - -
- -## `Collection` - -Collections can be used to store multiple different geometry types in a single value. - - -:::note - INFO: No other properties must be present in the Collection object. -::: - -```surql -UPDATE university:oxford SET buildings = { - type: "GeometryCollection", - geometries: [ - { - type: "MultiPoint", - coordinates: [ - [10.0, 11.2], - [10.5, 11.9] - ], - }, - { - type: "Polygon", - coordinates: [[ - [-0.38314819, 51.37692386], [0.1785278, 51.37692386], - [0.1785278, 51.61460570], [-0.38314819, 51.61460570], - [-0.38314819, 51.37692386] - ]] - }, - { - type: "MultiPolygon", - coordinates: [ - [ - [ [10.0, 11.2], [10.5, 11.9], [10.8, 12.0], [10.0, 11.2] ] - ], - [ - [ [9.0, 11.2], [10.5, 11.9], [10.3, 13.0], [9.0, 11.2] ] - ] - ] - } - ] -}; -``` - -
- -## Next steps - -You've now seen how to use geometries to store locations, paths, and polygonal areas in SurrealDB. For more advanced functionality, take a look at the [operators](/docs/surrealdb/surrealql/operators) and [geo](/docs/surrealdb/surrealql/functions/geo) functions, which enable area, distance, and bearing geometric calculations, and the ability to detect whether geometries contain or intersect other geometry types. diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/ids.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/ids.mdx deleted file mode 100644 index 87d94b565..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/ids.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -sidebar_position: 11 ---- - -# Record IDs - -# Record IDs - -In SurrealDB, document record IDs store both the table name, and the record ID. Learn more about Record IDs [in this blogpost](https://surrealdb.com/blog/the-life-changing-magic-of-surrealdb-record-ids#the-performance-at-scale) and on this [youtube video](https://www.youtube.com/watch?v=c0cqmWRYP8c). - - -## Text Record IDs -Without annotation, text record IDs can contain letters, numbers and `_` characters. - -```surql -CREATE company:surrealdb SET name = 'SurrealDB'; -``` -Record IDs can contain complex characters, surrounded by the ` character. - -```surql -CREATE article:`8424486b-85b3-4448-ac8d-5d51083391c7` SET time = time::now(), author = person:tobie; -``` -Alternatively complex characters within record IDs can be surrounded by the `⟨` and `⟩` characters. - -```surql -CREATE article:⟨8424486b-85b3-4448-ac8d-5d51083391c7⟩ SET time = time::now(), author = person:tobie; -``` - -If you create a record ID with a number as a string, it will be stored with the `⟨ ⟩` characters to differentiate it from a number. - -```surql -CREATE article SET id = "10"; --- becomes: article:⟨10⟩ -``` - -## Numeric Record IDs -If a numeric value is specified without any decimal point suffix and is within the range `-9223372036854775808` to `9223372036854775807` then the value will be parsed, stored, and treated as a 64-bit integer. - -```surql -CREATE temperature:17493 SET time = time::now(), celsius = 37.5; -``` - -## Object-based Record IDs -Complex Record IDs support dynamic expressions, allowing parameters, and function expressions to be used as values within the IDs. This is useful in a timeseries context, or for ensuring locality between specific records in a table. - -```surql -// Set a new parameter -LET $now = time::now(); -// Create a record with a complex ID using an object -CREATE temperature:{ location: 'London', date: $now } SET - location = 'London', - date = $now, - temperature = 23.7 -; -``` - -## Array-based Record IDs -Similar to Object-based Record IDs, records in SurrealDB can store arrays of values, with no limit to the depth of the arrays. Arrays can store any value stored within them, and can store different value types within the same array. - -```surql -// Set a new parameter -LET $now = time::now(); -// Create a record with a complex ID using an array -CREATE temperature:['London', $now] SET - location = 'London', - date = $now, - temperature = 23.7 -; -``` - -## Generating Record IDs -Record IDs can be generated with a number of built-in ID generation functions. These allow for Record IDs to be generated using cryptographically-secure randomly-generated identifiers (which are suitable for dispersion across a distributed datastore), sequentially incrementing `ULID` Record identifiers, and `UUID` version 7 Record identifiers. - -```surql -// Generate a random Record ID -CREATE temperature:rand() SET time = time::now(), celsius = 37.5; -// Generate a ULID-based Record ID -CREATE temperature:ulid() SET time = time::now(), celsius = 37.5; -// Generate a UUIDv7-based Record ID -CREATE temperature:uuid() SET time = time::now(), celsius = 37.5; -``` - -## Record ranges -SurrealDB supports the ability to query a range of records, using the record ID. The record ID ranges, retrieve records using the natural sorting order of the record IDs. These range queries can be used to query a range of records in a timeseries context. - -```surql --- Select all person records with IDs between the given range -SELECT * FROM person:1..1000; --- Select all records for a particular location, inclusive -SELECT * FROM temperature:['London', NONE]..=['London', time::now()]; --- Select all temperature records with IDs less than a maximum value -SELECT * FROM temperature:..['London', '2022-08-29T08:09:31']; --- Select all temperature records with IDs greater than a minimum value -SELECT * FROM temperature:['London', '2022-08-29T08:03:39']..; --- Select all temperature records with IDs between the specified range -SELECT * FROM temperature:['London', '2022-08-29T08:03:39']..['London', '2022-08-29T08:09:31']; -``` diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/numbers.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/numbers.mdx deleted file mode 100644 index ab73da5bd..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/numbers.mdx +++ /dev/null @@ -1,238 +0,0 @@ ---- -sidebar_position: 9 ---- - -# Numbers - -# Numbers - -In SurrealDB, numbers can be one of three types: 64-bit integers, 64-bit floating point numbers, or 128-bit decimal numbers. - -Integer numbers -If a numeric value is specified without a decimal point and is within the range `-9223372036854775808` to `9223372036854775807` then the value will be parsed, stored, and treated as a 64-bit integer. - -```surql -CREATE event SET year = 2022; -``` -## Floating point numbers -If a number value is specified with a decimal point, or is outside of the maximum range specified above, then the number will automatically be parsed, stored, and treated as a 64-bit floating point value. This ensures efficiency when performing mathematical calculations within SurrealDB. - -```surql -CREATE event SET temperature = 41.5; -``` -## Decimal numbers -To opt into 128-bit decimal numbers when specifying numeric values, you can use the `dec` suffix. - -```surql -CREATE product SET price = 99.99dec; -``` -## Using a specific numeric type -To use a specific type when specifying numeric values, you can cast the value to a specific numeric type or use the appropriate suffix. - -```surql -CREATE event SET - year = 2022, - temperature = 41.5 + 5f, - horizon = 31 + 3dec -; -``` - -## Numeric precision -Different numeric types can be compared and used together in calculations. - -The benefits of floating point numeric values are speed and storage size, but there is a limit to the numeric precision. - -```surql -RETURN 13.5719384719384719385639856394139476937756394756; - - -13.571938471938473 -``` - -In addition, when using floating point numbers specifically, mathematical operations can result in a loss of precision (as is normal with other databases). - -```surql -RETURN 0.3 + 0.3 + 0.3 + 0.1; -1.0000000000000002 -``` - -Common rounding errors can be avoided by performing calculations using decimals. - -```surql -RETURN 0.3dec + 0.3dec + 0.3dec + 0.1dec; - -1.0 -``` - -## Mathematical constants -A set of floating point numeric constants are available in SurrealDB. Constant names are case insensitive, and can be specified with either lowercase or capital letters, or a mixture of both. - -```surql -CREATE circle SET radius = circumference / ( 2 * MATH::PI ); -``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ConstantValue
- MATH::E - - 2.718281828459045 -
- MATH::FRAC_1_PI - - 0.3183098861837907 -
- MATH::FRAC_1_SQRT_2 - - 0.7071067811865476 -
- MATH::FRAC_2_PI - - 0.6366197723675814 -
- MATH::FRAC_2_SQRT_PI - - 1.1283791670955126 -
- MATH::FRAC_PI_2 - - 1.5707963267948966 -
- MATH::FRAC_PI_3 - - 1.0471975511965979 -
- MATH::FRAC_PI_4 - - 0.7853981633974483 -
- MATH::FRAC_PI_6 - - 0.5235987755982989 -
- MATH::FRAC_PI_8 - - 0.39269908169872414 -
- MATH::LN_10 - - 2.302585092994046 -
- MATH::LN_2 - - 0.6931471805599453 -
- MATH::LOG10_2 - - 0.3010299956639812 -
- MATH::LOG10_E - - 0.4342944819032518 -
- MATH::LOG2_10 - - 3.321928094887362 -
- MATH::LOG2_E - - 1.4426950408889634 -
- MATH::PI - - 3.141592653589793 -
- MATH::SQRT_2 - - 1.4142135623730951 -
- MATH::TAU - - 6.283185307179586 -
- -## Next steps -You've now seen how to use numeric values in SurrealDB. For more advanced functionality, take a look at the operators and math functions, which enable advanced calculations on numeric values and sets of numeric values. \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/objects.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/objects.mdx deleted file mode 100644 index c7300f4fa..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/objects.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Objects - -# Objects - -SurrealDB records can store objects, with no limit to the depth of any nested objects or values within. This means that objects and arrays can be stored within each other in order to model complex data scenarios. Objects can store any value stored within them, and can store different value types within the same object. - -```surql -CREATE person SET metadata = { - interest_level: 83.67, - information: { - age: 23, - gender: 'm', - }, - marketing: true, - activities: [ - "clicked link", - "contact form", - "read email", - "viewed website", - "viewed website", - "viewed website", - "read email", - ] -}; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/overview.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/overview.mdx deleted file mode 100644 index e89910e56..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/overview.mdx +++ /dev/null @@ -1,186 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Overview - -# Data Types - -SurrealQL allows you to describe data with specific data types. These data types are used to validate data and to generate the appropriate database schema. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
- any - - Use this when you explicitly don't want to specify the field's data type. The field will allow any data type supported by SurrealDB. -
- array - - An array of items. - The array type also allows you to define which types can be stored in the array and the max length. -
    -
  • array
  • -
  • array<string>
  • -
  • array<string, 10>
  • -
-
- set - - A set of items. - The set type also allows you to define which types can be stored in the set and the max length. - Items are automatically deduplicated. -
    -
  • set
  • -
  • set<string>
  • -
  • set<string, 10>
  • -
-
- bool - - Describes whether something is truthy or not. -
- datetime - - An ISO 8601 compliant data type that stores a date with time and time zone. -
- decimal - - Uses BigDecimal for storing any real number with arbitrary precision. -
- duration - - Store a value representing a length of time. Can be added or subtracted from datetimes or other durations. -
- float - - Store a value in a 64 bit float. -
- int - - Store a value in a 64 bit integer. -
- number - - Store numbers without specifying the type. - SurrealDB will detect the type of number and store it using the minimal number of bytes. - For numbers passed in as a string, this field will store the number in a BigDecimal. -
- object - - Store formatted objects containing values of any supported type with no limit to object depth or nesting. -
- option - - Makes types optional and guarantees the field to be either empty (NONE), or a number. -
    -
  • option<number>
  • -
-
- string - - Describes a text-like value. -
- record - - Store a reference to another record. The value must be a Record ID. -
    -
  • record
  • -
  • record<string>
  • -
  • record<string | number>
  • -
-
- geometry - - RFC 7946 compliant data type for storing geometry in the GeoJson format. -
    -
  • geometry<feature>
  • -
  • geometry<point>
  • -
  • geometry<line>
  • -
  • geometry<polygon>
  • -
  • geometry<multipoint>
  • -
  • geometry<multiline>
  • -
  • geometry<multipolygon>
  • -
  • geometry<collection>
  • -
-
- -## Examples - -### geometry - -```surql --- Define a field with a single type -DEFINE FIELD location ON TABLE restaurant TYPE geometry; --- Define a field with any geometric type -DEFINE FIELD area ON TABLE restaurant TYPE geometry; --- Define a field with specific geometric types -DEFINE FIELD area ON TABLE restaurant TYPE geometry; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/records.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/records.mdx deleted file mode 100644 index f3d9b0d75..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/records.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -sidebar_position: 12 ---- - -# Record links - -# Record links - -One of the most powerful features of SurrealDB is the ability to traverse from record-to-record without the need for traditional SQL JOINs. Each record ID points directly to a specific record in the database, without needing to run a table scan query. Record IDs can be stored within other records, allowing them to be linked together. - -## Creating a record -When you create a record without specifying the id, then a randomly generated id is created and used for the record id. - -```surql -CREATE person SET name = 'Tobie'; - -person:aio58g22n3upq16hsani -``` - -It's also possible to specify a specific record id when creating or updating records. - -```surql -CREATE person:tester SET name = 'Tobie'; - -person:tester -``` - -## Storing record links within records - -Records ids can be stored directly within other records, either as top-level properties, or nested within objects or arrays. - -```surql -CREATE person:jaime SET name = 'Jaime', friends = [person:tobie, person:simon]; -CREATE person:tobie SET name = 'Tobie', friends = [person:simon, person:marcus]; -CREATE person:simon SET name = 'Simon', friends = [person:jaime, person:tobie]; -CREATE person:marcus SET name = 'Marcus', friends = [person:tobie]; -``` - -## Fetching remote records from within records - -Records ids can be stored directly within other records, either as top-level properties, or nested within objects or arrays. Nested field traversal can be used to fetch the properties from the remote records, as if the record was embedded within the record being queried. - -```surql -SELECT friends.name FROM person:tobie; -[ - { - friends: { - name: ["Simon", "Marcus"] - } - } -] -``` - -There is no limit to the number of remote traversals that can be performed in a query. Using `.` dot notation, SurrealDB does not differentiate between nested object properties, or remote records, and will fetch remote records asynchronously when needed for a query. - -```surql -SELECT friends.friends.friends.name FROM person:tobie; -[ - { - friends: { - friends: { - friends: { - name: [ - [ ["Tobie", "Simon"], ["Simon", "Marcus"] ], - [ ["Simon", "Marcus"] ] - ] - } - } - } - } -] -``` - -## Next steps - -You've now seen how to create records using randomly generated ids, or specific record ids. This is just the beginning! The power and flexibility which is possible with the remote record fetching functionality within queries opens up a whole new set of possibilities for storing and querying traditional data, and connected datasets. Take a look at the next chapter to understand how futures can be used to dynamically compute values only when retrieved. diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/simple.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/simple.mdx deleted file mode 100644 index 46b2bcef0..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/simple.mdx +++ /dev/null @@ -1,47 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Basic types - -# Basic types - -SurrealDB has a large number of simple built-in types. With an advanced type system, SurrealDB enables advanced storage, simplified comparison, complex data structures, and mathematical operations directly within the database. - -## None values -Values can be specifically set to `NONE` in SurrealDB to remove a field from a record. - -```surql -CREATE person SET children = NONE; -``` -The `NONE` keyword can be written in anycase. - -```surql -CREATE person SET children = NONE, siblings = none; -``` - -## Null values -Values can be specifically set to `NULL` in SurrealDB to denote a field which is set, but which does not have a value. - -```surql -CREATE person SET children = NULL; -``` -The `NULL` keyword can be written in anycase. - -```surql -CREATE person SET children = NULL, siblings = null; -``` - -## Booleans -Boolean values can be used to mark whether a field is `true` or `false`. - -```surql -CREATE person SET newsletter = false, interested = true; -``` - -Boolean values can be written in anycase. - -```surql -CREATE person SET newsletter = FALSE, interested = True; -``` - diff --git a/versioned_docs/version-1.0.x/surrealql/datamodel/strings.mdx b/versioned_docs/version-1.0.x/surrealql/datamodel/strings.mdx deleted file mode 100644 index e1aed3031..000000000 --- a/versioned_docs/version-1.0.x/surrealql/datamodel/strings.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -sidebar_position: 13 ---- - -# Strings - -# Strings - -Strings can be used to store text values. All text fields can include unicode values, emojis, and tabular and multine breaks. - -```surql -CREATE person SET text = 'Lorem ipsum dolor sit amet'; -``` - -Strings can be created using single quotation marks, or double quotation marks. - -```surql -CREATE person SET text = "Lorem ipsum dolor sit amet"; -``` - -Any string in SurrealDB can include unicode text. - -```surql -CREATE person SET text = "I ❤️ SurrealDB"; -``` - -Strings can also include line breaks. - -```surql -CREATE person SET text = "This -is -over -multiple -lines"; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/demo.mdx b/versioned_docs/version-1.0.x/surrealql/demo.mdx deleted file mode 100644 index 2fc82bc68..000000000 --- a/versioned_docs/version-1.0.x/surrealql/demo.mdx +++ /dev/null @@ -1,92 +0,0 @@ ---- -sidebar_position: 2 ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# Demo Data - -# Demo Data - -To quickly test out SurrealDB and SurrealQL functionality, we've included demo data here in `.surql` files which you can download and [`import`](/docs/surrealdb/1.0.x/cli/import) into SurrealDB using the CLI - -## Surreal Deal - deals so good it's surreal! - -Surreal Deal is a demo dataset based on a simplified e-commerce platform that sells artwork. -The dataset is made up of 8 tables using both [graph relations](/docs/surrealdb/1.0.x/surrealql/statements/relate) and [record links](/docs/surrealdb/surrealql/datamodel/records): -`person`, `order`, `product`, `review`, `artist`, `create`, `avg_product_review`, `daily_sales`. - -In the diagram below, the nodes in pink are the [standard tables](/docs/surrealdb/1.0.x/surrealql/statements/define/table), the ones in purple represent the [edge tables](/docs/surrealdb/1.0.x/surrealql/statements/relate) which shows relationships between records and SurrealDB as a graph database. While the nodes in gray are the [pre-computed table views](/docs/surrealdb/1.0.x/surrealql/statements/define/table). - - - -## Download - -| Dataset | URL | -| -------------------------------------------------------------------------------- | --------------------------------------------------------- | -| [Surreal Deal](https://datasets.surrealdb.com/surreal-deal-v1.surql) | https://datasets.surrealdb.com/surreal-deal-v1.surql | -| [Surreal Deal (mini)](https://datasets.surrealdb.com/surreal-deal-mini-v1.surql) | https://datasets.surrealdb.com/surreal-deal-mini-v1.surql | - -## Import - -First, download any of the [available datasets](#download). - -Secondly, [start the server](/docs/surrealdb/1.0.x/cli/start). - -```bash -# Create a new in-memory server -surreal start --user root --pass root --allow-all -``` - -Lastly, use the [import command](/docs/surrealdb/1.0.x/cli/import) to add the dataset. - -Use the command below to import the [surreal deal dataset](https://datasets.surrealdb.com/surreal-deal-v1.surql): - -```bash -surreal import --conn http://localhost:8000 --user root --pass root --ns test --db test surreal-deal-v1.surql -``` - -To import the surreal downloaded the [Surreal Deal (mini)](https://datasets.surrealdb.com/surreal-deal-mini-v1.surql) use the command below: - -```bash -surreal import --conn http://localhost:8000 --user root --pass root --ns test --db test surreal-deal-mini-v1.surql -``` - -Please be aware that the import process might take a few seconds. - -### Using Curl - -First, start the surrealdb server - -```bash -# Create a new in-memory server -surreal start --user root --pass root --allow-all -``` - -Then, download the file and load it into the database - -```bash -# Download the file -curl -L "https://datasets.surrealdb.com/surreal-deal-v1.surql" -o surreal-deal-v1.surql - -# Load the file into the database using the rest endpoint -curl -v -X POST -u "root:root" -H "NS: test" -H "DB: test" -H "Accept: application/json" --data-binary @surreal-deal-v1.surql http://localhost:8000/import -``` - -If you want to use the mini version: - -```bash -# Download the file -curl -L "https://datasets.surrealdb.com/surreal-deal-mini-v1.surql" -o surreal-deal-mini-v1.surql - -# Load the file into the database using the rest endpoint -curl -v -X POST -u "root:root" -H "NS: test" -H "DB: test" -H "Accept: application/json" --data-binary @surreal-deal-mini-v1.surql http://localhost:8000/import -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/_category_.json b/versioned_docs/version-1.0.x/surrealql/functions/_category_.json deleted file mode 100644 index a1f7cc915..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Functions", - "position": 4 -} diff --git a/versioned_docs/version-1.0.x/surrealql/functions/count.mdx b/versioned_docs/version-1.0.x/surrealql/functions/count.mdx deleted file mode 100644 index 2d66c1a80..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/count.mdx +++ /dev/null @@ -1,106 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Count function - -# Count function - -These functions can be used when counting field values and expressions. - - - - - - - - - - - - - - -
FunctionDescription
count()Counts a row, or whether a given value is truthy
- -## `count` - -The count function counts the number of times that the function is called. This is useful for returning the total number of rows in a SELECT statement with a `GROUP BY` clause. - -```surql title="API DEFINITION" -count() -> 1 -``` -If a value is given as the first argument, then this function checks whether a given value is truthy. This is useful for returning the total number of rows, which match a certain condition, in a [`SELECT`](/docs/surrealdb/surrealql/statements/select) statement, with a GROUP BY clause. - -```surql title="API DEFINITION" -count(any) -> number -``` - -If an array is given, this function counts the number of items in the array which are truthy. If, instead, you want to count the total number of items in the given array, then use the [`array::len()`](/docs/surrealdb/surrealql/functions/array#len) function. - -```surql title="API DEFINITION" -count(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN count(); - -1 -``` -```surql -RETURN count(true); - -1 -``` -```surql -RETURN count(10 > 15); - -0 -``` -```surql -RETURN count([ 1, 2, 3, null, 0, false, (15 > 10), rand::uuid() ]); - -5 -``` -The following examples show this function being used in a [`SELECT`](/docs/surrealdb/surrealql/statements/select) statement with a GROUP clause: - -```surql -SELECT count() FROM [{ age: 33 }, { age: 45 }, { age: 39 }] GROUP ALL; - -3 -``` -```surql -SELECT count(age > 35) FROM [{ age: 33 }, { age: 45 }, { age: 39 }] GROUP ALL; - -2 -``` -An advanced example of the count function can be seen below: - -```surql -SELECT - country, - count(age > 30) AS total -FROM [ - { age: 33, country: 'GBR' }, - { age: 45, country: 'GBR' }, - { age: 39, country: 'USA' }, - { age: 29, country: 'GBR' }, - { age: 43, country: 'USA' } -] -GROUP BY country; -``` -```json -[ - { - country: 'GBR', - total: 2 - }, - { - country: 'USA', - total: 2 - } -] -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/crypto.mdx b/versioned_docs/version-1.0.x/surrealql/functions/crypto.mdx deleted file mode 100644 index 715a9df23..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/crypto.mdx +++ /dev/null @@ -1,299 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Crypto functions - -# Crypto functions - -These functions can be used when hashing data, encrypting data, and for securely authenticating users into the database. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
crypto::md5()Returns the md5 hash of a value
crypto::sha1()Returns the sha1 hash of a value
crypto::sha256()Returns the sha256 hash of a value
crypto::sha512()Returns the sha512 hash of a value
crypto::argon2::compare()Compares an argon2 hash to a password
crypto::argon2::generate()Generates a new argon2 hashed password
crypto::bcrypt::compare()Compares an bcrypt hash to a password
crypto::bcrypt::generate()Generates a new bcrypt hashed password
crypto::pbkdf2::compare()Compares an pbkdf2 hash to a password
crypto::pbkdf2::generate()Generates a new pbkdf2 hashed password
crypto::scrypt::compare()Compares an scrypt hash to a password
crypto::scrypt::generate()Generates a new scrypt hashed password
- -## `crypto::md5` - -The `crypto::md5` function returns the md5 hash of the input value. - -```surql title="API DEFINITION" -crypto::md5(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN crypto::md5("tobie"); - -"4768b3fc7ac751e03a614e2349abf3bf" -``` - -
- -## `crypto::sha1` - -The `crypto::sha1` function returns the sha1 hash of the input value. - -```surql title="API DEFINITION" -crypto::sha1(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN crypto::sha1("tobie"); - -"c6be709a1b6429472e0c5745b411f1693c4717be" -``` - -
- -## `crypto::sha256` - -The `crypto::sha256` function returns the sha256 hash of the input value. - -```surql title="API DEFINITION" -crypto::sha256(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN crypto::sha256("tobie"); - -"33fe1859daba927ea5674813adc1cf34b9e2795f2b7e91602fae19c0d0c493af" -``` - -
- -## `crypto::sha512` - -The `crypto::sha512` function returns the sha512 hash of the input value. - -```surql title="API DEFINITION" -crypto::sha512(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN crypto::sha512("tobie"); - -"39f0160c946c4c53702112d6ef3eea7957ea8e1c78787a482a89f8b0a8860a20ecd543432e4a187d9fdcd1c415cf61008e51a7e8bf2f22ac77e458789c9cdccc" -``` - -
- -## `crypto::argon2::compare` - -The `crypto::argon2::compare` function compares a hashed-and-salted argon2 password value with an unhashed password value. - -```surql title="API DEFINITION" -crypto::argon2::compare(string, string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -LET $hash = "$argon2id$v=19$m=4096,t=3,p=1$pbZ6yJ2rPJKk4pyEMVwslQ$jHzpsiB+3S/H+kwFXEcr10vmOiDkBkydVCSMfRxV7CA"; -LET $pass = "this is a strong password"; -RETURN crypto::argon2::compare($hash, $pass); - - -true -``` - -
- -## `crypto::argon2::generate` - -The `crypto::argon2::generate` function hashes and salts a password using the argon2 hashing algorithm. - -:::note - Note: At this time, there is no way to customize the parameters for this function. This applies to: memory, iterations and parallelism. -::: - -```surql title="API DEFINITION" -crypto::argon2::generate(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN crypto::argon2::generate("this is a strong password"); - -"$argon2id$v=19$m=4096,t=3,p=1$pbZ6yJ2rPJKk4pyEMVwslQ$jHzpsiB+3S/H+kwFXEcr10vmOiDkBkydVCSMfRxV7CA" -``` - -
- -## `crypto::bcrypt::compare` - -The `crypto::bcrypt::compare` function compares a hashed-and-salted bcrypt password value with an unhashed password value. - -```surql title="API DEFINITION" -crypto::bcrypt::compare(string, any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -LET $hash = "$2b$12$OD7hrr1Hycyk8NUwOekYY.cogCICpUnwNvDZ9NiC1qCPHzpVAQ9BO"; -LET $pass = "this is a strong password"; -RETURN crypto::bcrypt::compare($hash, $pass); - -true -``` - -
- -## `crypto::bcrypt::generate` - -The `crypto::bcrypt::generate` function hashes and salts a password using the bcrypt hashing algorithm. - -:::note - Note: At this time, there is no way to customize the work factor for bcrypt. -::: - -```surql title="API DEFINITION" -crypto::bcrypt::generate(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN crypto::bcrypt::generate("this is a strong password"); - -"$2b$12$OD7hrr1Hycyk8NUwOekYY.cogCICpUnwNvDZ9NiC1qCPHzpVAQ9BO" -``` - -
- -## `crypto::pbkdf2::compare` - -The `crypto::pbkdf2::compare` function compares a hashed-and-salted pbkdf2 password value with an unhashed password value. - -```surql title="API DEFINITION" -crypto::pbkdf2::compare(string, string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -LET $hash = "$pbkdf2-sha256$i=10000,l=32$DBURRPJODKEt0IId1Lqe+w$Ve8Z00mibHDSKLbyKTceEBBcDpGoK0AEUl7QzDTIec4"; -LET $pass = "this is a strong password"; -RETURN crypto::pbkdf2::compare($hash, $pass); - - -true -``` - -
- -## `crypto::pbkdf2::generate` - -The `crypto::pbkdf2::generate` function hashes and salts a password using the pbkdf2 hashing algorithm. - -:::note - Note: At this time, there is no way to customize the number of iterations for pbkdf2. -::: - -```surql title="API DEFINITION" -crypto::pbkdf2::generate(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN crypto::pbkdf2::generate("this is a strong password"); - -"$pbkdf2-sha256$i=10000,l=32$DBURRPJODKEt0IId1Lqe+w$Ve8Z00mibHDSKLbyKTceEB" -``` - -
- -## `crypto::scrypt::compare` - -The `crypto::scrypt::compare` function compares a hashed-and-salted scrypt password value with an unhashed password value. - -```surql title="API DEFINITION" -crypto::scrypt::compare(string, string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -LET $hash = "$scrypt$ln=15,r=8,p=1$8gl7bipl0FELTy46YJOBrw$eRcS1qR22GI8VHo58WOXn9JyfDivGo5yTJFvpDyivuw"; -LET $pass = "this is a strong password"; -RETURN crypto::scrypt::compare($hash, $pass); - - -true -``` - -
- -## `crypto::scrypt::generate` - -The `crypto::scrypt::generate` function hashes and salts a password using the scrypt hashing algorithm. - -:::note - Note: At this time, there is no way to customize the parameters for this function. This applies to: cost parameter, block size and parallelism. -::: - -```surql title="API DEFINITION" -crypto::scrypt::generate(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN crypto::scrypt::generate("this is a strong password"); - -"$scrypt$ln=15,r=8,p=1$8gl7bipl0FELTy46YJOBrw$eRcS1qR22GI8VHo58WOXn9JyfDivGo5yTJFvpDyivuw" -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/duration.mdx b/versioned_docs/version-1.0.x/surrealql/functions/duration.mdx deleted file mode 100644 index 2a4f535d7..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/duration.mdx +++ /dev/null @@ -1,382 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Duration functions - -# Duration functions - -These functions can be used when converting between numeric and duration data. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
duration::days()Counts how many days fit in a duration
duration::hours()Counts how many hours fit in a duration
duration::micros()Counts how many microseconds fit in a duration
duration::millis()Counts how many milliseconds fit in a duration
duration::mins()Counts how many minutes fit in a duration
duration::nanos()Counts how many nanoseconds fit in a duration
duration::secs()Counts how many seconds fit in a duration
duration::weeks()Counts how many weeks fit in a duration
duration::years()Counts how many years fit in a duration
duration::from::days()Converts a numeric amount of days into a duration that represents days
duration::from::hours()Converts a numeric amount of hours into a duration that represents hours
duration::from::micros()Converts a numeric amount of microseconds into a duration that represents microseconds
duration::from::millis()Converts a numeric amount of milliseconds into a duration that represents milliseconds
duration::from::mins()Converts a numeric amount of minutes into a duration that represents minutes
duration::from::nanos()Converts a numeric amount of nanoseconds into a duration that represents nanoseconds
duration::from::secs()Converts a numeric amount of seconds into a duration that represents seconds
duration::from::weeks()Converts a numeric amount of weeks into a duration that represents weeks
- -## `duration::days` - -The `duration::days` function counts how many days fit into a duration. - -```surql title="API DEFINITION" -duration::days(duration) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::days(3w); - -21 -``` - -
- -## `duration::hours` - -The `duration::hours` function counts how many hours fit into a duration. - - -```surql title="API DEFINITION" -duration::hours(duration) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::hours(3w); - -504 -``` - -
- -## `duration::micros` - -The `duration::micros` function counts how many microseconds fit into a duration. - - -```surql title="API DEFINITION" -duration::micros(duration) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::micros(3w); - -1814400000000 -``` - -
- -## `duration::millis` - -The `duration::millis` function counts how many milliseconds fit into a duration. - - -```surql title="API DEFINITION" -duration::millis(duration) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::millis(3w); - -1814400000 -``` - -
- -## `duration::mins` - -The `duration::mins` function counts how many minutes fit into a duration. - - -```surql title="API DEFINITION" -duration::mins(duration) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::mins(3w); - -30240 -``` - -
- -## `duration::nanos` - -The `duration::nanos` function counts how many nanoseconds fit into a duration. - - -```surql title="API DEFINITION" -duration::nanos(duration) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::nanos(3w); - -1814400000000000 -``` - -
- -## `duration::secs` - -The `duration::secs` function counts how many seconds fit into a duration. - -```surql title="API DEFINITION" -duration::secs(duration) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::secs(3w); - -1814400 -``` - -
- -## `duration::weeks` - -The `duration::weeks` function counts how many weeks fit into a duration. - -```surql title="API DEFINITION" -duration::weeks(duration) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::weeks(3w); - -3 -``` - -
- -## `duration::years` - -The `duration::years` function counts how many years fit into a duration. - -```surql title="API DEFINITION" -duration::years(duration) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::years(300w); - -5 -``` - -
- -## `duration::from::days` - -The `duration::years` function counts how many years fit into a duration. - -```surql title="API DEFINITION" -duration::from::days(number) -> duration -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::from::days(3); - -3d -``` - -
- -## `duration::from::hours` - -The `duration::from::hours` function converts a numeric amount of hours into a duration that represents hours. - -```surql title="API DEFINITION" -duration::from::hours(number) -> duration -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::from::hours(3); - -3h -``` - -
- -## `duration::from::micros` - -The `duration::from::micros` function converts a numeric amount of microseconds into a duration that represents microseconds. - -```surql title="API DEFINITION" -duration::from::micros(number) -> duration -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::from::micros(3); - -3μs -``` - -
- -## `duration::from::millis` - -The `duration::from::millis` function converts a numeric amount of milliseconds into a duration that represents milliseconds. - -```surql title="API DEFINITION" -duration::from::millis(number) -> duration -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::from::millis(3); - -3ms -``` - -
- -## `duration::from::mins` - -The `duration::from::mins` function converts a numeric amount of minutes into a duration that represents minutes. - -```surql title="API DEFINITION" -duration::from::mins(number) -> duration -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::from::mins(3); - -3m -``` - -
- -## `duration::from::nanos` - -The `duration::from::nanos` function converts a numeric amount of nanoseconds into a duration that represents nanoseconds. - -```surql title="API DEFINITION" -duration::from::nanos(number) -> duration -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::from::nanos(3); - -3ns -``` - -
- -## `duration::from::secs` - -The `duration::from::secs` function converts a numeric amount of seconds into a duration that represents seconds. - -```surql title="API DEFINITION" -duration::from::secs(number) -> duration -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::from::secs(3); - -3s -``` - -
- -## `duration::from::weeks` - -The `duration::from::days` function converts a numeric amount of weeks into a duration that represents weeks. - -```surql title="API DEFINITION" -duration::from::weeks(number) -> duration -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN duration::from::weeks(3); - -3w -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/math.mdx b/versioned_docs/version-1.0.x/surrealql/functions/math.mdx deleted file mode 100644 index c9c7fc319..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/math.mdx +++ /dev/null @@ -1,503 +0,0 @@ ---- -sidebar_position: 8 ---- - -# Math functions - -# Math functions - -These functions can be used when analysing numeric data and numeric collections. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
math::abs()Returns the absolute value of a number
math::bottom()Returns the bottom X set of numbers in a set of numbers
math::ceil()Rounds a number up to the next largest integer
math::fixed()Returns a number with the specified number of decimal places
math::floor()Rounds a number down to the nearest integer
math::interquartile()Returns the interquartile of an array of numbers
math::max()Returns the maximum number in a set of numbers
math::mean()Returns the mean of a set of numbers
math::median()Returns the median of a set of numbers
math::midhinge()Returns the midhinge of a set of numbers
math::min()Returns the minimum number in a set of numbers
math::mode()Returns the value that occurs most often in a set of numbers
math::nearestrank()Returns the nearest rank of an array of numbers
math::percentile()Returns the value below which a percentage of data falls
math::product()Returns the product of a set of numbers
math::round()Rounds a number up or down to the nearest integer
math::spread()Returns the spread of an array of numbers
math::sqrt()Returns the square root of a number
math::stddev()Calculates how far a set of numbers are away from the mean
math::sum()Returns the total sum of a set of numbers
math::top()Returns the top X set of numbers in a set of numbers
math::trimean()The weighted average of the median and the two quartiles
math::variance()Calculates how far a set of numbers are spread out from the mean
- -## `math::abs` - -The `math::abs` function returns the absolute value of a number. - -```surql title="API DEFINITION" -math::abs(number) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::abs(-13.746189); - -13.746189 -``` - -
- -## `math::bottom` - -The `math::bottom` function returns the bottom X set of numbers in a set of numbers. - -```surql title="API DEFINITION" -math::bottom(array, number) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::bottom([1, 2, 3], 2); - -[ 2, 1 ] -``` - -
- -## `math::ceil` - -The `math::ceil` function rounds a number up to the next largest integer. - -```surql title="API DEFINITION" -math::ceil(number) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::ceil(13.146572); - -14 -``` - -
- -## `math::fixed` - -The `math::fixed` function returns a number with the specified number of decimal places. - -```surql title="API DEFINITION" -math::fixed(number, number) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::fixed(13.146572, 2); - -13.15 -``` - -
- -## `math::floor` - -The `math::floor` function rounds a number down to the nearest integer. - -```surql title="API DEFINITION" -math::floor(number) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::floor(13.746189); - -13 -``` - -
- -## `math::interquartile` - -The `math::interquartile` function returns the interquartile of an array of numbers. - -```surql title="API DEFINITION" -math::interquartile(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::interquartile([ 1, 40, 60, 10, 2, 901 ]); - -51 -``` - -
- -## `math::max` - -The `math::max` function returns the maximum number in a set of numbers. - -```surql title="API DEFINITION" -math::max(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::max([ 26.164, 13.746189, 23, 16.4, 41.42 ]); - -41.42 -``` - -
- -## `math::mean` - -The `math::mean` function returns the mean of a set of numbers. - -```surql title="API DEFINITION" -math::mean(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::mean([ 26.164, 13.746189, 23, 16.4, 41.42 ]); - -24.1460378 -``` - -
- -## `math::median` - -The `math::median` function returns the median of a set of numbers. - -```surql title="API DEFINITION" -math::median(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::median([ 26.164, 13.746189, 23, 16.4, 41.42 ]); - -23 -``` - -
- -## `math::midhinge` - -The `math::midhinge` function returns the midhinge of an array of numbers. - -```surql title="API DEFINITION" -math::midhinge(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::midhinge([ 1, 40, 60, 10, 2, 901 ]); - -29.5 -``` - -
- -## `math::min` - -The `math::min` function returns the minimum number in a set of numbers. - -```surql title="API DEFINITION" -math::min(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::min([ 26.164, 13.746189, 23, 16.4, 41.42 ]); - -13.746189 -``` - -
- -## `math::mode` - -The `math::mode` function returns the value that occurs most often in a set of numbers. In case of a tie, the highest one is returned. - -```surql title="API DEFINITION" -math::mode(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::mode([ 1, 40, 60, 10, 2, 901 ]); - -901 -``` - -
- -## `math::nearestrank` - -The `math::nearestrank` function returns the nearestrank of an array of numbers. - -```surql title="API DEFINITION" -math::nearestrank(array, number) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::nearestrank([1, 40, 60, 10, 2, 901], 50); - -40 -``` - -
- -## `math::percentile` - -The `math::percentile` function returns the value below which a percentage of data falls. - -```surql title="API DEFINITION" -math::percentile(array, number) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::percentile([1, 40, 60, 10, 2, 901], 50); - -25 -``` - -
- -## `math::product` - -The `math::product` function returns the product of a set of numbers. - -```surql title="API DEFINITION" -math::product(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::product([ 26.164, 13.746189, 23, 16.4, 41.42 ]); - -5619119.004884841504 -``` - -
- -## `math::round` - -The `math::round` function rounds a number up or down to the nearest integer. - -```surql title="API DEFINITION" -math::round(number) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::round(13.53124); - -14 -``` - -
- -## `math::spread` - -The `math::spread` function returns the spread of an array of numbers. - -```surql title="API DEFINITION" -math::spread(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::spread([ 1, 40, 60, 10, 2, 901 ]); - -900 -``` - -
- -## `math::sqrt` - -The `math::sqrt` function returns the square root of a number. - -```surql title="API DEFINITION" -math::sqrt(number) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::sqrt(15); - -3.872983346207417 -``` - -
- -## `math::stddev` - -The `math::stddev` function calculates how far a set of numbers are away from the mean. - -```surql title="API DEFINITION" -math::stddev(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::stddev([ 1, 40, 60, 10, 2, 901 ]); - -359.37167389765153 -``` - -
- -## `math::sum` - -The `math::sum` function returns the total sum of a set of numbers. - -```surql title="API DEFINITION" -math::sum(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::sum([ 26.164, 13.746189, 23, 16.4, 41.42 ]); - -120.730189 -``` - -
- -## `math::top` - -The `math::top` function returns the top of an array of numbers. - -```surql title="API DEFINITION" -math::top(array, number) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::top([1, 40, 60, 10, 2, 901], 3); - -[ 40, 901, 60 ] -``` - -
- -## `math::trimean` - -The `math::trimean` function returns the trimean of an array of numbers. - -```surql title="API DEFINITION" -math::trimean(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::trimean([ 1, 40, 60, 10, 2, 901 ]); - -27.25 -``` - -
- -## `math::variance` - -The `math::variance` function returns the variance of an array of numbers. - -```surql title="API DEFINITION" -math::variance(array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN math::variance([ 1, 40, 60, 10, 2, 901 ]); - -129148 -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/meta.mdx b/versioned_docs/version-1.0.x/surrealql/functions/meta.mdx deleted file mode 100644 index 99777f6b7..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/meta.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -sidebar_position: 9 ---- - -# Meta functions - -# Meta functions - -These functions can be used to retrieve specific metadata from a SurrealDB Record ID. - - - - - - - - - - - - - - - - - - -
FunctionDescription
meta::id()Extracts and returns the table id from a SurrealDB Record ID
meta::tb()Extracts and returns the table name from a SurrealDB Record ID
- -## `meta::id` - -The `meta::id` function extracts and returns the table id from a SurrealDB Record ID. - -```surql title="API DEFINITION" -meta::id(record) -> value -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN meta::id(person:tobie); - -"tobie" -``` - -
- -## `meta::tb` - -The `meta::tb` function extracts and returns the table name from a SurrealDB Record ID. - -```surql title="API DEFINITION" -meta::tb(record) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN meta::tb(person:tobie); - -"person" -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/parse.mdx b/versioned_docs/version-1.0.x/surrealql/functions/parse.mdx deleted file mode 100644 index 77009c99f..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/parse.mdx +++ /dev/null @@ -1,188 +0,0 @@ ---- -sidebar_position: 10 ---- - -# Parse functions - -# Parse functions - -These functions can be used when parsing email addresses and URL web addresses. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
parse::email::host()Parses and returns an email host from an email address
parse::email::user()Parses and returns an email username from an email address
parse::url::domain()Parses and returns the domain from a URL
parse::url::fragment()Parses and returns the fragment from a URL
parse::url::host()Parses and returns the hostname from a URL
parse::url::path()Parses and returns the path from a URL
parse::url::port()Parses and returns the port number from a URL
parse::url::query()Parses and returns the query string from a URL
- -## `parse::email::host` - -The `parse::email::host` function parses and returns and email host from a valid email address. - -```surql title="API DEFINITION" -parse::email::host(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN parse::email::host("info@surrealdb.com"); - -"surrealdb.com" -``` - -
- -## `parse::email::user` - -The `parse::email::user` function parses and returns and email username from a valid email address. - -```surql title="API DEFINITION" -parse::email::user(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN parse::email::user("info@surrealdb.com"); - -"info" -``` - -
- -## `parse::url::domain` - -The `parse::url::domain` function parses and returns and email domain from a valid URL. - -```surql title="API DEFINITION" -parse::url::domain(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN parse::url::domain("https://surrealdb.com:80/features?some=option#fragment"); - -"surrealdb.com" -``` - -
- -## `parse::url::fragment` - -The `parse::url::fragment` function parses and returns the fragment from a valid URL. - -```surql title="API DEFINITION" -parse::url::fragment(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN parse::url::fragment("https://surrealdb.com:80/features?some=option#fragment"); - -"fragment" -``` - -
- -## `parse::url::host` - -The `parse::url::host` function parses and returns the hostname from a valid URL. - -```surql title="API DEFINITION" -parse::url::host(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN parse::url::host("https://surrealdb.com:80/features?some=option#fragment"); - -"surrealdb.com" -``` - -
- -## `parse::url::path` - -The `parse::url::path` function parses and returns the path from a valid URL. - -```surql title="API DEFINITION" -parse::url::path(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN parse::url::path("https://surrealdb.com:80/features?some=option#fragment"); - -"/features" -``` - -
- -## `parse::url::port` - -The `parse::url::port` function parses and returns the port from a valid URL.. - -```surql title="API DEFINITION" -parse::url::port(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN parse::url::port("https://surrealdb.com:80/features?some=option#fragment"); - -80 -``` - -
- -## `parse::url::query` - -The `parse::url::query` function parses and returns the query from a valid URL. - -```surql title="API DEFINITION" -parse::url::query(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN parse::url::query("https://surrealdb.com:80/features?some=option#fragment"); - -"some=option" -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/rand.mdx b/versioned_docs/version-1.0.x/surrealql/functions/rand.mdx deleted file mode 100644 index f21b2abb7..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/rand.mdx +++ /dev/null @@ -1,378 +0,0 @@ ---- -sidebar_position: 11 ---- - -# Rand functions - -# Rand functions - -These functions can be used when generating random data values. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
rand()Generates and returns a random floating point number
rand::bool()Generates and returns a random boolean
rand::enum()Randomly picks a value from the specified values
rand::float()Generates and returns a random floating point number
rand::guid()Generates and returns a random guid
rand::int()Generates and returns a random integer
rand::string()Generates and returns a random string
rand::time()Generates and returns a random datetime
rand::uuid()Generates and returns a random UUID
rand::uuid::v4()Generates and returns a random Version 4 UUID
rand::uuid::v7()Generates and returns a random Version 7 UUID
rand::ulid()Generates and returns a random ULID
- -## `rand` - -The rand function generates a random [`float`](/docs/surrealdb/surrealql/datamodel/numbers#floating-point-numbers), between 0 and 1. - -```surql title="API DEFINITION" -rand() -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN rand(); - -0.7062321084863658 -``` -The following example shows this function being used in a [`SELECT`](/docs/surrealdb/surrealql/statements/select) statement with an `ORDER BY` clause: - -```surql -SELECT * FROM [{ age: 33 }, { age: 45 }, { age: 39 }] ORDER BY rand(); - - -[ - { - age: 45 - }, - { - age: 39 - }, - { - age: 33 - } -] -``` - -
- -## `rand::bool` - -The rand::bool function generates a random [`boolean`](/docs/surrealdb/surrealql/datamodel/simple#booleans) value. - -```surql title="API DEFINITION" -rand::bool() -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN rand::bool(); - -true -``` - -
- -## `rand::enum` - -The `rand::enum` function generates a random value, from a multitude of values. - - - -```surql title="API DEFINITION" -rand::enum(value...) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN rand::enum('one', 'two', 3, 4.15385, 'five', true); - -"five" -``` - -
- -## `rand::float` - -The `rand::float` function generates a random [`float`](/docs/surrealdb/surrealql/datamodel/numbers#floating-point-numbers), between `0` and `1`. - - - -```surql title="API DEFINITION" -rand::float() -> float -``` -If two numbers are provided, then the function generates a random [`float`](/docs/surrealdb/surrealql/datamodel/numbers#floating-point-numbers), between two numbers. - -```surql title="API DEFINITION" -rand::float(number, number) -> float -``` - -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN rand::float(); - -0.7812733136200293 -``` -```surql -RETURN rand::float(10, 15); - -11.305355983514927 -``` - -
- -## `rand::guid` - -The `rand::guid` function generates a 20-character random guid. - - - -```surql title="API DEFINITION" -rand::guid() -> string -``` -If a number is provided, then the function generates a random guid, with a specific length. - -```surql title="API DEFINITION" -rand::guid(number) -> string -``` - -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN rand::guid(); - -"4uqmrmtjhtjeg77et0dl" -``` -```surql -RETURN rand::guid(10); - -"f3b6cjh0nt" -``` - -
- -## `rand::int` - -The `rand::int` function generates a random int. - - - -```surql title="API DEFINITION" -rand::int() -> int -``` -If two numbers are provided, then the function generates a random int, between two numbers. - -```surql title="API DEFINITION" -rand::int(number, number) -> int -``` - -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN rand::int(); - -6841551695902514727 -``` -```surql -RETURN rand::int(10, 15); - -13 -``` - -
- -## `rand::string` - -The `rand::string` function generates a random string, with 32 characters. - - - -```surql title="API DEFINITION" -rand::string() -> string -``` -The `rand::string` function generates a random string, with a specific length. - -```surql title="API DEFINITION" -rand::string(number) -> string -``` - -If two numbers are provided, then the function generates a random string, with a length between two numbers. - -```surql title="API DEFINITION" -rand::string(number, number) -> string -``` - -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN rand::string(); - -"N8Q86mklN6U7kv0A2XCRh5UlpQMSvdoT" -``` -```surql -RETURN rand::string(15); - -"aSCtrfJj4pSJ7Xq" -``` -```surql -RETURN rand::string(10, 15); - -"rEUWFUMcx0YH" -``` - -
- -## `rand::time` - -The `rand::time` function generates a random [`datetime`](/docs/surrealdb/surrealql/datamodel/datetimes). - - - -```surql title="API DEFINITION" -rand::time() -> datetime -``` -The rand::time function generates a random [`datetime`](/docs/surrealdb/surrealql/datamodel/datetimes), between two unix timestamps. - -```surql title="API DEFINITION" -rand::time(number, number) -> datetime -``` - -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN rand::time(); - -"2026-09-07T04:27:53Z" -``` -```surql -RETURN rand::time(198371, 1223138713); - -"1991-01-13T23:27:17Z" -``` - -
- -## `rand::uuid` - -The `rand::uuid` function generates a random UUID. - -```surql title="API DEFINITION" -rand::uuid() -> uuid -``` - -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN rand::uuid(); - -"e20b2836-e689-4643-998d-b17a16800323" -``` - -
- -## `rand::uuid::v4` - -The `rand::uuid::v4` function generates a random UUID. - -```surql title="API DEFINITION" -rand::uuid::v4() -> uuid -``` - -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN rand::uuid::v4(); - -"4def23a5-a847-4934-8dad-c64ccc48921b" -``` - -
- -## `rand::uuid::v7` - -The `rand::uuid::v7` function generates a random Version 7 UUID. - -```surql title="API DEFINITION" -rand::uuid::v7() -> uuid -``` - -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN rand::uuid::v7(); - -"01843a54-32e1-71eb-af07-5901fc190877" -``` -To enable `rand::uuid::v7` in [embedded mode](/docs/surrealdb/embedding/rust) you need to add the following to your `.cargo/config.toml` file in your project - -```toml -[build] -rustflags = ["--cfg", "uuid_unstable"] -``` - -
- -## `rand::ulid` - -The `rand::ulid` function generates a random ULID. - -```surql title="API DEFINITION" -rand::ulid() -> ulid -``` - -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN rand::ulid(); - -"01H9QDG81Q7SB33RXB7BEZBK7G" -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/script/_category_.json b/versioned_docs/version-1.0.x/surrealql/functions/script/_category_.json deleted file mode 100644 index 04404eac7..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/script/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Scripting Functions", - "position": 12 -} diff --git a/versioned_docs/version-1.0.x/surrealql/functions/script/argument.mdx b/versioned_docs/version-1.0.x/surrealql/functions/script/argument.mdx deleted file mode 100644 index 2e75dd190..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/script/argument.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Arguments - -# Arguments - -Additional arguments can be passed in to the function from SurrealDB, and these are accessible as an array using the `arguments` object within the JavaScript function. - -```surql --- Create a new parameter -LET $value = "SurrealDB"; --- Create a new parameter -LET $words = ["awesome", "advanced", "cool"]; --- Pass the parameter values into the function -CREATE article SET summary = function($value, $words) { - const [value, words] = arguments; - return `${value} is ${words.join(', ')}`; -}; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/script/built-in-functions.mdx b/versioned_docs/version-1.0.x/surrealql/functions/script/built-in-functions.mdx deleted file mode 100644 index 2142a4d86..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/script/built-in-functions.mdx +++ /dev/null @@ -1,203 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Built-in functions - -# Built-in functions - -Besides basic JavaScript utilities and [classes for SurrealQL types](/docs/surrealdb/surrealql/functions/script/type-conversion), there are a handful of utilities built into the embedded scripting functions. - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
async fetch(resource, options)Full fledged fetch implementation closely matching the official specification.
async query(surql)Run SurrealQL subqueries from within the embedded scripting functions.
async value(variable)Retrieve values for SurrealQL variables from within the embedded scripting functions.
- -## `async fetch(resource, options)` {#fetch} - -Full fledged fetch implementation closely matching the [official specification](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). - -:::note -Note: For complete documentation, please refer to the MDN documentation. -::: - - - - - - - - - - - - - - - - - - -
ArgumentsDescription
- resource - REQUIRED - - Accepts either a url in a string, or a URL or Request object. -
- options - - Accepts various options related to the request. Refer to MDN docs for a full reference. -
- -```surql -RETURN function() { - // List all posts - const posts = fetch('https://jsonplaceholder.typicode.com/posts'); - - // Update post with ID 1 - const updated = fetch('https://jsonplaceholder.typicode.com/posts/1', { - method: 'PUT', - body: JSON.stringify({ - id: 1, - title: 'foo', - body: 'bar', - userId: 1, - }), - headers: { - 'Content-type': 'application/json; charset=UTF-8', - }, - }); - - return { posts, updated }; -} -``` - -
- -## `async query(surql)` {#query} - -Run SurrealQL subqueries from within the embedded scripting functions. - -:::note -Note: Only subqueries can be executed with the query() function. This means that only a single query can currently be executed, and that only CRUD operations are allowed. -::: - - - - - - - - - - - - - - -
ArgumentsDescription
- surql - REQUIRED - - Accepts a single SurrealQL query, which is limited to a CRUD operation. -
- -```surql -CREATE user:john, user:mary; - -RETURN function() { - // Select all users - const users = await surrealdb.query("SELECT * FROM user"); - - // Prepared query - const query = new surrealdb.Query("SELECT * FROM $id", { - id: new Record('user', 'mary') - }); - - // Execute prepared query - const mary = (await surrealdb.query(query))[0]; - - // Assign variables later to prepared query - query.bind('id', new Record('user', 'john')); - - // Execute prepared query - const john = (await surrealdb.query(query))[0]; - - return { john, mary }; -} -``` - -
- -## `async value(variable)` {#value} - -Retrieve values for SurrealQL variables from within the embedded scripting functions. - - - - - - - - - - - - - - -
ArgumentsDescription
- variable - REQUIRED - - Accepts the path to a variable -
- -```surql -LET $something = 123; -LET $obj = { - nested: 456 -}; - -LET $arr = [ - { value: 1 }, - { value: 2 }, - { value: 3 }, - { value: 4 }, - { value: 5 }, - { value: 6 }, -]; - -RETURN function() { - // Get the value for a variable - const something = await surrealdb.value("$something"); - - // Get the value for a nested property - const nested = await surrealdb.value("$obj.nested"); - - // Filter properties from an array - const fromArray = await surrealdb.value("$arr[WHERE value > 3].value"); - - return { something, nested, fromArray }; -} -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/script/context.mdx b/versioned_docs/version-1.0.x/surrealql/functions/script/context.mdx deleted file mode 100644 index 82d53ccfe..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/script/context.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Function context - -# Function context - -Embedded scripting functions inherit the context in which they are ran in. The context of every embedded function is automatically set to the current document on every invocation. This allows the function to access the properties and fields of the current record being accessed / modified. - -```surql -CREATE film SET - ratings = [ - { rating: 6, user: user:bt8e39uh1ouhfm8ko8s0 }, - { rating: 8, user: user:bsilfhu88j04rgs0ga70 }, - ], - featured = function() { - return this.ratings.filter( - ({ rating }) => rating >= 7 - ).map(({ rating }) => { - return { - ...rating, - rating: rating * 10 - }; - }); - } -; -``` diff --git a/versioned_docs/version-1.0.x/surrealql/functions/script/overview.mdx b/versioned_docs/version-1.0.x/surrealql/functions/script/overview.mdx deleted file mode 100644 index 049f786d5..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/script/overview.mdx +++ /dev/null @@ -1,19 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Overview - -# Embedded scripting functions - -SurrealDB allows for advanced functions with complicated logic, by allowing embedded functions to be written in JavaScript. These functions support the ES2020 JavaScript specification. - -## Simple function -Embedded JavaScript functions within SurrealDB support all functionality in the ES2020 specification including async / await functions, and generator functions. Any value from SurrealDB is converted into a JavaScript type automatically, and the return value from the JavaScript function is converted to a SurrealDB value. - -```surql -CREATE person SET scores = function() { - return [1,2,3].map(v => v * 10); -}; -``` - diff --git a/versioned_docs/version-1.0.x/surrealql/functions/script/surrealql-functions.mdx b/versioned_docs/version-1.0.x/surrealql/functions/script/surrealql-functions.mdx deleted file mode 100644 index c9b394afc..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/script/surrealql-functions.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -sidebar_position: 6 ---- - -# SurrealQL Functions - -# Native SurrealQL functions - -Embedded scripting functions have access to embedded scripting functions, allowing for complex and performant operations otherwise not possible. SurrealQL functions are published under the `surrealdb.functions` variable. Custom functions are not available within the embedded JavaScript function at the moment. - -```surql -RETURN function() { - // Using the rand::uuid::v4() function - const uuid = surrealdb.functions.rand.uuid.v4(); -}; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/script/type-conversion.mdx b/versioned_docs/version-1.0.x/surrealql/functions/script/type-conversion.mdx deleted file mode 100644 index 4526b7237..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/script/type-conversion.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Type conversion - -# Type conversion - -Any value from SurrealDB is converted into a JavaScript type automatically, and the return value from the JavaScript function is converted to a SurrealQL value. Boolean values, Integers, Floats, Strings, Arrays, Objects, and Date objects are all converted automatically to and from SurrealQL values. - -```surql -CREATE user:test SET created_at = function() { - return new Date(); -}; -``` - -In addition, a number of special classes are included within the JavaScript functions for the additional types which are not built into JavaScript. These enable the creation of [`duration`](/docs/surrealdb/surrealql/datamodel/casting#duration) values, [`record`](/docs/surrealdb/surrealql/datamodel/casting#record) values, and [`UUID`](/docs/surrealdb/surrealql/datamodel/casting#uuid) values from within JavaScript. - -Any values of these types passed into embedded scripting functions are also represented with these special classes. - -```surql -CREATE user:test SET - session_timeout = function() { - return new Duration('1w'); - }, - best_friend = function() { - return new Record('user', 'joanna'); - }, - identifier = function() { - return new Uuid('03412258-988f-47cd-82db-549902cdaffe'); - } -; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/search.mdx b/versioned_docs/version-1.0.x/surrealql/functions/search.mdx deleted file mode 100644 index f178158dd..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/search.mdx +++ /dev/null @@ -1,115 +0,0 @@ ---- -sidebar_position: 13 ---- - -# Search functions - -# Search functions - -These functions are used in conjunction with the 'matches' operator to either collect the relevance score or highlight the searched keywords within the content. - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
search::score()Returns the relevance score
search::highlight()Highlights the matching keywords
search::offsets()Returns the position of the matching keywords
- -## `search::score` - -The `search::score` returns the relevance score corresponding to the given 'matches' predicate reference numbers. - -```surql title="API DEFINITION" -search::score(number) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -SELECT id, title, search::score(1) AS score FROM book - WHERE title @1@ 'rust web' - ORDER BY score DESC; - - -[ - { - id: book:1, - score: 0.9227996468544006, - title: [ 'Rust Web Programming' ], - } -] -``` - -
- -## `search::highlight` - -The `search::highlight` highlights the matching keywords for the predicate reference number. - -```surql title="API DEFINITION" -search::highlight(string, string, number) -> string | string[] -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -SELECT id, search::highlight('', '', 1) AS title - FROM book WHERE title @1@ 'rust web'; - - -[ - { - id: book:1, - title: [ 'Rust Web Programming' ] - } -] -``` - -
- -## `search::offsets` - -The `search::offsets` returns the position of the matching keywords for the predicate reference number. - -```surql title="API DEFINITION" -search::offsets(number) -> object -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -SELECT id, title, search::offsets(1) AS title_offsets - FROM book WHERE title @1@ 'rust web'; - - -[ - { - id: book:1, - title: [ 'Rust Web Programming' ], - title_offsets: { - 0: [ - { e: 4, s: 0 }, - { e: 8, s: 5 } - ] - } - } -] -``` -The output returns the start `s` and end `e` positions of each matched term found within the original field. - -The full-text index is capable of indexing both single strings and arrays of strings. In this example, the key `0` indicates that we're highlighting the first string within the `title` field, which contains an array of strings. - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/session.mdx b/versioned_docs/version-1.0.x/surrealql/functions/session.mdx deleted file mode 100644 index da8fb7f13..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/session.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -sidebar_position: 14 ---- - -# Session functions - -# Session functions - -These functions can be used when working with and manipulating text and string values. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
session::db()Returns the currently selected database
session::id()Returns the current user's session ID
session::ip()Returns the current user's session IP address
session::ns()Returns the currently selected namespace
session::origin()Returns the current user's HTTP origin
session::sc()Returns the current user's authentication scope
- -## `session::db` - -The `session::db` function returns the currently selected database. - -```surql title="API DEFINITION" -session::db() -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN session::db(); - -"my_db" -``` - -
- -## `session::id` - -The `session::id` function returns the current user's session ID. - -```surql title="API DEFINITION" -session::id() -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN session::id(); - -"I895rKuixHwCNIduyBIYH2M0Pga7oUmWnng5exEE4a7EB942GVElGrnRhE5scF5d" -``` - -
- -## `session::ip` - -The `session::ip` function returns the currently selected database. - -```surql title="API DEFINITION" -session::ip() -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN session::ip(); - -"2001:db8:3333:4444:CCCC:DDDD:EEEE:FFFF" -``` - -
- -## `session::ns` - -The `session::ns` function returns the currently selected namespace. - -```surql title="API DEFINITION" -session::ns() -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN session::ns(); - -"my_ns" -``` - -
- -## `session::origin` - -The `session::origin` function returns the current user's HTTP origin. - -```surql title="API DEFINITION" -session::origin() -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN session::origin(); - -"http://localhost:3000" -``` - -
- -## `session::sc` - -The `session::sc` function returns the current user's authentication scope. - -```surql title="API DEFINITION" -session::sc() -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN session::sc(); - -"user" -``` - -

diff --git a/versioned_docs/version-1.0.x/surrealql/functions/sleep.mdx b/versioned_docs/version-1.0.x/surrealql/functions/sleep.mdx deleted file mode 100644 index 5c07ce6da..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/sleep.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -sidebar_position: 15 ---- - -# Sleep function - -# Sleep function - -The SLEEP function is used to introduce a delay or pause in the execution of a query or a batch of queries for a specific amount of time. - - - - - - - - - - - - - - -
FunctionDescription
sleep()Delays or pauses in the execution of a query or a batch of queries.
- -## `sleep` - -The `sleep` function delays or pauses the execution of a query or a set of statements. - - - -```surql title="API DEFINITION" -sleep(duration) -> none -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN sleep(1s); -RETURN sleep(500ms); -``` - -
- -## See also -Alternatively you may want to use the [SLEEP statement](/docs/surrealdb/surrealql/statements/sleep). \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/string.mdx b/versioned_docs/version-1.0.x/surrealql/functions/string.mdx deleted file mode 100644 index e2582acd5..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/string.mdx +++ /dev/null @@ -1,630 +0,0 @@ ---- -sidebar_position: 16 ---- - -# String Functions - -# String Functions - -These functions can be used when working with and manipulating text and string values. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
string::concat()Concatenates strings together
string::contains()Check whether a string contains another string
string::endsWith()Checks whether a string ends with another string
string::join()Joins strings together with a delimiter
string::len()Returns the length of a string
string::lowercase()Converts a string to lowercase
string::repeat()Repeats a string a number of times
string::replace()Replaces an occurrence of a string with another string
string::reverse()Reverses a string
string::slice()Extracts and returns a section of a string
string::slug()Converts a string into human and URL-friendly string
string::split()Divides a string into an ordered list of substrings
string::startsWith()Checks whether a string starts with another string
string::trim()Removes whitespace from the start and end of a string
string::uppercase()Converts a string to uppercase
string::words()Splits a string into an array of separate words
string::is::alphanum()Checks whether a value has only alphanumeric characters
string::is::alpha()Checks whether a value has only alpha characters
string::is::ascii()Checks whether a value has only ascii characters
string::is::datetime()Checks whether a string representation of a date and time matches a specified format
string::is::domain()Checks whether a value is a domain
string::is::email()Checks whether a value is an email
string::is::hexadecimal()Checks whether a value is hexadecimal
string::is::latitude()Checks whether a value is a latitude value
string::is::longitude()Checks whether a value is a longitude value
string::is::numeric()Checks whether a value has only numeric characters
string::is::semver()Checks whether a value matches a semver version
string::is::url()Checks whether a value is a valid URL
string::is::uuid()Checks whether a value is a UUID
- -## `string::concat` - -The `string::concat` function concatenates strings together. - -```surql title="API DEFINITION" -string::concat(string...) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::concat('this', ' ', 'is', ' ', 'a', ' ', 'test'); - -"this is a test" -``` - -
- -## `string::contains` - -The `string::contains` function checks whether a string contains another string. - -```surql title="API DEFINITION" -string::contains(string, string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::contains('abcdefg', 'cde'); - -true -``` - -
- -## `string::endsWith` - -The `string::endsWith` function checks whether a string ends with another string. - -```surql title="API DEFINITION" -string::endsWith(string, string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::endsWith('some test', 'test'); - -true -``` - -
- -## `string::join` - -The `string::join` function joins strings together with a delimiter. - -```surql title="API DEFINITION" -string::join(string, string...) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::join(', ', 'a', 'list', 'of', 'items'); - -"a, list, of, items" -``` - -
- -## `string::len` - -The `string::len` function returns the length of a given string. - -```surql title="API DEFINITION" -string::len(string) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::len('this is a test'); - -14 -``` - -
- -## `string::lowercase` - -The `string::lowercase` function converts a string to lowercase. - -```surql title="API DEFINITION" -string::lowercase(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::lowercase('THIS IS A TEST'); - -"this is a test" -``` - -
- -## `string::repeat` - -The `string::repeat` function repeats a string a number of times. - -```surql title="API DEFINITION" -string::repeat(string, number) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::repeat('test', 3); - -"testtesttest" -``` - -
- -## `string::replace` - -The `string::replace` function replaces an occurrence of a string with another string. - -```surql title="API DEFINITION" -string::replace(string, string, string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::replace('this is a test', 'a test', 'awesome'); - -"this is awesome" -``` - -
- -## `string::reverse` - -The `string::reverse` function reverses a string. - -```surql title="API DEFINITION" -string::reverse(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::reverse('this is a test'); - -"tset a si siht" -``` - -
- -## `string::slice` - -The `string::slice` function extracts and returns a section of a string. - -```surql title="API DEFINITION" -string::slice(string, number, number) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::slice('this is a test', 10, 4); - -"test" -``` - -
- -## `string::slug` - -The `string::slug` function converts a string into a human and URL-friendly string. - -```surql title="API DEFINITION" -string::slug(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::slug('SurrealDB has launched #database #awesome'); - -"surrealdb-has-launched-database-awesome" -``` - -
- -## `string::split` - -The `string::split` function splits a string by a given delimiter. - -```surql title="API DEFINITION" -string::split(string, string) -> array -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::split('this, is, a, list', ', '); - -["this", "is", "a", "list"] -``` - -
- -## `string::startsWith` - -The `string::startsWith` function checks whether a string starts with another string. - -```surql title="API DEFINITION" -string::startsWith(string, string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::startsWith('some test', 'some'); - -true -``` - -
- -## `string::trim` - -The `string::trim` function removes whitespace from the start and end of a string. - -```surql title="API DEFINITION" -string::trim(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::trim(' this is a test '); - -"this is a test" -``` - -
- -## `string::uppercase` - -The `string::uppercase` function converts a string to uppercase. - -```surql title="API DEFINITION" -string::uppercase(string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::uppercase('this is a test'); - -"THIS IS A TEST" -``` - -
- -## `string::words` - -The `string::words` function splits a string into an array of separate words. - -```surql title="API DEFINITION" -string::words(string) -> array -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::words('this is a test'); - -["this", "is", "a", "test"] -``` - -
- -## `string::is::alphanum` - -The `string::is::alphanum` function checks whether a value has only alphanumeric characters. - -```surql title="API DEFINITION" -string::is::alphanum(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::alphanum("ABC123"); - -true -``` - -
- -## `string::is::alpha` - -The `string::is::alpha` function checks whether a value has only alpha characters. - -```surql title="API DEFINITION" -string::is::alpha(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::alpha("ABCDEF"); - -true -``` - -
- -## `string::is::ascii` - -The `string::is::ascii` function checks whether a value has only ascii characters. - -```surql title="API DEFINITION" -string::is::ascii(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::ascii("ABC123"); - -true -``` - -
- -## `string::is::datetime` - -The `string::is::datetime` function checks whether a string representation of a date and time matches a specified format. - -```surql title="API DEFINITION" -string::is::datetime(string, string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::datetime("2015-09-05 23:56:04", "%Y-%m-%d %H:%M:%S"); - -true -``` -[View all format options](/docs/surrealdb/surrealql/datamodel/formatters) - -
- -## `string::is::domain` - -The `string::is::domain` function checks whether a value is a domain. - -```surql title="API DEFINITION" -string::is::domain(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::domain("surrealdb.com"); - -true -``` - -
- -## `string::is::email` - -The `string::is::email` function checks whether a value is an email. - -```surql title="API DEFINITION" -string::is::email(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::email("info@surrealdb.com"); - -true -``` - -
- -## `string::is::hexadecimal` - -The `string::is::hexadecimal` function checks whether a value is hexadecimal. - -```surql title="API DEFINITION" -string::is::hexadecimal(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::hexadecimal("ff009e"); - -true -``` - -
- -## `string::is::latitude` - -The `string::is::latitude` function checks whether a value is a latitude value. - -```surql title="API DEFINITION" -string::is::latitude(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::latitude("-0.118092"); - -true -``` - -
- -## `string::is::longitude` - -The `string::is::longitude` function checks whether a value is a longitude value. - -```surql title="API DEFINITION" -string::is::longitude(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::longitude("51.509865"); - -true -``` - -
- -## `string::is::numeric` - -The `string::is::numeric`function checks whether a value has only numeric characters. - -```surql title="API DEFINITION" -string::is::numeric(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::numeric("1484091748"); - -true -``` - -
- -## `string::is::semver` - -The `string::is::semver` function checks whether a value matches a semver version. - -```surql title="API DEFINITION" -string::is::semver(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::semver("1.0.0"); - -true -``` - -
- -## `string::is::url` - -The `string::is::url` function checks whether a value is a valid URL. - -```surql title="API DEFINITION" -string::is::url(string) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::url("https://surrealdb.com"); - -true -``` - -
- -## `string::is::uuid` - -The `string::is::uuid` function checks whether a value is a UUID. - -```surql title="API DEFINITION" -string::is::uuid(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN string::is::uuid("018a6680-bef9-701b-9025-e1754f296a0f"); - -true -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/time.mdx b/versioned_docs/version-1.0.x/surrealql/functions/time.mdx deleted file mode 100644 index a2555333f..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/time.mdx +++ /dev/null @@ -1,489 +0,0 @@ ---- -sidebar_position: 17 ---- - -# Time Functions - -# Time Functions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
time::day()Extracts the day as a number from a datetime
time::floor()Rounds a datetime down by a specific duration
time::format()Outputs a datetime according to a specific format
time::group()Groups a datetime by a particular time interval
time::hour()Extracts the hour as a number from a datetime
time::max()Finds the most recent datetime in an array
time::min()Finds the least recent datetime in an array
time::minute()Extracts the minutes as a number from a datetime
time::month()Extracts the month as a number from a datetime
time::nano()Returns the number of nanoseconds since the UNIX epoch
time::now()Returns the current datetime
time::round()Rounds a datetime to the nearest multiple of a specific duration
time::second()Extracts the second as a number from a datetime
time::timezone()Returns the current local timezone offset in hours
time::unix()Returns the number of seconds since the UNIX epoch
time::wday()Extracts the week day as a number from a datetime
time::week()Extracts the week as a number from a datetime
time::yday()Extracts the yday as a number from a datetime
time::year()Extracts the year as a number from a datetime
time::from::micros()Calculates a datetimes based on an amount of microseconds since January 1, 1970 0:00:00 UTC.
time::from::millis()Calculates a datetimes based on an amount of milliseconds since January 1, 1970 0:00:00 UTC.
time::from::secs()Calculates a datetimes based on an amount of seconds since January 1, 1970 0:00:00 UTC.
time::from::unix()Calculates a datetimes based on an amount of seconds since January 1, 1970 0:00:00 UTC.
- - -## `time::day` - -The `time::day` function extracts the day as a number from a datetime. - -```surql title="API DEFINITION" -time::day(datetime) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::day("2021-11-01T08:30:17+00:00"); - -1 -``` - -
- -## `time::floor` - -The `time::floor` function rounds a datetime down by a specific duration. - -```surql title="API DEFINITION" -time::floor(datetime, duration) -> datetime -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::floor("2021-11-01T08:30:17+00:00", 1w); - -"2021-10-28T00:00:00Z" -``` - -
- -## `time::format` - -The `time::format` function outputs a datetime according to a specific format. - -```surql title="API DEFINITION" -time::format(datetime, string) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::format("2021-11-01T08:30:17+00:00", "%Y-%m-%d"); - -"2021-11-01" -``` -[View all format options](/docs/surrealdb/surrealql/datamodel/formatters) - -
- -## `time::group` - -The `time::group` function reduces and rounds a datetime down to a particular time interval. The second argument must be a string, and can be one of the following values: `year`, `month`, `day`, `hour`, `minute`, `second`. - -```surql title="API DEFINITION" -time::group(datetime, string) -> datetime -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::group("2021-11-01T08:30:17+00:00", "year"); - -"2021-01-01T00:00:00Z" -``` - -
- -## `time::hour` - -The `time::hour` function extracts the hour as a number from a datetime. - -```surql title="API DEFINITION" -time::hour(datetime) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::hour("2021-11-01T08:30:17+00:00"); - -8 -``` - -
- -## `time::max` - -The `time::max` function extracts the maximum as a number from a datetime. - -```surql title="API DEFINITION" -time::max(array) -> datetime -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::max([ "1987-06-22T08:30:45Z", "1988-06-22T08:30:45Z" ]) - -"1988-06-22T08:30:45Z" -``` - -
- -## `time::min` - -The `time::min` function extracts the minimum as a number from a datetime. - -```surql title="API DEFINITION" -time::min(array) -> datetime -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::min([ "1987-06-22T08:30:45Z", "1988-06-22T08:30:45Z" ]) - -"1987-06-22T08:30:45Z" -``` - -
- -## `time::minute` - -The `time::minute` function extracts the minutes as a number from a datetime. - -```surql title="API DEFINITION" -time::minute(datetime) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::minute("2021-11-01T08:30:17+00:00"); - -30 -``` - -
- -## `time::month` - -The `time::month` function extracts the month as a number from a datetime. - -```surql title="API DEFINITION" -time::minute(datetime) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::month("2021-11-01T08:30:17+00:00"); - -11 -``` - -
- -## `time::nano` - -The `time::nano`function returns a datetime as an integer representing the number of nanoseconds since the UNIX epoch. - -```surql title="API DEFINITION" -time::nano(datetime) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::nano("2021-11-01T08:30:17+00:00"); - -1635755417000000000 -``` - -
- -## `time::now` - -The `time::now` function returns the current datetime as an ISO8601 timestamp. - -```surql title="API DEFINITION" -time::now() -> datetime -``` - -
- -## `time::round` - -The `time::round` function rounds a datetime up by a specific duration. - -```surql title="API DEFINITION" -time::round(datetime, duration) -> datetime -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::round("2021-11-01T08:30:17+00:00", 1w); - -"2021-11-04T00:00:00Z" -``` - -
- -## `time::second` - -The `time::second` function extracts the second as a number from a datetime. - -```surql title="API DEFINITION" -time::second(datetime) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::second("2021-11-01T08:30:17+00:00"); - -17 -``` - -
- -## `time::timezone` - -The `time::timezone` function returns the current local timezone offset in hours. - -```surql title="API DEFINITION" -time::timezone() -> string -``` - -
- -## `time::unix` - -The `time::unix` function returns a datetime as an integer representing the number of seconds since the UNIX epoch. - -```surql title="API DEFINITION" -time::unix(datetime) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::unix("2021-11-01T08:30:17+00:00"); - -1635755417 -``` - -
- -## `time::wday` - -The `time::wday` function extracts the week day as a number from a datetime. - -```surql title="API DEFINITION" -time::wday(datetime) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::wday("2021-11-01T08:30:17+00:00"); - -1 -``` - -
- -## `time::week` - -The `time::week` function extracts the week as a number from a datetime. - -```surql title="API DEFINITION" -time::week(datetime) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::week("2021-11-01T08:30:17+00:00"); - -44 -``` - -
- -## `time::yday` - -The `time::yday` function extracts the yday as a number from a datetime. - -```surql title="API DEFINITION" -time::yday(datetime) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::yday("2021-11-01T08:30:17+00:00"); - -305 -``` - -
- -## `time::year` - -The `time::year` function extracts the year as a number from a datetime. - -```surql title="API DEFINITION" -time::year(datetime) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::year("2021-11-01T08:30:17+00:00"); - -2021 -``` - -
- -## `time::from::micros` - -The `time::from::micros` function calculates a datetime based on an amount of microseconds since January 1, 1970 0:00:00 UTC. - -```surql title="API DEFINITION" -time::from::micros(number) -> datetime -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::from::micros(1000000); - -"1970-01-01T00:00:01Z" -``` - -
- -## `time::from::millis` - -The `time::from::millis` function calculates a datetime based on an amount of milliseconds since January 1, 1970 0:00:00 UTC. - -```surql title="API DEFINITION" -time::from::millis(number) -> datetime -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::from::millis(1000); - -"1970-01-01T00:00:01Z" -``` - -
- -## `time::from::secs` - -The `time::from::secs`function calculates a datetime based on an amount of seconds since January 1, 1970 0:00:00 UTC. - -```surql title="API DEFINITION" -time::from::secs(number) -> datetime -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::from::secs(1000); - -"1970-01-01T00:16:40Z" -``` - -
- -## `time::from::unix` - -The `time::from::secs`function calculates a datetime based on an amount of seconds since January 1, 1970 0:00:00 UTC. - -```surql title="API DEFINITION" -time::from::unix(number) -> datetime -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN time::from::unix(1000); - -"1970-01-01T00:16:40Z" -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/type.mdx b/versioned_docs/version-1.0.x/surrealql/functions/type.mdx deleted file mode 100644 index 27f32c069..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/type.mdx +++ /dev/null @@ -1,809 +0,0 @@ ---- -sidebar_position: 18 ---- - -# Type Functions - -# Type Functions - -These functions can be used for generating and coercing data to specific data types. These functions are useful when accepting input values in client libraries, and ensuring that they are the desired type within SQL statements. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
type::bool()Converts a value into a boolean
type::datetime()Converts a value into a datetime
type::decimal()Converts a value into a decimal
type::duration()Converts a value into a duration
type::field()Projects a single field within a SELECT statement
type::fields()Projects a multiple fields within a SELECT statement
type::float()Converts a value into a floating point number
type::int()Converts a value into an integer
type::number()Converts a value into a number
type::point()Converts a value into a geometry point
type::string()Converts a value into a string
type::table()Converts a value into a table
type::thing()Converts a value into a record pointer
type::is::array()Checks if given value is of type array
type::is::bool()Checks if given value is of type bool
type::is::bytes()Checks if given value is of type bytes
type::is::collection()Checks if given value is of type collection
type::is::datetime()Checks if given value is of type datetime
type::is::decimal()Checks if given value is of type decimal
type::is::duration()Checks if given value is of type duration
type::is::float()Checks if given value is of type float
type::is::geometry()Checks if given value is of type geometry
type::is::int()Checks if given value is of type int
type::is::line()Checks if given value is of type line
type::is::null()Checks if given value is of type null
type::is::multiline()Checks if given value is of type multiline
type::is::multipoint()Checks if given value is of type multipoint
type::is::multipolygon()Checks if given value is of type multipolygon
type::is::number()Checks if given value is of type number
type::is::object()Checks if given value is of type object
type::is::point()Checks if given value is of type point
type::is::polygon()Checks if given value is of type polygon
type::is::record()Checks if given value is of type record
type::is::string()Checks if given value is of type string
type::is::uuid()Checks if given value is of type uuid
- -## `type::bool` - -The ` type::bool` function converts a value into a bool, if the value is truthy. - -```surql title="API DEFINITION" -type::bool(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::bool("true"); - -true -``` - -This is the equivalent of using [``](/docs/surrealdb/surrealql/datamodel/casting#bool) to cast a value to a boolean. - -
- -## `type::datetime` - -The ` type::datetime` function converts a value into a datetime. - -```surql title="API DEFINITION" -type::datetime(any) -> datetime -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::datetime("2022-04-27T18:12:27+00:00"); - -"2022-04-27T18:12:27Z" -``` - -This is the equivalent of using [``](/docs/surrealdb/surrealql/datamodel/casting#datetime) to cast a value to a datetime. - -
- -## `type::decimal` - -The ` type::decimal` function converts a value into a decimal. - -```surql title="API DEFINITION" -type::decimal(any) -> decimal -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::decimal("12345"); - -12345.00 -``` - -This is the equivalent of using [``](/docs/surrealdb/surrealql/datamodel/casting#decimal) to cast a value to a datetime. - -
- -## `type::duration` - -The ` type::duration` function converts a value into a duration. - -```surql title="API DEFINITION" -type::duration(any) -> duration -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::duration("4h"); - -4h -``` - -This is the equivalent of using [``](/docs/surrealdb/surrealql/datamodel/casting#duration) to cast a value to a datetime. - -
- -## `type::field` - -The `type::field` projects a single field within a SELECT statement - -```surql title="API DEFINITION" -type::field($field) -``` -The following example shows this function, and its output: - -```surql -CREATE person:test SET title = 'Mr', name.first = 'Tobie', name.last = 'Morgan Hitchcock'; - -LET $param = 'name.first'; - -SELECT type::field($param), type::field('name.last') FROM person; - -SELECT VALUE { 'firstname': type::field($param), lastname: type::field('name.last') } FROM person; - -SELECT VALUE [type::field($param), type::field('name.last')] FROM person; - - -[ - { - id: person:test, - title: 'Mr', - name: { - first: 'Tobie', - last: 'Morgan Hitchcock', - } - } -] -``` - -
- -## `type::fields` - -The `type::fields` projects a single field within a SELECT statement - -```surql title="API DEFINITION" -type::fields($fields) -``` -The following example shows this function, and its output: - -```surql -CREATE person:test SET title = 'Mr', name.first = 'Tobie', name.last = 'Morgan Hitchcock'; - -LET $param = ['name.first', 'name.last']; - -SELECT type::fields($param), type::fields(['title']) FROM person; - -SELECT VALUE { 'names': type::fields($param) } FROM person; - -SELECT VALUE type::fields($param) FROM person; - - -[ - { - id: person:test, - title: 'Mr', - name: { - first: 'Tobie', - last: 'Morgan Hitchcock', - } - } -] -``` - -
- -## `type::float` - -The `type::float` function converts a value into a float. - -```surql title="API DEFINITION" -type::float(any) -> float -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::float("12345"); - -12345.0 -``` -This is the equivalent of using [``](/docs/surrealdb/surrealql/datamodel/casting#float) to cast a value to a datetime. - -
- -## `type::int` - -The `type::int` function converts a value into an integer. - -```surql title="API DEFINITION" -type::int(any) -> int -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::int("12345"); - -12345 -``` -This is the equivalent of using [``](/docs/surrealdb/surrealql/datamodel/casting#int) to cast a value to a datetime. - -
- -## `type::number` - -The `type::number` function converts a value into a number. - -```surql title="API DEFINITION" -type::number(any) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::number("12345"); - -12345 -``` -This is the equivalent of using [``](/docs/surrealdb/surrealql/datamodel/casting#number) to cast a value to a datetime. - -
- -## `type::point` - -The `type::point` function converts a value into a geometry point. - -```surql title="API DEFINITION" -type::point(any) -> point -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::point([ 51.509865, -0.118092 ]); - -{ - "type": "Point", - "coordinates": [ - -0.10231019499999999, - 51.49576478 - ] -} -``` - -
- -## `type::string` - -The `type::string` function converts a value into a string. - -```surql title="API DEFINITION" -type::string(any) -> string -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::string(12345); - -"12345" -``` -This is the equivalent of using [``](/docs/surrealdb/surrealql/datamodel/casting#string) to cast a value to a datetime. - -
- -## `type::table` - -The `type::table` function converts a value into a string. - -```surql title="API DEFINITION" -type::table(any) -> table -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -LET $table = "person"; - -RETURN type::table($table); -``` - -
- -## `type::thing` - -The `type::thing` function converts a value into a record pointer definition. - -```surql title="API DEFINITION" -type::thing(any, any) -> thing -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -LET $tb = "person"; -LET $id = "tobie"; -RETURN type::thing($tb, $id); -``` - -
- -## `type::is::array` - -The `type::is::array` function checks if the passed value is of type `array`. - -```surql title="API DEFINITION" -type::is::array(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::array([ 'a', 'b', 'c' ]); - -true -``` - -
- -## `type::is::bool` - -The `type::is::bool` function checks if the passed value is of type `bool`. - -```surql title="API DEFINITION" -type::is::bool(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::bool(true); - -true -``` - -
- -## `type::is::bytes` - -The `type::is::bytes` function checks if the passed value is of type `bytes`. - -```surql title="API DEFINITION" -type::is::bytes(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::bytes("I am not bytes"); - -false -``` - -
- -## `type::is::collection` - -The `type::is::collection` function checks if the passed value is of type `collection`. - -```surql title="API DEFINITION" -type::is::collection(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::collection("I am not a collection"); - -false -``` - -
- -## `type::is::datetime` - -The `type::is::datetime` function checks if the passed value is of type `datetime`. - -```surql title="API DEFINITION" -type::is::datetime(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::datetime(time::now()); - -true -``` - -
- -## `type::is::decimal` - -The `type::is::decimal` function checks if the passed value is of type `decimal`. - -```surql title="API DEFINITION" -type::is::decimal(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::decimal( 13.5719384719384719385639856394139476937756394756); - -true -``` - -
- -## `type::is::duration` - -The `type::is::duration` function checks if the passed value is of type `duration`. - -```surql title="API DEFINITION" -type::is::duration(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::duration('1970-01-01T00:00:00'); - -false -``` - -
- -## `type::is::float` - -The `type::is::float` function checks if the passed value is of type `float`. - -```surql title="API DEFINITION" -type::is::float(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::float( 41.5); - -true -``` - -
- -## `type::is::geometry` - -The `type::is::geometry` function checks if the passed value is of type `geometry`. - -```surql title="API DEFINITION" -type::is::geometry(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::geometry((-0.118092, 51.509865)); - -true -``` - -
- -## `type::is::int` - -The `type::is::int` function checks if the passed value is of type `int`. - -```surql title="API DEFINITION" -type::is::int(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::int( 123); - -true -``` - -
- -## `type::is::line` - -The `type::is::line` function checks if the passed value is of type `line`. - -```surql title="API DEFINITION" -type::is::line(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::line("I am not a line"); - -false -``` - -
- -## `type::is::null` - -The `type::is::null` function checks if the passed value is of type `null`. - -```surql title="API DEFINITION" -type::is::null(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::null(NULL); - -true -``` - -
- -## `type::is::multiline` - -The `type::is::multiline` function checks if the passed value is of type `multiline`. - -```surql title="API DEFINITION" -type::is::multiline(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::multiline("I am not a multiline"); - -false -``` - -
- -## `type::is::multipoint` - -The `type::is::multipoint` function checks if the passed value is of type `multipoint`. - -```surql title="API DEFINITION" -type::is::multipoint(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::multipoint("I am not a multipoint"); - -false -``` - -
- -## `type::is::multipolygon` - -The `type::is::multipolygon` function checks if the passed value is of type `multipolygon`. - -```surql title="API DEFINITION" -type::is::multipolygon(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::multipolygon("I am not a multipolygon"); - -false -``` - -
- -## `type::is::number` - -The `type::is::number` function checks if the passed value is of type `number`. - -```surql title="API DEFINITION" -type::is::number(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::number(123); - -true -``` - -
- -## `type::is::object` - -The `type::is::object` function checks if the passed value is of type `object`. - -```surql title="API DEFINITION" -type::is::object(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::object({ hello: 'world' }); - -true -``` - -
- -## `type::is::point` - -The `type::is::point` function checks if the passed value is of type `point`. - -```surql title="API DEFINITION" -type::is::point(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::point((-0.118092, 51.509865)); - -true -``` - -
- -## `type::is::polygon` - -The `type::is::polygon` function checks if the passed value is of type `polygon`. - -```surql title="API DEFINITION" -type::is::polygon(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::polygon("I am not a polygon"); - -false -``` - -
- -## `type::is::record` - -The `type::is::record` function checks if the passed value is of type `record`. - -```surql title="API DEFINITION" -type::is::record(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::record(user:tobie); - -true -``` - -
- -## `type::is::string` - -The `type::is::string` function checks if the passed value is of type `string`. - -```surql title="API DEFINITION" -type::is::string(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::string("abc"); - -true -``` - -
- -## `type::is::uuid` - -The `type::is::uuid` function checks if the passed value is of type `uuid`. - -```surql title="API DEFINITION" -type::is::uuid(any) -> bool -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN type::is::uuid("018a6680-bef9-701b-9025-e1754f296a0f"); - -true -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/functions/vector.mdx b/versioned_docs/version-1.0.x/surrealql/functions/vector.mdx deleted file mode 100644 index 8d82afe9e..000000000 --- a/versioned_docs/version-1.0.x/surrealql/functions/vector.mdx +++ /dev/null @@ -1,417 +0,0 @@ ---- -sidebar_position: 19 ---- - -# Vector functions - -# Vector functions - -A collection of essential vector operations that provide foundational functionality for numerical computation, machine learning, and data analysis. These operations include distance measurements, similarity coefficients, and other basic and complex operations related to vectors. Through understanding and implementing these functions, we can perform a wide variety of tasks ranging from data processing to advanced statistical analyses. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionDescription
vector::add()Performs element-wise addition of two vectors
vector::angle()Computes the angle between two vectors
vector::cross()Computes the cross product of two vectors
vector::divide()Performs element-wise division between two vectors
vector::dot()Computes the dot product of two vectors
vector::magnitude()Computes the magnitude (or length) of a vector
vector::multiply()Performs element-wise multiplication of two vectors
vector::normalize()Computes the normalization of a vector
vector::project()Computes the projection of one vector onto another
vector::subtract()Performs element-wise subtraction between two vectors
vector::distance::chebyshev()Computes the Chebyshev distance
vector::distance::euclidean()Computes the Euclidean distance between two vectors
vector::distance::hamming()Computes the Hamming distance between two vectors
vector::distance::manhattan()Computes the Manhattan distance between two vectors
vector::distance::minkowski()Computes the Minkowski distance between two vectors
vector::similarity::cosine()Computes the Cosine similarity between two vectors
vector::similarity::jaccard()Computes the Jaccard similarity between two vectors
vector::similarity::pearson()Computes the Pearson correlation coefficient between two vectors
- -## `vector::add` - -The `vector::add` function performs element-wise addition of two vectors, where each element in the first vector is added to the corresponding element in the second vector. - -```surql title="API DEFINITION" -vector::add(array, array) -> array -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::add([1, 2, 3], [1, 2, 3]); - -[2, 4, 6] -``` - -
- -## `vector::angle` - -The `vector::angle` function computes the angle between two vectors, providing a measure of the orientation difference between them. - -```surql title="API DEFINITION" -vector::angle(array, array) -> number -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::angle([5, 10, 15], [10, 5, 20]); - -0.36774908225917935f -``` - -
- -## `vector::cross` - -The `vector::cross` function computes the cross product of two vectors, which results in a vector that is orthogonal (perpendicular) to the plane containing the original vectors. - -```surql title="API DEFINITION" -vector::cross(array, array) -> array -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::cross([1, 2, 3], [4, 5, 6]); - -[-3, 6, -3] -``` - -
- -## `vector::divide` - -The `vector::divide` function performs element-wise division between two vectors, where each element in the first vector is divided by the corresponding element in the second vector. - -```surql title="API DEFINITION" -vector::divide(array, array) -> array - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::divide([10, -20, 30, 0], [0, -1, 2, -3]); - -[NaN, 20, 15, 0] -``` - -
- -## `vector::dot` - -The `vector::dot` function computes the dot product of two vectors, which is the sum of the products of the corresponding entries of the two sequences of numbers. - -```surql title="API DEFINITION" -vector::dot(array, array) -> number - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::dot([1, 2, 3], [1, 2, 3]); - -14 -``` - -
- -## `vector::magnitude` - -The `vector::magnitude` function computes the magnitude (or length) of a vector, providing a measure of the size of the vector in multi-dimensional space. - -```surql title="API DEFINITION" -vector::magnitude(array) -> number - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::magnitude([ 1, 2, 3, 3, 3, 4, 5 ]); - -8.54400374531753f -``` - -
- -## `vector::multiply` - -The `vector::multiply` function performs element-wise multiplication of two vectors, where each element in the first vector is multiplied by the corresponding element in the second vector. - -```surql title="API DEFINITION" -vector::multiply(array, array) -> number - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::multiply([1, 2, 3], [1, 2, 3]); - -[1, 4, 9] -``` - -
- -## `vector::normalize` - -The `vector::normalize` function computes the normalization of a vector, transforming it to a unit vector (a vector of length 1) that maintains the original direction. - -```surql title="API DEFINITION" -vector::normalize(array) -> array - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::normalize([ 4, 3 ]); - -[0.8f, 0.6f] -``` - -
- -## `vector::project` - -The `vector::project` function computes the normalization of a vector, transforming it to a unit vector (a vector of length 1) that maintains the original direction. - -```surql title="API DEFINITION" -vector::project(array) -> array - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::project([1, 2, 3], [4, 5, 6]); - -[1.6623376623376624f, 2.077922077922078f, 2.4935064935064934f] -``` - -
- -## `vector::subtract` - -The `vector::subtract` function performs element-wise subtraction between two vectors, where each element in the second vector is subtracted from the corresponding element in the first vector. - -```surql title="API DEFINITION" -vector::subtract(array, array) -> array - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::subtract([4, 5, 6], [3, 2, 1]); - -[1, 3, 5] -``` - -
- -## `vector::distance::chebyshev` - -The `vector::distance::chebyshev` function computes the Chebyshev distance (also known as maximum value distance) between two vectors, which is the greatest of their differences along any coordinate dimension. - -```surql title="API DEFINITION" -vector::distance::chebyshev(array, array) -> number - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::distance::chebyshev([2, 4, 5, 3, 8, 2], [3, 1, 5, -3, 7, 2]); - -6f -``` - -
- -## `vector::distance::euclidean` - -The `vector::distance::euclidean` function computes the Euclidean distance between two vectors, providing a measure of the straight-line distance between two points in a multi-dimensional space. - -```surql title="API DEFINITION" -vector::distance::euclidean(array, array) -> number - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::distance::euclidean([10, 50, 200], [400, 100, 20]); - -432.43496620879307f -``` - -
- -## `vector::distance::hamming` - -The `vector::distance::hamming` function computes the Hamming distance between two vectors, measuring the minimum number of substitutions required to change one vector into the other, useful for comparing strings or codes. - -```surql title="API DEFINITION" -vector::distance::hamming(array, array) -> number - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::distance::hamming([1, 2, 2], [1, 2, 3]); - -1 -``` - -
- -## `vector::distance::manhattan` - -The `vector::distance::manhattan` function computes the Manhattan distance (also known as the L1 norm or Taxicab geometry) between two vectors, which is the sum of the absolute differences of their corresponding elements. - -```surql title="API DEFINITION" -vector::distance::manhattan(array, array) -> number - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::distance::manhattan([10, 20, 15, 10, 5], [12, 24, 18, 8, 7]); - -13 -``` - -
- -## `vector::distance::minkowski` - -The `vector::distance::minkowski` function computes the Minkowski distance between two vectors, a generalization of other distance metrics such as Euclidean and Manhattan when parameterized with different values of p. - - -```surql title="API DEFINITION" -vector::distance::minkowski(array, array, number) -> number - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::distance::minkowski([10, 20, 15, 10, 5], [12, 24, 18, 8, 7], 3); - -4.862944131094279f -``` - -
- -## `vector::distance::cosine` - -The `vector::distance::cosine` function computes the Cosine similarity between two vectors, indicating the cosine of the angle between them, which is a measure of how closely two vectors are oriented to each other. - - -```surql title="API DEFINITION" -vector::similarity::cosine(array, array) -> number - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::similarity::cosine([10, 50, 200], [400, 100, 20]); - -0.15258215962441316f -``` - -
- -## `vector::distance::jaccard` - -The `vector::distance::jaccard` function computes the Jaccard similarity between two vectors, measuring the intersection divided by the union of the datasets represented by the vectors. - - -```surql title="API DEFINITION" -vector::similarity::jaccard(array, array) -> number - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::similarity::jaccard([0,1,2,5,6], [0,2,3,4,5,7,9]); - -0.3333333333333333f -``` - -
- -## `vector::distance::pearson` - -The `vector::distance::pearson` function Computes the Pearson correlation coefficient between two vectors, reflecting the degree of linear relationship between them. - - -```surql title="API DEFINITION" -vector::similarity::pearson(array, array) -> number - -``` -The following example shows this function, and its output, when used in a [`RETURN`](/docs/surrealdb/surrealql/statements/return) statement: - -```surql -RETURN vector::similarity::pearson([1,2,3], [1,5,7]); - -0.9819805060619659f -``` - -

\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/operators.mdx b/versioned_docs/version-1.0.x/surrealql/operators.mdx deleted file mode 100644 index ffa39fb6a..000000000 --- a/versioned_docs/version-1.0.x/surrealql/operators.mdx +++ /dev/null @@ -1,780 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Operators - -# Operators - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OperatorDescription
&& or ANDChecks whether both of two values are truthy
|| or ORChecks whether either of two values is truthy
??Check whether either of two values are truthy and not NULL
?:Check whether either of two values are truthy
= or ISCheck whether two values are equal
!= or IS NOTCheck whether two values are not equal
==Check whether two values are exactly equal
?=Check whether any value in a set is equal to a value
*=Check whether all values in a set are equal to a value
~Compare two values for equality using fuzzy matching
!~Compare two values for inequality using fuzzy matching
?~Check whether any value in a set is equal to a value using fuzzy matching
*~Check whether all values in a set are equal to a value using fuzzy matching
<Check whether a value is less than another value
<=Check whether a value is less than or equal to another value
>Check whether a value is greater than another value
>=Check whether a value is greater than or equal to another value
+Add two values together
-Subtract a value from another value
* or ×Multiply two values together
/ or ÷Divide a value by another value
**Raises a base value by another value
INChecks whether a value is contained within another value
NOT INChecks whether a value is not contained within another value
CONTAINS or Checks whether a value contains another value
CONTAINSNOT or Checks whether a value does not contain another value
CONTAINSALL or Checks whether a value contains all other values
CONTAINSANY or Checks whether a value contains any other value
CONTAINSNONE or Checks whether a value contains none of the following values
INSIDE or Checks whether a value is contained within another value
NOTINSIDE or NOT IN or Checks whether a value is not contained within another value
ALLINSIDE or Checks whether all values are contained within other values
ANYINSIDE or Checks whether any value is contained within other values
NONEINSIDE or Checks whether no value is contained within other values
OUTSIDEChecks whether a geometry type is outside of another geometry type
INTERSECTSChecks whether a geometry type intersects another geometry type
@@ or @[ref]@Checks whether the terms are found in a full-text indexed field
- -## `&&` or `AND` {#and} - -Checks whether both of two values are truthy. - -```surql -SELECT * FROM 10 AND 20 AND 30; - -30 -``` - -
- -## `||` or `OR` {#or} - -Checks whether either of two values are truthy. - -```surql -SELECT * FROM 0 OR false OR 10; - -10 -``` - -
- -## `??` {#nco} - -Check whether either of two values are truthy and not `NULL`. - -```surql -SELECT * FROM NULL ?? 0 ?? false ?? 10; - -0 -``` - -
- -## `?:` {#tco} - -Check whether either of two values are truthy. - -```surql -SELECT * FROM NULL ?: 0 ?: false ?: 10; - -10 -``` - -
- -## `=` or `IS` {#equal} - -Check whether two values are equal. - -```surql -SELECT * FROM true = "true"; - -false -``` -```surql -SELECT * FROM 10 = "10"; - -false -``` -```surql -SELECT * FROM 10 = 10.00; - -true -``` -```surql -SELECT * FROM 10 = "10.3"; - -false -``` -```surql -SELECT * FROM [1, 2, 3] = [1, 2, 3]; - -true -``` -```surql -SELECT * FROM [1, 2, 3] = [1, 2, 3, 4]; - -false -``` -```surql -SELECT * FROM { this: "object" } = { this: "object" }; - -true -``` -```surql -SELECT * FROM { this: "object" } = { another: "object" }; - -false -``` - -
- -## `!=` or `IS NOT` {#notequal} - -Check whether two values are equal. - -```surql -SELECT * FROM 10 != "15"; - -true -``` -```surql -SELECT * FROM 10 != "test"; - -true -``` -```surql -SELECT * FROM [1, 2, 3] != [3, 4, 5]; - -true -``` - -
- -## `==` {#exact} - -Check whether two values are exact. This operator also checks that each value has the same type. - -```surql -SELECT * FROM 10 == 10; - -true -``` -```surql -SELECT * FROM 10 == "10"; - -false -``` -```surql -SELECT * FROM true == "true"; - -false -``` - -
- -## `?=` {#anyequal} - -Check whether any value in an array equals another value. - -```surql -SELECT * FROM [10, 15, 20] ?= 10; - -true -``` - -
- -## `*=` {#allequal} - -Check whether all values in an array equals another value. - -```surql -SELECT * FROM [10, 10, 10] *= 10; - -true -``` - -
- -## `~` {#match} - -Compare two values for equality using fuzzy matching. - -```surql -SELECT * FROM "test text" ~ "Test"; - -true -``` -```surql -SELECT * FROM "true" ~ true; - -false -``` -```surql -SELECT * FROM ["test", "thing"] ~ "test"; - -false -``` - -
- -## `!~` {#notmatch} - -Compare two values for inequality using fuzzy matching. - -```surql -SELECT * FROM "other text" !~ "test"; - -true -``` -```surql -SELECT * FROM "test text" !~ "Test"; - -false -``` - -
- -## `?~` {#anymatch} - -Check whether any value in a set is equal to a value using fuzzy matching. - -```surql -SELECT * FROM ["true", "test", "text"] ?~ true; - -false -``` -```surql -SELECT * FROM [1, 2, 3] ?~ "2"; - -false -``` - -
- -## `*~` {#allmatch} - -Check whether all values in a set are equal to a value using fuzzy matching. - -```surql -SELECT * FROM ["TRUE", true, "true", "TrUe"] *~ true; - -false -``` -```surql -SELECT * FROM ["TEST", "test", "text"] *~ "test"; - -false -``` - -
- -## `<` {#lessthan} - -Check whether a value is less than another value. - -```surql -SELECT * FROM 10 < 15; - -true -``` - -
- -## `<=` {#lessthanorequal} - -Check whether a value is less than or equal to another value. - -```surql -SELECT * FROM 10 <= 15; - -true -``` - -
- -## `>` {#greaterthan} - -Check whether a value is less than another value. - -```surql -SELECT * FROM 15 > 10; - -true -``` - -
- -## `>=` {#greaterthanorequal} - -Check whether a value is less than or equal to another value. - -```surql -SELECT * FROM 15 >= 10; - -true -``` - -
- -## `+` {#add} - -Add two values together - -```surql -SELECT * FROM 10 + 10; - -20 -``` -```surql -SELECT * FROM "test" + " " + "this"; - -"test this" -``` -```surql -SELECT * FROM 13h + 30m; - -"13h30m" -``` - -
- -## `-` {#sub} - -Subtracts a value from another value. - -```surql -SELECT * FROM 20 - 10; - -10 -``` -```surql -SELECT * FROM 2m - 1m; - -"1m" -``` - -
- -## `*` or `×` {#mul} - -Multiplies a value by another value. - -```surql -SELECT * FROM 20 * 2; - -40 -``` - -
- -## `/` or `÷` {#div} - -Divides a value with another value. - -```surql -SELECT * FROM 20 / 2; - -10 -``` - -
- -## `**` {#pow} - -Raises a base value by another value. - -```surql -SELECT * FROM 20 ** 3; - -8000 -``` - -
- -## `CONTAINS` or `∋` {#contains} - -Check whether a value contains another value. - -```surql -SELECT * FROM [10, 20, 30] CONTAINS 10; - -true -``` -```surql -SELECT * FROM "this is some text" CONTAINS "text"; - -true -``` -```surql -SELECT * FROM { - type: "Polygon", - coordinates: [[ - [-0.38314819, 51.37692386], [0.1785278, 51.37692386], - [0.1785278, 51.61460570], [-0.38314819, 51.61460570], - [-0.38314819, 51.37692386] - ]] -} CONTAINS (-0.118092, 51.509865); - -true -``` - -
- -## `CONTAINSNOT` or `∌` {#containsnot} - -Check whether a value does not contain another value. - -```surql -SELECT * FROM [10, 20, 30] CONTAINSNOT 15; - -true -``` -```surql -SELECT * FROM "this is some text" CONTAINSNOT "other"; - -true -``` -```surql -SELECT * FROM { - type: "Polygon", - coordinates: [[ - [-0.38314819, 51.37692386], [0.1785278, 51.37692386], - [0.1785278, 51.61460570], [-0.38314819, 51.61460570], - [-0.38314819, 51.37692386] - ]] -} CONTAINSNOT (-0.518092, 53.509865); - -true -``` - -
- -## `CONTAINSALL` or `⊇` {#containsall} - -Check whether a value contains all of multiple values. - -```surql -SELECT * FROM [10, 20, 30] CONTAINSALL [10, 20, 10]; - -true -``` - -
- -## `CONTAINSANY` or `⊃` {#containsany} - -Check whether a value contains any of multiple values. - -```surql -SELECT * FROM [10, 20, 30] CONTAINSANY [10, 15, 25]; - -true -``` - -
- -## `INSIDE` or `∈` or `IN` {#inside} - -Check whether a value is contained within another value. - -```surql -SELECT * FROM 10 INSIDE [10, 20, 30]; - -true -``` -```surql -SELECT * FROM "text" INSIDE "this is some text"; - -true -``` -```surql -SELECT * FROM (-0.118092, 51.509865) INSIDE { - type: "Polygon", - coordinates: [[ - [-0.38314819, 51.37692386], [0.1785278, 51.37692386], - [0.1785278, 51.61460570], [-0.38314819, 51.61460570], - [-0.38314819, 51.37692386] - ]] -}; - -true -``` - -
- -## `NOTINSIDE` or `∉` or `NOT IN` {#notinside} - -Check whether a value is not contained within another value. - -```surql -SELECT * FROM 15 NOTINSIDE [10, 20, 30]; - -true -``` -```surql -SELECT * FROM "other" NOTINSIDE "this is some text"; - -true -``` -```surql -SELECT * FROM (-0.518092, 53.509865) NOTINSIDE { - type: "Polygon", - coordinates: [[ - [-0.38314819, 51.37692386], [0.1785278, 51.37692386], - [0.1785278, 51.61460570], [-0.38314819, 51.61460570], - [-0.38314819, 51.37692386] - ]] -}; - -true -``` - -
- -## `ALLINSIDE` or `⊆` {#allinside} - -Check whether all of multiple values are contained within another value. - -```surql -SELECT * FROM [10, 20, 10] ALLINSIDE [10, 20, 30]; - -true -``` - -
- -## `ANYINSIDE` or `⊂` {#anyinside} - -Check whether any of multiple values are contained within another value. - -```surql -SELECT * FROM [10, 15, 25] ANYINSIDE [10, 20, 30]; - -true -``` - -
- -## `NONEINSIDE` or `⊄` {#noneinside} - -Check whether none of multiple values are contained within another value. - -```surql -SELECT * FROM [15, 25, 35] NONEINSIDE [10, 20, 30]; - -true -``` - -
- -## `OUTSIDE` {#outside} -Check whether a geometry value is outside another geometry value. - -```surql -SELECT * FROM (-0.518092, 53.509865) OUTSIDE { - type: "Polygon", - coordinates: [[ - [-0.38314819, 51.37692386], [0.1785278, 51.37692386], - [0.1785278, 51.61460570], [-0.38314819, 51.61460570], - [-0.38314819, 51.37692386] - ]] -}; - -true -``` - -
- -## `INTERSECTS` {#intersects} -Check whether a geometry value intersects another geometry value. - -```surql -SELECT * FROM { - type: "Polygon", - coordinates: [[ - [-0.38314819, 51.37692386], [0.1785278, 51.37692386], - [0.1785278, 51.61460570], [-0.38314819, 51.61460570], - [-0.38314819, 51.37692386] - ]] -} INTERSECTS { - type: "Polygon", - coordinates: [[ - [-0.11123657, 51.53160074], [-0.16925811, 51.51921169], - [-0.11466979, 51.48223813], [-0.07381439, 51.51322956], - [-0.11123657, 51.53160074] - ]] -}; - -true -``` - -
- -## `MATCHES` {#matches} -Checks whether the terms are found in a full-text indexed field. - -```surql -SELECT * FROM book WHERE title @@ 'rust web'; - - -[ - { - id: book:1, - title: 'Rust Web Programming' - } -] - -``` -Using the matches operator with a reference checks whether the terms are found, highlights the searched terms, and computes the full-text score. - -```surql -SELECT id, - search::highlight('', '', 1) AS title, - search::score(1) AS score -FROM book -WHERE title @1@ 'rust web' -ORDER BY score DESC; - -[ - { - id: book:1, - score: 0.9227996468544006f, - title: 'Rust Web Programming' - } -] -``` - -

diff --git a/versioned_docs/version-1.0.x/surrealql/overview.mdx b/versioned_docs/version-1.0.x/surrealql/overview.mdx deleted file mode 100644 index 4951f073f..000000000 --- a/versioned_docs/version-1.0.x/surrealql/overview.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -sidebar_position: 1 -title: Overview ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -# SurrealQL - - - -# SurrealQL - -In this section, you will explore SurrealQL, a powerful database query language that closely resembles traditional SQL but comes with unique differences and improvements. - -SurrealQL is designed to provide developers with a seamless and intuitive way to interact with SurrealDB. It offers a familiar syntax and supports various statement types, allowing you to perform complex database operations efficiently. - -While SurrealQL shares similarities with traditional SQL, it introduces enhancements and optimizations that make it well-suited for working with SurrealDB's advanced features. Whether you are querying data, modifying records, or managing database structures, SurrealQL provides a comprehensive set of capabilities to meet your needs. - -## Key Features - -SurrealQL offers several key features that make it a powerful tool for working with SurrealDB: - -- **Familiar Syntax**: SurrealQL adopts a syntax similar to traditional SQL, making it easy for developers familiar with SQL to transition to SurrealDB seamlessly. - -- **Advanced Querying**: SurrealQL supports a wide range of querying capabilities, including filtering, sorting, aggregating, and joining data from multiple tables. - -- **Data Manipulation**: With SurrealQL, you can easily insert, update, and delete records in your SurrealDB database, allowing you to manage your data effectively. - -- **Graph relationships**: SurrealQL supports graph relationships, allowing you to define and query relationships between records in your database. - -- **Schema Management**: SurrealQL provides features for creating and modifying database schemas, allowing you to define the structure of your data and enforce data integrity. - -- **Performance Optimization**: SurrealQL incorporates optimizations specific to SurrealDB, ensuring efficient execution of queries and minimizing resource usage. - -## Getting Started - -To start using [SurrealQL](/docs/surrealdb/surrealql/statements/begin), refer to the documentation on the various statement types and their syntax. The statements page provides comprehensive examples and explanations for each statement type, helping you understand how to construct queries and interact with SurrealDB effectively. - -We hope that SurrealQL empowers you to leverage the full potential of SurrealDB and enables you to build robust and scalable applications. Let's dive into the world of SurrealQL and unlock the capabilities of SurrealDB together! \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/parameters.mdx b/versioned_docs/version-1.0.x/surrealql/parameters.mdx deleted file mode 100644 index e25957049..000000000 --- a/versioned_docs/version-1.0.x/surrealql/parameters.mdx +++ /dev/null @@ -1,131 +0,0 @@ ---- -sidebar_position: 6 ---- - -# Parameters - -# Parameters - -Parameters can be used like variables to store a value which can then be used in a subsequent query. A parameter can store any value, including the result of a query. Parameters can be defined within the SQL, or can be passed in using the client libraries as request variables. - -## Defining parameters within SurrealQL - -To define a parameter in SurrealQL, use the [`LET`](../surrealql/statements/let) statement. The name of the parameter should begin with a `$` character. - -```surql --- Define the parameter -LET $name = "tobie"; --- Use the parameter -CREATE person SET name = $name; -``` - -## Defining parameters within client libraries -SurrealDB's client libraries allow parameters to be passed in as JSON values, which are then converted to SurrealDB data types when the query is run. The following example show a variable being used within a SurrealQL query from the JavaScript library. - -```javascript -let people = await surreal.query("SELECT * FROM article WHERE status INSIDE $status", { - status: ["live", "draft"], -}); -``` - -## Reserved variable names -SurrealDB uses predefined variables. For that purpose, you can use those variables inside your query but you cannot declare new parameters using one of the following name: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription
- $auth - - Represents the currently authenticated scope user -
- $token - - Represents values held inside the JWT token used for the current session -
- $scope - - Represents the name of the scope of a currently authenticated scope user. -
- $session - - Represents values from the session functions as an object -
- $before - - Represents the value before a mutation on a field -
- $after - - Represents the value after a mutation on a field -
- $value - - Represents the value after a mutation on a field (identical to $after in the case of an event) -
- $input - - Represents the initially inputted value in a field definition, as the value clause could have modified the $value variable -
- $this - - Represents the current record in a subquery -
- $parent - - Represents the parent record in a subquery -
- $event - - Represents the type of table event triggered on an event. -
\ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/_category_.json b/versioned_docs/version-1.0.x/surrealql/statements/_category_.json deleted file mode 100644 index fca53ad3b..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Statements", - "position": 3, - "link": { - "label": "statements", - "path": "/statements/overview" - } -} diff --git a/versioned_docs/version-1.0.x/surrealql/statements/begin.mdx b/versioned_docs/version-1.0.x/surrealql/statements/begin.mdx deleted file mode 100644 index 0dd8562ea..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/begin.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -sidebar_position: 1 ---- - -# BEGIN - -# `BEGIN` statement - -Each statement within SurrealDB is run within its own transaction. If a set of changes need to be made together, then groups of statements can be run together as a single transaction, either succeeding as a whole, or failing without leaving any residual data modifications. - -The `BEGIN TRANSACTION` statement can be used to run a group of statements together, either succeeding as a whole, or failing. If all of the statements within a transaction succeed, and the transaction is successful, then all of the data modifications made during the transaction are committed ([COMMIT](/docs/surrealdb/1.0.x/surrealql/statements/commit)) and become a permanent part of the database. If a transaction encounters errors and must be cancelled or rolled back ([CANCEL](/docs/surrealdb/1.0.x/surrealql/statements/cancel)), then any data modification made within the transaction is rolledback, and will not be visible within the database. - -### Statement syntax - -```surql title="SurrealQL Syntax" -BEGIN [ TRANSACTION ]; -``` - -## Example usage - -The following query shows example usage of this statement. - -```surql --- Start a new database transaction. Transactions are a way to ensure multiple operations --- either all succeed or all fail, maintaining data integrity. -BEGIN TRANSACTION; - --- Create a new account with the ID 'one' and set its initial balance to 135605.16 -CREATE account:one SET balance = 135605.16; - --- Create another new account with the ID 'two' and set its initial balance to 91031.31 -CREATE account:two SET balance = 91031.31; - --- Update the balance of account 'one' by adding 300.00 to the current balance. --- This could represent a deposit or other form of credit on the balance property. -UPDATE account:one SET balance += 300.00; - --- Update the balance of account 'two' by subtracting 300.00 from the current balance. --- This could represent a withdrawal or other form of debit on the balance property. -UPDATE account:two SET balance -= 300.00; - --- Finalize the transaction. This will apply the changes to the database. If there was an error --- during any of the previous steps within the transaction, all changes would be rolled back and --- the database would remain in its initial state. -COMMIT TRANSACTION; -``` diff --git a/versioned_docs/version-1.0.x/surrealql/statements/cancel.mdx b/versioned_docs/version-1.0.x/surrealql/statements/cancel.mdx deleted file mode 100644 index b78f217a6..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/cancel.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -sidebar_position: 3 ---- - -# CANCEL - -# `CANCEL` statement - -Each statement within SurrealDB is run within its own transaction. If a set of changes need to be made together, then groups of statements can be run together as a single transaction, either succeeding as a whole, or failing without leaving any residual data modifications. - -The `CANCEL TRANSACTION` statement can be used to cancel a set of statements within a transaction, reverting or rolling back any data modification made within the transaction as a whole. - -### Statement syntax - -```surql title="SurrealQL Syntax" -CANCEL [ TRANSACTION ]; -``` - -## Example usage - -The following query shows example usage of this statement. - -```surql -BEGIN TRANSACTION; --- Setup accounts -CREATE account:one SET balance = 135,605.16; -CREATE account:two SET balance = 91,031.31; --- Move money -UPDATE account:one SET balance += 300.00; -UPDATE account:two SET balance -= 300.00; --- Rollback all changes -CANCEL TRANSACTION; -``` diff --git a/versioned_docs/version-1.0.x/surrealql/statements/commit.mdx b/versioned_docs/version-1.0.x/surrealql/statements/commit.mdx deleted file mode 100644 index 1c4d37ecb..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/commit.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -sidebar_position: 4 ---- - -# COMMIT - -# `COMMIT` statement - -Each statement within SurrealDB is run within its own transaction. If a set of changes need to be made together, then groups of statements can be run together as a single transaction, either succeeding as a whole, or failing without leaving any residual data modifications. - -The `COMMIT TRANSACTION` statement can be used to commit a set of statements within a transaction, ensuring that all data modifications become a permanent part of the database. - -### Statement syntax - -```surql title="SurrealQL Syntax" -COMMIT [ TRANSACTION ]; -``` - -## Example usage - -The following query shows example usage of this statement. - -```surql -BEGIN TRANSACTION; --- Setup accounts -CREATE account:one SET balance = 135,605.16; -CREATE account:two SET balance = 91,031.31; --- Move money -UPDATE account:one SET balance += 300.00; -UPDATE account:two SET balance -= 300.00; --- Finalise all changes -COMMIT TRANSACTION; -``` diff --git a/versioned_docs/version-1.0.x/surrealql/statements/continue.mdx b/versioned_docs/version-1.0.x/surrealql/statements/continue.mdx deleted file mode 100644 index 1ba1bc1aa..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/continue.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -sidebar_position: 5 ---- - -# CONTINUE - -# `CONTINUE` statement - -The CONTINUE statement can be used to skip an iteration of a loop, like within the [FOR-statement](/docs/surrealdb/surrealql/statements/for). - -### Statement syntax - -```surql title="SurrealQL Syntax" -CONTINUE -``` - -## Example usage - -The following query shows example usage of this statement. - -```surql --- Set can_vote to true for every person over 18 years old. -FOR $person IN (SELECT id, age FROM person) { - IF ($person.age < 18) { - CONTINUE; - }; - - UPDATE $person.id SET can_vote = true; -}; -``` diff --git a/versioned_docs/version-1.0.x/surrealql/statements/create.mdx b/versioned_docs/version-1.0.x/surrealql/statements/create.mdx deleted file mode 100644 index fbcf418c1..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/create.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -sidebar_position: 6 ---- - -# CREATE - -# `CREATE` statement - -The CREATE statement can be used to add records to the database, if those records do not already exist. - -:::note -__Note:__ This statement can not be used to create graph relationships. For that, use the [`RELATE`](/docs/surrealdb/1.0.x/surrealql/statements/relate) statement. -::: - - -### Statement syntax - -```surql title="SurrealQL Syntax" -CREATE [ ONLY ] @targets - [ CONTENT @value - | SET @field = @value ... - ] - [ RETURN [ NONE | BEFORE | AFTER | DIFF | @projections ... ] - [ TIMEOUT @duration ] - [ PARALLEL ] -; -``` - -## Example usage - -The following query shows example usage of this statement. - -```surql --- Create a new record with a random id -CREATE person SET name = 'Tobie', company = 'SurrealDB', skills = ['Rust', 'Go', 'JavaScript']; - --- Create a new record with a specific numeric id -CREATE person:100 SET name = 'Tobie', company = 'SurrealDB', skills = ['Rust', 'Go', 'JavaScript']; - --- Create a new record with a specific string id -CREATE person:tobie SET name = 'Tobie', company = 'SurrealDB', skills = ['Rust', 'Go', 'JavaScript']; - --- Create just a single record --- Using the ONLY keyword, just an object for the record in question will be returned. --- This, instead of an array with a single object. -CREATE ONLY person:tobie SET name = 'Tobie', company = 'SurrealDB', skills = ['Rust', 'Go', 'JavaScript']; -``` - -Instead of specifying record data using the `SET` clause, it is also possible to use the `CONTENT` keyword to specify the record data using a SurrealQL object. - -```surql --- Create a new record with a random id -CREATE person CONTENT { - name: 'Tobie', - company: 'SurrealDB', - skills: ['Rust', 'Go', 'JavaScript'], -}; - --- Create a new record with a specific id -CREATE person:tobie CONTENT { - name: 'Tobie', - company: 'SurrealDB', - skills: ['Rust', 'Go', 'JavaScript'], -}; -``` -By default, the create statement returns the record value once the changes have been made. To change the return value of each record, specify a `RETURN` clause, specifying either `NONE`, `BEFORE`, `AFTER`, `DIFF`, or a comma-separated list of specific fields to return. - -```surql --- Don't return any result -CREATE person SET age = 46, username = "john-smith" RETURN NONE; - --- Return the changeset diff -CREATE person SET age = 46, username = "john-smith" RETURN DIFF; - --- Return the record before changes were applied -CREATE person SET age = 46, username = "john-smith" RETURN BEFORE; - --- Return the record after changes were applied (the default) -CREATE person SET age = 46, username = "john-smith" RETURN AFTER; - --- Return a specific field only from the updated records -CREATE person SET age = 46, username = "john-smith", interests = ['skiing', 'music'] RETURN interests; -``` diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/_category_.json b/versioned_docs/version-1.0.x/surrealql/statements/define/_category_.json deleted file mode 100644 index 61e9bcb91..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "DEFINE", - "position": 7 -} diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/analyzer.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/analyzer.mdx deleted file mode 100644 index 1eaf875ee..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/analyzer.mdx +++ /dev/null @@ -1,158 +0,0 @@ ---- -sidebar_position: 2 ---- - -# DEFINE ANALYZER - -# `DEFINE ANALYZER` statement - -In the context of a database, an analyzer plays a crucial role in text processing and searching. It is defined by its name, a set of tokenizers, and a collection of filters. - -## Requirements -- You must be authenticated as a root, namespace, or database user before you can use the `DEFINE ANALYZER` statement. -- [You must select your namespace and database](/docs/surrealdb/1.0.x/surrealql/statements/use) before you can use the `DEFINE ANALYZER` statement. - -## Statement syntax - -```surql title="SurrealQL Syntax" -DEFINE ANALYZER @name [ TOKENIZERS @tokenizers ] [ FILTERS @filters ] -``` - -## Tokenizers -Tokenizers are responsible for breaking down a given text into individual tokens based on a set of instructions. There are a couple of tokenizers that can be used while defining an analyzer as seen below: - -### `blank` - -The blank tokenizer breaks down a text into tokens by creating a new token each time it encounters a space, tab, or newline character. It's a straightforward way to split text into words or chunks based on whitespace. - -For example, if you had the text **"hello world"**, the blank tokenizer would create two tokens, **["hello" and "world"]**. Below is an example of how to use the blank tokenizer: - -```surql -DEFINE ANALYZER example_blank TOKENIZERS blank; -``` - -### `camel` - -The camel tokenizer is used for identifying and creating tokens when the next character in the text is uppercase. This is particularly useful for processing camelCase or PascalCase text, common in programming, to split them into meaningful words. - -For example, if you had the text **"helloWorld"**, the camel tokenizer would create two tokens, **["hello", "World"]**. Below is an example of how to use the camel tokenizer: - -```surql -DEFINE ANALYZER example_camel TOKENIZERS camel; -``` - -### `class` - -The class tokenizer segments text into tokens by detecting changes (digit, letter, punctuation, blank) in the Unicode class of characters. It creates a new token when the character class changes, distinguishing between digits, letters, punctuation, and blanks. This allows for flexible tokenization based on character types. - -For example, if you had the text **"123abc!XYZ"**, the class tokenizer would create four tokens, **["123", "abc", "!", "XYZ"]**. Below is an example of how to use the class tokenizer: - - -```surql -DEFINE ANALYZER example_class TOKENIZERS class; -``` - -### `punct` - -The punct tokenizer generates tokens by breaking the text whenever a punctuation character is encountered. It's suitable for tokenizing sentences or breaking text into smaller units based on punctuation marks. - -For example, if you had the text **"Hello, World!"**, the punct tokenizer would create four tokens, **["Hello", ",", "World", "!"]**. Below is an example of how to use the punct tokenizer: - -```surql -DEFINE ANALYZER example_punct TOKENIZERS punct; -``` - -## Filters - -Filters take on the task of transforming these tokens for further processing and analysis. - -### `ascii` - -The ascii filter is responsible for processing tokens by replacing or removing diacritical marks (accents and special characters) from the text. It helps standardize text by converting accented characters to their basic ASCII equivalents, making it more suitable for various text analysis tasks. - -For example, if you had the text **"résumé café"**, the ascii filter would create two tokens, **["resume", "cafe"]**. Below is an example of how to use the ascii filter: - -```surql -DEFINE ANALYZER example_ascii TOKENIZERS class FILTERS ascii; -``` - -### `ngram(min,max)` - -The ngram filter is used to create a sequence of 'n' tokens from a given sample of text or speech. These items can be syllables, letters, words or base pairs according to the application. It accepts two parameters `min` and `max` which indicates that you want to create n-grams starting from min to size of max. - -For example, if you had the text **"apple banana"**, the ngram filter would create these tokens: **["a", "p", "p", "l", "e", "ap", "pp", "pl", "le", "app", "ppl", "ple", "b", "a", "n", "a", "n", "a", "ba", "an", "na", "an", "na", "ban", "ana", "nan", "ana"]**. Below is an example of how to use the ngram filter: - -```surql -DEFINE ANALYZER example_ngram TOKENIZERS class FILTERS ngram(1,3); -``` - -### `edgengram(min,max)` - -The edgengram filter is used to create tokens that represent prefixes of terms. It generates a sequence of tokens that gradually build up a term, which can be useful for autocomplete or searching based on partial words. It accepts two parameters `min` and `max` which define the minimum and maximum amount of characters in the prefix. - -For example, if you had the text **"apple banana"**, the edgengram filter would create six tokens, **["a", "ap", "app", "b", "ba", "ban"]**. Below is an example of how to use the edgengram filter: - -```surql -DEFINE ANALYZER example_edgengram TOKENIZERS class FILTERS edgengram(1,3); -``` - -### `lowercase` - -The lowercase filter converts tokens to lowercase, ensuring that text is consistently in lowercase format. This is often used to make text case-insensitive for search and analysis purposes. - -For example, if you had the text **"Hello World"**, the lowercase filter would create two tokens, **["hello", "world"]**. Below is an example of how to use the lowercase filter: - -```surql -DEFINE ANALYZER example_lowercase TOKENIZERS class FILTERS lowercase; -``` - -### `snowball(language)` - -The snowball filter applies Snowball stemming to tokens, reducing them to their root form and converts the case to lowercase. The following supported languages can be passed as a parameter in snowball: Arabic, Danish, Dutch, English, French, German, Greek, Hungarian, Italian, Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish, Tamil, Turkish. - -For example, if you had the text **"running cats"**, the snowball filter would create two tokens, **["run", "cat"]**. Below is an example of how to use the snowball filter with the English language: - -```surql -DEFINE ANALYZER example_snowball TOKENIZERS class FILTERS snowball(english); -``` - -### `uppercase` - -The uppercase filter converts tokens to uppercase, ensuring text consistency in uppercase format. It can be useful when case-insensitivity is required for specific analysis or search operations. - -For example, if you had the text **"Hello World"**, the uppercase filter would create two tokens, **["HELLO", "WORLD"]**. Below is an example of how to use the uppercase filter: - -```surql -DEFINE ANALYZER example_uppercase TOKENIZERS class FILTERS uppercase; -``` - -## More examples - -Examples on application of analyzers to indexes can be found in the documenation on [`DEFINE INDEX`](/docs/surrealdb/1.0.x/surrealql/statements/define/indexes) statement - -This example creates an analyzer that tokenizes text based on the class of characters and then applies the lowercase filter to the tokens. - -```surql --- Creates a simple analyzer removing diacritics marks -DEFINE ANALYZER ascii TOKENIZERS class FILTERS lowercase,ascii; -``` -This command statement creates an analyzer specifically designed for processing English texts. - -```surql --- Creates an analyzer suitable for English text -DEFINE ANALYZER english TOKENIZERS class FILTERS snowball(english); -``` - -This statement creates an analyzer specifically designed for auto-completion tasks. - -```surql --- Creates an analyzer suitable for auto-completion. -DEFINE ANALYZER autocomplete FILTERS lowercase,edgengram(2,10); -``` - -This command statement creates an analyzer specifically designed for source code analysis. - -```surql --- Creates an analyzer suitable for source code analysis. -DEFINE ANALYZER code TOKENIZERS class,camel FILTERS lowercase,ascii; -``` diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/database.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/database.mdx deleted file mode 100644 index 026c10007..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/database.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -sidebar_position: 3 ---- - -# DEFINE DATABASE - -# `DEFINE DATABASE` statement - -The `DEFINE DATABASE` statement allows you to instantiate a named database, enabling you to specify security and configuration options. - -## Requirements -- You must be authenticated as a root or namespace user before you can use the `DEFINE DATABASE` statement. -- [You must select your namespace](/docs/surrealdb/surrealql/statements/use) before you can use the `DEFINE DATABASE` statement. - -## Statement syntax - -```surql title="SurrealQL Syntax" -DEFINE DATABASE @name -``` - -## Example usage -Below shows how you can create a database using the DEFINE DATABASE statement. - -```surql --- Specify the namespace for the database -USE NS abcum; --- Define database -DEFINE DATABASE app_vitalsense; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/event.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/event.mdx deleted file mode 100644 index a806e3416..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/event.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -sidebar_position: 4 ---- - -# DEFINE EVENT - -# `DEFINE EVENT` statement - -Events can be triggered after any change or modification to the data in a record. Each trigger is able to see the `$before` and `$after` value of the record, enabling advanced custom logic with each trigger. - -## Requirements -- You must be authenticated as a root or namespace user before you can use the `DEFINE EVENT` statement. -- [You must select your namespace and database](/docs/surrealdb/surrealql/statements/use) before you can use the `DEFINE EVENT` statement. - -## Statement syntax - -```surql title="SurrealQL Syntax" -DEFINE EVENT @name ON [ TABLE ] @table [ WHEN @expression ] THEN @expression -``` - -## Example usage - -Below is an example showing how to create an event which upon updating a user's email address will create an entry recording the change on an `event` table. - -```surql --- Create a new event whenever a user changes their email address --- One-statement event -DEFINE EVENT email ON TABLE user WHEN $before.email != $after.email THEN ( - CREATE event SET user = $value.id, time = time::now(), value = $after.email, action = 'email_changed' -); - --- Create a relation between a customer and a product whenever a purchase is made --- Notice the subtle difference when we use multiple statements inside an event: --- we have to use {curly brackets} instead of (parenthesis) -DEFINE EVENT purchase ON TABLE purchase WHEN $before == NONE THEN { - LET $from = (SELECT * FROM customer WHERE id == $after.customer); - LET $to = (SELECT * FROM product WHERE id == $after.product); - - RELATE $from->purchases->$to CONTENT { - quantity: $after.quantity, - total: $after.total, - status: 'Pending', - }; -}; -``` -## Specific events - -You can trigger events based on specific events. You can use the variable $event to detect what type of event is triggered on the table. - -```surql --- CREATE event is triggered when a new record is inserted into the table. --- Here we are updating the status of the post to PUBLISHED --- when a new record is inserted into the publish_post table. -DEFINE EVENT publish_post ON TABLE publish_post WHEN $event = "CREATE" THEN ( - UPDATE post SET status = "PUBLISHED" WHERE id = $after.post_id -); - --- UPDATE event --- Here we are creating a notification when a user is updated. -DEFINE EVENT user_updated ON TABLE user WHEN $event = "UPDATE" THEN ( - CREATE notification SET message = "User updated", user_id = $after.id, created_at = time::now() -); - --- DELETE event is triggered when a record is deleted from the table. --- Here we are creating a notification when a user is deleted. -DEFINE EVENT user_deleted ON TABLE user WHEN $event = "DELETE" THEN ( - CREATE notification SET message = "User deleted", user_id = $before.id, created_at = time::now() -); - --- You can combine multiple events based on your use cases. --- Here we are creating a log when a user is created, updated or deleted. -DEFINE EVENT user_event ON TABLE user WHEN $event = "CREATE" OR $event = "UPDATE" OR $event = "DELETE" THEN ( - CREATE log SET table = "user", event = $event, created_at = time::now() -); -``` diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/field.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/field.mdx deleted file mode 100644 index 901e91586..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/field.mdx +++ /dev/null @@ -1,218 +0,0 @@ ---- -sidebar_position: 5 ---- - -# DEFINE FIELD - -# `DEFINE FIELD` statement - -The `DEFINE FIELD` statement allows you to instantiate a named field on a table, enabling you to set the field's data type, set a default value, apply assertions to protect data consistency, and set permissions specifying what operations can be performed on the field. - -## Requirements -- You must be authenticated as a root or namespace user before you can use the `DEFINE FIELD` statement. -- [You must select your namespace and database](/docs/surrealdb/surrealql/statements/use) before you can use the `DEFINE FIELD` statement. - -## Statement syntax - -```surql title="SurrealQL Syntax" -DEFINE FIELD @name ON [ TABLE ] @table - [ [ FLEXIBLE ] TYPE @type ] - [ DEFAULT @expression ] - [ VALUE @expression ] - [ ASSERT @expression ] - [ PERMISSIONS [ NONE | FULL - | FOR select @expression - | FOR create @expression - | FOR update @expression - | FOR delete @expression - ] ] -``` - -## Example usage - -The following expression shows the simplest way to use the `DEFINE FIELD` statement. - -```surql --- Declare the name of a field. -DEFINE FIELD email ON TABLE user; -``` -## Defining data types - -The `DEFINE FIELD` statement allows you to set the data type of a field. For a full list of supported data types, see [Data types](/docs/surrealdb/surrealql/datamodel/overview). - -### Simple data types -```surql --- Set a field to have the string data type -DEFINE FIELD email ON TABLE user TYPE string; - --- Set a field to have the datetime data type -DEFINE FIELD created ON TABLE user TYPE datetime; - --- Set a field to have the bool data type -DEFINE FIELD locked ON TABLE user TYPE bool; - --- Set a field to have the number data type -DEFINE FIELD login_attempts ON TABLE user TYPE number; -``` - -### Object type - -The object type allows to define arbitrary nested objects: - -```surql --- Set a field to have the object data type -DEFINE FIELD settings ON TABLE user TYPE option; - --- Set the contents of the object -DEFINE FIELD settings.locale ON TABLE user TYPE option; - --- Set a field to have the object data type -DEFINE FIELD settings.appearance ON TABLE user TYPE option; - --- Set the contents of the object -DEFINE FIELD settings.appearance.themeMode ON TABLE user TYPE option - ASSERT IF $value THEN $value INSIDE ['user', 'system'] ELSE true END; -DEFINE FIELD settings.appearance.userTheme ON TABLE user TYPE option>; -DEFINE FIELD settings.appearance.systemLightTheme ON TABLE user TYPE option>; -DEFINE FIELD settings.appearance.systemDarkTheme ON TABLE user TYPE option>; -``` - -#### Flexible data types - -Flexible types allow you to have `SCHEMALESS` functionality on a `SCHEMAFULL` table. This is especially useful for working with nested schemaless objects. - -```surql -DEFINE FIELD metadata ON TABLE user FLEXIBLE TYPE object; -``` - -### Array type -```surql --- Set a field to have the array data type -DEFINE FIELD roles ON TABLE user TYPE array; --- Set the contents of the array to only support a string data type -DEFINE FIELD roles.* ON TABLE user TYPE string; - --- Set a field to have the array data type -DEFINE FIELD posts ON TABLE user TYPE array; --- Set the contents of the array to only support a record data type -DEFINE FIELD posts.* ON TABLE user TYPE record; -``` -### Option type - -```surql --- A user may enter a biography, but it is not required. --- By using the option type, you also allow for NONE values. -DEFINE FIELD biography ON TABLE user TYPE option; -``` - -## Setting a default value - -```surql --- A user is not locked by default. -DEFINE FIELD locked ON TABLE user TYPE bool --- Set a default value if empty -DEFAULT false; -``` - -## Readonly field - -One common pattern is to have a field that is set once and never changed. -This can be achieved by setting the latest `VALUE` of a field to `$before`, a.k.a. the same value as before. - -```surql --- Once a value is set for this field, it will never change -DEFINE FIELD created ON TABLE user TYPE datetime - VALUE $before OR $value; -``` - -## Alter a passed value - -```surql --- Ensure that an email address is always stored in lowercase characters -DEFINE FIELD email ON TABLE user TYPE string - VALUE string::lowercase($value); -``` - -## Asserting rules on fields - -You can take your field definitions even further by using asserts. Assert is a powerful feature that can be used to ensure that your data remains consistent. - -### Email is required - -```surql --- Give the user table an email field. Store it in a string -DEFINE FIELD email ON TABLE user TYPE string - -- Check if the value is a properly formatted email address - ASSERT string::is::email($value); -``` - -### Array with allowed values - -By using an Access Control List as an example we can show how we can restrict what values can be stored in an array. - -```surql --- An ACL can be applied to any kind of resource (record) -DEFINE FIELD resource ON TABLE acl TYPE record; --- We associate the acl with a user using record -DEFINE FIELD user ON TABLE acl TYPE record; - --- The permissions for the user+resource will be stored in an array. -DEFINE FIELD permissions ON TABLE acl TYPE array - -- The array must not be empty because at least one permission is required to make a valid ACL - ASSERT array::len($value) > 0; - --- Assigned permissions are identified by specific string values. -DEFINE FIELD permissions.* ON TABLE acl TYPE string - -- Allow only these values in the array - ASSERT $value INSIDE ["create", "read", "write", "delete"]; - --- SEE IT IN ACTION --- 1: Add users -CREATE user:tobie SET firstName = 'Tobie', lastName = 'Hitchcock', - email = 'Tobie.Hitchcock@surrealdb.com'; -CREATE user:abc SET firstName = 'A', lastName = 'B', - email = 'c@d.com'; -CREATE user:efg SET firstName = 'E', lastName = 'F', - email = 'g@h.com'; - --- 2: Create a resource -CREATE document:SurrealDB_whitepaper SET - name = "some messaging queue"; - --- 3: Associate with ACL -CREATE acl SET user = user:tobie, resource = document:SurrealDB_whitepaper, permissions = ["create", "write", "read"]; -CREATE acl SET user = user:abc, resource = document:SurrealDB_whitepaper, permissions = ["read", "delete"]; - --- Test Asserts using failure examples --- A: Create ACL without permissions field -CREATE acl SET - user = user:efg, - permissions = [], # FAIL - permissions must not be empty - resource = document:SurrealDB_whitepaper; --- B: Create acl with invalid permisson -CREATE acl SET - user = user:efg, - permissions = ["all"], # FAIL - This value is not allowed in the array - resource = document:SurrealDB_whitepaper; -``` - -### Using RegEX to validate a string - -```surql --- Specify a field on the user table -DEFINE FIELD countrycode ON user TYPE string - -- Ensure country code is ISO-3166 - ASSERT $value = /[A-Z]{3}/ - -- Set a default value if empty - VALUE $value OR $before OR 'GBR' -; -``` - -### Validate optional values - -```surql --- Specify an optional field on the user table -DEFINE FIELD locale ON user TYPE option - ASSERT IF $value THEN $value INSIDE ['en', 'de'] ELSE true END -; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/function.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/function.mdx deleted file mode 100644 index e00145106..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/function.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -sidebar_position: 6 ---- - -# DEFINE FUNCTION - -# `DEFINE FUNCTION` statement - -The `DEFINE FUNCTION` statement allows you to define custom functions that can be reused throughout a database. - -## Requirements -- You must be authenticated as a root or namespace user before you can use the `DEFINE FUNCTION` statement. -- [You must select your namespace and database](/docs/surrealdb/surrealql/statements/use) before you can use the `DEFINE FUNCTION` statement. - -## Statement syntax - -```surql title="SurrealQL Syntax" -DEFINE FUNCTION fn::@name( - [ @argument: @type ... ] -) { - [ @query ... ] - [ RETURN @returned ] -} -``` - -## Example usage -Below shows how you can define a custom function using the `DEFINE FUNCTION` statement, and how to call it. - -```surql --- It is necessary to prefix the name of your function with "fn::" --- This indicates that it's a custom function -DEFINE FUNCTION fn::greet($name: string) { - RETURN "Hello, " + $name + "!"; -} - --- Returns: "Hello, Tobie!" -RETURN fn::greet("Tobie"); -``` -To showcase a slightly more complex custom function, this will check if a relation between two nodes exists: - -```surql -DEFINE FUNCTION fn::relation_exists( - $in: record, - $tb: string, - $out: record -) { - LET $results = SELECT VALUE id FROM type::table($tb) WHERE in = $in AND out = $out; - RETURN array::len($results) > 0; -}; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/indexes.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/indexes.mdx deleted file mode 100644 index 1cc08eaa1..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/indexes.mdx +++ /dev/null @@ -1,166 +0,0 @@ ---- -sidebar_position: 7 ---- - -# DEFINE INDEX - -# `DEFINE INDEX` statement - -Just like in other databases, SurrealDB uses indexes to help optimize query performance. An index can consist of one or more fields in a table and can enforce a uniqueness constraint. If you don't intend for your index to have a uniqueness constraint, then the fields you select for your index should have a high degree of cardinality, meaning that there is a high amount of diversity between the data in the indexed table records. - -## Requirements -- You must be authenticated as a root or namespace user before you can use the `DEFINE INDEX` statement. -- [You must select your namespace and database](/docs/surrealdb/surrealql/statements/use) before you can use the `DEFINE INDEX` statement. - -## Statement syntax - -```surql title="SurrealQL Syntax" -DEFINE INDEX @name ON [ TABLE ] @table [ FIELDS | COLUMNS ] @fields - [ UNIQUE | SEARCH ANALYZER @analyzer [ BM25 [(@k1, @b)] ] [ HIGHLIGHTS ] ] -``` -## Index Types -SurrealDB offers a range of indexing capabilities designed to optimize data retrieval and search efficiency. - -### Unique Index - -Ensures each value in the index is unique. A unique index helps enforce uniqueness across records by preventing duplicate entries in fields such as user IDs, email addresses, and other unique identifiers. - -Let's create a unique index for the email address field on a user table. - -```surql --- Makes sure that the email address in the user table is always unique -DEFINE INDEX userEmailIndex ON TABLE user COLUMNS email UNIQUE; -``` - -The created index can be tested using the [`INFO` statement](/docs/surrealdb/1.0.x/surrealql/statements/info/). -```surql -INFO FOR TABLE user; -``` -The `INFO` statement will help you understand what indexes are defined in your `TABLE`. - -```surql --- Output: -{ - "events": {}, - "fields": {}, - "indexes": { - "userEmailIndex": "DEFINE INDEX userEmailIndex ON user FIELDS email UNIQUE" - }, - "lives": {}, - "tables": {} -} -``` - -As we defined a `UNIQUE` index on the `email` column, a duplicate entry for that column or field will throw an error. - -```surql --- Create a user record and set an email ID. -CREATE user:1 SET email = 'test@surrealdb.com'; -``` -```surql --- Output: -[ - { - "email": "test@surrealdb.com", - "id": "user:1" - } -] -``` -Creating another record with the same email ID will throw an error. - -```surql --- Create another user record and set the same email ID. -CREATE user:2 SET email = 'test@surrealdb.com'; -``` -```surql --- Output: -Database index `userEmailIndex` already contains 'test@surrealdb.com', -with record `user:1` -``` - -To set the same email for `user:2`, the original record must be deleted - -```surql -DELETE user:1; -CREATE user:2 SET email = 'test@surrealdb.com' -``` -```surql --- Output: -[ - { - "email": "test@surrealdb.com", - "id": "user:2" - } -] -``` - -### Non-Unique Index -This allows for the indexing of attributes that may have non-unique values, facilitating efficient data retrieval. Non-unique indexes help index frequently appearing data in queries that do not require uniqueness, such as categorization tags or status indicators. - -Let's create a non-unique index for an age field on a user table. - -```surql --- optimise queries looking for users of a given age -DEFINE INDEX userAgeIndex ON TABLE user COLUMNS age; -``` - -### Composite Index - -The composite index spans multiple fields and columns of a table. Similar to a single field index, composite indexes can also be `UNIQUE` - -```surql --- Create an index on the account and email fields of the user table -DEFINE INDEX test ON user FIELDS account, email; -``` - -### Full-Text Search Index - -Enables efficient searching through textual data, supporting advanced text-matching features like proximity searches and keyword highlighting. - -The [Full-Text search](/docs/surrealdb/1.0.x/reference-guide/full-text-search) index helps implement comprehensive search functionalities in applications, such as searching through articles, product descriptions, and user-generated content. - -Let's create a full-text search index for a name field on a user table. - -```surql --- Allow full-text search queries on the name of the user -DEFINE INDEX userNameIndex ON TABLE user COLUMNS name SEARCH ANALYZER ascii BM25 HIGHLIGHTS; -``` - -## Verifying Index Utilization in Queries - -The [`EXPLAIN` clause](/docs/surrealdb/1.0.x/surrealql/statements/select/#the-explain-clause) from SurrealQL helps you understand the execution plan of the query and provides transparency around index utilization. - -```surql -SELECT * FROM user WHERE email='test@surrealdb.com' EXPLAIN FULL; -``` - -It also reveals details about which `operation` was used by the query planner and how many records matched the search criteria. - -```surql --- Output: -[ - { - "detail": { - "plan": { - "index": "userEmailIndex", - "operator": "=", - "value": "test@surrealdb.com" - }, - "table": "user" - }, - "operation": "Iterate Index" - }, - { - "detail": { - "count": 1 - }, - "operation": "Fetch" - } -] -``` -## Performance Implications -When defining indexes, it's essential to consider the fields most frequently queried or used to optimize performance. - -Indexes may improve the performance of SurrealQL statements. This may not be noticeable with small tables but it can be significant for large tables; especially when the indexed fields are used in the `WHERE` clause of a [`SELECT`](/docs/surrealdb/1.0.x/surrealql/statements/select) statement. - -Indexes can also impact the performance of write operations ([INSERT](/docs/surrealdb/1.0.x/surrealql/statements/insert/), [UPDATE](/docs/surrealdb/1.0.x/surrealql/statements/update), [DELETE](/docs/surrealdb/1.0.x/surrealql/statements/delete)) since the index needs to be updated accordingly. Therefore, it's essential to balance the need for read performance with write performance. \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/namespace.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/namespace.mdx deleted file mode 100644 index b1796b562..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/namespace.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -sidebar_position: 8 ---- - -# DEFINE NAMESPACE - -# `DEFINE NAMESPACE` statement - -SurrealDB has a multi-tenancy model which allows you to scope databases to a namespace. There is no limit to the number of databases that can be in a namespace, nor is there a limit to the number of namespaces allowed. Only users with root access are authorized to create namespaces. - -Let's say that you're using SurrealDB to create a multi-tenant SaaS application. You can guarantee that the data of each tenant will be kept separate from other tenants if you put each tenant's databases into separate namespaces. In other words, this will ensure that information will remain siloed so user will only have access the information in the namespace they are a member of. - -## Requirements -- You must be authenticated as a root or namespace user before you can use the `DEFINE NAMESPACE` statement. - -## Statement syntax - -```surql title="SurrealQL Syntax" -DEFINE NAMESPACE @name -``` - -## Example usage -Below shows how you can create a namespace using the `DEFINE NAMESPACE` statement. - -```surql --- Namespace for Abcum Ltd. -DEFINE NAMESPACE abcum; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/overview.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/overview.mdx deleted file mode 100644 index 742a3a9a3..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/overview.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Overview - -# DEFINE statement - -The DEFINE statement can be used to specify authentication access and behaviour, global parameters, table configurations, table events, schema definitions, and indexes. - -```surql title="SurrealQL Syntax" -DEFINE [ - NAMESPACE @name - | DATABASE @name - | USER @name ON [ ROOT | NAMESPACE | DATABASE ] [ PASSWORD @pass | PASSHASH @hash ] ROLES @roles - | TOKEN @name ON [ NAMESPACE | DATABASE | SCOPE @scope ] TYPE @type VALUE @value - | SCOPE @name - [ SESSION @duration ] - [ SIGNUP @expression ] - [ SIGNIN @expression ] - | TABLE @name - [ DROP ] - [ SCHEMAFULL | SCHEMALESS ] - [ AS SELECT @projections - FROM @tables - [ WHERE @condition ] - [ GROUP [ BY ] @groups ] - ] - [ PERMISSIONS [ NONE | FULL - | FOR select @expression - | FOR create @expression - | FOR update @expression - | FOR delete @expression - ] ] - | EVENT @name ON [ TABLE ] @table WHEN @expression THEN @expression - | FIELD @name ON [ TABLE ] @table - [ [ FLEXIBLE ] TYPE @type ] - [ VALUE @expression ] - [ ASSERT @expression ] - [ PERMISSIONS [ NONE | FULL - | FOR select @expression - | FOR create @expression - | FOR update @expression - | FOR delete @expression - ] ] - | ANALYZER @name - [ TOKENIZERS @tokenizers ] - [ FILTERS @filters ] - | INDEX @name ON [ TABLE ] @table [ FIELDS | COLUMNS ] @fields - [ UNIQUE | SEARCH ANALYZER @analyzer [ BM25 [(@k1, @b)] ] [ HIGHLIGHTS ] ] -] -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/param.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/param.mdx deleted file mode 100644 index 378ace2fa..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/param.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -sidebar_position: 9 ---- - -# DEFINE PARAM - -# `DEFINE PARAM` statement - -The `DEFINE PARAM` statement allows you to define global (database-wide) parameters that are available to every client. - -## Requirements -- You must be authenticated as a root or namespace user before you can use the `DEFINE PARAM` statement. -- [You must select your namespace and database](/docs/surrealdb/surrealql/statements/use) before you can use the `DEFINE PARAM` statement. - -## Statement syntax - -```surql title="SurrealQL Syntax" -DEFINE PARAM $@name VALUE @value; -``` - -## Example usage -Below shows how you can create a parameter using the `DEFINE PARAM` statement. - -```surql -DEFINE PARAM $endpointBase VALUE "https://dummyjson.com"; -``` -Then, simply use the global parameter like you would with any variable. - -```surql -RETURN http::get($endpointBase + "/products"); -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/scope.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/scope.mdx deleted file mode 100644 index b2b042c23..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/scope.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -sidebar_position: 10 ---- - -# DEFINE SCOPE - -# `DEFINE SCOPE` statement - -Setting scope access allows SurrealDB to operate as a web database. With scopes you can set authentication and access rules which enable fine-grained access to tables and fields. - -## Requirements -- You must be authenticated as a root or namespace user before you can use the `DEFINE SCOPE` statement. -- [You must select your namespace and database](/docs/surrealdb/surrealql/statements/use) before you can use the `DEFINE SCOPE` statement. - -## Statement syntax - -```surql title="SurrealQL Syntax" -DEFINE SCOPE @name SESSION @duration SIGNUP @expression SIGNIN @expression -``` - -## Example usage -Below shows how you can create a scope using the `DEFINE SCOPE` statement. - -```surql --- Enable scope authentication directly in SurrealDB -DEFINE SCOPE account SESSION 24h - SIGNUP ( CREATE user SET email = $email, pass = crypto::argon2::generate($pass) ) - SIGNIN ( SELECT * FROM user WHERE email = $email AND crypto::argon2::compare(pass, $pass) ) -; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/table.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/table.mdx deleted file mode 100644 index 5ca2511c6..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/table.mdx +++ /dev/null @@ -1,163 +0,0 @@ ---- -sidebar_position: 11 ---- - -# DEFINE TABLE - -# `DEFINE TABLE` statement - -The `DEFINE TABLE` statement allows you to declare your table by name, enabling you to apply strict controls to a table's schema by making it `SCHEMAFULL`, create a foreign table view, and set permissions specifying what operations can be performed on the field. - -## Requirements -- You must be authenticated as a root or namespace user before you can use the `DEFINE TABLE` statement. -- [You must select your namespace and database](/docs/surrealdb/surrealql/statements/use) before you can use the `DEFINE TABLE` statement. - -## Statement syntax - -```surql title="SurrealQL Syntax" -DEFINE TABLE @name - [ DROP ] - [ SCHEMAFULL | SCHEMALESS ] - [ AS SELECT @projections - FROM @tables - [ WHERE @condition ] - [ GROUP [ BY ] @groups ] - ] - [CHANGEFEED @duration] - [ PERMISSIONS [ NONE | FULL - | FOR select @expression - | FOR create @expression - | FOR update @expression - | FOR delete @expression - ] ] -``` - -## Example usage -Below shows how you can create a table using the `DEFINE TABLE` statement. - -```surql --- Declare the name of a table. -DEFINE TABLE reading; -``` - -The following example uses the `DROP` portion of the `DEFINE TABLE` statement. Marking a table as `DROP` disallows creating or updating records. - -`DROP` tables are useful in combination with events or foreign (view) tables, as you can compute a record and essentially drop the input. - -```surql --- By marking a table as DROP, you disallow any records to be created or updated. --- Records that currently exist in the table will not automatically be deleted, you can still remove them manually. -DEFINE TABLE reading DROP; -``` -The following expression shows how you can define a `CHANGEFEED` for a table. You create, update, delete records in the table as usual -```surql --- Add changefeed for table reading with a duration of 1 day -DEFINE TABLE reading CHANGEFEED 1d; -``` - -### Schemafull tables - -The following example demonstrates the `SCHEMAFULL` portion of the `DEFINE TABLE` statement. When a table is defined as schemafull, the database strictly enforces any schema definitions that are specified using the `DEFINE TABLE` statement. New fields can not be added to a `SCHEMAFULL` table unless they are defined via the [`DEFINE FIELD`](/docs/surrealdb/surrealql/statements/define/field) statement. - -```surql --- Create schemafull user table. -DEFINE TABLE user SCHEMAFULL; - --- Define some fields. -DEFINE FIELD firstName ON TABLE user TYPE string; -DEFINE FIELD lastName ON TABLE user TYPE string; -DEFINE FIELD email ON TABLE user TYPE string - ASSERT string::is::email($value); -DEFINE INDEX userEmailIndex ON TABLE user COLUMNS email UNIQUE; - --- SEE IT IN ACTION --- 1: Add a user with all required fields and an undefined one, 'photoURI'. -CREATE user CONTENT { - firstName: 'Tobie', - lastName: 'Hitchcock', - email: 'Tobie.Hitchcock@surrealdb.com', - photoURI: 'photo/yxCFi22Jw2.webp' -}; --- 2: Statement will not fail but photoURI will be ignored as it is not a --- defined field. - --- 3: Query the data -SELECT * FROM user -``` - -### Schemaless tables - -The following example demonstrates the `SCHEMALESS` portion of the `DEFINE TABLE` statement. This allows you to explicitly state that the specified table has no schema. - -```surql --- Create schemaless user table. -DEFINE TABLE user SCHEMALESS; - --- Define some fields. -DEFINE FIELD firstName ON TABLE user TYPE string; -DEFINE FIELD lastName ON TABLE user TYPE string; -DEFINE FIELD email ON TABLE user TYPE string - ASSERT string::is::email($value); -DEFINE INDEX userEmailIndex ON TABLE user COLUMNS email UNIQUE; - --- SEE IT IN ACTION - Example 1 --- 1: Add a user with all required fields and an undefined one. -CREATE user SET firstName = 'Tobie', lastName = 'Hitchcock', email = 'Tobie.Hitchcock@surrealdb.com', photoURI = 'photo/yxCFi22Jw2.webp'; --- 2: Statement will succeed because user is a SCHEMALESS table. - --- SEE IT IN ACTION - Example 2 --- 1: Add a user with an invalid email address and include a new field that was never defined. -CREATE user SET firstName = 'Jamie', lastName = 'Hitchcock', email = 'Jamie.Hitchcock', photoURI = 'photo/yxCFi22Jw2.webp'; --- 2: Statement will fail because the value for email was not valid. -``` - -### Pre-computed table views -The following shows how to make a table view using the `DEFINE TABLE` statement. This is similar to making a view in Relational databases. - -```surql --- Define a table as a view which aggregates data from the reading table -DEFINE TABLE temperatures_by_month AS - SELECT - count() AS total, - time::month(recorded_at) AS month, - math::mean(temperature) AS average_temp - FROM reading - GROUP BY city -; - --- SEE IT IN ACTION --- 1: Add a new temperature reading with some basic attributes -CREATE reading SET - temperature = 27.4, - recorded_at = time::now(), - city = 'London', - location = (-0.118092, 51.509865) -; - --- 2: Query the projection -SELECT * FROM temperatures_by_month; -``` - -### Defining permissions - -The following shows how to set table level `PERMISSIONS` using the `DEFINE TABLE` statement. This allows you to set independent permissions for selecting, creating, updating, and deleting data. - -```surql --- Specify access permissions for the 'post' table -DEFINE TABLE post SCHEMALESS - PERMISSIONS - FOR select - -- Published posts can be selected - WHERE published = true - -- A user can select all their own posts - OR user = $auth.id - FOR create, update - -- A user can create or update their own posts - WHERE user = $auth.id - FOR delete - -- A user can delete their own posts - WHERE user = $auth.id - -- Or an admin can delete any posts - OR $auth.admin = true -; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/token.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/token.mdx deleted file mode 100644 index ac9803e62..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/token.mdx +++ /dev/null @@ -1,223 +0,0 @@ ---- -sidebar_position: 12 ---- - -# DEFINE TOKEN - -# `DEFINE TOKEN` statement - -SurrealDB can work with third-party authentication providers such as OpenID Connect providers, OAuth providers and other trusted parties providing JWT (JSON Web Tokens, also refered to in this page as “tokens”). Let's say that your provider issues your client (e.g. a user or a service) a JWT once it has authenticated. By using the DEFINE TOKEN statement, you can set the public key or shared secret that will be used to verify the authenticity of the token. - -This verification is performed automatically by SurrealDB when provided with a JWT through any of its interfaces (i.e. the [HTTP REST API](/docs/surrealdb/Integration/http) through the “Authorization” header or [any of the SDKs](/docs/surrealdb/1.0.x/integration/sdks/overview) through the “Authenticate” methods) before trusting the claims contained in the token and allowing SurrealQL queries to access the values of those claims. - -```surql title="SurrealQL Syntax" -DEFINE TOKEN @name ON [ NAMESPACE | DATABASE | SCOPE @scope ] TYPE @type VALUE @value -``` - -With HMAC algorithms (`HS256`,`HS384`,`HS512`) the value of the defined token will be the secret used both to sign and verify the signature of the token. Anyone with access to this secret will be able to issue tokens with arbitrary claims which will be trusted by SurrealDB. - -The following example shows the definition of a token using an HMAC algorithm. - -```surql --- Specify the namespace and database for the token -USE NS abcum DB app_vitalsense; - --- Set the name of the token -DEFINE TOKEN token_name - -- Use this token provider for database authorization - ON DATABASE - -- Specify the cryptographic signature algorithm used to sign the token - TYPE HS512 - -- Specify the secret used to sign and verify the authenticity of the token - VALUE "sNSYneezcr8kqphfOC6NwwraUHJCVAt0XjsRSNmssBaBRh3WyMa9TRfq8ST7fsU2H2kGiOpU4GbAF1bCiXmM1b3JGgleBzz7rsrz6VvYEM4q3CLkcO8CMBIlhwhzWmy8" -; -``` - -With public-key cryptography algorithms (`EDDSA`, `ES256`, `ES384`, `ES512`, `PS256`, `PS384`, `PS512`, `RS256`, `RS384`, `RS512`) the value of the defined token will be the public key used to verify the signature of the token. This value is not secret and should be provided by the issuer of the tokens. Tokens will be signed using the private key, known only to the issuer. The public key value should be provided to SurrealDB including its header and footer. Any whitespace will be trimmed. - -The following example shows the definition of a token using a public-key cryptography algorithm. - -```surql --- Specify the namespace and database for the token -USE NS abcum DB app_vitalsense; - --- Set the name of the token -DEFINE TOKEN token_name - -- Use this token provider for database authorization - ON DATABASE - -- Specify the cryptographic signature algorithm used to sign the token - TYPE RS256 - -- Specify the public key used to verify the authenticity of the token - VALUE "-----BEGIN PUBLIC KEY----- -MUO52Me9HEB4ZyU+7xmDpnixzA/CUE7kyUuE0b7t38oCh+sQouREqIjLwgHhFdhh3cQAwr6GH07D -ThioYrZL8xATJ3Youyj8C45QnZcGUif5PkpWXDi0HJSoMFekbW6Pr4xuqIqb2LGxGDVJcLZwJ2AS -Gtu2UAfPXbBD3ffiad393M22g1iHM80YaNi+xgswG7qtXE4lR/Lt4s0MeKKX7stdWI1VIsoB+y3i -r/OWUvJPjjDNbAsyy8tQmxydv+FUnLEP9TNT4AhN4DXcJ+XsDtW7OWt4EdSVDeKpGbIMvIrh1Pe+ -Nilj8UHNyNDHa2AjK3seMo6CMvaIQJKj5o4xGFblFGwvvPD03SbuQLs1FdRjsZCeWLdYeQ3JDHE9 -sFG7DCXlpMJcaYT1mf4XHJ0gPekNLQyewTY3Vxf7FgV3GCNjV20kcDFgJA2+iVW2wSrb+txD1ycE -kbi8jh0pedWwE40VQWaTh/8eAvX7IHWya/AEro25mq+m6vktNZLbvLphhp586kJK3Tdt3YjpkPre -M3nkFWOWurIyKbtIV9JemfwCgt89sNV45dTlnEDEZFFGnIgDnWgx3CUo4XmhICEQU8+tklw9jJYx -iCTjhbIDEBHySSSc/pQ4ftHQmhToTlQeOdEy4LYiaEIgl1X+hzRH1hBYvWlNKe4EY1nMCKcjgt0= ------END PUBLIC KEY-----" -; -``` -If not specified, the default algorithm used is `HS512`. - -## Requirements -- To `DEFINE TOKEN ... ON NAMESPACE ...` you must have root or namespace level access. -- To `DEFINE TOKEN ... ON DATABASE ...` you must have root, namespace, or database level access. -- To `DEFINE TOKEN ... ON SCOPE ...` you must have root, namespace, or database level access. -- [You must select your namespace and/or database](/docs/surrealdb/surrealql/statements/use) before you can use the `DEFINE DATABASE` statement for database or namespace tokens. - -## Using Tokens -The `DEFINE TOKEN` statement lets you specify the amount of permission granting authority you want to give to a token issuer. You are able to specify if the provider can grant namespace, database, or scope level access to token holders. For this to work, the JWT issued to be used with SurrealDB must contain claims to specify which namespace, database or scope the token bearer is authorized to act on. - -The following claims should be added to the JWT payload by the issuer of the token: - -- `exp`: The token expiration Unix time. The token will not be valid after. -- `tk`: The name that you chose when defining the token. -- `ns`: The namespace that the token is issued for. -- `db`: The database that the token is issued for. -- `sc`: The scope that the token is issued for. - -The names of these claims can be in all lowercase (i.e. `tk`) or all uppercase (i.e. `TK`), and can be optionally prefaced with the `https://surrealdb.com` namespace (e.g. `https://surrealdb.com/tk`) in order to separate claims directed to SurrealDB from claims directed to other services. When using a namespace, the claim name can also be used without abbreviation, such as in `https://surrealdb.com/token`, `https://surrealdb.com/scope`... - -The following optional claims are also processed by SurrealDB: - -- `id`: The identifier of the resource (e.g. user) associated with the token. -- `nbf`: The token acceptance Unix time. The token will not be valid before. - -The expected claims depend on the level at which the token was defined: - -- For tokens defined `ON NAMESPACE`: `exp`, `tk`, `ns`. -- For tokens defined `ON DATABASE`: `exp`, `tk`,`ns`,`db`. -- For tokens defined `ON SCOPE`: `exp`, `tk`, `ns`,`db`, `sc`, optionally `id`. - -When calling any of the SurrealDB interfaces using a JWT, SurrealQL queries will gain access to the claims in the token through the `$token` variable. For example, if the token contains custom claims such as “name” or “email”, the values of those claims will be accessible through `$token.name` and `$token.email`. - -Additionally, when the `id` claim is present in the token, the fields of the record matching the identifier specified will be accessible through the `$auth` variable. For example, if the value of the `id` claim is `user:73q1bl039y6k8z80v55d`, and user records have fields such as “name” or “email”, then `$auth.name` and `$auth.email` can be used to access those values for the `user:73q1bl039y6k8z80v55d` record specifically, without them being present in the JWT. - -The signature of the token is verified with method defined when creating the token. If the signature of the token is invalid, calls to SurrealDB interfaces using that token will fail. - -### Namespace - -Namespace tokens can be used to select, create, update, and delete on all tables in all databases, as well as to define and remove databases and tables from the namespace. - -```surql --- Specify the namespace for the token -USE NS abcum; - --- Set the name of the token -DEFINE TOKEN token_name - -- Use this OAuth provider for namespace authorization - ON NAMESPACE - -- Specify the cryptographic signature algorithm used to sign the token - TYPE HS512 - -- Specify the public key so we can verify the authenticity of the token - VALUE "sNSYneezcr8kqphfOC6NwwraUHJCVAt0XjsRSNmssBaBRh3WyMa9TRfq8ST7fsU2H2kGiOpU4GbAF1bCiXmM1b3JGgleBzz7rsrz6VvYEM4q3CLkcO8CMBIlhwhzWmy8" -; -``` -The namespace token payload should at least include the following claims when used to authenticate with SurrealDB. - -```json title="JWT Payload" -{ - "exp": 2147483647, - "tk": "token_name", - "ns": "abcum" -} -``` - -### Database - -Database tokens can be used to select, create, update, and delete on all tables in a specific database, as well as to define and remove tables from the database. - -```surql --- Specify the namespace and database for the token -USE NS abcum DB app_vitalsense; - --- Set the name of the token -DEFINE TOKEN token_name - -- Use this OAuth provider for database authorization - ON DATABASE - -- Specify the cryptographic signature algorithm used to sign the token - TYPE HS512 - -- Specify the public key so we can verify the authenticity of the token - VALUE "sNSYneezcr8kqphfOC6NwwraUHJCVAt0XjsRSNmssBaBRh3WyMa9TRfq8ST7fsU2H2kGiOpU4GbAF1bCiXmM1b3JGgleBzz7rsrz6VvYEM4q3CLkcO8CMBIlhwhzWmy8" -; -``` - -The database token payload should at least include the following claims when used to authenticate with SurrealDB. - -```json title="JWT Payload" -{ - "exp": 2147483647, - "tk": "token_name", - "ns": "abcum", - "db": "app_vitalsense" -} -``` - -### Scope - -Since the origin of the claims in the JWT is verified, those claims can be used within SurrealQL in the context of a scope in order to provide table and field authorization through an external authenticator using OpenID Connect, OAuth or simply acting as a trusted issuer of a JWT. - -This can be done by leveraging table permissions to allow or disallow access depending on the values of the claims in the verified token. For example, these claims can be compared with the records in a table to only return those matching certain criteria. - -The scope for which the token was issued will be accessible to SurrealQL through the `$scope` variable, corresponding to the contents of the `sc` claim. External authorization providers may provide additional scopes that will not be accessible in this way, and instead should be accessed as any other claim through the `$token` variable. - -Bear in mind that table and field permissions only apply to scope level tokens Access provided by namespace and database tokens is above table-level permissions. When application users will be the ones directly authenticating with JWT, scope tokens are most likely the right choice. - -The following example shows how scope tokens can be used to grant authorization by verifying that the “email” claim in the token matches the email used as the index of a user table: - - -```surql --- Specify the namespace and database for the token -USE NS abcum DB app_vitalsense; - --- Necessary in order to define a scope token -DEFINE SCOPE users; - -DEFINE TOKEN token_name ON SCOPE users TYPE RS256 VALUE "-----BEGIN PUBLIC KEY----- -MUO52Me9HEB4ZyU+7xmDpnixzA/CUE7kyUuE0b7t38oCh+sQouREqIjLwgHhFdhh3cQAwr6GH07D -ThioYrZL8xATJ3Youyj8C45QnZcGUif5PkpWXDi0HJSoMFekbW6Pr4xuqIqb2LGxGDVJcLZwJ2AS -Gtu2UAfPXbBD3ffiad393M22g1iHM80YaNi+xgswG7qtXE4lR/Lt4s0MeKKX7stdWI1VIsoB+y3i -r/OWUvJPjjDNbAsyy8tQmxydv+FUnLEP9TNT4AhN4DXcJ+XsDtW7OWt4EdSVDeKpGbIMvIrh1Pe+ -Nilj8UHNyNDHa2AjK3seMo6CMvaIQJKj5o4xGFblFGwvvPD03SbuQLs1FdRjsZCeWLdYeQ3JDHE9 -sFG7DCXlpMJcaYT1mf4XHJ0gPekNLQyewTY3Vxf7FgV3GCNjV20kcDFgJA2+iVW2wSrb+txD1ycE -kbi8jh0pedWwE40VQWaTh/8eAvX7IHWya/AEro25mq+m6vktNZLbvLphhp586kJK3Tdt3YjpkPre -M3nkFWOWurIyKbtIV9JemfwCgt89sNV45dTlnEDEZFFGnIgDnWgx3CUo4XmhICEQU8+tklw9jJYx -iCTjhbIDEBHySSSc/pQ4ftHQmhToTlQeOdEy4LYiaEIgl1X+hzRH1hBYvWlNKe4EY1nMCKcjgt0= ------END PUBLIC KEY-----"; - -DEFINE TABLE user SCHEMAFULL - -- Authorized users can select, update, delete and create user records - PERMISSIONS FOR select, update, delete, create - -- The current scope must be "users" - WHERE $scope = "users" - -- The email of the user being queried must match the email claim in the token - -- Only matching records will be changed or returned - AND email = $token.email -; - -DEFINE INDEX email ON user FIELDS email UNIQUE; -DEFINE FIELD email ON user TYPE string ASSERT string::is::email($value); -DEFINE FIELD name ON user TYPE string; -DEFINE FIELD nickname ON user TYPE string; -DEFINE FIELD picture ON user TYPE string; -``` - -You may also use permissions clauses to perform additional verification on other JWT claims (e.g. verifying that the iss claim matches a specific principal using $token.iss) that may be required or recommended by a the provider of the token. - -The scope token payload should at least include the following claims when used to authenticate with SurrealDB. - - -```json title="JWT Payload" -{ - "exp": 2147483647, - "tk": "token_name", - "ns": "abcum", - "db": "app_vitalsense", - "sc": "users" -} -``` - diff --git a/versioned_docs/version-1.0.x/surrealql/statements/define/user.mdx b/versioned_docs/version-1.0.x/surrealql/statements/define/user.mdx deleted file mode 100644 index 598e5a043..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/define/user.mdx +++ /dev/null @@ -1,84 +0,0 @@ ---- -sidebar_position: 13 ---- - -# DEFINE USER - -# `DEFINE USER` statement - -Use the `DEFINE USER` statement to create system users on SurrealDB - -:::note -NOTE: While existing logins still function, the DEFINE LOGIN statement has been replaced with DEFINE USER. -::: - - - -## Requirements - -- You must be authenticated with a user that has enough permissions. Only the OWNER built-in role grants permissions to create users. -- You must be authenticated with a user that has permissions on the level where you are creating the user: - - Root users can create Root, Namespace and Database users. - - Namespace users can create Namespace and Database users - - Database user can create Database users. -- To select the level where you want to create the user, [you may need to select a namespace and/or database](/docs/surrealdb/surrealql/statements/use) before you can use the `DEFINE USER` statement for database or namespace tokens. - -:::note -NOTE: You cannot use the DEFINE USER statement to create a SCOPE user. -::: - -## Statement syntax - -```surql title="SurrealQL Syntax" -DEFINE USER @name ON [ ROOT | NAMESPACE | DATABASE ] [ PASSWORD @pass | PASSHASH @hash ] ROLES @roles -``` - -## Example usage -The following example shows how you can create a `ROOT` user using the `DEFINE USER` statement. - -```surql --- Create a root user -DEFINE USER username ON ROOT PASSWORD '123456' ROLES OWNER; -``` -The following example shows how you can create a `NAMESPACE` user using the `DEFINE USER` statement. - -```surql --- Specify the namespace -USE NS abcum; --- Create the user -DEFINE USER username ON NAMESPACE PASSWORD '123456' ROLES OWNER; -``` - -The following example shows how you can create a `DATABASE` user using the `DEFINE USER` statement. -```surql --- Specify the namespace and database for the user -USE NS abcum DB app_vitalsense; --- Create the user -DEFINE USER username ON DATABASE PASSWORD '123456' ROLES OWNER; -``` - -## Roles -Currently, only the built-in roles OWNER, EDITOR and VIEWER are available. - - - - - - - - - - - - - - - - - - - - - - -
RoleDescription
OWNERCan view and edit any resource on the user's level or below, including user and token (IAM) resources.
It also grants full permissions for child resources that support the `PERMISSIONS` clause (tables, fields, etc.)
EDITORCan view and edit any resource on the user's level or below, but not users or token (IAM) resources
It also grants full permissions for child resources that support the `PERMISSIONS` clause (tables, fields, etc.)
VIEWERGrants permissions to view any resource on the user's level or below, but not edit.
It also grants view permissions for child resources that support the `PERMISSIONS` clause (tables, fields, etc.)
diff --git a/versioned_docs/version-1.0.x/surrealql/statements/for.mdx b/versioned_docs/version-1.0.x/surrealql/statements/for.mdx deleted file mode 100644 index bf34b4801..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/for.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -sidebar_position: 9 ---- - -# FOR - -# `FOR` statement - -The FOR statement can be used to iterate over the values of an array, and to perform certain actions with those values. - -```surql title="SurrealQL Syntax" -FOR @item IN @iterable @block -``` - -## Example usage -The following query shows example usage of this statement. - -```surql --- Create a person for everyone in the array -FOR $name IN ['Tobie', 'Jaime'] { - CREATE type::thing('person', $name) CONTENT { - name: $name - }; -}; -``` - -The following query shows the `FOR` statement being used update a property on every user matching certain criteria. - -```surql --- Set can_vote to true for every person over 18 years old. -FOR $person IN (SELECT VALUE id FROM person WHERE age >= 18) { - UPDATE $person SET can_vote = true; -}; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/info.mdx b/versioned_docs/version-1.0.x/surrealql/statements/info.mdx deleted file mode 100644 index 129c24e81..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/info.mdx +++ /dev/null @@ -1,100 +0,0 @@ ---- -sidebar_position: 11 ---- - -# INFO - -# `INFO` statement - -The INFO statement. - -```surql title="SurrealQL Syntax" -INFO FOR [ - ROOT - | NS | NAMESPACE - | DB | DATABASE - | SCOPE @scope - | TABLE @table -]; -``` - -## Example usage - -The `INFO` command outputs information about the setup of the SurrealDB system. There are a number of different `INFO` commands for retrieving the configuration at the different levels of the database. - - -### System information - -The top-level ROOT command returns information regarding the namespaces which exists within the SurrealDB system. - -:::note - NOTE: You must be authenticated as a top-level root user to execute this command. -::: - -```surql -INFO FOR ROOT; -``` - -### Namespace information - -The `NS` or `NAMESPACE` command returns information regarding the users, tokens, and databases under the Namespace in use. - -:::note - NOTE: You must be authenticated as a top-level root user, or a namespace user to execute this command. -::: - -:::note - NOTE: You must have a NAMESPACE selected before running this command. -::: - -```surql -INFO FOR NS; -``` - -### Database information - -The `DB` or `DATABASE` command returns information regarding the users, tokens, and scopes, and tables under the Database in use. - -:::note - NOTE: You must be authenticated as a top-level root user, a namespace user, or a database user to execute this command. -::: - -:::note - NOTE: You must have a NAMESPACE and a DATABASE selected before running this command. -::: - -```surql -INFO FOR DB; -``` - -### Scope information - -The `SCOPE` command returns information regarding the tokens configured under a specific Scope. - -:::note - NOTE: You must be authenticated as a top-level root user, a namespace user, or a database user to execute this command. -::: - -:::note - NOTE: You must have a NAMESPACE and a DATABASE selected before running this command. -::: - -```surql -INFO FOR SCOPE user; -``` - -### Table information - -The `TABLE` command returns information regarding the events, fields, indexes, and foreign table configurations on a specific Table. - -:::note - NOTE: You must be authenticated as a top-level root user, a namespace user, or a database user to execute this command. -::: - -:::note - NOTE: You must have a NAMESPACE and a DATABASE selected before running this command. -::: - -```surql -INFO FOR TABLE user; -``` diff --git a/versioned_docs/version-1.0.x/surrealql/statements/insert.mdx b/versioned_docs/version-1.0.x/surrealql/statements/insert.mdx deleted file mode 100644 index 3a51e5b3f..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/insert.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -sidebar_position: 12 ---- - -# INSERT - -# `INSERT` statement - -The `INSERT` statement can be used to insert or update data into the database, using the same statement syntax as the traditional SQL Insert statement. - -:::note -__Note:__ This statement can not be used to create graph relationships. For that, use the [`RELATE`](/docs/surrealdb/1.0.x/surrealql/statements/relate) statement. -::: - -### Statement syntax - -```surql title="SurrealQL Syntax" -INSERT [ IGNORE ] INTO @what - [ @value - | (@fields) VALUES (@values) - [ ON DUPLICATE KEY UPDATE @field = @value ... ] - ] -; -``` - -## Example usage - -The following query shows example usage of this statement. - -```surql -INSERT INTO company { - name: 'SurrealDB', - founded: "2021-09-10", - founders: [person:tobie, person:jaime], - tags: ['big data', 'database'] -}; -``` -As with the traditional SQL insert statement syntax, records can be inserted by specifying the fields and values by using the `VALUES` keyword. - -```surql --- Insert a single record -INSERT INTO company (name, founded) VALUES ('SurrealDB', '2021-09-10'); - --- Insert multiple records -INSERT INTO company (name, founded) VALUES ('Acme Inc.', '1967-05-03'), ('Apple Inc.', '1976-04-01'); -``` -When using the `VALUES` clause, it is possible to update records which already exist by specifying an `ON DUPLICATE KEY UPDATE` clause. This clause also allows incrementing and decrementing numeric values, and adding or removing values from arrays. To increment a numeric value, or to add an item to an array, use the `+=` operator. To decrement a numeric value, or to remove an value from an array, use the `-=` operator. - -```surql -INSERT INTO product (name, url) VALUES ('Salesforce', 'salesforce.com') ON DUPLICATE KEY UPDATE tags += 'crm'; -``` - -Using the insert statement, it is possible to copy records easily between tables. The records being copied will have the same id in the new table, but the record id will signify the new table name. - -```surql -INSERT INTO recordings_san_francisco (SELECT * FROM temperature WHERE city = 'San Francisco'); -``` - -Furthermore, it is possible to perform a bulk insert in a single query. The `@what` part of the syntax can be either a single object or an array of objects. - -```surql -INSERT INTO person [ - {id: "person:jaime", name: "Jaime", surname: "Morgan Hitchcock"}, - {id: "person:tobie", name: "Tobie", surname: "Morgan Hitchcock"}, -] -``` diff --git a/versioned_docs/version-1.0.x/surrealql/statements/kill.mdx b/versioned_docs/version-1.0.x/surrealql/statements/kill.mdx deleted file mode 100644 index 8026cc1f7..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/kill.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -sidebar_position: 13 ---- - -# KILL - -# `KILL` statement - -The `KILL` statement is used to terminate a running live query. - -While the `KILL` statement does accept a value type, this value must resolve to a UUID. Consequently, it will accept a string literal of a UUID or a param. - -### Statement syntax - -```surql title="SurrealQL Syntax" -KILL @value; -``` - -## Example usage -### Basic usage -The `KILL` statement expects the UUID of a running live query to be passed. - -```surql -KILL "0189d6e3-8eac-703a-9a48-d9faa78b44b9"; -``` - -The `KILL` statement also allows for parameters to be used. - -```surql --- Define the parameter -LET $live_query_id = "0189d6e3-8eac-703a-9a48-d9faa78b44b9"; --- Use the parameter -KILL $live_query_id; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/live-select.mdx b/versioned_docs/version-1.0.x/surrealql/statements/live-select.mdx deleted file mode 100644 index 7c27033c6..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/live-select.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -sidebar_position: 15 ---- - -# LIVE SELECT - -# `LIVE SELECT` statement - -The `LIVE SELECT` statement can be used to initiate a real-time selection from a table, including the option to apply filters. - -In practical terms, when you execute a `LIVE SELECT` query, it triggers an ongoing session that captures any subsequent changes to the data in real-time. These changes are then immediately transmitted to the client, ensuring that the client is consistently updated with the latest data modifications. - -### Statement syntax - -```surql title="SurrealQL Syntax" -LIVE SELECT - [ - [ VALUE ] @fields [ AS @alias ] - | DIFF - ] - FROM @targets - [ WHERE @conditions ] - [ FETCH @fields ... ] -; -``` - -:::note - Note: Support for FETCH is not yet available, but we are working on it. -::: - -## Example usage -### Basic usage - -By default, SurrealDB will push the entire record over the websocket when created or updated, and just the record's ID when deleted. - -```surql -LIVE SELECT * FROM person; - -['b1f1d115-ad0f-460d-8cbf-dbc7ce48851c'] -``` - -The result of the above query will be a UUID. -This UUID is the Live Query Unique ID, and is used to differentate between different Live Queries. -You will want to keep track of this ID, so that you can differentiate between different notifications being received after this query. -You can also use this UUID to [KILL (stop)](/docs/surrealdb/1.0.x/surrealql/statements/kill) the Live Query. - -The protocol will then send messages that are of a Notification format. -You can find an example of such a message in the [Live Query WebSocket protocol](/docs/surrealdb/1.0.x/integration/websocket#live) description. - -### Diff - -When using the `DIFF` mode, updates will be sent in the form of an array with [JSON Patch](https://jsonpatch.com/) messages. - -```surql -LIVE SELECT DIFF FROM person; - -['b87cbb0d-ca15-4f0a-8f86-caa680672aa5'] -``` -### Filter the live query - -You can optionally apply filters with the `WHERE` clause. - -```surql -LIVE SELECT * FROM person WHERE age > 18; -``` - -## Consistency Guarantees - -When using Live Queries, you want to understand the ordering of messages and events when many clients and transactions are running in paralllel. -We only publish notifications on live queries for committed transactions. - -We make a best effort to assure ordering is correct, but don't have a strict correctness in place yet to guarantee that fully. This means that some messages may be received out of order from their commit order. -However, transactions that are committed from the same client, are always going to be in order. - -Security enforcement is always evaluated per notification and will reflect the value of authorisation at the time of publishing the notification. -This means that if a transaction is committed, then immediately the authorisation changes for the live query receiver, the receiver will get the notification under the new rules. diff --git a/versioned_docs/version-1.0.x/surrealql/statements/relate.mdx b/versioned_docs/version-1.0.x/surrealql/statements/relate.mdx deleted file mode 100644 index 396c99866..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/relate.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -sidebar_position: 16 ---- - -# RELATE - -# `RELATE` statement - -The `RELATE` statement can be used to generate graph edges between two records in the database. -This allows you to traverse related records efficiently without needing to pull data from multiple tables and merging that data together using SQL JOINs. - -Edges created using the RELATE statement are nearly identical to tables created using other statements. -The key differences are that - -- Edge tables have two required fields in and out, which specify the directions of the relationships. -- Edge tables are deleted once there are no existing relationships left. - -Edge tables behave like normal tables in terms of [updating](/docs/surrealdb/surrealql/statements/update), [defining a schema](/docs/surrealdb/surrealql/statements/define/table) or [indexes](/docs/surrealdb/surrealql/statements/define/indexes). - -[Record link](/docs/surrealdb/surrealql/datamodel/records) are the alternative option when connecting data. -The key differences are that graph relations - -- Offer bi-directional querying. -- Offer referential integrity. -- Allow you to store data alongside the relationship. - -### Statement syntax - -```surql title="SurrealQL Syntax" -RELATE [ ONLY ] @from_record -> @table -> @to_record - [ CONTENT @value - | SET @field = @value ... - ] - [ RETURN [ NONE | BEFORE | AFTER | DIFF | @fields ... ] - [ TIMEOUT @duration ] - [ PARALLEL ] -; -``` - -## Example usage -### Basic usage - -The following query shows the basic structure of the `RELATE` statement, which creates a relationship between a record in the person table and a record in the article table. - -For table names we prioritise readability, such that normal tables are singular, person instead of persons, but edge tables can be plural. - -```surql -RELATE person:l19zjikkw1p1h9o6ixrg->wrote->article:8nkk6uj4yprt49z7y3zm; - -[ - { - "id": "wrote:ctwsll49k37a7rmqz9rr", - "in": "person:l19zjikkw1p1h9o6ixrg", - "out": "article:8nkk6uj4yprt49z7y3zm" - } -] -``` - -There is no relationship information stored in either the person or article table. -Instead, an edge table (in this case a table called wrote) stores the relationship information. As you see, the structure `in -> id -> out` mirrors the record IDs from the `RELATE` statement, with the addition of the automatically generated ID for the wrote edge table. - -By default, the edge table gets created as a schemaless table when you execute the `RELATE` statement. You can however make the table schemafull by either [defining a schema](/docs/surrealdb/surrealql/statements/define/table) before or after executing the RELATE statement. - -A common use case is to make sure only unique relationships get created. You can do that by [defining an index](/docs/surrealdb/surrealql/statements/define/indexes). - -```surql -DEFINE INDEX unique_relationships - ON TABLE wrote - COLUMNS in, out UNIQUE; -``` -Edge tables are bi-directional by default. To enforce unidirectional relationships, you can restrict the type definition using field definition. - -```surql -DEFINE FIELD in ON TABLE wrote TYPE record; -DEFINE FIELD out ON TABLE wrote TYPE record
; -``` - -### Adding data using `SET` and `CONTENT` - -Let's look at the two ways you can add record data in the `RELATE` statement. Both of these queries will produce the same result. - -```surql -RELATE person:l19zjikkw1p1h9o6ixrg->wrote->article:8nkk6uj4yprt49z7y3zm - SET time.written = time::now(); - - -RELATE person:l19zjikkw1p1h9o6ixrg->wrote->article:8nkk6uj4yprt49z7y3zm - CONTENT { - time: { - written: time::now() - } - }; -``` - -### Creating a single relation with the ONLY keyword -Using the ONLY keyword, just an object for the relation in question will be returned. This, instead of an array with a single object. - -```surql -RELATE ONLY person:l19zjikkw1p1h9o6ixrg->wrote->article:8nkk6uj4yprt49z7y3zm; -``` -## Basics of querying graphs -Let's look at how the above gets queried, for more examples see the [SELECT docs](/docs/surrealdb/surrealql/statements/select). - -For the questions below, each of the queries will give you the same answer. - -```surql --- Who wrote the articles? -SELECT in FROM wrote; - -SELECT ->wrote.in FROM person; -SELECT ->wrote<-person FROM person; - -SELECT <-wrote.in FROM article; -SELECT <-wrote<-person FROM article; - --- Which articles did the person write? -SELECT out FROM wrote; - -SELECT ->wrote.out FROM person; -SELECT ->wrote->article FROM person; - -SELECT <-wrote.out FROM article; -SELECT <-wrote->article FROM article; - --- When was the article written? -SELECT time.written as time_written FROM wrote; -SELECT ->wrote.time.written as time_written FROM person; -SELECT <-wrote.time.written as time_written FROM article; -``` - -For a more complicated query like the one below you can use a simple rule of thumb: -Place the subject in front of the graph selection, then read it backward. - -```surql --- This query -SELECT ->purchased->product<-purchased<-person->purchased->product FROM person:tobie - --- Then becomes -person:tobie->purchased->product<-purchased<-person->purchased->product SELECT -``` - -Reading this backwards then makes more sense:
- -Select every product that was purchased by a person who purchased a product that was also purchased by person Tobie. - -Alternatively, you can break it down in steps - -```surql --- Focusing on Tobie -person:tobie - --- Which products did he purchase? -->purchased->product - --- which persons also purchased those products? -<-purchased<-person - --- and what did they purchase? -->purchased->product -``` - -Putting it all together it would be: -based on all the products Tobie purchased, which person also purchased those products and what did they purchase? - -## Using [`LET`](/docs/surrealdb/surrealql/statements/let) parameters in RELATE statements - -You can also use [parameters](/docs/surrealdb/surrealql/parameters) to specify the record IDs. - -```surql --- These two statements store the result of the subquery in a parameter --- The subquery returns an array of IDs -LET $person = (SELECT VALUE id FROM person); -LET $article = (SELECT VALUE id FROM article); - --- This statement creates a relationship record for every combination of Record IDs --- Such that if we have 10 records each in the person and article table --- We get 100 records in the wrote edge table (10*10 = 100) --- In this case it would mean that each article would have 10 authors -RELATE $person->wrote->$article SET time.written = time::now(); -``` - -## Using [`RETURN`](/docs/surrealdb/surrealql/statements/return) clause - -By default, the relate statement returns the record value once the changes have been made. To change the return value of each record, specify a RETURN clause, specifying either `NONE`, `BEFORE`, `AFTER`, `DIFF`, or a comma-separated list of specific fields to return. - -```surql --- Don't return any result -RELATE person:l19zjikkw1p1h9o6ixrg->wrote->article:8nkk6uj4yprt49z7y3zm - SET time.written = time::now() - RETURN NONE; - --- Return the changeset diff -RELATE person:l19zjikkw1p1h9o6ixrg->wrote->article:8nkk6uj4yprt49z7y3zm - SET time.written = time::now() - RETURN DIFF; - --- Return the record before changes were applied -RELATE person:l19zjikkw1p1h9o6ixrg->wrote->article:8nkk6uj4yprt49z7y3zm - SET time.written = time::now() - RETURN BEFORE; - --- Return the record after changes were applied (the default) -RELATE person:l19zjikkw1p1h9o6ixrg->wrote->article:8nkk6uj4yprt49z7y3zm - SET time.written = time::now() - RETURN AFTER; - --- Return a specific field only from the updated records -RELATE person:l19zjikkw1p1h9o6ixrg->wrote->article:8nkk6uj4yprt49z7y3zm - SET time.written = time::now() - RETURN time; -``` -## Using `TIMEOUT` clause - -When processing a large result set with many interconnected records, it is possible to use the `TIMEOUT` keyword to specify a timeout duration for the statement. If the statement continues beyond this duration, then the transaction will fail, and the statement will return an error. - -```surql --- Cancel this conditional filtering based on graph edge properties --- if it's not finished within 5 seconds -SELECT * FROM person WHERE ->knows->person->(knows WHERE influencer = true) TIMEOUT 5s; -``` - -## Using `PARALLEL` clause - -When processing a large result set with many interconnected records, it is possible to use the `PARALLEL` keyword to signify that edges and remote records should be fetched and processed in parallel. This can be useful when you want to process a large result set in a short amount of time. - -```surql --- Fetch and process the person, purchased and product targets in parallel --- Select every product that was purchased by a person that purchased a product that person tobie also purchased -SELECT ->purchased->product<-purchased<-person->purchased->product FROM person:tobie PARALLEL; -``` - -## Deleting graph edges -You can also delete graph edges between two records in the database by using the [DELETE statement](/docs/surrealdb/1.0.x/surrealql/statements/delete). - -For example the graph edge below: - -```surql -RELATE person:tobie->bought->product:iphone; - - -[ - { - "id": "bought:ctwsll49k37a7rmqz9rr", - "in": "person:tobie", - "out": "product:iphone" - } -] -``` - -Can be deleted by: - -```surql -DELETE person:tobie->bought WHERE out=product:iphone; -``` \ No newline at end of file diff --git a/versioned_docs/version-1.0.x/surrealql/statements/remove.mdx b/versioned_docs/version-1.0.x/surrealql/statements/remove.mdx deleted file mode 100644 index cffb6dd6f..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/remove.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -sidebar_position: 17 ---- - -# REMOVE - -# `REMOVE` statement - -The `REMOVE` statement is used to remove resources such as databases, tables, indexes, events and more. -Similar to an SQL DROP statement. - -### Statement syntax - -```surql title="SurrealQL Syntax" -REMOVE [ - NAMESPACE @name - | DATABASE @name - | USER @name ON [ ROOT | NAMESPACE | DATABASE ] - | TOKEN @name ON [ NAMESPACE | DATABASE ] - | EVENT @name ON [ TABLE ] @table - | FIELD @name ON [ TABLE ] @table - | INDEX @name ON [ TABLE ] @table - | ANALYZER @name - | FUNCTION fn::@name - | PARAM $@name - | SCOPE @name - | TABLE @name -] -``` - -## Example usage -### Basic usage - -The following queries show an example of how to remove resources - -```surql -REMOVE NAMESPACE surrealdb; - -REMOVE DATABASE blog; - -REMOVE USER writer ON NAMESPACE; - -REMOVE USER writer ON DATABASE; - -REMOVE TOKEN writer_token ON NAMESPACE; - -REMOVE EVENT new_post ON TABLE article; - --- Only works for Schemaful tables (i.e. tables with a schema) -REMOVE FIELD tags ON TABLE article; - -REMOVE INDEX authors ON TABLE article; - -REMOVE ANALYZER example_ascii; - -REMOVE FUNCTION fn::update_author; - -REMOVE PARAM $author; - -REMOVE SCOPE documentation; - -REMOVE TABLE article; - -``` diff --git a/versioned_docs/version-1.0.x/surrealql/statements/select.mdx b/versioned_docs/version-1.0.x/surrealql/statements/select.mdx deleted file mode 100644 index ce11cff47..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/select.mdx +++ /dev/null @@ -1,396 +0,0 @@ ---- -sidebar_position: 19 ---- - -# SELECT - -# `SELECT` statement - -The SELECT statement can be used for selecting and querying data in a database. Each SELECT statement supports selecting from multiple targets, which can include tables, records, edges, subqueries, parameters, arrays, objects, and other values. - -### Statement syntax - -```surql title="SurrealQL Syntax" -SELECT [ VALUE ] @fields [ AS @alias ] - [ OMIT @fields ...] - FROM [ ONLY ] @targets - [ WITH [ NOINDEX | INDEX @indexes ... ]] - [ WHERE @conditions ] - [ SPLIT [ AT ] @field ... ] - [ GROUP [ BY ] @fields ... ] - [ ORDER [ BY ] - @fields [ - RAND() - | COLLATE - | NUMERIC - ] [ ASC | DESC ] ... - ] - [ LIMIT [ BY ] @limit ] - [ START [ AT ] @start ] - [ FETCH @fields ... ] - [ TIMEOUT @duration ] - [ PARALLEL ] - [ EXPLAIN [ FULL ]] -; -``` - -## Example usage -### Basic usage - -By default, SurrealDB returns an array of JSON-like objects called records instead of a tabular structure of rows and columns. - -```surql --- Select all fields from a table -SELECT * FROM person; - --- Select specific fields from a table -SELECT name, address, email FROM person; - --- Select all fields from a specific record -SELECT * FROM person:tobie; - --- Select specific fields from a specific record -SELECT name, address, email FROM person:tobie; - --- Alias/rename fields -SELECT name AS user_name, address FROM person; - --- Select just a single record --- Using the ONLY keyword, just an object for the record in question will be returned. --- This, instead of an array with a single object. -SELECT * FROM ONLY person:john; -``` - -SurrealDB can also return specific fields as an array of values instead of the default array of objects. This only works if you select a single un-nested field from a table or a record. - -```surql --- Select the values of a single field from a table -SELECT VALUE name FROM person; - --- Select the values of a single field from a specific record -SELECT VALUE name FROM person:00e1nc508h9f7v63x72O; -``` - -### Advanced expressions - -SELECT queries support advanced expression in the field projections. - -```surql --- Select nested objects/values -SELECT address.city FROM person; - --- Select all nested array values --- note the .* syntax works to select everything from an array or object-like values -SELECT address.*.coordinates AS coordinates FROM person; --- Equivalent to -SELECT address.coordinates AS coordinates FROM person; - --- Select one item from an array -SELECT address.coordinates[0] AS latitude FROM person; - --- Select unique values from an array -SELECT array::distinct(tags) FROM article; - --- Select unique values from a nested array across an entire table -SELECT array::group(tags) AS tags FROM article GROUP ALL; - --- Use mathematical calculations in a select expression -SELECT ( ( celsius * 2 ) + 30 ) AS fahrenheit FROM temperature; - --- Return boolean expressions with an alias -SELECT rating >= 4 as positive FROM review; - --- Select manually generated object structure -SELECT { weekly: false, monthly: true } AS `marketing settings` FROM user; - --- Select filtered nested array values -SELECT address[WHERE active = true] FROM person; - --- Select a person who has reacted to a post using a celebration --- You can see the graph as: person->(reacted_to WHERE type='celebrate')->post -SELECT * FROM person WHERE ->(reacted_to WHERE type='celebrate')->post; - --- Select a remote field from connected out graph edges -SELECT ->likes->friend.name AS friends FROM person:tobie; - --- Use the result of a subquery as a returned field -SELECT *, (SELECT * FROM events WHERE type = 'activity' LIMIT 5) AS history FROM user; -``` - -## Using parameters - -Parameters can be used like variables to store a value which can then be used in a subsequent query. -SurrealDB also uses a few [predefined variables](/docs/surrealdb/surrealql/parameters). - -```surql --- Store the subquery result in a variable and query that result. -LET $history = SELECT * FROM events WHERE type = 'activity' LIMIT 5; -SELECT * from $history; - --- Use the parent instance's field in a subquery (predefined variable) -SELECT *, (SELECT * FROM events WHERE host == $parent.id) AS hosted_events FROM user; -``` - -## Record ranges - -SurrealDB supports the ability to query a range of records, using the record ID. The record ID ranges, retrieve records using the natural sorting order of the record IDs. These range queries can be used to query a range of records in a timeseries context. You can see more here about [array-based Record IDs](/docs/surrealdb/surrealql/datamodel/ids#array-based-record-ids). - -```surql --- Select all person records with IDs between the given range -SELECT * FROM person:1..1000; --- Select all records for a particular location, inclusive -SELECT * FROM temperature:['London', NONE]..=['London', time::now()]; --- Select all temperature records with IDs less than a maximum value -SELECT * FROM temperature:..['London', '2022-08-29T08:09:31']; --- Select all temperature records with IDs greater than a minimum value -SELECT * FROM temperature:['London', '2022-08-29T08:03:39']..; --- Select all temperature records with IDs between the specified range -SELECT * FROM temperature:['London', '2022-08-29T08:03:39']..['London', '2022-08-29T08:09:31']; -``` - -## Skip certain fields using the `OMIT` clause - -Sometimes, especially with tables containing numerous columns, users might wish there was an easier way to select all columns except a few specific ones, with the `OMIT` clause you can omit certain fields from records as they are output. - -```surql --- Omit the password field and security field in the options object -CREATE person:tobie SET name = 'Tobie', password = '123456', opts.security = 'secure'; -CREATE person:jaime SET name = 'Jaime', password = 'asdfgh', opts.security = 'secure'; -SELECT * OMIT password, opts.security FROM person; -SELECT * FROM person; -``` - -## Select multiple targets using the `FROM` clause - -```surql --- This command selects all records from both 'user' and 'admin' tables. -SELECT * FROM user, admin; - --- This command selects all records from the table named in the variable '$table', --- but only if the 'admin' field of those records is true. --- This query is equivalent to 'SELECT * FROM user WHERE admin = true'. -LET $table = "user"; -SELECT * FROM type::table($table) WHERE admin = true; - --- This command selects a single record from: --- * the table named in the variable '$table', --- * and the identifier named in the variable '$id'. --- This query is equivalent to 'SELECT * FROM user:admin'. -LET $table = "user"; -LET $id = "admin"; -SELECT * FROM type::thing($table, $id); - --- This command selects all records for specific users 'tobie' and 'jaime', as well as all records for the company 'surrealdb'. -SELECT * FROM user:tobie, user:jaime, company:surrealdb; - --- This command selects records from a list of identifiers. The identifiers can be numerical, --- string, or specific records such as 'person:lrym5gur8hzws72ux5fa'. -SELECT * FROM [3648937, "test", person:lrym5gur8hzws72ux5fa, person:4luro9170uwcv1xrfvby]; - --- This command selects data from an object that includes a 'person' key, --- which is associated with a specific person record, and an 'embedded' key set to true. -SELECT * FROM { person: person:lrym5gur8hzws72ux5fa, embedded: true }; - --- This command first performs a subquery, which selects all 'user' records and adds a --- computed 'adult' field that is true if the user's 'age' is 18 or older. --- The main query then selects all records from this subquery where 'adult' is true. -SELECT * FROM (SELECT age >= 18 AS adult FROM user) WHERE adult = true; -``` - -## Filter queries using the `WHERE` clause - -As with traditional SQL queries, the SurrealDB SELECT queries support conditional filtering using a `WHERE` clause. If the expression in the `WHERE` clause evaluates to true, then the respective record will be returned. - -```surql --- Simple conditional filtering -SELECT * FROM article WHERE published = true; - --- Conditional filtering based on graph edges -SELECT * FROM profile WHERE count(->experience->organisation) > 3; - --- Conditional filtering based on graph edge properties -SELECT * FROM person WHERE ->(reaction WHERE type='celebrate')->post; - --- Conditional filtering with boolean logic -SELECT * FROM user WHERE (admin AND active) OR owner = true; - --- Select filtered nested array values -SELECT address[WHERE active = true] FROM person; -``` - -## The `SPLIT` clause - -As SurrealDB supports arrays and nested fields within arrays, it is possible to split the result on a specific field name, returning each value in an array as a separate value, along with the record content itself. This is useful in data analysis contexts. - -```surql --- Split the results by each value in an array -SELECT * FROM user SPLIT emails; - --- Split the results by each value in a nested array -SELECT * FROM country SPLIT locations.cities; -``` - -## The `GROUP BY` and `GROUP ALL` clause - -SurrealDB supports data aggregation and grouping, with support for multiple fields, nested fields, and aggregate functions. In SurrealDB, every field which appears in the field projections of the select statement (and which is not an aggregate function), must also be present in the `GROUP BY` clause. - -```surql --- Group records by a single field -SELECT country FROM user GROUP BY country; - --- Group results by a nested field -SELECT settings.published FROM article GROUP BY settings.published; - --- Group results by multiple fields -SELECT gender, country, city FROM person GROUP BY gender, country, city; - --- Group results with aggregate functions -SELECT count() AS total, math::sum(age), gender, country FROM person GROUP BY gender, country; - --- Get the total number of records in a table -SELECT count() AS number_of_records FROM person GROUP ALL; - --- Select unique values from a nested array across an entire table -SELECT array::group(tags) AS tags FROM article GROUP ALL; -``` - -## Sort records using the ORDER BY clause - -To sort records, SurrealDB allows ordering on multiple fields and nested fields. Use the `ORDER BY` clause to specify a comma-separated list of field names that should be used to order the resulting records. The `ASC` and `DESC` keywords can be used to specify whether results should be sorted in an ascending or descending manner. The `COLLATE` keyword can be used to use unicode collation when ordering text in string values, ensuring that different cases, and different languages are sorted in a consistent manner. Finally, the `NUMERIC` can be used to correctly sort text which contains numeric values. - -```surql --- Order records randomly -SELECT * FROM user ORDER BY RAND(); - --- Order records descending by a single field -SELECT * FROM song ORDER BY rating DESC; - --- Order records by multiple fields independently -SELECT * FROM song ORDER BY artist ASC, rating DESC; - --- Order text fields with unicode collation -SELECT * FROM article ORDER BY title COLLATE ASC; - --- Order text fields with which include numeric values -SELECT * FROM article ORDER BY title NUMERIC ASC; -``` - -## The LIMIT clause - -To limit the number of records returned, use the `LIMIT` clause. - -```surql --- Select only the top 50 records from the person table -SELECT * FROM person LIMIT 50; -``` - -When using the `LIMIT` clause, it is possible to paginate results by using the `START` clause to start from a specific record from the result set. - -```surql --- Start at record 50 and select the following 50 records -SELECT * FROM user LIMIT 50 START 50; -``` - -## Connect targets using the FETCH clause - -One of the most powerful functions in SurrealDB are the [record links](/docs/surrealdb/surrealql/datamodel/records) and [graph connections](/docs/surrealdb/surrealql/statements/relate). - -Instead of pulling data from multiple tables and merging that data together, SurrealDB allows you to traverse related records efficiently without needing to use JOINs. - -To fetch and replace records with the remote record data, use the `FETCH` clause to specify the fields and nested fields which should be fetched in-place, and returned in the final statement response output. - -```surql --- Select all the review information --- and the artist's email from the artist table -SELECT *, artist.email FROM review FETCH artist; - --- Select all the article information --- only if the author's age (from the author table) is under 30. -SELECT * FROM article WHERE author.age < 30 FETCH author; -``` - -## The TIMEOUT clause - -When processing a large result set with many interconnected records, it is possible to use the `TIMEOUT` keyword to specify a timeout duration for the statement. If the statement continues beyond this duration, then the transaction will fail, and the statement will return an error. - -```surql --- Cancel this conditional filtering based on graph edge properties --- if it's not finished within 5 seconds -SELECT * FROM person WHERE ->knows->person->(knows WHERE influencer = true) TIMEOUT 5s; -``` - -## The PARALLEL clause - -When processing a large result set with many interconnected records, it is possible to use the `PARALLEL` keyword to specify that the statement should be processed in parallel. This can significantly improve the performance of the statement, but it is important to note that the statement will not be processed in a transactional manner, and so the results may not be consistent. - -```surql --- Fetch and process the person, purchased and product targets in parallel --- Select every product that was purchased by a person that purchased a product that person tobie also purchased -SELECT ->purchased->product<-purchased<-person->purchased->product FROM person:tobie PARALLEL; -``` - -## The EXPLAIN clause - -When `EXPLAIN` is used, the `SELECT` statement returns an explanation, essentially revealing the execution plan to provide transparency and understanding of the query performance. - -```surql --- Returns the execution plan -SELECT * FROM person WHERE email='tobie@surrealdb.com' EXPLAIN; -``` -Here is the result when the field 'email' is not indexed. We can see that the execution plan will iterate over the whole table. - -```surql -[ - { - detail: { - table: 'person' - }, - operation: 'Iterate Table' - } -] -``` -```surql --- Returns the execution plan with the number of fetched rows -SELECT * FROM person WHERE email='tobie@surrealdb.com' EXPLAIN FULL; -``` - -Here is the result when the 'email' field is indexed. We can see that the execution plan will proceed by utilizing the index. - -```surql -[ - { - detail: { - plan: { - index: 'email', - operator: '=', - value: 'tobie@surrealdb.com' - }, - table: 'person' - }, - operation: 'Iterate Index' - }, - { - detail: { - count: 1 - }, - operation: 'Fetch' - } -] -``` - -## The `WITH` clause - -The query planner can replace the standard table iterator with one or several index iterators based on the structure and requirements of the query. However, there may be situations where manual control over these potential optimizations is desired or required. - -For instance, the cardinality of an index can be high, potentially even equal to the number of records in the table. The sum of the records iterated by several indexes may end up being larger than the number of records obtained by iterating over the table. In such cases, if there are different index possibilities, the most probable optimal choice would be to use the index known with the lowest cardinality. - -- `WITH NOINDEX` forces the query planner to use the table iterator. -- `WITH INDEX @indexes ...` restricts the query planner to using only the specified index(es) - -```surql --- forces the query planner to use the specified index(es): -SELECT * FROM person WITH INDEX ft_email WHERE email='tobie@surrealdb.com' AND company='SurrealDB'; - --- forces the usage of the table iterator -SELECT name FROM person WITH NOINDEX WHERE job='engineer' AND genre = 'm'; -``` diff --git a/versioned_docs/version-1.0.x/surrealql/statements/show.mdx b/versioned_docs/version-1.0.x/surrealql/statements/show.mdx deleted file mode 100644 index 9164366f2..000000000 --- a/versioned_docs/version-1.0.x/surrealql/statements/show.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -sidebar_position: 20 ---- - -# SHOW - -# `SHOW` statement - -The `SHOW` statement can be used to replay changes made to the table. - -## Requirements -- You must first [`DEFINE`](/docs/surrealdb/surrealql/statements/define/table#example-usage) a [Change Feed](https://surrealdb.com/cf). - -### Statement syntax - -```surql title="SurrealQL Syntax" -SHOW CHANGES FOR TABLE @tableName [SINCE "@timestamp"] [LIMIT @number] -``` - -## Example usage -### Basic usage - -The following expression shows usage of Show statement. - -```surql --- Define the change feed -DEFINE TABLE reading CHANGEFEED 1d; - --- Create some records in the reading table -CREATE reading set story = "Once upon a time"; -CREATE reading set story = "there was a database"; - --- Replay changes to the reading table -SHOW CHANGES FOR TABLE reading SINCE "2023-09-07T01:23:52Z" LIMIT 10; -``` - -:::note -__Note:__ `SINCE