diff --git a/Frontend/.dockerignore b/Frontend/.dockerignore new file mode 100644 index 0000000..38adffa --- /dev/null +++ b/Frontend/.dockerignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/Frontend/.eslintrc.cjs b/Frontend/.eslintrc.cjs new file mode 100644 index 0000000..6f40582 --- /dev/null +++ b/Frontend/.eslintrc.cjs @@ -0,0 +1,15 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution') + +module.exports = { + root: true, + 'extends': [ + 'plugin:vue/vue3-essential', + 'eslint:recommended', + '@vue/eslint-config-typescript', + '@vue/eslint-config-prettier/skip-formatting' + ], + parserOptions: { + ecmaVersion: 'latest' + } +} diff --git a/Frontend/.gitignore b/Frontend/.gitignore new file mode 100644 index 0000000..38adffa --- /dev/null +++ b/Frontend/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/Frontend/.prettierrc.json b/Frontend/.prettierrc.json new file mode 100644 index 0000000..66e2335 --- /dev/null +++ b/Frontend/.prettierrc.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/prettierrc", + "semi": false, + "tabWidth": 2, + "singleQuote": true, + "printWidth": 100, + "trailingComma": "none" +} \ No newline at end of file diff --git a/Frontend/Dockerfile b/Frontend/Dockerfile index 4e9751f..dce09af 100644 --- a/Frontend/Dockerfile +++ b/Frontend/Dockerfile @@ -1,20 +1,24 @@ -FROM nginx:stable-alpine +FROM node:latest as build-stage +WORKDIR /app +COPY package*.json ./ +RUN npm install +COPY ./ . +RUN npm run build + + + +FROM nginx:stable-alpine as production-stage +RUN mkdir /app RUN apk add --no-cache tzdata ENV TZ Europe/Warsaw -COPY ./tools/ /usr/share/nginx/html/tools/ -COPY ./lawful/ /usr/share/nginx/html/lawful/ -COPY ./assets/ /usr/share/nginx/html/assets/ -COPY ./index.html /usr/share/nginx/html +COPY --from=build-stage /app/dist /usr/share/nginx/html COPY ./nginx.conf /etc/nginx/conf.d/default.conf RUN mkdir -p /scripts COPY insert_version.sh /scripts/ WORKDIR /scripts -RUN chmod +x insert_version.sh -RUN ./insert_version.sh - - EXPOSE 80 +EXPOSE 443 diff --git a/Frontend/README.md b/Frontend/README.md new file mode 100644 index 0000000..831a223 --- /dev/null +++ b/Frontend/README.md @@ -0,0 +1,46 @@ +# new-frontend + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. + +If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: + +1. Disable the built-in TypeScript Extension + 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette + 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` +2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +npm run build +``` + +### Lint with [ESLint](https://eslint.org/) + +```sh +npm run lint +``` diff --git a/Frontend/assets/css/common/common.css b/Frontend/assets/css/common/common.css deleted file mode 100644 index 0c7e754..0000000 --- a/Frontend/assets/css/common/common.css +++ /dev/null @@ -1,6 +0,0 @@ -@import url('https://necolas.github.io/normalize.css/8.0.1/normalize.css'); -@import url('r11addons.css'); -@import url('r11tables.css'); -@import url('r11tool.css'); -@import url('r11tooltip.css'); -@import url('r11modal.css'); diff --git a/Frontend/assets/css/common/font/fontello.eot b/Frontend/assets/css/common/font/fontello.eot deleted file mode 100644 index 8eb8762..0000000 Binary files a/Frontend/assets/css/common/font/fontello.eot and /dev/null differ diff --git a/Frontend/assets/css/common/font/fontello.svg b/Frontend/assets/css/common/font/fontello.svg deleted file mode 100644 index 66886e8..0000000 --- a/Frontend/assets/css/common/font/fontello.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - -Copyright (C) 2021 by original authors @ fontello.com - - - - - - - - - - \ No newline at end of file diff --git a/Frontend/assets/css/common/font/fontello.ttf b/Frontend/assets/css/common/font/fontello.ttf deleted file mode 100644 index a6a2ea2..0000000 Binary files a/Frontend/assets/css/common/font/fontello.ttf and /dev/null differ diff --git a/Frontend/assets/css/common/font/fontello.woff b/Frontend/assets/css/common/font/fontello.woff deleted file mode 100644 index 8e3c9e6..0000000 Binary files a/Frontend/assets/css/common/font/fontello.woff and /dev/null differ diff --git a/Frontend/assets/css/common/font/fontello.woff2 b/Frontend/assets/css/common/font/fontello.woff2 deleted file mode 100644 index b1c349b..0000000 Binary files a/Frontend/assets/css/common/font/fontello.woff2 and /dev/null differ diff --git a/Frontend/assets/css/common/fontello.css b/Frontend/assets/css/common/fontello.css deleted file mode 100644 index 28bc34a..0000000 --- a/Frontend/assets/css/common/fontello.css +++ /dev/null @@ -1,59 +0,0 @@ -@font-face { - font-family: 'fontello'; - src: url('font/fontello.eot?49304387'); - src: url('font/fontello.eot?49304387#iefix') format('embedded-opentype'), - url('font/fontello.woff2?49304387') format('woff2'), - url('font/fontello.woff?49304387') format('woff'), - url('font/fontello.ttf?49304387') format('truetype'), - url('font/fontello.svg?49304387#fontello') format('svg'); - font-weight: normal; - font-style: normal; - } - /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ - /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ - /* - @media screen and (-webkit-min-device-pixel-ratio:0) { - @font-face { - font-family: 'fontello'; - src: url('../font/fontello.svg?49304387#fontello') format('svg'); - } - } - */ - - [class^="icon-"]:before, [class*=" icon-"]:before { - font-family: "fontello"; - font-style: normal; - font-weight: normal; - speak: never; - - display: inline-block; - text-decoration: inherit; - width: 1em; - margin-right: .2em; - text-align: center; - /* opacity: .8; */ - - /* For safety - reset parent styles, that can break glyph codes*/ - font-variant: normal; - text-transform: none; - - /* fix buttons height, for twitter bootstrap */ - line-height: 1em; - - /* Animation center compensation - margins should be symmetric */ - /* remove if not needed */ - margin-left: .2em; - - /* you can be more comfortable with increased icons size */ - /* font-size: 120%; */ - - /* Font smoothing. That was taken from TWBS */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - - /* Uncomment for 3D effect */ - /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ - } - - .icon-plus:before { content: '\e801'; } /* '' */ - .icon-cancel:before { content: '\e802'; } /* '' */ \ No newline at end of file diff --git a/Frontend/assets/css/frame.css b/Frontend/assets/css/frame.css deleted file mode 100644 index c6a6ba2..0000000 --- a/Frontend/assets/css/frame.css +++ /dev/null @@ -1,150 +0,0 @@ -@font-face { - font-family: "Nunito"; - src: url('../fonts/Nunito-VariableFont_wght.ttf') format('truetype'); -} - -html { - background-image: url("../images/background.jpg"); -} - -body { - font-family: 'Nunito', sans-serif; - font-weight: 200; - - color: #2e3133; - margin: 0px; -} - -* { - margin: 0; - padding: 0; -} - -html, -body { - height: 100%; - min-height: 100%; -} - -div#header { - background-color: #FFFFFF; - width: 100%; - height: 80px; - display: flex; - align-items: center; - justify-content: space-between; -} - -#logo { - padding: 20px 20px 20px; - width: 250px; - grid-column: 1; -} - -iframe#iframe { - flex-grow: 1; - background-color: #FFFFFF; -} - -div#content { - width: 100%; - height: calc(100% - 80px); - display: flex; - backdrop-filter: blur(10px); -} - -div#leftBar { - float: left; - width: 200px; - background-color: transparent; - height: 100%; -} - -li { - font-size: 20px; - font-weight: 300; -} - -div#copyright{ - color:rgb(192, 192, 192); - position: fixed; - bottom: 10px; - width: 200px; - text-align: center; -} - -div#copyright a, a:visited, a:active { - color: rgb(192, 192, 192); -} - -#toolList { - list-style-type: none; - margin: 0; - padding: 10px 0 0 0; - overflow: hidden; - display: block; - float: left; - background-color: transparent; - width: 100%; - height: calc(100% - 80px); - backdrop-filter: blur(10px); -} - -.toolListRow a { - display: block; - color: white; - text-align: center; - padding: 20px 50px 25px; - text-decoration: none; -} - -.toolListRow a:hover { - background-color: #2A93B0; - color: white; - transform: scale(1.25, 1.25); - transition-duration: .3s; -} - -#leftElements { - display: flex; - align-items: center; -} - -#titlebar { - /* padding: 10px 0; */ - color: black; - height: fit-content; - margin: 0px 20px; - font-size: 36px; - text-align: center; - -} -#menu { - display: flex; - height: fit-content; - -} - -#menu a { - display: block; - margin: 0px 10px; - padding: 0px 10px; - font-size: 28px; - text-decoration: none; - color: black; -} - -#menu a.active { - border-bottom: 3px solid #2A93B0; - -} - -#menu a:hover { - transform: scale(1.25, 1.25); - transition-duration: .3s; -} - -.separator{ - width: 100%; - padding:6px; -} \ No newline at end of file diff --git a/Frontend/assets/css/highlight.css b/Frontend/assets/css/highlight.css deleted file mode 100644 index 3981640..0000000 --- a/Frontend/assets/css/highlight.css +++ /dev/null @@ -1,69 +0,0 @@ -.json-block { - height: 600px; - width: 97%; -} - -.json-border { - border: 2px solid rgba(93, 99, 96, 0.705); - border-radius: 5px; -} - -.json-border:focus { - box-shadow: 0 0 5px rgb(81, 203, 238); - border: 2px solid rgba(93, 99, 96, 0.705); - border-radius: 5px; -} - -/*! Theme: Default Description: Original highlight.js style Author: (c) Ivan Sagalaev Maintainer: @highlightjs/core-team Website: https://highlightjs.org/ License: see project LICENSE Touched: 2021 */ -pre code.hljs{ - display:block; - overflow-x:auto; - padding:1em -} -code.hljs{ - padding:3px 5px -} -.hljs{ - background:#FFFFFF; - color:#444 -} -.hljs-comment{ - color:#697070 -} -.hljs-punctuation,.hljs-tag{ - color:#444a -} -.hljs-tag .hljs-attr,.hljs-tag .hljs-name{ - color:#444 -} -.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{ - font-weight:700 -} -.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{ - color:#800 -} -.hljs-section,.hljs-title{ - color:#800; - font-weight:700 -} -.hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{ - color:#ab5656 -} -.hljs-literal{ - color:#695 -} -.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{ - color:#397300 -} -.hljs-meta{ - color:#1f7199 -} -.hljs-meta .hljs-string{ - color:#38a -} -.hljs-emphasis{ - font-style:italic -} -.hljs-strong{ - font-weight:700 -} diff --git a/Frontend/assets/css/lawful.css b/Frontend/assets/css/lawful.css deleted file mode 100644 index a2bd94f..0000000 --- a/Frontend/assets/css/lawful.css +++ /dev/null @@ -1,42 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@200&display=swap'); - -body { - font-family: "Nunito", sans-serif; - background-color: #FFFFFF; - margin: 0px; - -} -h1, h2 { - text-align: center; -} - -h2::before { - background: url('/assets/images/sygnet_color.svg') no-repeat; - display: inline-block; -} - -#header { - height: 80px; - width: 100%; - display: flex; - align-items: center; - background-color: #FFFFFF; - position: fixed; - top: 0; - left: 0; -} - -#logo { - width: 250px; - margin: 0px 20px; -} - -#content { - width: 1024px; - margin: auto; - text-align: justify; - background-color: #FFFFFF; - padding: 20px 20px; - border-radius: 15px; - margin-top: 100px; -} \ No newline at end of file diff --git a/Frontend/assets/css/tools/font/fontello.eot b/Frontend/assets/css/tools/font/fontello.eot deleted file mode 100644 index 8eb8762..0000000 Binary files a/Frontend/assets/css/tools/font/fontello.eot and /dev/null differ diff --git a/Frontend/assets/css/tools/font/fontello.svg b/Frontend/assets/css/tools/font/fontello.svg deleted file mode 100644 index 66886e8..0000000 --- a/Frontend/assets/css/tools/font/fontello.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - -Copyright (C) 2021 by original authors @ fontello.com - - - - - - - - - - \ No newline at end of file diff --git a/Frontend/assets/css/tools/font/fontello.ttf b/Frontend/assets/css/tools/font/fontello.ttf deleted file mode 100644 index a6a2ea2..0000000 Binary files a/Frontend/assets/css/tools/font/fontello.ttf and /dev/null differ diff --git a/Frontend/assets/css/tools/font/fontello.woff b/Frontend/assets/css/tools/font/fontello.woff deleted file mode 100644 index 8e3c9e6..0000000 Binary files a/Frontend/assets/css/tools/font/fontello.woff and /dev/null differ diff --git a/Frontend/assets/css/tools/font/fontello.woff2 b/Frontend/assets/css/tools/font/fontello.woff2 deleted file mode 100644 index b1c349b..0000000 Binary files a/Frontend/assets/css/tools/font/fontello.woff2 and /dev/null differ diff --git a/Frontend/assets/css/tools/fontello.css b/Frontend/assets/css/tools/fontello.css deleted file mode 100644 index 28bc34a..0000000 --- a/Frontend/assets/css/tools/fontello.css +++ /dev/null @@ -1,59 +0,0 @@ -@font-face { - font-family: 'fontello'; - src: url('font/fontello.eot?49304387'); - src: url('font/fontello.eot?49304387#iefix') format('embedded-opentype'), - url('font/fontello.woff2?49304387') format('woff2'), - url('font/fontello.woff?49304387') format('woff'), - url('font/fontello.ttf?49304387') format('truetype'), - url('font/fontello.svg?49304387#fontello') format('svg'); - font-weight: normal; - font-style: normal; - } - /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ - /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ - /* - @media screen and (-webkit-min-device-pixel-ratio:0) { - @font-face { - font-family: 'fontello'; - src: url('../font/fontello.svg?49304387#fontello') format('svg'); - } - } - */ - - [class^="icon-"]:before, [class*=" icon-"]:before { - font-family: "fontello"; - font-style: normal; - font-weight: normal; - speak: never; - - display: inline-block; - text-decoration: inherit; - width: 1em; - margin-right: .2em; - text-align: center; - /* opacity: .8; */ - - /* For safety - reset parent styles, that can break glyph codes*/ - font-variant: normal; - text-transform: none; - - /* fix buttons height, for twitter bootstrap */ - line-height: 1em; - - /* Animation center compensation - margins should be symmetric */ - /* remove if not needed */ - margin-left: .2em; - - /* you can be more comfortable with increased icons size */ - /* font-size: 120%; */ - - /* Font smoothing. That was taken from TWBS */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - - /* Uncomment for 3D effect */ - /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ - } - - .icon-plus:before { content: '\e801'; } /* '' */ - .icon-cancel:before { content: '\e802'; } /* '' */ \ No newline at end of file diff --git a/Frontend/assets/css/tools/mock/common.css b/Frontend/assets/css/tools/mock/common.css deleted file mode 100644 index f814529..0000000 --- a/Frontend/assets/css/tools/mock/common.css +++ /dev/null @@ -1,34 +0,0 @@ -@import url('https://necolas.github.io/normalize.css/8.0.1/normalize.css'); -/* @import url('https://fonts.googleapis.com/icon?family=Material+Icons'); */ -@import url('r11addons.css'); -@import url('r11tables.css'); -@import url('r11tool.css'); -@import url('r11tooltip.css'); -@import url('r11modal.css'); -@import url('r11flexbox.css'); -@import url('r11popup.css'); -@import url('../../highlight.css'); - -@font-face { - font-family: 'Material Icons'; - font-style: normal; - font-weight: 400; - src: url(https://fonts.gstatic.com/s/materialicons/v140/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2'); -} - -.material-icons { - font-family: 'Material Icons'; - font-weight: normal; - font-style: normal; - font-size: 24px; - line-height: 1; - letter-spacing: normal; - text-transform: none; - display: inline-block; - white-space: nowrap; - word-wrap: normal; - direction: ltr; - -moz-font-feature-settings: 'liga'; - -moz-osx-font-smoothing: grayscale; -} - \ No newline at end of file diff --git a/Frontend/assets/css/tools/mock/font/Material-Icons.woff2 b/Frontend/assets/css/tools/mock/font/Material-Icons.woff2 deleted file mode 100644 index 5492a6e..0000000 Binary files a/Frontend/assets/css/tools/mock/font/Material-Icons.woff2 and /dev/null differ diff --git a/Frontend/assets/css/tools/mock/font/Nunito-VariableFont_wght.ttf b/Frontend/assets/css/tools/mock/font/Nunito-VariableFont_wght.ttf deleted file mode 100644 index 87c50a8..0000000 Binary files a/Frontend/assets/css/tools/mock/font/Nunito-VariableFont_wght.ttf and /dev/null differ diff --git a/Frontend/assets/css/tools/mock/font/fontello.eot b/Frontend/assets/css/tools/mock/font/fontello.eot deleted file mode 100644 index 8eb8762..0000000 Binary files a/Frontend/assets/css/tools/mock/font/fontello.eot and /dev/null differ diff --git a/Frontend/assets/css/tools/mock/font/fontello.svg b/Frontend/assets/css/tools/mock/font/fontello.svg deleted file mode 100644 index 66886e8..0000000 --- a/Frontend/assets/css/tools/mock/font/fontello.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - -Copyright (C) 2021 by original authors @ fontello.com - - - - - - - - - - \ No newline at end of file diff --git a/Frontend/assets/css/tools/mock/font/fontello.ttf b/Frontend/assets/css/tools/mock/font/fontello.ttf deleted file mode 100644 index a6a2ea2..0000000 Binary files a/Frontend/assets/css/tools/mock/font/fontello.ttf and /dev/null differ diff --git a/Frontend/assets/css/tools/mock/font/fontello.woff b/Frontend/assets/css/tools/mock/font/fontello.woff deleted file mode 100644 index 8e3c9e6..0000000 Binary files a/Frontend/assets/css/tools/mock/font/fontello.woff and /dev/null differ diff --git a/Frontend/assets/css/tools/mock/font/fontello.woff2 b/Frontend/assets/css/tools/mock/font/fontello.woff2 deleted file mode 100644 index b1c349b..0000000 Binary files a/Frontend/assets/css/tools/mock/font/fontello.woff2 and /dev/null differ diff --git a/Frontend/assets/css/tools/mock/fontello.css b/Frontend/assets/css/tools/mock/fontello.css deleted file mode 100644 index 28bc34a..0000000 --- a/Frontend/assets/css/tools/mock/fontello.css +++ /dev/null @@ -1,59 +0,0 @@ -@font-face { - font-family: 'fontello'; - src: url('font/fontello.eot?49304387'); - src: url('font/fontello.eot?49304387#iefix') format('embedded-opentype'), - url('font/fontello.woff2?49304387') format('woff2'), - url('font/fontello.woff?49304387') format('woff'), - url('font/fontello.ttf?49304387') format('truetype'), - url('font/fontello.svg?49304387#fontello') format('svg'); - font-weight: normal; - font-style: normal; - } - /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ - /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ - /* - @media screen and (-webkit-min-device-pixel-ratio:0) { - @font-face { - font-family: 'fontello'; - src: url('../font/fontello.svg?49304387#fontello') format('svg'); - } - } - */ - - [class^="icon-"]:before, [class*=" icon-"]:before { - font-family: "fontello"; - font-style: normal; - font-weight: normal; - speak: never; - - display: inline-block; - text-decoration: inherit; - width: 1em; - margin-right: .2em; - text-align: center; - /* opacity: .8; */ - - /* For safety - reset parent styles, that can break glyph codes*/ - font-variant: normal; - text-transform: none; - - /* fix buttons height, for twitter bootstrap */ - line-height: 1em; - - /* Animation center compensation - margins should be symmetric */ - /* remove if not needed */ - margin-left: .2em; - - /* you can be more comfortable with increased icons size */ - /* font-size: 120%; */ - - /* Font smoothing. That was taken from TWBS */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - - /* Uncomment for 3D effect */ - /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ - } - - .icon-plus:before { content: '\e801'; } /* '' */ - .icon-cancel:before { content: '\e802'; } /* '' */ \ No newline at end of file diff --git a/Frontend/assets/css/tools/mock/main.css b/Frontend/assets/css/tools/mock/main.css deleted file mode 100644 index 2f8c9ff..0000000 --- a/Frontend/assets/css/tools/mock/main.css +++ /dev/null @@ -1,4 +0,0 @@ -.overflowedTableContent { - max-height: 750px; - overflow: scroll; -} \ No newline at end of file diff --git a/Frontend/assets/css/tools/mock/r11addons.css b/Frontend/assets/css/tools/mock/r11addons.css deleted file mode 100644 index 2d2e72e..0000000 --- a/Frontend/assets/css/tools/mock/r11addons.css +++ /dev/null @@ -1,95 +0,0 @@ -.modification-button.btn-tile:hover { - color: #ca1111; -} - -.modification-button.btn-tile { - width: 10%; - margin: 20% 0 0 0; - font-size: 14px; - color: #00000020 -} - -.modification-button.btn-addtile { - font-size: 38px; - color: #00000030; -} - -.modification-button.btn-copy { - width: 24px; - height: 24px; - align-content: center; - display: grid; - justify-content: center; -} - -.modification-button.btn-copy img { - width: 100%; - height: 100%; -} - -.modification-button.btn-addtile:hover { - color: #58ac43; -} - -.tile { - width: 100%; - padding-top: 40%; - border-radius: 5px; - position: relative; - background: #D5D7E6; - margin-bottom: 10px; - cursor: default; - border-bottom: 1px solid darkgray; -} - -.tile:hover { - filter: brightness(110%); -} - -.tile.active { - background: #2A93B0; - color: white; - filter: none; -} - -.tile.active .btn-tile { - opacity: 0; -} - -.tile .content { - position: absolute; - left: 0; - top: 0; - bottom: 0; - right: 0; - padding: 0 2% 0 7%; - display: flex; -} - -.content p { - margin: 0; - padding: 0; -} - -.refresh-button{ - float: right; - border: none; - background-color: unset; - font-size: xx-large; -} - -.refresh-button:hover{ - animation-name: rotation; - animation-duration: 0.8s; - animation-iteration-count: infinite; - animation-timing-function: linear; -} - -@keyframes rotation{ - from{ - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } - } \ No newline at end of file diff --git a/Frontend/assets/css/tools/mock/r11flexbox.css b/Frontend/assets/css/tools/mock/r11flexbox.css deleted file mode 100644 index 972ddc6..0000000 --- a/Frontend/assets/css/tools/mock/r11flexbox.css +++ /dev/null @@ -1,57 +0,0 @@ -#editable-block { - flex-grow: 0; - flex-shrink: 0; -} - -#uuid-edit { - display: flex; - align-items: center; - margin-bottom: 15px; -} - -#uuid-edit-field { - display: flex; - width: fit-content; - align-items: center; - width: 70%; - margin-right: 10px; - -} - -#uuid-edit-field .uuid-inputField-icon{ - background: none; - color: black; - border: 0; -} - -#uuid-edit-field .uuid-inputField-icon:hover{ - color: #2A93B0; -} - -#uuid-input { - border: none; - width: 100% -} - -#uuid-input:focus { - outline: none; - -} - -#uuid-validation-strategy input { - margin-left: 10px; -} - -.disabled { - background-color: #CCD1CF; - -} - -.disabled #uuid-input { - background-color: #CCD1CF; - -} - -.uuid-inputField-icon-span { - font-size: x-large; -} \ No newline at end of file diff --git a/Frontend/assets/css/tools/mock/r11modal.css b/Frontend/assets/css/tools/mock/r11modal.css deleted file mode 100644 index 7848a43..0000000 --- a/Frontend/assets/css/tools/mock/r11modal.css +++ /dev/null @@ -1,104 +0,0 @@ -#overlay { - position: fixed; - left: 0; - right: 0; - top: 0; - bottom: 0; - opacity: 0; - background: rgba(0, 0 , 0, 0.5); - pointer-events: none; -} - -#overlay.active { - pointer-events: all; - opacity: 1; -} - -.modal { - display: none; - width: 390px; - min-height: 71px; - max-height: 700px; - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - background: white; - padding: 5px; - border: 1px solid #f0f0f0; -} - -.modal.active { - display: block; -} - -.modal div.header { - width: 384px; - height: 24px; - background: #2e3133; - color: white; - font-size: 24px; - font-weight: 700; - padding: 3px; - margin-bottom: 5px; - display: flex; - justify-content: space-between; - align-items: center; -} - -.modal div.header button { - font-size: 100%; - font-family: inherit; - border: 0; - padding: 0; - background: 0; - color: inherit; - cursor: pointer; -} - -.modal div.header button:hover { - color: white; - font-weight: 700; -} - -.modal div.body { - width: 370px; - padding: 10px; - background: #f0f0f0; - color: #2e3133; - min-height: 16px; - text-align: justify; - font-size: 16px; -} - -.modal div.function { - width: 385px; - min-height: 30px; - padding-top: 5px; - display: flex; - justify-content: space-evenly; - background: inherit; -} - -.modal div.function button { - min-height: 22px; - min-width: 34px; - max-width: 74px; - padding: 3px 20px; - outline: none; - border: 1px solid #f0f0f0; - background: rgba(205,205,205,1); - font-size: 16px; - text-align: center; - cursor: pointer; -} - -.modal div.function button:hover { - filter: brightness(110%); -} - -.r-exclamation:before { - content: '!'; - color: #3bc4f1; - font-style: normal; -} diff --git a/Frontend/assets/css/tools/mock/r11popup.css b/Frontend/assets/css/tools/mock/r11popup.css deleted file mode 100644 index 296349a..0000000 --- a/Frontend/assets/css/tools/mock/r11popup.css +++ /dev/null @@ -1,83 +0,0 @@ -.popup-flex:not(.hiddable-container){ - animation: blur 0.5s ease-in-out ; - animation-fill-mode: forwards; -} -.popup-flex{ - display: flex; - align-items: center; - width: 100%; - height: 100%; - z-index: 50; - flex-direction: column; - gap: 2%; - position: fixed; - justify-content: center; -} - -.popup-body{ - min-width: 33%; - max-width: 60%; - max-height: 70%; - background-color: white; - box-shadow: 10px 10px 5px lightblue; - min-height: 45%; - border-radius: 1em; - text-align: center; - padding: 10px 15px 15px 15px; - color: black; - border: 1px #2A93B0 solid; - display: flex; - flex-direction: column; - position: fixed; -} - -.popup-button-close-container{ - text-align: right; - margin-right: 2%; - margin-top: 1%; - font-size: xx-large; - font-weight: bold; - position: sticky; - top:0 -} - -.hiddable-popup-option{ - flex-grow: 1; - overflow: auto; - padding: 1.5%; -} - -.popup-button-close{ - background: padding-box; - border: 0; -} - -.popup-button-close:hover{ - color: #2A93B0; -} - -.hiddable-container{ - display:none; -} - -.hidden-popup-type{ - display: none; -} - -#history-request-body{ - text-align: justify; -} - -@keyframes blur { - 0% { - backdrop-filter: blur(0px); - } - - 50% { - backdrop-filter: blur(5px); - } - - 100% { - backdrop-filter: blur(10px); - } - } diff --git a/Frontend/assets/css/tools/mock/r11tables.css b/Frontend/assets/css/tools/mock/r11tables.css deleted file mode 100644 index c78730b..0000000 --- a/Frontend/assets/css/tools/mock/r11tables.css +++ /dev/null @@ -1,96 +0,0 @@ -.table-map { - width: 60%; -} - -.table-map input{ - font-size: 16px; - padding: 7px; - border: 1px solid rgba(145, 146, 146, 0.849); - border-radius: 5px; -} - -.table-map input.key { - background: #f0f0f0; -} - -.modification-button.btn-add { - font-size: 16px; - color: #00000030; - margin: auto 0 auto 0; -} - -.modification-button.btn-add:hover { - color:#58ac43; -} - -.modification-button.btn-hashmap { - font-size: 16px; - color: #00000030; - margin: auto 0 auto 0; -} - -.modification-button.btn-hashmap:hover { - color: #ca1111; -} - -.table-default { - width: 80%; - border-collapse: collapse; - border-spacing: 0; -} - -.table-default tr { - background: #f0f0f02d; -} - -.table-default tr.bottom-border { - border-bottom: 1px solid black; -} - -.table-default th { - background: #ffffff; -} - -.table-default tr.even { - background: #f0f0f0; -} - -.table-doc td, .table-doc th{ - border-spacing: 0px; - padding: 0px 10px; -} - -.table-doc td { - background-color: rgba(155, 165, 160, 0.342); -} - -.table-doc th { - background-color: #3bc4f1; - text-align: left; - color: white; -} - -.table-default td{ - text-align: center; -} - -#header-table tr td { - border: 1px black solid; - padding: 1.5%; - -} - -#header-table{ - border-collapse: collapse; - width: 100%; - height: 100%; -} - -.history-header-name{ - min-width: 10vw; -} - -#historyTable, td{ - padding: 1%; - overflow-x: scroll; -} \ No newline at end of file diff --git a/Frontend/assets/css/tools/mock/r11tool.css b/Frontend/assets/css/tools/mock/r11tool.css deleted file mode 100644 index 8f4fa42..0000000 --- a/Frontend/assets/css/tools/mock/r11tool.css +++ /dev/null @@ -1,327 +0,0 @@ -@font-face { - font-family: "Nunito"; - src: url('font/Nunito-VariableFont_wght.ttf') format('truetype'); -} - -input { - box-sizing: border-box; -} - -.hyperlink, .hyperlink:visited, .hyperlink:active { - color: rgb(47, 125, 146); - cursor: pointer; -} - -.hyperlink:hover { - filter: brightness(120%); -} - -.bordered-field { - background-color: #FFFFFF; - border: 2px solid rgba(93, 99, 96, 0.705); - border-radius: 5px; - padding: 8px; - display: block; - -} - -.bordered-field:focus { - outline: none; - box-shadow: 0 0 5px rgba(81, 203, 238); - border: 2px solid #00000070; -} - -.bordered-field:disabled { - background: #eeeeeed2; -} - -.vertically-resizeable { - resize: vertical; -} - -body { - font-family: 'Nunito', sans-serif; -} - -.container { - display: flex; - justify-content: left; - width: 100%; -} - -.tool { - width: 55%; - display: flex; - justify-content: space-evenly; -} - -.tool.extended { - width: 65%; -} - -.tool .tool-context { - width: 90%; -} - -.tool.extended .tool-extention { - width: 20%; - padding-top: 2%; - display: block; -} - -.tool .tool-extention { - display: none; -} - -.tool-extention { - opacity: 0; - pointer-events: none; -} - -.tool-extention.active { - opacity: 100%; - pointer-events: all; -} - -.clickable-text { - padding: 0; - outline: none; - background: none; - border: none; - font-weight: 300; - cursor: pointer; -} - -.clickable-text.highlight:hover { - color: #3bc4f1; -} - -.clickable-text.switch { - font-size: 18px; - font-weight: 300; -} - -.clickable-text.switch span.toggleIndicator:before { - content: '>'; -} - -.clickable-text.switch span.toggleIndicator.active:before { - content: 'v'; -} - -.modification-button { - padding: 0; - outline: none; - background: none; - border: none; - font-weight: 300; -} - -.text-aligned-to-right { - text-align: right; -} - -.centered-vertically { - margin-top: auto; - margin-bottom: auto; -} - -.display-space-between { - width: 100%; - display: flex; - justify-content: space-between; -} - -.display-space-evenly { - display: flex; - justify-content: space-evenly; -} - -.float-left { - display: flex; - justify-content: left; - width: 100%; -} - -.version-span { - font-size: 13px; - font-weight: 400; - color: rgba(85,85,85,0.555); -} - -.block-display { - display: block; -} - -.block-label { - display: block; - margin: 0 0 0 5px; -} - -.tabmenu { - display: flex; - flex-direction: row; - text-align: center; - border-bottom: 1px solid rgba(185, 185, 185, 0.5); -} - -.tabitem { - flex-grow: 1; - cursor: pointer; - padding: 5px 0; -} - -.tabitem:hover { - font-weight: 700; -} - -.tabitem.active { - background: rgba(33, 34, 34, 0.705); - color: white; - font-weight: 700; - cursor:default; - flex-grow: 1; -} - -.big-font { - font-size: 20px; -} - -.transparent-button { - background-color: #00000000; - border: #00000000; -} - -.action-button.active { - background: #2A93B0; - border: 1px solid #7ed0eb; - cursor: pointer; - -} - -.action-button.active:hover { - filter: brightness(110%); -} - -.action-button { - background: #CCD1CF; - border:1px solid rgba(186, 197, 191, 0.507); - border-radius: 5px; - color: white; - padding: 10px 20px; - font-weight: 700; - margin: 3px 0; -} - -.quater-width { - width: 25%; -} - -.half-width { - width: 50%; -} - -.tree-fourth-width { - width: 75%; -} - -.half-width.with-padding { - width: 45%; -} - -.max-width { - width: 100%; -} - -.max-width.with-padding { - width: 94%; -} - -.max-height { - height: 100%; -} - -.height-300 { - height: 300px; -} - -.max-height.with-padding { - height: 90%; -} - -.small-margins { - margin: 3%; -} - -.small-vertical-margin { - margin-top: 10px; - margin-bottom: 10px; -} - -.medium-vertical-margin { - margin-top: 30px; - margin-bottom: 30px; -} - -.large-vertical-margin { - margin-top: 50px; - margin-bottom: 50px; -} - -.textarea-300 { - height: 300px; -} - -.centered-content { - display: flex; - justify-content: center; -} - - -.tabcontent { - display: none; -} - -.tabcontent.active { - display: flex; - justify-content: center; -} - -.hiddable { - display: none; -} - -.hiddable.active { - display: inherit; -} - -/* In case of collision with classes that use 'active' */ -.hidden { - display: none; -} - -h1 { - font-weight: 400; -} - -h2 { - font-weight: 400; -} - -h3 { - font-weight: 400; -} - - - -/* TODO: Add proper class */ -/* textarea { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} */ - -/* TODO: Add proper class */ -/* code{ - line-height: 150%; -} */ \ No newline at end of file diff --git a/Frontend/assets/css/tools/mock/r11tooltip.css b/Frontend/assets/css/tools/mock/r11tooltip.css deleted file mode 100644 index 63e70f6..0000000 --- a/Frontend/assets/css/tools/mock/r11tooltip.css +++ /dev/null @@ -1,76 +0,0 @@ -.tooltip-window { - position: fixed; - right: 0; - background: #FFFFFF; - padding: 15px 30px; - font-family: 'Nunito', sans-serif; - width: 40%; - height: 100%; - overflow: scroll; -} - -.tooltip-window.lite { - width: 30%; -} - -.tip { - display: none; -} - -.tip.active { - display: block; -} - -/* TODO: Remove !important. It's bad practice and it can cause errors in future */ -.section-button { - width: 100%; - padding: 15px 0; - font-size: 18px; - background: #b4b4b4c5; - cursor: pointer; - border-bottom: darkgray 2px solid !important; -} - -.section-button:hover { - backdrop-filter: brightness(110%); -} - -.section-button .active { - background: #00000030; -} - -.List .collapsibleContent { - border-left: #bdc5c9 2px solid; - overflow: hidden; - background: #ffffff50; -} - -/* TODO: .section class is to generic. It should be renamed */ -.section{ - padding: 10px 0px 20px 0px ; -} - -/* TODO: content subclass already in use. Creating content class overrides the subclass. -Make .content a subclass of .content */ -/* .content { - padding: 0px 15px 0px 15px ; - text-align: justify; - overflow: hidden; - transition: max-height .2s ease-out; - max-height: 0px; - border-left: #c0c2c3 2px solid; - -} */ - -.collapsibleMini::before{ - content: "►"; -} - -.collapsibleMini.active::before{ - content: "▼"; -} - -/* TODO: Add proper class */ -/* button:hover{ - filter: brightness(110%); -} */ \ No newline at end of file diff --git a/Frontend/assets/css/tools/r11form.css b/Frontend/assets/css/tools/r11form.css deleted file mode 100644 index d73a294..0000000 --- a/Frontend/assets/css/tools/r11form.css +++ /dev/null @@ -1,520 +0,0 @@ -@import url('https://necolas.github.io/normalize.css/8.0.1/normalize.css'); -@import url('fontello.css'); - -@font-face { - font-family: "Nunito"; - src: url('../../fonts/Nunito-VariableFont_wght.ttf') format('truetype'); -} - -body { - font-weight: 300; -} - -.hyperlink, .hyperlink:visited, .hyperlink:active { - color: rgb(47, 125, 146); - cursor: pointer; -} - -.hyperlink:hover { - filter: brightness(120%); -} - -.tooltip-window { - position: fixed; - right: 0; - /* filter: drop-shadow(-2px 0px 2px black); */ - background: #FFFFFF; - padding: 15px 30px; - font-family: 'Nunito', sans-serif; - width: 30%; - height: calc(100% - 25px); - overflow: scroll; -} - -.tooltip-window.lite { - width: 30%; -} -/* .hyperlink.collapseTrigger::before{ - content: "▼"; -} */ - -.bordered-field { - border: 2px solid rgba(93, 99, 96, 0.705); - border-radius: 5px; - padding: 8px; - -} - -.bordered-field:focus { - outline: none; - box-shadow: 0 0 5px rgba(81, 203, 238); - border: 2px solid #00000070; -} - -.bordered-field:disabled { - background: #eeeeeed2; -} - -.vertically-resizeable { - resize: vertical; -} - -.container { - font-family: 'Nunito', sans-serif; - - - display: flex; - justify-content: left; - width: 100%; -} - -.tool { - width: 65%; - display: flex; - justify-content: space-evenly; -} - -.tool.extended { - width: 65%; -} - -.tool .tool-context { - width: 90%; -} - -.tool.extended .tool-context { - width: 75%; -} - -.tool.extended .tool-extention { - width: 20%; - padding-top: 2%; - display: block; -} - -.tool .tool-extention { - display: none; -} - -.tool-extention { - opacity: 0; - pointer-events: none; -} - -.tool-extention.active { - opacity: 100%; - pointer-events: all; -} - -.clickable-text { - padding: 0; - outline: none; - background: none; - border: none; - font-weight: 300; - cursor: pointer; -} - -.clickable-text.highlight:hover { - color: #3bc4f1; -} - -.modification-button { - padding: 0; - outline: none; - background: none; - border: none; - font-weight: 300; -} - -.modification-button.btn-add { - font-size: 16px; - color: #00000030; - margin: auto 0 auto 0; -} - -.modification-button.btn-add:hover { - color:#58ac43; -} - -.modification-button.btn-tile:hover { - color: #ca1111; -} - -.modification-button.btn-hashmap { - font-size: 16px; - color: #00000030; - margin: auto 0 auto 0; -} - -.modification-button.btn-hashmap:hover { - color: #ca1111; -} - -.modification-button.btn-tile { - width: 10%; - margin: 20% 0 0 0; - font-size: 14px; - color: #00000020 -} - -.tile { - width: 90%; - padding-top: 40%; - border: 1px solid gray; - border-radius: 3px; - position: relative; - background: #f0f0f095; - margin-bottom: 10px; - cursor: default; -} - -.tile:hover { - filter: brightness(110%); -} - -.tile.active { - background: #00000070; - color: white; - filter: none; -} - -.tile .content { - position: absolute; - left: 0; - top: 0; - bottom: 0; - right: 0; - padding: 0 2% 0 7%; - display: flex; -} - -.text-aligned-to-right { - text-align: right; -} - -.centered-vertically { - margin-top: auto; - margin-bottom: auto; -} - -.display-space-between { - width: 100%; - display: flex; - justify-content: space-between; -} - -.content p { - margin: 0; - padding: 0; -} - - -.float-left { - display: flex; - justify-content: left; - width: 100%; -} - -.version-span { - font-size: 13px; - font-weight: 400; - color: rgba(85,85,85,0.555); -} - -.block-display { - display: block; -} - -.block-label { - display: block; - margin: 0 0 0 5px; -} - -.tabmenu { - display: flex; - flex-direction: row; - text-align: center; - border-bottom: 1px solid rgba(185, 185, 185, 0.5); -} - -.tabitem { - flex-grow: 1; - cursor: pointer; - padding: 5px 0; -} - -.tabitem:hover { - font-weight: 700; -} - -.tabitem.active { - background: rgba(33, 34, 34, 0.705); - color: white; - font-weight: 700; - cursor:default; - flex-grow: 1; -} - -.big-font { - font-size: 20px; -} - -.action-button.active { - background: #2A93B0; - border: 1px solid #7ed0eb; - cursor: pointer; - border-radius: 5px; -} - -.action-button.active:hover { - filter: brightness(110%); - transition-duration: 0.3s; -} - -.action-button { - background: rgba(155, 165, 160, 0.507); - border:1px solid rgba(186, 197, 191, 0.507); - color: white; - padding: 10px 20px; - font-weight: 700; - margin: 3px 0; -} - -.quater-width { - width: 25%; -} - -.half-width { - width: 50%; -} - -.half-width.with-padding { - width: 45%; -} - -.max-width { - width: 100%; -} - -.half-width { - width: 50%; -} - -.max-width.with-padding { - width: 94%; -} - -.max-height { - height: 100%; -} - -.height-300 { - height: 300px; -} - -.max-height.with-padding { - height: 90%; -} - -.small-margins { - margin: 3%; -} - -.small-vertical-margin { - margin-top: 10px; - margin-bottom: 10px; -} - -.medium-vertical-margin { - margin-top: 30px; - margin-bottom: 30px; -} - -.large-vertical-margin { - margin-top: 50px; - margin-bottom: 50px; -} - -.textarea-300 { - height: 300px; -} - -.textarea-700 { - height: 700px; -} - -.centered-content { - display: flex; - justify-content: center; -} - -.table-map { - width: 60%; -} - -.table-map input{ - font-size: 16px; - padding: 7px; - border: 1px solid rgba(145, 146, 146, 0.849); - border-radius: 5px; -} - -.table-map input.key { - background: #f0f0f0; -} - -.table-default { - width: 80%; - border-collapse: collapse; - border-spacing: 0; -} - -.table-default tr { - background: #f0f0f02d; -} - -.table-default tr.bottom-border { - border-bottom: 1px solid black; -} - -.table-default th { - background: #ffffff; -} - -.table-default tr.even { - background: #f0f0f0; -} - -.tip { - display: none; -} - -.tip.active { - display: block; -} - -.tabcontent { - display: none; -} - -.tabcontent.active { - display: flex; - justify-content: center; -} - -.section-button { - width: 100%; - padding: 15px 0; - margin: 5px 0px; - font-size: 18px; - background: #D5D7E6; - cursor: pointer; - border-bottom: darkgray 2px solid !important; - border-radius: 5px; -} - -.section-button:hover { - /* border-bottom: #3bc4f1 2px solid; */ - backdrop-filter: brightness(100%); - transition-duration: 0.3s; -} - -.section-button .active { - background: #00000030; -} - -.List .collapsibleContent { - /* display: none; */ - border-left: #bdc5c9 2px solid; - - /* max-height: 0px; */ - /* border-left: #ededed solid 1px; */ - overflow: hidden; - background: #ffffff50; -} - -.section{ - padding: 10px 0px 20px 0px ; -} - -.content { - padding: 0px 15px 0px 15px ; - text-align: left; - overflow: hidden; - transition: max-height .2s ease-out; - max-height: 0px; - border-left: #c0c2c3 2px solid; -} - -.collapsibleMini::before{ - content: "►"; -} - -.collapsibleMini.active::before{ - content: "▼"; -} - -.hiddable { - display: none; -} - -.hiddable.active { - display: inherit; -} - -/* In case of collision with classes that use 'active' */ -.hidden { - display: none; -} - -button:hover{ - filter: brightness(110%); -} - -.table-doc td, .table-doc th{ - border-spacing: 0px; - padding: 0px 10px; -} - -.table-doc td { - background-color: rgba(155, 165, 160, 0.342); -} - -.table-doc th { - background-color: #3bc4f1; - text-align: left; - color: white; -} - -textarea { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -code { - line-height: 150%; -} - -h1 { - font-weight: 400; -} - -h2 { - font-weight: 300; -} - -pre { - margin: 0px; -} - -@media only screen and (max-width: 1024px) { - .rwd-hideable { - display: none; - } - - .rwd-expandable { - width: 100%; - } -} \ No newline at end of file diff --git a/Frontend/assets/fonts/Nunito-Italic-VariableFont_wght.ttf b/Frontend/assets/fonts/Nunito-Italic-VariableFont_wght.ttf deleted file mode 100644 index 6a58fbf..0000000 Binary files a/Frontend/assets/fonts/Nunito-Italic-VariableFont_wght.ttf and /dev/null differ diff --git a/Frontend/assets/fonts/Nunito-VariableFont_wght.ttf b/Frontend/assets/fonts/Nunito-VariableFont_wght.ttf deleted file mode 100644 index 87c50a8..0000000 Binary files a/Frontend/assets/fonts/Nunito-VariableFont_wght.ttf and /dev/null differ diff --git a/Frontend/assets/images/background.jpg b/Frontend/assets/images/background.jpg deleted file mode 100644 index 65731c2..0000000 Binary files a/Frontend/assets/images/background.jpg and /dev/null differ diff --git a/Frontend/assets/images/logo_biale.svg b/Frontend/assets/images/logo_biale.svg deleted file mode 100644 index 7852133..0000000 --- a/Frontend/assets/images/logo_biale.svg +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/Frontend/assets/images/logo_czarne.svg b/Frontend/assets/images/logo_czarne.svg deleted file mode 100644 index 6dfa487..0000000 --- a/Frontend/assets/images/logo_czarne.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/Frontend/assets/samples/XSLTTemplate.xslt b/Frontend/assets/samples/XSLTTemplate.xslt deleted file mode 100644 index 3ce05e2..0000000 --- a/Frontend/assets/samples/XSLTTemplate.xslt +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/Frontend/assets/samples/sampleXMLForXSD.xml b/Frontend/assets/samples/sampleXMLForXSD.xml deleted file mode 100644 index 2ba2458..0000000 --- a/Frontend/assets/samples/sampleXMLForXSD.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - City library - 345123 - - - 7321 - Adam - Choke - - - 5123 - Lauren - Wong - - - - - 6422 - Harry Potter - 7542 - - - 1234 - Macbeth - 5123 - - - 9556 - Romeo and Juliet - - - \ No newline at end of file diff --git a/Frontend/assets/samples/sampleXQuery.xquery b/Frontend/assets/samples/sampleXQuery.xquery deleted file mode 100644 index 0a124d5..0000000 --- a/Frontend/assets/samples/sampleXQuery.xquery +++ /dev/null @@ -1,7 +0,0 @@ -declare namespace p="http://www.release11.com/person"; -declare namespace b="http://www.release11.com/book"; -declare namespace l="http://www.release11.com/library"; - - -for $x in //p:person -return string($x/p:name) \ No newline at end of file diff --git a/Frontend/assets/samples/sampleXSD.xsd b/Frontend/assets/samples/sampleXSD.xsd deleted file mode 100644 index 6993ce3..0000000 --- a/Frontend/assets/samples/sampleXSD.xsd +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Frontend/assets/samples/sampleXml.xml b/Frontend/assets/samples/sampleXml.xml deleted file mode 100644 index cd89168..0000000 --- a/Frontend/assets/samples/sampleXml.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - City library - 345123 - - - 7321 - Adam - Choke - - - 5123 - Lauren - Wong - - - - - 6422 - Harry Potter - 7542 - - - 1234 - Macbeth - 5123 - - - 9556 - Romeo and Juliet - - - \ No newline at end of file diff --git a/Frontend/assets/scripts/common/hljs.min.js b/Frontend/assets/scripts/common/hljs.min.js deleted file mode 100644 index 4cbf349..0000000 --- a/Frontend/assets/scripts/common/hljs.min.js +++ /dev/null @@ -1,1202 +0,0 @@ -/*! - Highlight.js v11.7.0 (git: 82688fad18) - (c) 2006-2022 undefined and other contributors - License: BSD-3-Clause - */ -var hljs=function(){"use strict";var e={exports:{}};function n(e){ -return e instanceof Map?e.clear=e.delete=e.set=()=>{ -throw Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{ -throw Error("set is read-only") -}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((t=>{var a=e[t] -;"object"!=typeof a||Object.isFrozen(a)||n(a)})),e} -e.exports=n,e.exports.default=n;class t{constructor(e){ -void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1} -ignoreMatch(){this.isMatchIgnored=!0}}function a(e){ -return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") -}function i(e,...n){const t=Object.create(null);for(const n in e)t[n]=e[n] -;return n.forEach((e=>{for(const n in e)t[n]=e[n]})),t} -const r=e=>!!e.scope||e.sublanguage&&e.language;class s{constructor(e,n){ -this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){ -this.buffer+=a(e)}openNode(e){if(!r(e))return;let n="" -;n=e.sublanguage?"language-"+e.language:((e,{prefix:n})=>{if(e.includes(".")){ -const t=e.split(".") -;return[`${n}${t.shift()}`,...t.map(((e,n)=>`${e}${"_".repeat(n+1)}`))].join(" ") -}return`${n}${e}`})(e.scope,{prefix:this.classPrefix}),this.span(n)} -closeNode(e){r(e)&&(this.buffer+="")}value(){return this.buffer}span(e){ -this.buffer+=``}}const o=(e={})=>{const n={children:[]} -;return Object.assign(n,e),n};class l{constructor(){ -this.rootNode=o(),this.stack=[this.rootNode]}get top(){ -return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ -this.top.children.push(e)}openNode(e){const n=o({scope:e}) -;this.add(n),this.stack.push(n)}closeNode(){ -if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ -for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} -walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){ -return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n), -n.children.forEach((n=>this._walk(e,n))),e.closeNode(n)),e}static _collapse(e){ -"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ -l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} -addKeyword(e,n){""!==e&&(this.openNode(n),this.addText(e),this.closeNode())} -addText(e){""!==e&&this.add(e)}addSublanguage(e,n){const t=e.root -;t.sublanguage=!0,t.language=n,this.add(t)}toHTML(){ -return new s(this,this.options).value()}finalize(){return!0}}function d(e){ -return e?"string"==typeof e?e:e.source:null}function g(e){return m("(?=",e,")")} -function u(e){return m("(?:",e,")*")}function b(e){return m("(?:",e,")?")} -function m(...e){return e.map((e=>d(e))).join("")}function p(...e){const n=(e=>{ -const n=e[e.length-1] -;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{} -})(e);return"("+(n.capture?"":"?:")+e.map((e=>d(e))).join("|")+")"} -function _(e){return RegExp(e.toString()+"|").exec("").length-1} -const h=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ -;function f(e,{joinWith:n}){let t=0;return e.map((e=>{t+=1;const n=t -;let a=d(e),i="";for(;a.length>0;){const e=h.exec(a);if(!e){i+=a;break} -i+=a.substring(0,e.index), -a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?i+="\\"+(Number(e[1])+n):(i+=e[0], -"("===e[0]&&t++)}return i})).map((e=>`(${e})`)).join(n)} -const E="[a-zA-Z]\\w*",y="[a-zA-Z_]\\w*",w="\\b\\d+(\\.\\d+)?",N="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",v="\\b(0b[01]+)",O={ -begin:"\\\\[\\s\\S]",relevance:0},k={scope:"string",begin:"'",end:"'", -illegal:"\\n",contains:[O]},x={scope:"string",begin:'"',end:'"',illegal:"\\n", -contains:[O]},M=(e,n,t={})=>{const a=i({scope:"comment",begin:e,end:n, -contains:[]},t);a.contains.push({scope:"doctag", -begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", -end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) -;const r=p("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) -;return a.contains.push({begin:m(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),a -},S=M("//","$"),A=M("/\\*","\\*/"),C=M("#","$");var T=Object.freeze({ -__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:E,UNDERSCORE_IDENT_RE:y, -NUMBER_RE:w,C_NUMBER_RE:N,BINARY_NUMBER_RE:v, -RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", -SHEBANG:(e={})=>{const n=/^#![ ]*\// -;return e.binary&&(e.begin=m(n,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:n, -end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)}, -BACKSLASH_ESCAPE:O,APOS_STRING_MODE:k,QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:{ -begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ -},COMMENT:M,C_LINE_COMMENT_MODE:S,C_BLOCK_COMMENT_MODE:A,HASH_COMMENT_MODE:C, -NUMBER_MODE:{scope:"number",begin:w,relevance:0},C_NUMBER_MODE:{scope:"number", -begin:N,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:v,relevance:0}, -REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//, -end:/\/[gimuy]*/,illegal:/\n/,contains:[O,{begin:/\[/,end:/\]/,relevance:0, -contains:[O]}]}]},TITLE_MODE:{scope:"title",begin:E,relevance:0}, -UNDERSCORE_TITLE_MODE:{scope:"title",begin:y,relevance:0},METHOD_GUARD:{ -begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ -"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{ -n.data._beginMatch!==e[1]&&n.ignoreMatch()}})});function R(e,n){ -"."===e.input[e.index-1]&&n.ignoreMatch()}function D(e,n){ -void 0!==e.className&&(e.scope=e.className,delete e.className)}function I(e,n){ -n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", -e.__beforeBegin=R,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, -void 0===e.relevance&&(e.relevance=0))}function L(e,n){ -Array.isArray(e.illegal)&&(e.illegal=p(...e.illegal))}function B(e,n){ -if(e.match){ -if(e.begin||e.end)throw Error("begin & end are not supported with match") -;e.begin=e.match,delete e.match}}function $(e,n){ -void 0===e.relevance&&(e.relevance=1)}const z=(e,n)=>{if(!e.beforeMatch)return -;if(e.starts)throw Error("beforeMatch cannot be used with starts") -;const t=Object.assign({},e);Object.keys(e).forEach((n=>{delete e[n] -})),e.keywords=t.keywords,e.begin=m(t.beforeMatch,g(t.begin)),e.starts={ -relevance:0,contains:[Object.assign(t,{endsParent:!0})] -},e.relevance=0,delete t.beforeMatch -},F=["of","and","for","in","not","or","if","then","parent","list","value"] -;function U(e,n,t="keyword"){const a=Object.create(null) -;return"string"==typeof e?i(t,e.split(" ")):Array.isArray(e)?i(t,e):Object.keys(e).forEach((t=>{ -Object.assign(a,U(e[t],n,t))})),a;function i(e,t){ -n&&(t=t.map((e=>e.toLowerCase()))),t.forEach((n=>{const t=n.split("|") -;a[t[0]]=[e,j(t[0],t[1])]}))}}function j(e,n){ -return n?Number(n):(e=>F.includes(e.toLowerCase()))(e)?0:1}const P={},K=e=>{ -console.error(e)},H=(e,...n)=>{console.log("WARN: "+e,...n)},q=(e,n)=>{ -P[`${e}/${n}`]||(console.log(`Deprecated as of ${e}. ${n}`),P[`${e}/${n}`]=!0) -},Z=Error();function G(e,n,{key:t}){let a=0;const i=e[t],r={},s={} -;for(let e=1;e<=n.length;e++)s[e+a]=i[e],r[e+a]=!0,a+=_(n[e-1]) -;e[t]=s,e[t]._emit=r,e[t]._multi=!0}function W(e){(e=>{ -e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, -delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={ -_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope -}),(e=>{if(Array.isArray(e.begin)){ -if(e.skip||e.excludeBegin||e.returnBegin)throw K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), -Z -;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"), -Z;G(e,e.begin,{key:"beginScope"}),e.begin=f(e.begin,{joinWith:""})}})(e),(e=>{ -if(Array.isArray(e.end)){ -if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"), -Z -;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"), -Z;G(e,e.end,{key:"endScope"}),e.end=f(e.end,{joinWith:""})}})(e)}function Q(e){ -function n(n,t){ -return RegExp(d(n),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(t?"g":"")) -}class t{constructor(){ -this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} -addRule(e,n){ -n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]), -this.matchAt+=_(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null) -;const e=this.regexes.map((e=>e[1]));this.matcherRe=n(f(e,{joinWith:"|" -}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex -;const n=this.matcherRe.exec(e);if(!n)return null -;const t=n.findIndex(((e,n)=>n>0&&void 0!==e)),a=this.matchIndexes[t] -;return n.splice(0,t),Object.assign(n,a)}}class a{constructor(){ -this.rules=[],this.multiRegexes=[], -this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ -if(this.multiRegexes[e])return this.multiRegexes[e];const n=new t -;return this.rules.slice(e).forEach((([e,t])=>n.addRule(e,t))), -n.compile(),this.multiRegexes[e]=n,n}resumingScanAtSamePosition(){ -return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,n){ -this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){ -const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex -;let t=n.exec(e) -;if(this.resumingScanAtSamePosition())if(t&&t.index===this.lastIndex);else{ -const n=this.getMatcher(0);n.lastIndex=this.lastIndex+1,t=n.exec(e)} -return t&&(this.regexIndex+=t.position+1, -this.regexIndex===this.count&&this.considerAll()),t}} -if(e.compilerExtensions||(e.compilerExtensions=[]), -e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") -;return e.classNameAliases=i(e.classNameAliases||{}),function t(r,s){const o=r -;if(r.isCompiled)return o -;[D,B,W,z].forEach((e=>e(r,s))),e.compilerExtensions.forEach((e=>e(r,s))), -r.__beforeBegin=null,[I,L,$].forEach((e=>e(r,s))),r.isCompiled=!0;let l=null -;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords), -l=r.keywords.$pattern, -delete r.keywords.$pattern),l=l||/\w+/,r.keywords&&(r.keywords=U(r.keywords,e.case_insensitive)), -o.keywordPatternRe=n(l,!0), -s&&(r.begin||(r.begin=/\B|\b/),o.beginRe=n(o.begin),r.end||r.endsWithParent||(r.end=/\B|\b/), -r.end&&(o.endRe=n(o.end)), -o.terminatorEnd=d(o.end)||"",r.endsWithParent&&s.terminatorEnd&&(o.terminatorEnd+=(r.end?"|":"")+s.terminatorEnd)), -r.illegal&&(o.illegalRe=n(r.illegal)), -r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((n=>i(e,{ -variants:null},n)))),e.cachedVariants?e.cachedVariants:X(e)?i(e,{ -starts:e.starts?i(e.starts):null -}):Object.isFrozen(e)?i(e):e))("self"===e?r:e)))),r.contains.forEach((e=>{t(e,o) -})),r.starts&&t(r.starts,s),o.matcher=(e=>{const n=new a -;return e.contains.forEach((e=>n.addRule(e.begin,{rule:e,type:"begin" -}))),e.terminatorEnd&&n.addRule(e.terminatorEnd,{type:"end" -}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n})(o),o}(e)}function X(e){ -return!!e&&(e.endsWithParent||X(e.starts))}class V extends Error{ -constructor(e,n){super(e),this.name="HTMLInjectionError",this.html=n}} -const J=a,Y=i,ee=Symbol("nomatch");var ne=(n=>{ -const a=Object.create(null),i=Object.create(null),r=[];let s=!0 -;const o="Could not find the language '{}', did you forget to load/include a language module?",l={ -disableAutodetect:!0,name:"Plain text",contains:[]};let d={ -ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, -languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", -cssSelector:"pre code",languages:null,__emitter:c};function _(e){ -return d.noHighlightRe.test(e)}function h(e,n,t){let a="",i="" -;"object"==typeof n?(a=e, -t=n.ignoreIllegals,i=n.language):(q("10.7.0","highlight(lang, code, ...args) has been deprecated."), -q("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), -i=e,a=n),void 0===t&&(t=!0);const r={code:a,language:i};x("before:highlight",r) -;const s=r.result?r.result:f(r.language,r.code,t) -;return s.code=r.code,x("after:highlight",s),s}function f(e,n,i,r){ -const l=Object.create(null);function c(){if(!k.keywords)return void M.addText(S) -;let e=0;k.keywordPatternRe.lastIndex=0;let n=k.keywordPatternRe.exec(S),t="" -;for(;n;){t+=S.substring(e,n.index) -;const i=w.case_insensitive?n[0].toLowerCase():n[0],r=(a=i,k.keywords[a]);if(r){ -const[e,a]=r -;if(M.addText(t),t="",l[i]=(l[i]||0)+1,l[i]<=7&&(A+=a),e.startsWith("_"))t+=n[0];else{ -const t=w.classNameAliases[e]||e;M.addKeyword(n[0],t)}}else t+=n[0] -;e=k.keywordPatternRe.lastIndex,n=k.keywordPatternRe.exec(S)}var a -;t+=S.substring(e),M.addText(t)}function g(){null!=k.subLanguage?(()=>{ -if(""===S)return;let e=null;if("string"==typeof k.subLanguage){ -if(!a[k.subLanguage])return void M.addText(S) -;e=f(k.subLanguage,S,!0,x[k.subLanguage]),x[k.subLanguage]=e._top -}else e=E(S,k.subLanguage.length?k.subLanguage:null) -;k.relevance>0&&(A+=e.relevance),M.addSublanguage(e._emitter,e.language) -})():c(),S=""}function u(e,n){let t=1;const a=n.length-1;for(;t<=a;){ -if(!e._emit[t]){t++;continue}const a=w.classNameAliases[e[t]]||e[t],i=n[t] -;a?M.addKeyword(i,a):(S=i,c(),S=""),t++}}function b(e,n){ -return e.scope&&"string"==typeof e.scope&&M.openNode(w.classNameAliases[e.scope]||e.scope), -e.beginScope&&(e.beginScope._wrap?(M.addKeyword(S,w.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), -S=""):e.beginScope._multi&&(u(e.beginScope,n),S="")),k=Object.create(e,{parent:{ -value:k}}),k}function m(e,n,a){let i=((e,n)=>{const t=e&&e.exec(n) -;return t&&0===t.index})(e.endRe,a);if(i){if(e["on:end"]){const a=new t(e) -;e["on:end"](n,a),a.isMatchIgnored&&(i=!1)}if(i){ -for(;e.endsParent&&e.parent;)e=e.parent;return e}} -if(e.endsWithParent)return m(e.parent,n,a)}function p(e){ -return 0===k.matcher.regexIndex?(S+=e[0],1):(R=!0,0)}function _(e){ -const t=e[0],a=n.substring(e.index),i=m(k,e,a);if(!i)return ee;const r=k -;k.endScope&&k.endScope._wrap?(g(), -M.addKeyword(t,k.endScope._wrap)):k.endScope&&k.endScope._multi?(g(), -u(k.endScope,e)):r.skip?S+=t:(r.returnEnd||r.excludeEnd||(S+=t), -g(),r.excludeEnd&&(S=t));do{ -k.scope&&M.closeNode(),k.skip||k.subLanguage||(A+=k.relevance),k=k.parent -}while(k!==i.parent);return i.starts&&b(i.starts,e),r.returnEnd?0:t.length} -let h={};function y(a,r){const o=r&&r[0];if(S+=a,null==o)return g(),0 -;if("begin"===h.type&&"end"===r.type&&h.index===r.index&&""===o){ -if(S+=n.slice(r.index,r.index+1),!s){const n=Error(`0 width match regex (${e})`) -;throw n.languageName=e,n.badRule=h.rule,n}return 1} -if(h=r,"begin"===r.type)return(e=>{ -const n=e[0],a=e.rule,i=new t(a),r=[a.__beforeBegin,a["on:begin"]] -;for(const t of r)if(t&&(t(e,i),i.isMatchIgnored))return p(n) -;return a.skip?S+=n:(a.excludeBegin&&(S+=n), -g(),a.returnBegin||a.excludeBegin||(S=n)),b(a,e),a.returnBegin?0:n.length})(r) -;if("illegal"===r.type&&!i){ -const e=Error('Illegal lexeme "'+o+'" for mode "'+(k.scope||"")+'"') -;throw e.mode=k,e}if("end"===r.type){const e=_(r);if(e!==ee)return e} -if("illegal"===r.type&&""===o)return 1 -;if(T>1e5&&T>3*r.index)throw Error("potential infinite loop, way more iterations than matches") -;return S+=o,o.length}const w=v(e) -;if(!w)throw K(o.replace("{}",e)),Error('Unknown language: "'+e+'"') -;const N=Q(w);let O="",k=r||N;const x={},M=new d.__emitter(d);(()=>{const e=[] -;for(let n=k;n!==w;n=n.parent)n.scope&&e.unshift(n.scope) -;e.forEach((e=>M.openNode(e)))})();let S="",A=0,C=0,T=0,R=!1;try{ -for(k.matcher.considerAll();;){ -T++,R?R=!1:k.matcher.considerAll(),k.matcher.lastIndex=C -;const e=k.matcher.exec(n);if(!e)break;const t=y(n.substring(C,e.index),e) -;C=e.index+t} -return y(n.substring(C)),M.closeAllNodes(),M.finalize(),O=M.toHTML(),{ -language:e,value:O,relevance:A,illegal:!1,_emitter:M,_top:k}}catch(t){ -if(t.message&&t.message.includes("Illegal"))return{language:e,value:J(n), -illegal:!0,relevance:0,_illegalBy:{message:t.message,index:C, -context:n.slice(C-100,C+100),mode:t.mode,resultSoFar:O},_emitter:M};if(s)return{ -language:e,value:J(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:k} -;throw t}}function E(e,n){n=n||d.languages||Object.keys(a);const t=(e=>{ -const n={value:J(e),illegal:!1,relevance:0,_top:l,_emitter:new d.__emitter(d)} -;return n._emitter.addText(e),n})(e),i=n.filter(v).filter(k).map((n=>f(n,e,!1))) -;i.unshift(t);const r=i.sort(((e,n)=>{ -if(e.relevance!==n.relevance)return n.relevance-e.relevance -;if(e.language&&n.language){if(v(e.language).supersetOf===n.language)return 1 -;if(v(n.language).supersetOf===e.language)return-1}return 0})),[s,o]=r,c=s -;return c.secondBest=o,c}function y(e){let n=null;const t=(e=>{ -let n=e.className+" ";n+=e.parentNode?e.parentNode.className:"" -;const t=d.languageDetectRe.exec(n);if(t){const n=v(t[1]) -;return n||(H(o.replace("{}",t[1])), -H("Falling back to no-highlight mode for this block.",e)),n?t[1]:"no-highlight"} -return n.split(/\s+/).find((e=>_(e)||v(e)))})(e);if(_(t))return -;if(x("before:highlightElement",{el:e,language:t -}),e.children.length>0&&(d.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), -console.warn("https://github.com/highlightjs/highlight.js/wiki/security"), -console.warn("The element with unescaped HTML:"), -console.warn(e)),d.throwUnescapedHTML))throw new V("One of your code blocks includes unescaped HTML.",e.innerHTML) -;n=e;const a=n.textContent,r=t?h(a,{language:t,ignoreIllegals:!0}):E(a) -;e.innerHTML=r.value,((e,n,t)=>{const a=n&&i[n]||t -;e.classList.add("hljs"),e.classList.add("language-"+a) -})(e,t,r.language),e.result={language:r.language,re:r.relevance, -relevance:r.relevance},r.secondBest&&(e.secondBest={ -language:r.secondBest.language,relevance:r.secondBest.relevance -}),x("after:highlightElement",{el:e,result:r,text:a})}let w=!1;function N(){ -"loading"!==document.readyState?document.querySelectorAll(d.cssSelector).forEach(y):w=!0 -}function v(e){return e=(e||"").toLowerCase(),a[e]||a[i[e]]} -function O(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ -i[e.toLowerCase()]=n}))}function k(e){const n=v(e) -;return n&&!n.disableAutodetect}function x(e,n){const t=e;r.forEach((e=>{ -e[t]&&e[t](n)}))} -"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ -w&&N()}),!1),Object.assign(n,{highlight:h,highlightAuto:E,highlightAll:N, -highlightElement:y, -highlightBlock:e=>(q("10.7.0","highlightBlock will be removed entirely in v12.0"), -q("10.7.0","Please use highlightElement now."),y(e)),configure:e=>{d=Y(d,e)}, -initHighlighting:()=>{ -N(),q("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, -initHighlightingOnLoad:()=>{ -N(),q("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") -},registerLanguage:(e,t)=>{let i=null;try{i=t(n)}catch(n){ -if(K("Language definition for '{}' could not be registered.".replace("{}",e)), -!s)throw n;K(n),i=l} -i.name||(i.name=e),a[e]=i,i.rawDefinition=t.bind(null,n),i.aliases&&O(i.aliases,{ -languageName:e})},unregisterLanguage:e=>{delete a[e] -;for(const n of Object.keys(i))i[n]===e&&delete i[n]}, -listLanguages:()=>Object.keys(a),getLanguage:v,registerAliases:O, -autoDetection:k,inherit:Y,addPlugin:e=>{(e=>{ -e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=n=>{ -e["before:highlightBlock"](Object.assign({block:n.el},n)) -}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=n=>{ -e["after:highlightBlock"](Object.assign({block:n.el},n))})})(e),r.push(e)} -}),n.debugMode=()=>{s=!1},n.safeMode=()=>{s=!0 -},n.versionString="11.7.0",n.regex={concat:m,lookahead:g,either:p,optional:b, -anyNumberOfTimes:u};for(const n in T)"object"==typeof T[n]&&e.exports(T[n]) -;return Object.assign(n,T),n})({});const te=e=>({IMPORTANT:{scope:"meta", -begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{ -scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/}, -FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/}, -ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", -contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ -scope:"number", -begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", -relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/} -}),ae=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],ie=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],re=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],se=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],oe=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse(),le=re.concat(se) -;var ce="\\.([0-9](_*[0-9])*)",de="[0-9a-fA-F](_*[0-9a-fA-F])*",ge={ -className:"number",variants:[{ -begin:`(\\b([0-9](_*[0-9])*)((${ce})|\\.)?|(${ce}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` -},{begin:`\\b([0-9](_*[0-9])*)((${ce})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ -begin:`(${ce})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ -begin:`\\b0[xX]((${de})\\.?|(${de})?\\.(${de}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` -},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${de})[lL]?\\b`},{ -begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], -relevance:0};function ue(e,n,t){return-1===t?"":e.replace(n,(a=>ue(e,n,t-1)))} -const be="[A-Za-z$_][0-9A-Za-z$_]*",me=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],pe=["true","false","null","undefined","NaN","Infinity"],_e=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],he=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],fe=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Ee=["arguments","this","super","console","window","document","localStorage","module","global"],ye=[].concat(fe,_e,he) -;function we(e){const n=e.regex,t=be,a={begin:/<[A-Za-z0-9\\._:-]+/, -end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ -const t=e[0].length+e.index,a=e.input[t] -;if("<"===a||","===a)return void n.ignoreMatch();let i -;">"===a&&(((e,{after:n})=>{const t="",k={ -match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(O)], -keywords:"async",className:{1:"keyword",3:"title.function"},contains:[_]} -;return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:i,exports:{ -PARAMS_CONTAINS:p,CLASS_REFERENCE:f},illegal:/#(?![$_A-z])/, -contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),{ -label:"use_strict",className:"meta",relevance:10, -begin:/^\s*['"]use (strict|asm)['"]/ -},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,c,d,g,u,{match:/\$\d+/},o,f,{ -className:"attr",begin:t+n.lookahead(":"),relevance:0},k,{ -begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", -keywords:"return throw case",relevance:0,contains:[u,e.REGEXP_MODE,{ -className:"function",begin:O,returnBegin:!0,end:"\\s*=>",contains:[{ -className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{ -className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, -excludeEnd:!0,keywords:i,contains:p}]}]},{begin:/,/,relevance:0},{match:/\s+/, -relevance:0},{variants:[{begin:"<>",end:""},{ -match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:a.begin, -"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{ -begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},E,{ -beginKeywords:"while if switch catch for"},{ -begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", -returnBegin:!0,label:"func.def",contains:[_,e.inherit(e.TITLE_MODE,{begin:t, -className:"title.function"})]},{match:/\.\.\./,relevance:0},N,{match:"\\$"+t, -relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, -contains:[_]},y,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, -className:"variable.constant"},h,v,{match:/\$[(.]/}]}} -const Ne=e=>m(/\b/,e,/\w$/.test(e)?/\b/:/\B/),ve=["Protocol","Type"].map(Ne),Oe=["init","self"].map(Ne),ke=["Any","Self"],xe=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","distributed","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],Me=["false","nil","true"],Se=["assignment","associativity","higherThan","left","lowerThan","none","right"],Ae=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],Ce=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],Te=p(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),Re=p(Te,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),De=m(Te,Re,"*"),Ie=p(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),Le=p(Ie,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),Be=m(Ie,Le,"*"),$e=m(/[A-Z]/,Le,"*"),ze=["autoclosure",m(/convention\(/,p("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",m(/objc\(/,Be,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],Fe=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] -;var Ue=Object.freeze({__proto__:null,grmr_bash:e=>{const n=e.regex,t={},a={ -begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]} -;Object.assign(t,{className:"variable",variants:[{ -begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},a]});const i={ -className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},r={ -begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, -end:/(\w+)/,className:"string"})]}},s={className:"string",begin:/"/,end:/"/, -contains:[e.BACKSLASH_ESCAPE,t,i]};i.contains.push(s);const o={begin:/\$?\(\(/, -end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] -},l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 -}),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, -contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ -name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, -keyword:["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"], -literal:["true","false"], -built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] -},contains:[l,e.SHEBANG(),c,o,e.HASH_COMMENT_MODE,r,{match:/(\/[a-z._-]+)+/},s,{ -className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}, -grmr_c:e=>{const n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}] -}),a="[a-zA-Z_]\\w*::",i="(decltype\\(auto\\)|"+n.optional(a)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ -className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{ -match:/\batomic_[a-z]{3,6}\b/}]},s={className:"string",variants:[{ -begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ -begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", -end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ -begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ -className:"number",variants:[{begin:"\\b(0b[01']+)"},{ -begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" -},{ -begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" -}],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ -keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" -},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{ -className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={ -className:"title",begin:n.optional(a)+e.IDENT_RE,relevance:0 -},d=n.optional(a)+e.IDENT_RE+"\\s*\\(",g={ -keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], -type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"], -literal:"true false NULL", -built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr" -},u=[l,r,t,e.C_BLOCK_COMMENT_MODE,o,s],b={variants:[{begin:/=/,end:/;/},{ -begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], -keywords:g,contains:u.concat([{begin:/\(/,end:/\)/,keywords:g, -contains:u.concat(["self"]),relevance:0}]),relevance:0},m={ -begin:"("+i+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, -keywords:g,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)", -keywords:g,relevance:0},{begin:d,returnBegin:!0,contains:[e.inherit(c,{ -className:"title.function"})],relevance:0},{relevance:0,match:/,/},{ -className:"params",begin:/\(/,end:/\)/,keywords:g,relevance:0, -contains:[t,e.C_BLOCK_COMMENT_MODE,s,o,r,{begin:/\(/,end:/\)/,keywords:g, -relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,s,o,r]}] -},r,t,e.C_BLOCK_COMMENT_MODE,l]};return{name:"C",aliases:["h"],keywords:g, -disableAutodetect:!0,illegal:"=]/,contains:[{ -beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:l, -strings:s,keywords:g}}},grmr_cpp:e=>{const n=e.regex,t=e.COMMENT("//","$",{ -contains:[{begin:/\\\n/}] -}),a="[a-zA-Z_]\\w*::",i="(?!struct)(decltype\\(auto\\)|"+n.optional(a)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ -className:"type",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string",variants:[{ -begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ -begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", -end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ -begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ -className:"number",variants:[{begin:"\\b(0b[01']+)"},{ -begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" -},{ -begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" -}],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ -keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" -},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{ -className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={ -className:"title",begin:n.optional(a)+e.IDENT_RE,relevance:0 -},d=n.optional(a)+e.IDENT_RE+"\\s*\\(",g={ -type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"], -keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"], -literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"], -_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"] -},u={className:"function.dispatch",relevance:0,keywords:{ -_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"] -}, -begin:n.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/)) -},b=[u,l,r,t,e.C_BLOCK_COMMENT_MODE,o,s],m={variants:[{begin:/=/,end:/;/},{ -begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], -keywords:g,contains:b.concat([{begin:/\(/,end:/\)/,keywords:g, -contains:b.concat(["self"]),relevance:0}]),relevance:0},p={className:"function", -begin:"("+i+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, -keywords:g,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)", -keywords:g,relevance:0},{begin:d,returnBegin:!0,contains:[c],relevance:0},{ -begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[s,o]},{ -relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:g, -relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,s,o,r,{begin:/\(/,end:/\)/, -keywords:g,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,s,o,r]}] -},r,t,e.C_BLOCK_COMMENT_MODE,l]};return{name:"C++", -aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:g,illegal:"",keywords:g,contains:["self",r]},{begin:e.IDENT_RE+"::",keywords:g},{ -match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/], -className:{1:"keyword",3:"title.class"}}])}},grmr_csharp:e=>{const n={ -keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), -built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"], -literal:["default","false","null","true"]},t=e.inherit(e.TITLE_MODE,{ -begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{ -begin:"\\b(0b[01']+)"},{ -begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{ -begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" -}],relevance:0},i={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}] -},r=e.inherit(i,{illegal:/\n/}),s={className:"subst",begin:/\{/,end:/\}/, -keywords:n},o=e.inherit(s,{illegal:/\n/}),l={className:"string",begin:/\$"/, -end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/ -},e.BACKSLASH_ESCAPE,o]},c={className:"string",begin:/\$@"/,end:'"',contains:[{ -begin:/\{\{/},{begin:/\}\}/},{begin:'""'},s]},d=e.inherit(c,{illegal:/\n/, -contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},o]}) -;s.contains=[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE], -o.contains=[d,l,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{ -illegal:/\n/})];const g={variants:[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] -},u={begin:"<",end:">",contains:[{beginKeywords:"in out"},t] -},b=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",m={ -begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"], -keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0, -contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{ -begin:"\x3c!--|--\x3e"},{begin:""}]}] -}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#", -end:"$",keywords:{ -keyword:"if else elif endif define undef warning error line region endregion pragma checksum" -}},g,a,{beginKeywords:"class interface",relevance:0,end:/[{;=]/, -illegal:/[^\s:,]/,contains:[{beginKeywords:"where class" -},t,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace", -relevance:0,end:/[{;=]/,illegal:/[^\s:]/, -contains:[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ -beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/, -contains:[t,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta", -begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{ -className:"string",begin:/"/,end:/"/}]},{ -beginKeywords:"new return throw await else",relevance:0},{className:"function", -begin:"("+b+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0, -end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{ -beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial", -relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0, -contains:[e.TITLE_MODE,u],relevance:0},{match:/\(\)/},{className:"params", -begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0, -contains:[g,a,e.C_BLOCK_COMMENT_MODE] -},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},m]}},grmr_css:e=>{ -const n=e.regex,t=te(e),a=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{ -name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{ -keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"}, -contains:[t.BLOCK_COMMENT,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ -},t.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 -},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 -},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ -begin:":("+re.join("|")+")"},{begin:":(:)?("+se.join("|")+")"}] -},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+oe.join("|")+")\\b"},{ -begin:/:/,end:/[;}{]/, -contains:[t.BLOCK_COMMENT,t.HEXCOLOR,t.IMPORTANT,t.CSS_NUMBER_MODE,...a,{ -begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" -},contains:[...a,{className:"string",begin:/[^)]/,endsWithParent:!0, -excludeEnd:!0}]},t.FUNCTION_DISPATCH]},{begin:n.lookahead(/@/),end:"[{;]", -relevance:0,illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/ -},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{ -$pattern:/[a-z-]+/,keyword:"and or not only",attribute:ie.join(" ")},contains:[{ -begin:/[a-z-]+(?=:)/,className:"attribute"},...a,t.CSS_NUMBER_MODE]}]},{ -className:"selector-tag",begin:"\\b("+ae.join("|")+")\\b"}]}},grmr_diff:e=>{ -const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{ -className:"meta",relevance:10, -match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/) -},{className:"comment",variants:[{ -begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/), -end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{ -className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, -end:/$/}]}},grmr_go:e=>{const n={ -keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"], -type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"], -literal:["true","false","iota","nil"], -built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"] -};return{name:"Go",aliases:["golang"],keywords:n,illegal:"{const n=e.regex;return{name:"GraphQL",aliases:["gql"], -case_insensitive:!0,disableAutodetect:!1,keywords:{ -keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"], -literal:["true","false","null"]}, -contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ -scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation", -begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/, -end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{ -scope:"symbol",begin:n.concat(/[_A-Za-z][_0-9A-Za-z]*/,n.lookahead(/\s*:/)), -relevance:0}],illegal:[/[;<']/,/BEGIN/]}},grmr_ini:e=>{const n=e.regex,t={ -className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{ -begin:e.NUMBER_RE}]},a=e.COMMENT();a.variants=[{begin:/;/,end:/$/},{begin:/#/, -end:/$/}];const i={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{ -begin:/\$\{(.*?)\}/}]},r={className:"literal", -begin:/\bon|off|true|false|yes|no\b/},s={className:"string", -contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{ -begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}] -},o={begin:/\[/,end:/\]/,contains:[a,r,i,s,t,"self"],relevance:0 -},l=n.either(/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/);return{ -name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/, -contains:[a,{className:"section",begin:/\[+/,end:/\]+/},{ -begin:n.concat(l,"(\\s*\\.\\s*",l,")*",n.lookahead(/\s*=\s*[^#\s]/)), -className:"attr",starts:{end:/$/,contains:[a,o,r,i,s,t]}}]}},grmr_java:e=>{ -const n=e.regex,t="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",a=t+ue("(?:<"+t+"~~~(?:\\s*,\\s*"+t+"~~~)*>)?",/~~~/g,2),i={ -keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits"], -literal:["false","true","null"], -type:["char","boolean","long","float","int","byte","short","double"], -built_in:["super","this"]},r={className:"meta",begin:"@"+t,contains:[{ -begin:/\(/,end:/\)/,contains:["self"]}]},s={className:"params",begin:/\(/, -end:/\)/,keywords:i,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0} -;return{name:"Java",aliases:["jsp"],keywords:i,illegal:/<\/|#/, -contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, -relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ -begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 -},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/, -className:"string",contains:[e.BACKSLASH_ESCAPE] -},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ -match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,t],className:{ -1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{ -begin:[n.concat(/(?!else)/,t),/\s+/,t,/\s+/,/=(?!=)/],className:{1:"type", -3:"variable",5:"operator"}},{begin:[/record/,/\s+/,t],className:{1:"keyword", -3:"title.class"},contains:[s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ -beginKeywords:"new throw return else",relevance:0},{ -begin:["(?:"+a+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{ -2:"title.function"},keywords:i,contains:[{className:"params",begin:/\(/, -end:/\)/,keywords:i,relevance:0, -contains:[r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,ge,e.C_BLOCK_COMMENT_MODE] -},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},ge,r]}},grmr_javascript:we, -grmr_json:e=>{const n=["true","false","null"],t={scope:"literal", -beginKeywords:n.join(" ")};return{name:"JSON",keywords:{literal:n},contains:[{ -className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{ -match:/[{}[\],:]/,className:"punctuation",relevance:0 -},e.QUOTE_STRING_MODE,t,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE], -illegal:"\\S"}},grmr_kotlin:e=>{const n={ -keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual", -built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing", -literal:"true false null"},t={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@" -},a={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},i={ -className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},r={className:"string", -variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i,a]},{begin:"'",end:"'", -illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/, -contains:[e.BACKSLASH_ESCAPE,i,a]}]};a.contains.push(r);const s={ -className:"meta", -begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?" -},o={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/, -end:/\)/,contains:[e.inherit(r,{className:"string"}),"self"]}] -},l=ge,c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),d={ -variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/, -contains:[]}]},g=d;return g.variants[1].contains=[d],d.variants[1].contains=[g], -{name:"Kotlin",aliases:["kt","kts"],keywords:n, -contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag", -begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword", -begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol", -begin:/@\w+/}]}},t,s,o,{className:"function",beginKeywords:"fun",end:"[(]|$", -returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{ -begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, -contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://, -keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/, -endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/, -endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,c],relevance:0 -},e.C_LINE_COMMENT_MODE,c,s,o,r,e.C_NUMBER_MODE]},c]},{ -begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{ -3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0, -illegal:"extends implements",contains:[{ -beginKeywords:"public protected internal private constructor" -},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0, -excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/, -excludeBegin:!0,returnEnd:!0},s,o]},r,{className:"meta",begin:"^#!/usr/bin/env", -end:"$",illegal:"\n"},l]}},grmr_less:e=>{ -const n=te(e),t=le,a="([\\w-]+|@\\{[\\w-]+\\})",i=[],r=[],s=e=>({ -className:"string",begin:"~?"+e+".*?"+e}),o=(e,n,t)=>({className:e,begin:n, -relevance:t}),l={$pattern:/[a-z-]+/,keyword:"and or not only", -attribute:ie.join(" ")},c={begin:"\\(",end:"\\)",contains:r,keywords:l, -relevance:0} -;r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s("'"),s('"'),n.CSS_NUMBER_MODE,{ -begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]", -excludeEnd:!0} -},n.HEXCOLOR,c,o("variable","@@?[\\w-]+",10),o("variable","@\\{[\\w-]+\\}"),o("built_in","~?`[^`]*?`"),{ -className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0 -},n.IMPORTANT,{beginKeywords:"and not"},n.FUNCTION_DISPATCH);const d=r.concat({ -begin:/\{/,end:/\}/,contains:i}),g={beginKeywords:"when",endsWithParent:!0, -contains:[{beginKeywords:"and not"}].concat(r)},u={begin:a+"\\s*:", -returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/ -},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+oe.join("|")+")\\b", -end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:r}}] -},b={className:"keyword", -begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b", -starts:{end:"[;{}]",keywords:l,returnEnd:!0,contains:r,relevance:0}},m={ -className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{ -begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:d}},p={variants:[{ -begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:a,end:/\{/}],returnBegin:!0, -returnEnd:!0,illegal:"[<='$\"]",relevance:0, -contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,g,o("keyword","all\\b"),o("variable","@\\{[\\w-]+\\}"),{ -begin:"\\b("+ae.join("|")+")\\b",className:"selector-tag" -},n.CSS_NUMBER_MODE,o("selector-tag",a,0),o("selector-id","#"+a),o("selector-class","\\."+a,0),o("selector-tag","&",0),n.ATTRIBUTE_SELECTOR_MODE,{ -className:"selector-pseudo",begin:":("+re.join("|")+")"},{ -className:"selector-pseudo",begin:":(:)?("+se.join("|")+")"},{begin:/\(/, -end:/\)/,relevance:0,contains:d},{begin:"!important"},n.FUNCTION_DISPATCH]},_={ -begin:`[\\w-]+:(:)?(${t.join("|")})`,returnBegin:!0,contains:[p]} -;return i.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,b,m,_,u,p,g,n.FUNCTION_DISPATCH), -{name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:i}}, -grmr_lua:e=>{const n="\\[=*\\[",t="\\]=*\\]",a={begin:n,end:t,contains:["self"] -},i=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",t,{contains:[a], -relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE, -literal:"true false nil", -keyword:"and break do else elseif end for goto if in local not or repeat return then until while", -built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove" -},contains:i.concat([{className:"function",beginKeywords:"function",end:"\\)", -contains:[e.inherit(e.TITLE_MODE,{ -begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params", -begin:"\\(",endsWithParent:!0,contains:i}].concat(i) -},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", -begin:n,end:t,contains:[a],relevance:5}])}},grmr_makefile:e=>{const n={ -className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", -contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{ -const n=e.regex,t=n.concat(/[\p{L}_]/u,n.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),a={ -className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/, -contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] -},r=e.inherit(i,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{ -className:"string"}),o=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),l={ -endsWithParent:!0,illegal:/`]+/}]}]}]};return{ -name:"HTML, XML", -aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"], -case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[i,o,s,r,{begin:/\[/,end:/\]/,contains:[{ -className:"meta",begin://,contains:[i,r,o,s]}]}] -},e.COMMENT(//,{relevance:10}),{begin://, -relevance:10},a,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/, -relevance:10,contains:[o]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag", -begin:/)/,end:/>/,keywords:{name:"style"},contains:[l],starts:{ -end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", -begin:/)/,end:/>/,keywords:{name:"script"},contains:[l],starts:{ -end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ -className:"tag",begin:/<>|<\/>/},{className:"tag", -begin:n.concat(//,/>/,/\s/)))), -end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:l}]},{ -className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(t,/>/))),contains:[{ -className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]} -},grmr_markdown:e=>{const n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml", -relevance:0},t={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{ -begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, -relevance:2},{ -begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), -relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ -begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/ -},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, -returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", -excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", -end:"\\]",excludeBegin:!0,excludeEnd:!0}]},a={className:"strong",contains:[], -variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}] -},i={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{ -begin:/_(?![_\s])/,end:/_/,relevance:0}]},r=e.inherit(a,{contains:[] -}),s=e.inherit(i,{contains:[]});a.contains.push(s),i.contains.push(r) -;let o=[n,t];return[a,i,r,s].forEach((e=>{e.contains=e.contains.concat(o) -})),o=o.concat(a,i),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ -className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:o},{ -begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", -contains:o}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", -end:"\\s+",excludeEnd:!0},a,i,{className:"quote",begin:"^>\\s+",contains:o, -end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ -begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ -begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", -contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ -begin:"^[-\\*]{3,}",end:"$"},t,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ -className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ -className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}},grmr_objectivec:e=>{ -const n=/[a-zA-Z@][a-zA-Z0-9_]*/,t={$pattern:n, -keyword:["@interface","@class","@protocol","@implementation"]};return{ -name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"], -keywords:{"variable.language":["this","super"],$pattern:n, -keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"], -literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"], -built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"], -type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"] -},illegal:"/,end:/$/,illegal:"\\n" -},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class", -begin:"("+t.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:t, -contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE, -relevance:0}]}},grmr_perl:e=>{const n=e.regex,t=/[dualxmsipngr]{0,12}/,a={ -$pattern:/[\w.]+/, -keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" -},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:a},r={begin:/->\{/, -end:/\}/},s={variants:[{begin:/\$\d/},{ -begin:n.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") -},{begin:/[$%@][^\s\w{]/,relevance:0}] -},o=[e.BACKSLASH_ESCAPE,i,s],l=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],c=(e,a,i="\\1")=>{ -const r="\\1"===i?i:n.concat(i,a) -;return n.concat(n.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,r,/(?:\\.|[^\\\/])*?/,i,t) -},d=(e,a,i)=>n.concat(n.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,i,t),g=[s,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ -endsWithParent:!0}),r,{className:"string",contains:o,variants:[{ -begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[", -end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{ -begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">", -relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'", -contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`", -contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{ -begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number", -begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", -relevance:0},{ -begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*", -keywords:"split return print reverse grep",relevance:0, -contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{ -begin:c("s|tr|y",n.either(...l,{capture:!0}))},{begin:c("s|tr|y","\\(","\\)")},{ -begin:c("s|tr|y","\\[","\\]")},{begin:c("s|tr|y","\\{","\\}")}],relevance:2},{ -className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ -begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",n.either(...l,{capture:!0 -}),/\1/)},{begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{ -begin:d("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub", -end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{ -begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$", -subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}] -}];return i.contains=g,r.contains=g,{name:"Perl",aliases:["pl","pm"],keywords:a, -contains:g}},grmr_php:e=>{ -const n=e.regex,t=/(?![A-Za-z0-9])(?![$])/,a=n.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,t),i=n.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,t),r={ -scope:"variable",match:"\\$+"+a},s={scope:"subst",variants:[{begin:/\$\w+/},{ -begin:/\{\$/,end:/\}/}]},o=e.inherit(e.APOS_STRING_MODE,{illegal:null -}),l="[ \t\n]",c={scope:"string",variants:[e.inherit(e.QUOTE_STRING_MODE,{ -illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(s) -}),o,e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/, -contains:e.QUOTE_STRING_MODE.contains.concat(s)})]},d={scope:"number", -variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{ -begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{ -begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{ -begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?" -}],relevance:0 -},g=["false","null","true"],u=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],b=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],m={ -keyword:u,literal:(e=>{const n=[];return e.forEach((e=>{ -n.push(e),e.toLowerCase()===e?n.push(e.toUpperCase()):n.push(e.toLowerCase()) -})),n})(g),built_in:b},p=e=>e.map((e=>e.replace(/\|\d+$/,""))),_={variants:[{ -match:[/new/,n.concat(l,"+"),n.concat("(?!",p(b).join("\\b|"),"\\b)"),i],scope:{ -1:"keyword",4:"title.class"}}]},h=n.concat(a,"\\b(?!\\()"),f={variants:[{ -match:[n.concat(/::/,n.lookahead(/(?!class\b)/)),h],scope:{2:"variable.constant" -}},{match:[/::/,/class/],scope:{2:"variable.language"}},{ -match:[i,n.concat(/::/,n.lookahead(/(?!class\b)/)),h],scope:{1:"title.class", -3:"variable.constant"}},{match:[i,n.concat("::",n.lookahead(/(?!class\b)/))], -scope:{1:"title.class"}},{match:[i,/::/,/class/],scope:{1:"title.class", -3:"variable.language"}}]},E={scope:"attr", -match:n.concat(a,n.lookahead(":"),n.lookahead(/(?!::)/))},y={relevance:0, -begin:/\(/,end:/\)/,keywords:m,contains:[E,r,f,e.C_BLOCK_COMMENT_MODE,c,d,_] -},w={relevance:0, -match:[/\b/,n.concat("(?!fn\\b|function\\b|",p(u).join("\\b|"),"|",p(b).join("\\b|"),"\\b)"),a,n.concat(l,"*"),n.lookahead(/(?=\()/)], -scope:{3:"title.function.invoke"},contains:[y]};y.contains.push(w) -;const N=[E,f,e.C_BLOCK_COMMENT_MODE,c,d,_];return{case_insensitive:!1, -keywords:m,contains:[{begin:n.concat(/#\[\s*/,i),beginScope:"meta",end:/]/, -endScope:"meta",keywords:{literal:g,keyword:["new","array"]},contains:[{ -begin:/\[/,end:/]/,keywords:{literal:g,keyword:["new","array"]}, -contains:["self",...N]},...N,{scope:"meta",match:i}] -},e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{ -scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/, -keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE, -contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},{scope:"meta",variants:[{ -begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{ -begin:/\?>/}]},{scope:"variable.language",match:/\$this\b/},r,w,f,{ -match:[/const/,/\s/,a],scope:{1:"keyword",3:"variable.constant"}},_,{ -scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/, -excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use" -},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params", -begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:m, -contains:["self",r,f,e.C_BLOCK_COMMENT_MODE,c,d]}]},{scope:"class",variants:[{ -beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait", -illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{ -beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{ -beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/, -contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{ -beginKeywords:"use",relevance:0,end:";",contains:[{ -match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},c,d]} -},grmr_php_template:e=>({name:"PHP template",subLanguage:"xml",contains:[{ -begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*", -end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0 -},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null, -skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null, -contains:null,skip:!0})]}]}),grmr_plaintext:e=>({name:"Plain text", -aliases:["text","txt"],disableAutodetect:!0}),grmr_python:e=>{ -const n=e.regex,t=/[\p{XID_Start}_]\p{XID_Continue}*/u,a=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],i={ -$pattern:/[A-Za-z]\w+|__\w+__/,keyword:a, -built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], -literal:["__debug__","Ellipsis","False","None","NotImplemented","True"], -type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"] -},r={className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/, -end:/\}/,keywords:i,illegal:/#/},o={begin:/\{\{/,relevance:0},l={ -className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ -begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, -contains:[e.BACKSLASH_ESCAPE,r],relevance:10},{ -begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, -contains:[e.BACKSLASH_ESCAPE,r],relevance:10},{ -begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, -contains:[e.BACKSLASH_ESCAPE,r,o,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, -end:/"""/,contains:[e.BACKSLASH_ESCAPE,r,o,s]},{begin:/([uU]|[rR])'/,end:/'/, -relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ -begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, -end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, -contains:[e.BACKSLASH_ESCAPE,o,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, -contains:[e.BACKSLASH_ESCAPE,o,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] -},c="[0-9](_?[0-9])*",d=`(\\b(${c}))?\\.(${c})|\\b(${c})\\.`,g="\\b|"+a.join("|"),u={ -className:"number",relevance:0,variants:[{ -begin:`(\\b(${c})|(${d}))[eE][+-]?(${c})[jJ]?(?=${g})`},{begin:`(${d})[jJ]?`},{ -begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${g})`},{ -begin:`\\b0[bB](_?[01])+[lL]?(?=${g})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${g})` -},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${g})`},{begin:`\\b(${c})[jJ](?=${g})` -}]},b={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:i, -contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={ -className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/, -end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i, -contains:["self",r,u,l,e.HASH_COMMENT_MODE]}]};return s.contains=[l,u,r],{ -name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:i, -illegal:/(<\/|->|\?)|=>/,contains:[r,u,{begin:/\bself\b/},{beginKeywords:"if", -relevance:0},l,b,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,t],scope:{ -1:"keyword",3:"title.function"},contains:[m]},{variants:[{ -match:[/\bclass/,/\s+/,t,/\s*/,/\(\s*/,t,/\s*\)/]},{match:[/\bclass/,/\s+/,t]}], -scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{ -className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[u,m,l]}]}}, -grmr_python_repl:e=>({aliases:["pycon"],contains:[{className:"meta.prompt", -starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{ -begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}),grmr_r:e=>{ -const n=e.regex,t=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,a=n.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),i=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,r=n.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/) -;return{name:"R",keywords:{$pattern:t, -keyword:"function if in break next repeat else for while", -literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10", -built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm" -},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/, -starts:{end:n.lookahead(n.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)), -endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{ -scope:"variable",variants:[{match:t},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0 -}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}] -}),e.HASH_COMMENT_MODE,{scope:"string",contains:[e.BACKSLASH_ESCAPE], -variants:[e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/ -}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/ -}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/ -}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/ -}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/ -}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"', -relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{ -1:"operator",2:"number"},match:[i,a]},{scope:{1:"operator",2:"number"}, -match:[/%[^%]*%/,a]},{scope:{1:"punctuation",2:"number"},match:[r,a]},{scope:{ -2:"number"},match:[/[^a-zA-Z0-9._]|^/,a]}]},{scope:{3:"operator"}, -match:[t,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:i},{ -match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:r},{begin:"`",end:"`", -contains:[{begin:/\\./}]}]}},grmr_ruby:e=>{ -const n=e.regex,t="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",a=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),i=n.concat(a,/(::\w+)*/),r={ -"variable.constant":["__FILE__","__LINE__","__ENCODING__"], -"variable.language":["self","super"], -keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield","include","extend","prepend","public","private","protected","raise","throw"], -built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"], -literal:["true","false","nil"]},s={className:"doctag",begin:"@[A-Za-z]+"},o={ -begin:"#<",end:">"},l=[e.COMMENT("#","$",{contains:[s] -}),e.COMMENT("^=begin","^=end",{contains:[s],relevance:10 -}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],c={className:"subst",begin:/#\{/, -end:/\}/,keywords:r},d={className:"string",contains:[e.BACKSLASH_ESCAPE,c], -variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{ -begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{ -begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//, -end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{ -begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{ -begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ -begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ -begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ -begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)), -contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, -contains:[e.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",u={className:"number", -relevance:0,variants:[{ -begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ -begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" -},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ -begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ -begin:"\\b0(_?[0-7])+r?i?\\b"}]},b={variants:[{match:/\(\)/},{ -className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0, -keywords:r}]},m=[d,{variants:[{match:[/class\s+/,i,/\s+<\s+/,i]},{ -match:[/\b(class|module)\s+/,i]}],scope:{2:"title.class", -4:"title.class.inherited"},keywords:r},{match:[/(include|extend)\s+/,i],scope:{ -2:"title.class"},keywords:r},{relevance:0,match:[i,/\.new[. (]/],scope:{ -1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, -className:"variable.constant"},{relevance:0,match:a,scope:"title.class"},{ -match:[/def/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[b]},{ -begin:e.IDENT_RE+"::"},{className:"symbol", -begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", -begin:":(?!\\s)",contains:[d,{begin:t}],relevance:0},u,{className:"variable", -begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ -className:"params",begin:/\|/,end:/\|/,excludeBegin:!0,excludeEnd:!0, -relevance:0,keywords:r},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*", -keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,c], -illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{ -begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[", -end:"\\][a-z]*"}]}].concat(o,l),relevance:0}].concat(o,l) -;c.contains=m,b.contains=m;const p=[{begin:/^\s*=>/,starts:{end:"$",contains:m} -},{className:"meta.prompt", -begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", -starts:{end:"$",keywords:r,contains:m}}];return l.unshift(o),{name:"Ruby", -aliases:["rb","gemspec","podspec","thor","irb"],keywords:r,illegal:/\/\*/, -contains:[e.SHEBANG({binary:"ruby"})].concat(p).concat(l).concat(m)}}, -grmr_rust:e=>{const n=e.regex,t={className:"title.function.invoke",relevance:0, -begin:n.concat(/\b/,/(?!let\b)/,e.IDENT_RE,n.lookahead(/\s*\(/)) -},a="([ui](8|16|32|64|128|size)|f(32|64))?",i=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],r=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"] -;return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:r, -keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","unsafe","unsized","use","virtual","where","while","yield"], -literal:["true","false","Some","None","Ok","Err"],built_in:i},illegal:""},t]}}, -grmr_scss:e=>{const n=te(e),t=se,a=re,i="@[a-z-]+",r={className:"variable", -begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS", -case_insensitive:!0,illegal:"[=/|']", -contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n.CSS_NUMBER_MODE,{ -className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{ -className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0 -},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag", -begin:"\\b("+ae.join("|")+")\\b",relevance:0},{className:"selector-pseudo", -begin:":("+a.join("|")+")"},{className:"selector-pseudo", -begin:":(:)?("+t.join("|")+")"},r,{begin:/\(/,end:/\)/, -contains:[n.CSS_NUMBER_MODE]},n.CSS_VARIABLE,{className:"attribute", -begin:"\\b("+oe.join("|")+")\\b"},{ -begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b" -},{begin:/:/,end:/[;}{]/,relevance:0, -contains:[n.BLOCK_COMMENT,r,n.HEXCOLOR,n.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.IMPORTANT,n.FUNCTION_DISPATCH] -},{begin:"@(page|font-face)",keywords:{$pattern:i,keyword:"@page @font-face"}},{ -begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/, -keyword:"and or not only",attribute:ie.join(" ")},contains:[{begin:i, -className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute" -},r,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.HEXCOLOR,n.CSS_NUMBER_MODE] -},n.FUNCTION_DISPATCH]}},grmr_shell:e=>({name:"Shell Session", -aliases:["console","shellsession"],contains:[{className:"meta.prompt", -begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/, -subLanguage:"bash"}}]}),grmr_sql:e=>{ -const n=e.regex,t=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],r=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],s=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],o=r,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!r.includes(e))),c={ -begin:n.concat(/\b/,n.either(...o),/\s*\(/),relevance:0,keywords:{built_in:o}} -;return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{ -$pattern:/\b[\w\.]+/,keyword:((e,{exceptions:n,when:t}={})=>{const a=t -;return n=n||[],e.map((e=>e.match(/\|\d+$/)||n.includes(e)?e:a(e)?e+"|0":e)) -})(l,{when:e=>e.length<3}),literal:a,type:i, -built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] -},contains:[{begin:n.either(...s),relevance:0,keywords:{$pattern:/[\w\.]+/, -keyword:l.concat(s),literal:a,type:i}},{className:"type", -begin:n.either("double precision","large object","with timezone","without timezone") -},c,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ -begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ -begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"operator", -begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}, -grmr_swift:e=>{const n={match:/\s+/,relevance:0},t=e.COMMENT("/\\*","\\*/",{ -contains:["self"]}),a=[e.C_LINE_COMMENT_MODE,t],i={match:[/\./,p(...ve,...Oe)], -className:{2:"keyword"}},r={match:m(/\./,p(...xe)),relevance:0 -},s=xe.filter((e=>"string"==typeof e)).concat(["_|0"]),o={variants:[{ -className:"keyword", -match:p(...xe.filter((e=>"string"!=typeof e)).concat(ke).map(Ne),...Oe)}]},l={ -$pattern:p(/\b\w+/,/#\w+/),keyword:s.concat(Ae),literal:Me},c=[i,r,o],d=[{ -match:m(/\./,p(...Ce)),relevance:0},{className:"built_in", -match:m(/\b/,p(...Ce),/(?=\()/)}],u={match:/->/,relevance:0},b=[u,{ -className:"operator",relevance:0,variants:[{match:De},{match:`\\.(\\.|${Re})+`}] -}],_="([0-9a-fA-F]_*)+",h={className:"number",relevance:0,variants:[{ -match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{ -match:`\\b0x(${_})(\\.(${_}))?([pP][+-]?(([0-9]_*)+))?\\b`},{ -match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},f=(e="")=>({ -className:"subst",variants:[{match:m(/\\/,e,/[0\\tnr"']/)},{ -match:m(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),E=(e="")=>({className:"subst", -match:m(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),y=(e="")=>({className:"subst", -label:"interpol",begin:m(/\\/,e,/\(/),end:/\)/}),w=(e="")=>({begin:m(e,/"""/), -end:m(/"""/,e),contains:[f(e),E(e),y(e)]}),N=(e="")=>({begin:m(e,/"/), -end:m(/"/,e),contains:[f(e),y(e)]}),v={className:"string", -variants:[w(),w("#"),w("##"),w("###"),N(),N("#"),N("##"),N("###")]},O={ -match:m(/`/,Be,/`/)},k=[O,{className:"variable",match:/\$\d+/},{ -className:"variable",match:`\\$${Le}+`}],x=[{match:/(@|#(un)?)available/, -className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:Fe, -contains:[...b,h,v]}]}},{className:"keyword",match:m(/@/,p(...ze))},{ -className:"meta",match:m(/@/,Be)}],M={match:g(/\b[A-Z]/),relevance:0,contains:[{ -className:"type", -match:m(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,Le,"+") -},{className:"type",match:$e,relevance:0},{match:/[?!]+/,relevance:0},{ -match:/\.\.\./,relevance:0},{match:m(/\s+&\s+/,g($e)),relevance:0}]},S={ -begin://,keywords:l,contains:[...a,...c,...x,u,M]};M.contains.push(S) -;const A={begin:/\(/,end:/\)/,relevance:0,keywords:l,contains:["self",{ -match:m(Be,/\s*:/),keywords:"_|0",relevance:0 -},...a,...c,...d,...b,h,v,...k,...x,M]},C={begin://,contains:[...a,M] -},T={begin:/\(/,end:/\)/,keywords:l,contains:[{ -begin:p(g(m(Be,/\s*:/)),g(m(Be,/\s+/,Be,/\s*:/))),end:/:/,relevance:0, -contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:Be}] -},...a,...c,...b,h,v,...x,M,A],endsParent:!0,illegal:/["']/},R={ -match:[/func/,/\s+/,p(O.match,Be,De)],className:{1:"keyword",3:"title.function" -},contains:[C,T,n],illegal:[/\[/,/%/]},D={ -match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"}, -contains:[C,T,n],illegal:/\[|%/},I={match:[/operator/,/\s+/,De],className:{ -1:"keyword",3:"title"}},L={begin:[/precedencegroup/,/\s+/,$e],className:{ -1:"keyword",3:"title"},contains:[M],keywords:[...Se,...Me],end:/}/} -;for(const e of v.variants){const n=e.contains.find((e=>"interpol"===e.label)) -;n.keywords=l;const t=[...c,...d,...b,h,v,...k];n.contains=[...t,{begin:/\(/, -end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:l, -contains:[...a,R,D,{beginKeywords:"struct protocol class extension enum actor", -end:"\\{",excludeEnd:!0,keywords:l,contains:[e.inherit(e.TITLE_MODE,{ -className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...c] -},I,L,{beginKeywords:"import",end:/$/,contains:[...a],relevance:0 -},...c,...d,...b,h,v,...k,...x,M,A]}},grmr_typescript:e=>{ -const n=we(e),t=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],a={ -beginKeywords:"namespace",end:/\{/,excludeEnd:!0, -contains:[n.exports.CLASS_REFERENCE]},i={beginKeywords:"interface",end:/\{/, -excludeEnd:!0,keywords:{keyword:"interface extends",built_in:t}, -contains:[n.exports.CLASS_REFERENCE]},r={$pattern:be, -keyword:me.concat(["type","namespace","interface","public","private","protected","implements","declare","abstract","readonly","enum","override"]), -literal:pe,built_in:ye.concat(t),"variable.language":Ee},s={className:"meta", -begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},o=(e,n,t)=>{ -const a=e.contains.findIndex((e=>e.label===n)) -;if(-1===a)throw Error("can not find mode to replace");e.contains.splice(a,1,t)} -;return Object.assign(n.keywords,r), -n.exports.PARAMS_CONTAINS.push(s),n.contains=n.contains.concat([s,a,i]), -o(n,"shebang",e.SHEBANG()),o(n,"use_strict",{className:"meta",relevance:10, -begin:/^\s*['"]use strict['"]/ -}),n.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(n,{ -name:"TypeScript",aliases:["ts","tsx"]}),n},grmr_vbnet:e=>{ -const n=e.regex,t=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,i=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,r=/\d{1,2}(:\d{1,2}){1,2}/,s={ -className:"literal",variants:[{begin:n.concat(/# */,n.either(a,t),/ *#/)},{ -begin:n.concat(/# */,r,/ *#/)},{begin:n.concat(/# */,i,/ *#/)},{ -begin:n.concat(/# */,n.either(a,t),/ +/,n.either(i,r),/ *#/)}] -},o=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}] -}),l=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]}) -;return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0, -classNameAliases:{label:"symbol"},keywords:{ -keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield", -built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort", -type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort", -literal:"true false nothing"}, -illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{ -className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/, -end:/"/,illegal:/\n/,contains:[{begin:/""/}]},s,{className:"number",relevance:0, -variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/ -},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{ -begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{ -className:"label",begin:/^\w+:/},o,l,{className:"meta", -begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/, -end:/$/,keywords:{ -keyword:"const disable else elseif enable end externalsource if region then"}, -contains:[l]}]}},grmr_wasm:e=>{e.regex;const n=e.COMMENT(/\(;/,/;\)/) -;return n.contains.push("self"),{name:"WebAssembly",keywords:{$pattern:/[\w.]+/, -keyword:["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"] -},contains:[e.COMMENT(/;;/,/$/),n,{match:[/(?:offset|align)/,/\s*/,/=/], -className:{1:"keyword",3:"operator"}},{className:"variable",begin:/\$[\w_]+/},{ -match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},{ -begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword", -3:"title.function"}},e.QUOTE_STRING_MODE,{match:/(i32|i64|f32|f64)(?!\.)/, -className:"type"},{className:"keyword", -match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/ -},{className:"number",relevance:0, -match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/ -}]}},grmr_yaml:e=>{ -const n="true false yes no null",t="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={ -className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ -},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable", -variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(a,{ -variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),r={ -end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},s={begin:/\{/, -end:/\}/,contains:[r],illegal:"\\n",relevance:0},o={begin:"\\[",end:"\\]", -contains:[r],illegal:"\\n",relevance:0},l=[{className:"attr",variants:[{ -begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{ -begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$", -relevance:10},{className:"string", -begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{ -begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0, -relevance:0},{className:"type",begin:"!\\w+!"+t},{className:"type", -begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t -},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta", -begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)", -relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{ -className:"number", -begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b" -},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},s,o,a],c=[...l] -;return c.pop(),c.push(i),r.contains=c,{name:"YAML",case_insensitive:!0, -aliases:["yml"],contains:l}}});const je=ne;for(const e of Object.keys(Ue)){ -const n=e.replace("grmr_","").replace("_","-");je.registerLanguage(n,Ue[e])} -return je}() -;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); \ No newline at end of file diff --git a/Frontend/assets/scripts/common/jquery-3.6.0.slim.min.js b/Frontend/assets/scripts/common/jquery-3.6.0.slim.min.js deleted file mode 100644 index 7556941..0000000 --- a/Frontend/assets/scripts/common/jquery-3.6.0.slim.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.6.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(g,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,v=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),m={},b=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},w=g.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function C(e,t,n){var r,i,o=(n=n||w).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function T(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector",E=function(e,t){return new E.fn.init(e,t)};function d(e){var t=!!e&&"length"in e&&e.length,n=T(e);return!b(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+R+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(d.childNodes),d.childNodes),t[d.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&(C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!k[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&(U.test(t)||_.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&p.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=A)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+be(l[o]);c=l.join(",")}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){k(t,!0)}finally{s===A&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[A]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:d;return r!=T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),d!=T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.scope=ce(function(e){return a.appendChild(e).appendChild(T.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=A,!T.getElementsByName||!T.getElementsByName(A).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+A+"-]").length||v.push("~="),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+R+"*name"+R+"*="+R+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+A+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e==T||e.ownerDocument==d&&y(d,e)?-1:t==T||t.ownerDocument==d&&y(d,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==T?-1:t==T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]==d?-1:s[r]==d?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(C(e),p.matchesSelector&&E&&!k[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){k(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return b(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||L,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:j.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:w,!0)),k.test(r[1])&&E.isPlainObject(t))for(r in t)b(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=w.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):b(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,L=E(w);var q=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i;le=w.createDocumentFragment().appendChild(w.createElement("div")),(ce=w.createElement("input")).setAttribute("type","radio"),ce.setAttribute("checked","checked"),ce.setAttribute("name","t"),le.appendChild(ce),m.checkClone=le.cloneNode(!0).cloneNode(!0).lastChild.checked,le.innerHTML="",m.noCloneChecked=!!le.cloneNode(!0).lastChild.defaultValue,le.innerHTML="",m.option=!!le.lastChild;var he={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var ye=/<|&#?\w+;/;function me(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p\s*$/g;function ke(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Le(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function je(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n
",2===lt.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?((r=(t=w.implementation.createHTMLDocument("")).createElement("base")).href=w.location.href,t.head.appendChild(r)):t=w),o=!n&&[],(i=k.exec(e))?[t.createElement(i[1])]:(i=me([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),b(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=Me(m.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0/g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); - } - - - /* plugin itself */ - - /** @type {HLJSPlugin} */ - const mergeHTMLPlugin = { - // preserve the original HTML token stream - "before:highlightElement": ({ el }) => { - originalStream = nodeStream(el); - }, - // merge it afterwards with the highlighted token stream - "after:highlightElement": ({ el, result, text }) => { - if (!originalStream.length) { - return; - } - - const resultNode = document.createElement('div'); - resultNode.innerHTML = result.value; - result.value = mergeStreams(originalStream, nodeStream(resultNode), text); - el.innerHTML = result.value; - } - }; - - /** - * @param {Node} node - */ - function tag(node) { - return node.nodeName.toLowerCase(); - } - - /** - * @param {Node} node - */ - function nodeStream(node) { - /** @type Event[] */ - const result = []; - (function _nodeStream(node, offset) { - for (let child = node.firstChild; child; child = child.nextSibling) { - if (child.nodeType === 3) { - offset += child.nodeValue.length; - } else if (child.nodeType === 1) { - result.push({ - event: 'start', - offset: offset, - node: child - }); - offset = _nodeStream(child, offset); - - if (!tag(child).match(/br|hr|img|input/)) { - result.push({ - event: 'stop', - offset: offset, - node: child - }); - } - } - } - return offset; - })(node, 0); - return result; - } - - /** - * @param {any} original - the original stream - * @param {any} highlighted - stream of the highlighted source - * @param {string} value - the original source itself - */ - function mergeStreams(original, highlighted, value) { - let processed = 0; - let result = ''; - const nodeStack = []; - - function selectStream() { - if (!original.length || !highlighted.length) { - return original.length ? original : highlighted; - } - if (original[0].offset !== highlighted[0].offset) { - return (original[0].offset < highlighted[0].offset) ? original : highlighted; - } - - return highlighted[0].event === 'start' ? original : highlighted; - } - - /** - * @param {Node} node - */ - function open(node) { - /** @param {Attr} attr */ - function attributeString(attr) { - return ' ' + attr.nodeName + '="' + escapeHTML(attr.value) + '"'; - } - - // @ts-ignore - result += '<' + tag(node) + [].map.call(node.attributes, attributeString).join('') - + '>'; - } - - /** - * @param {Node} node - */ - function close(node) { - result += ''; - } - - /** - * @param {Event} event - */ - function render(event) { - (event.event === 'start' ? open : close)(event.node); - } - - while (original.length || highlighted.length) { - let stream = selectStream(); - result += escapeHTML(value.substring(processed, stream[0].offset)); - processed = stream[0].offset; - if (stream === original) { - /* - On any opening or closing tag of the original markup we first close - the entire highlighted node stack, then render the original tag along - with all the following original tags at the same offset and then - reopen all the tags on the highlighted stack. - */ - nodeStack.reverse().forEach(close); - do { - render(stream.splice(0, 1)[0]); - stream = selectStream(); - } while (stream === original && stream.length && stream[0].offset === processed); - nodeStack.reverse().forEach(open); - } else { - if (stream[0].event === 'start') { - nodeStack.push(stream[0].node); - } else { - nodeStack.pop(); - } - render(stream.splice(0, 1)[0]); - } - } - return result + escapeHTML(value.substr(processed)); - } - - return mergeHTMLPlugin; - -}()); - -function formatAndValidateJson(errorElement) { - const input = document.querySelector('#jsonBlock'); - const processInfo = document.getElementById(errorElement); - - const address = window.location.protocol + "//" + window.location.hostname + ":" + 8081 + "/json/formatting" - - fetch(address, { - method: 'POST', - body: input.textContent - }) - .then(async (response) => { - const promise = response.json(); - if (!response.ok) { - throw Error(await promise); - } - - return promise; - }) - .then((data) => { - input.innerText = data.data; - processInfo.innerText = ""; - hljs.highlightElement(input); - - processInfo.innerHTML = "Computed in " + data.time + "ms"; - }) - .catch((error) => { - processInfo.innerHTML = "" + error.data + ""; - console.error('Error:', error); - }); -} - -function minimizeJson(errorElement) { - const input = document.querySelector('#jsonBlock'); - const processInfo = document.getElementById(errorElement); - - const address = window.location.protocol + "//" + window.location.hostname + ":" + 8081 + "/json/minimize" - - fetch(address, { - method: 'POST', - body: input.textContent - }) - .then(async (response) => { - const promise = response.json(); - if (!response.ok) { - throw Error(await promise); - } - - return promise; - }) - .then((data) => { - input.innerText = data.data; - processInfo.innerText = ""; - hljs.highlightElement(input); - - processInfo.innerHTML = "Computed in " + data.time + "ms"; - }) - .catch((error) => { - processInfo.innerHTML = "" + error.data + ""; - console.error('Error:', error); - }); -} - -function clearJsonData() { - const input = document.querySelector('#jsonBlock'); - input.textContent = ""; -} - -function insertDefaultJson() { - const input = document.querySelector('#jsonBlock'); - input.textContent = "{\"enter\": \"your\", \"json\": \"here\"}"; - hljs.highlightElement(input); -} - -/** - * This function is executed after the page is loaded. - * - * @function - * @name init - * @kind function - */ -function init() { - // Make sure that only plain text is pasted - configurePastingInElement("jsonBlock"); - - hljs.addPlugin(mergeHTMLPlugin); -} - diff --git a/Frontend/assets/scripts/tools/mock/datatransfer.js b/Frontend/assets/scripts/tools/mock/datatransfer.js deleted file mode 100644 index 0eed9a6..0000000 --- a/Frontend/assets/scripts/tools/mock/datatransfer.js +++ /dev/null @@ -1,261 +0,0 @@ -var clientUUID = ''; -var advancedDisplayed = false; -var json = {}; -var jsonIndex = 0; -var host = window.location.protocol + "//" + window.location.hostname + "/mock"; - -const C_UUID = 'mock-uuid'; -const C_ADV = 'advanced-mode'; - -const color_red = "#ff8f8f"; -const color_grey = "#6b6b6b"; - -const setModified = function(){ - setDataModified(); -} - -const getUpdate = function(){ - updateData(); -} -const dataRefresh = function(){ - getData(); -} - -/* - Listeners segment -*/ - -$(document).on('change', '.data-field', setModified); - -$('#btn-save').click( - () => { - disableSaveButton(); - } - ); - -$('#btn-newRow').click( - ()=> { - newRowInput(); - setDataModified(); - } - ); - -$('#btn-copy').click( - ()=> { - var link = $("#messageLink").html(); - navigator.clipboard.writeText(link); - } - ); - -/* - Functions segment -*/ - -function disableSaveButton(){ - $('#btn-save').removeClass('active'); - $('#btn-save').off(); -} - -function createLink(uuid){ - var link = host + '/api/mock/r/'+uuid; - return link; -} - - -function onLoad(){ - loadCookies(); - getData(); -} - -function getData(){ - $.getJSON(host + '/api/mock/'+clientUUID, function(data) { - json = data; - loadFetchedMessage(); - initializeUUID(); - }); -} - -function loadCookies(){ - clientUUID = getCookie(C_UUID); - advancedDisplayed = getCookie(C_ADV) == 'true'; -} - -function setCookie(){ - document.cookie = C_UUID + '=' +clientUUID; - document.cookie = C_ADV + '=' + advancedVisibility; -} - -function initializeUUID(){ - if(clientUUID == null || clientUUID == undefined || clientUUID == ''){ - clientUUID = json.clientUUID; - setCookie(); - } -} - -function httpStatusInvalid(){ - value = $('#httpStatus').val(); - return value == ''; -} - -function setDataModified(){ - if(httpStatusInvalid()){ - $('#btn-save').removeClass('active'); - $('#btn-save').off(); - document.getElementById("httpStatus").style.backgroundColor = color_red; - return; - } - $('#btn-save').addClass('active'); - $('#btn-save').click(getUpdate); - document.getElementById("httpStatus").style.backgroundColor = null; -} - -function getCookie(cname) { - var name = cname + '='; - var decodedCookie = decodeURIComponent(document.cookie); - var ca = decodedCookie.split(';'); - for(var i = 0; i ' + - '' + - '' + - ''; - } - return '' + - '' + - '' + - '' + - '' + - ''; -} - -function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - -function createRequestBody(){ - var newJson = - { - clientUUID: json.clientUUID, - contentType: $('#typeSelector').val(), - messageBody: $('#bodyEditor').val(), - httpStatus: $('#httpStatus').val(), - httpHeaders: {}, - }; - newJson['httpHeaders'] = convertTableToJson(); - - json = newJson; - return newJson; -} - - -function convertTableToJson(){ - const rows = $('#headerMapTable').children(); - - var obj = {}; - var key; - for(let i=0; i' + - '' + parseTimeStamp(historyJson[i].dateTimeStamp) + '' + - '' + historyJson[i].httpMethod + '' + - '' + parseRequestBody(historyJson[i].requestBody, i) + '' + - ' ' + - ''; - } - return innerHTML; -} - -function parseRequestBody(requestBody,i){ - return requestBody.length == 0 ? - "No request body" : - '' -} - -function parseTimeStamp(timeStamp){ - return timeStamp.substring(0,19).replace('T',' '); -} - -function parseHeaders(pos){ - parsedJson = new Map(); - headers = historyJson[pos].headers - Object.keys( headers ).forEach( - (jsonKey) => { - parsedJson.set( jsonKey , headers[jsonKey] ); - } - ) - return parsedJson; -} - -function displayHistory(){ - $('#historyTable tbody').html(historyToHtml()); -} diff --git a/Frontend/assets/scripts/tools/mock/modal.js b/Frontend/assets/scripts/tools/mock/modal.js deleted file mode 100644 index c20804b..0000000 --- a/Frontend/assets/scripts/tools/mock/modal.js +++ /dev/null @@ -1,53 +0,0 @@ -var modalDisplayed = false; -var methodToCall = { - name: null, - id: null -}; - -const overlay = $('#overlay'); -const savedModal = $('#modal-confirm'); -const dataLossModal = $('#modal-query'); -const dataLossModalYes = dataLossModal.children().eq(2).children().eq(0); -const dataLossModalNo = dataLossModal.children().eq(2).children().eq(1); -const allModals = $('.modal'); -const btnModalClose = $('.modal button'); -const closeModals = function() { - hideModal(allModals); -} -const savedModalDisplay = function() { - - showModal(savedModal); - setTimeout(closeModals, 2000); -} -const dataLossModalDisplay = function(){ - showModal(dataLossModal); -} - -btnModalClose.click(closeModals); -overlay.click(closeModals); -dataLossModalNo.click(closeModals); -dataLossModalYes.click(dropChangesAndClose); - -function setMethodToCall(name, id){ - methodToCall.name = name; - methodToCall.id = id; -} - -const dropChangesAndClose = function(){ - callMethodByName(methodToCall) - hideModal(dataLossModal); -} - -function showModal(jmodal){ - if(modalDisplayed) return; - overlay.addClass('active'); - jmodal.addClass('active'); - modalDisplayed = true; -} - -function hideModal(jmodal){ - if(!modalDisplayed) return; - overlay.removeClass('active'); - jmodal.removeClass('active'); - modalDisplayed = false; -} diff --git a/Frontend/assets/scripts/tools/mock/popup.js b/Frontend/assets/scripts/tools/mock/popup.js deleted file mode 100644 index 0d2b91f..0000000 --- a/Frontend/assets/scripts/tools/mock/popup.js +++ /dev/null @@ -1,34 +0,0 @@ - -function switchPopups (neededPopupOption) { - $('.hiddable-popup-option').addClass('hidden-popup-type'); - $('#'+neededPopupOption).removeClass('hidden-popup-type'); - } - -function showPopup(){ - $('.popup-flex').removeClass('hiddable-container'); -} - -function hidePopup(){ - $('.popup-flex').addClass('hiddable-container'); - $('.hiddable-popup-option').addClass('hidden-popup-type'); -} - -/* -* Event listener that's close the popup when user clicks out of a popup. -*/ - -window.addEventListener( - 'click' , - (clickedElement) => { - if(!document.getElementById('popup-body').contains(clickedElement.target) && clickedElement.target.className == 'popup-flex' ) { - hidePopup(); - } - } -); - -$('.popup-button-close').click( - () => { - hidePopup(); - $('.hiddable-popup-option').addClass('hidden-popup-type') - } -); \ No newline at end of file diff --git a/Frontend/assets/scripts/tools/mock/uianimation.js b/Frontend/assets/scripts/tools/mock/uianimation.js deleted file mode 100644 index 1871bdf..0000000 --- a/Frontend/assets/scripts/tools/mock/uianimation.js +++ /dev/null @@ -1,165 +0,0 @@ -var advancedVisibility = false; -var focusedField = false; -/* -Listeners -*/ -$("#optional").click(changeAdvancedVisibility); - -$('#historyTab').click(showHistory); - -$('.tooltipped').on("mouseenter" , (event) => {showTip(event.currentTarget.id+'Tip')}) - .on( "mouseleave", (event) => {hideTip(event.currentTarget.id+'Tip')}); - -/* -Functions -*/ - -function changeAdvancedVisibility(){ - if(advancedVisibility){ - $("#advanced").removeClass('active'); - advancedVisibility = false; - } - else { - $('#advanced').addClass('active'); - advancedVisibility = true; - } - setCookie(); -} - -const tabitem = $('.tabitem'); -function showHistory(){ - $('#headersTab').click(showHeaders); - tabitem.removeClass('active'); - $('.tabcontent').removeClass('active'); - $('#history').addClass('active'); - $('#historyTab').addClass('active'); - $('#historyTab').off('click'); - getHistoryData(); -} - -function showHeaders(){ - $('#historyTab').click(showHistory); - tabitem.removeClass('active'); - $('.tabcontent').removeClass('active'); - $('#headers').addClass('active'); - $('#headersTab').addClass('active'); - $('#headersTab').off('click'); -} - -function showHeadersHistory(record){ - historyTable = ''; - headers = parseHeaders(record.id) - headers.forEach( - (value,key) => { - historyTable += - '' + - ''+ key + '' + - ''+ value + '' + - '' - } - ); - document.getElementById('header-history-table-body').innerHTML = historyTable; - switchPopups('history-headers-table'); - showPopup(); -} - -async function formatJSON(json) { - const backend = "java"; - const address = window.location.protocol + "//" + window.location.hostname + "/" + backend + "/json/formatting"; - - var init = { - body: json, - method: "POST" - }; - var request = new Request(address, init); - - var result = await fetch(request).then(response => { - return response.text().then(function (text) { - var json = JSON.parse(text); - json.status = response.status; - return json; - }); - - }); - return result; -} - -async function formatXML(xml) { - const backend = "libxml"; - const address = window.location.protocol + "//" + window.location.hostname + "/" + backend + "/prettify"; - var data = { - data: xml, - process: "", - processor: "libxml", - version: "1.0" - } - - var init = { - body: JSON.stringify(data), - method: "POST" - }; - var request = new Request(address, init); - - var result = await fetch(request).then(response => { - return response.text().then(function (text) { - return JSON.parse(text); - }); - - }); - return result; -} - -function showRequestBody(element){ - var historyRequestBody = historyJson[element.id].requestBody; - const popupContent = document.getElementById('code-highlight-content') - - document.getElementById('code-highlight-content').innerText = "Loading..."; - switch(historyJson[element.id].headers["content-type"]){ - case "application/json":{ - formatJSON(historyRequestBody).then(function(result) { - - if (result.status == "200") { - popupContent.innerText = result.data; - highlightSyntax('code-highlight-content'); - } - else { - popupContent.innerText = historyRequestBody; - } - }); - break; - } - case "application/xml": { - formatXML(historyRequestBody).then(function(result) { - if (result.status == "OK") { - popupContent.innerText = result.result; - highlightSyntax('code-highlight-content'); - } - else { - popupContent.innerText = historyRequestBody; - } - - }); - - break; - } - default:{ - popupContent.innerText = historyRequestBody; - highlightSyntax('code-highlight-content'); - } - } - switchPopups('history-request-body'); - showPopup(); -} - -function refreshHistoryRecords(){ - getHistoryData(); -} - -function hideTip(element){ - $('#'+element).removeClass('active'); -} - -function showTip(element){ - $('.tip').removeClass('active'); - $('#'+element).addClass('active'); -} diff --git a/Frontend/assets/scripts/tools/scripts.js b/Frontend/assets/scripts/tools/scripts.js deleted file mode 100644 index 5119d50..0000000 --- a/Frontend/assets/scripts/tools/scripts.js +++ /dev/null @@ -1,432 +0,0 @@ -var defaultStrings = []; -const color_grey = "#6b6b6b"; -const color_red = "#ff8f8f"; - -/** -* It clears default content of the element and sets it's color to black. -* -* @function -* @name clearDefaultContent -* @kind function -* @param {any} element to set -* @param {any} text to set -* @returns {void} -*/ -function clearDefaultContent(element, text) { - if (element.innerText == text) { - element.innerText = ""; - element.style.color = "#000000"; - element.style.backgroundColor = "#ffffff"; - } -} - -/** -* It returns the value of the element with id "processors". -* -* @function -* @name getProcessor -* @kind function -* @returns {any} -*/ -function getProcessor() { - return document.getElementById("processors").value; -} - - -/** - * It returns the value of the element with id "versions". - * - * @function - * @name getVersion - * @kind function - * @returns {any} - */ -function getVersion() { - return document.getElementById("versions").value; -} - -/** -* It clears all data fields. -* -* @function -* @name clearDataField -* @kind function -*/ -function clearDataField() { - document.getElementById("xmlArea").innerHTML = ""; - document.getElementById("xmlArea").style.color = null; - document.getElementById("xmlArea").style.backgroundColor = null; - - document.getElementById("transformArea").innerHTML = ""; - document.getElementById("transformArea").style.color = null; - document.getElementById("transformArea").style.backgroundColor = null; - - document.getElementById("resultArea").innerHTML = ""; -} - - -/** -* It fills the XML area with a sample XML. -* -* @function -* @name fillDefaultXML -* @kind function -* @param {any} element -* @returns {void} -*/ -function fillDefaultXML(element) { - if (element.classList.contains("active")) { - const serverAddress = window.location.protocol + "//" + window.location.hostname; - clearDefaultContent(document.getElementById("xmlArea"), "Insert XML here"); - fetch(serverAddress + "/assets/samples/sampleXml.xml") - .then(response => response.text()) - .then((exampleData) => { - document.getElementById("xmlArea").innerText = exampleData; - highlightSyntax("xmlArea"); - document.getElementById("xmlArea").style.backgroundColor = null; - - }) - } -} - - -/** -* It fills the XSD area with a sample XSD and XML area with matching XML. -* -* @function -* @name fillDefaultXSD -* @kind function -* @param {any} element -* @returns {void} -*/ -function fillDefaultXSD(){ - const serverAddress = window.location.protocol + "//" + window.location.hostname; - fetch(serverAddress + "/assets/samples/sampleXSD.xsd") - .then( response => response.text() ) - .then( (XSDSchema) => { - document.getElementById('transformArea').innerText = XSDSchema; - highlightSyntax("transformArea"); - } ) - fetch(serverAddress + "/assets/samples/sampleXMLForXSD.xml") - .then( response => response.text() ) - .then( (XMLSample) => { - document.getElementById('xmlArea').innerText = XMLSample; - highlightSyntax("xmlArea"); - } ) - -} - - -/** - * The `fillDefaultXSLT()` function fetches a default XSLT template from the server and sets the value of the element with id "transformArea" to the fetched template. - * - * @function - * @name fillDefaultXSLT - * @kind function - * @returns {void} - */ -function fillDefaultXSLT() { - const serverAddress = window.location.protocol + "//" + window.location.hostname; - fetch(serverAddress + "/assets/samples/XSLTTemplate.xslt") - .then( response => response.text() ) - .then( (XSTLTemplate) => { - document.getElementById('transformArea').innerText = XSTLTemplate; - highlightSyntax("transformArea"); - } ) -} - -/** - * The `fillDefaultXQuery()` function fetches a default XQuery from the server and sets the value of the element with id "transformArea" to the fetched template. - * - * @function - * @name fillDefaultXQuery - * @kind function - * @returns {void} - */ -function fillDefaultXQuery() { - const serverAddress = window.location.protocol + "//" + window.location.hostname; - fetch(serverAddress + "/assets/samples/sampleXQuery.xquery") - .then( response => response.text() ) - .then( (XQueryTemplate) => { - document.getElementById('transformArea').innerText = XQueryTemplate; - highlightSyntax("transformArea"); - } ) -} - -/** -* It sets default content for the element an changes it's color to grey -* -* @function -* @name setDefaultContent -* @kind function -* @param {any} element to set -* @param {any} text to set -*/ -function setDefaultContent(element, text) { - if (element.value == "") { - var id = element.getAttribute('id'); - if (!defaultStrings.includes(text)) { - defaultStrings.push(text); - } - if (id == "xmlArea") { - element.style.color = color_grey; - element.value = text; - } - if (id == "transformArea") { - element.style.color = color_grey; - element.value = text; - } - if (id == "jsonArea") { - element.style.color = color_grey; - element.value = text; - } - } -} - -/** -* It hides list for specified version of XPath -* -* @function -* @name hideList -* @kind function -* @param {any} collList class name of list to hide -* @returns {void} -*/ -function hideList(collList) { - for (i = 0; i < collList.length; i++) { - if (collList[i].nextElementSibling !== null) { - collList[i].nextElementSibling.style.maxHeight = null; - collList[i].nextElementSibling.classList.toggle("collapsibleDataExpanded", false); - } - collList[i].style.display = 'none'; - collList[i].classList.remove("collapsibleActive"); - } -} - -/** -* It checks if the text is a default text. -* -* @function -* @name checkDefault -* @kind function -* @param {any} text -* @returns {boolean} -*/ -function checkDefault(text) { - return defaultStrings.includes(text); -} - -/** -* It show list for specified version of XPath -* -* @function -* @name showList -* @kind function -* @param {any} collList class name of list to hide -* @returns {void} -*/ -function showList(collList) { - for (i = 0; i < collList.length; i++) { - collList[i].style.display = 'block'; - } -} - -/** -* A function that is used to fold/unfold collapsible elements. -* -* @function -* @name smoothFoldElement -* @kind function -* @param {any} element -* @param {any} toogleState -* @param {any} toggleParrent -* @returns {void} -*/ -function smoothFoldElement(element, toogleState, toggleParrent) { - if (toogleState) { - if (toggleParrent) { - element.parentElement.style.maxHeight = "0px"; - } - - element.classList.toggle("active", false); - var subLists = collapsibleData.getElementsByClassName("collapsibleData"); - for (j = 0; j < subLists.length; j++) { - subLists[j].style.maxHeight = null; - } - } else { - collapsibleData.parentElement.style.maxHeight = (collapsibleData.parentElement.scrollHeight) + "px"; - collapsibleData.classList.toggle("active", true); - if (collapsibleData.parentElement.classList.contains("collapsibleData") && collapsibleData.parentElement.classList.contains("active")) { - collapsibleData.parentElement.style.maxHeight = (collapsibleData.parentElement.scrollHeight + collapsibleData.scrollHeight) + "px"; - } - } -} - -/** -* Set tooltip info, function is called by onClick handlers -* -* @function -* @name refreshTooltip -* @kind function -* @returns {void} -*/ -function refreshTooltip() { - var resizeList = document.getElementsByClassName("collapsibleData"); - document.getElementById("processorTooltipInfo").innerText = procInfo; - document.getElementById("xsltelementsheader").innerText = XSLTheader; -} - - - -/** -* A function that performs a request to the server. -* -* @function -* @name performRequest -* @kind function -* @param {any} endpoint of target service -* @param {any} checkXML enable checking for empty XML -* @param {any} checkTransform enable checking for empty transform data -* @returns {false | undefined} -*/ -function performRequest(endpoint, checkXML, checkTransform) { - const sourceId = "xmlArea"; - const transformId = "transformArea"; - var xmlData = document.getElementById(sourceId).innerText.trim(); - var transformData = document.getElementById(transformId).innerText.trim(); - - var backend = "java"; - if (getProcessor() == "libxml") { - backend = "libxml"; - } - - var empty = false; - if (defaultStrings.includes(xmlData) && checkXML) { - document.getElementById(sourceId).style.backgroundColor = color_red; - xmlData = ""; - empty = true; - } - if (defaultStrings.includes(transformData) && checkTransform) { - document.getElementById(transformId).style.backgroundColor = color_red; - empty = true; - } - if (!empty) { - restRequest(backend, endpoint, xmlData, transformData).then(function (result) { - document.getElementById("resultArea").innerText = result.result; - highlightSyntax("resultArea"); - document.getElementById("procinfo").innerText = ' Computed using ' + result.processor; - - - if (result.status == "OK") { - document.getElementById("procinfo").innerText += " (" + result.duration + "ms)"; - if (result.type) - document.getElementById("procinfo").innerText += ". Returned: " + result.type; - else - document.getElementById("procinfo").innerText += ". Engine doesn't support return of data types."; - procinfo.style.color = "#30aa58"; - } else { - procinfo.style.color = "#aa3030"; - } - }); - } else { - document.getElementById("resultArea").innerHTML = "No data provided!"; - return false; - } - -} - -/** -* Function that prepares data to send and handles response -* -* @function -* @name performFormatRequest -* @kind function -* @param {any} endpoint of target service -* @param {any} checkXML enable checking for empty XML -* @param {any} sourceId ID of element to get XML from -* @param {any} targetId ID of element to write formatted XML -* @returns {void} -*/ -function performFormatRequest(endpoint, checkXML, sourceId, targetId) { - const sourceElement = document.getElementById(sourceId); - const targetElement = document.getElementById(targetId); - const infoElement = document.getElementById("formatinfo"); - const backend = "libxml"; - var xmlData = sourceElement.innerText.trim(); - - var empty = false; - if (defaultStrings.includes(xmlData) && checkXML) { - sourceElement.style.backgroundColor = color_red; - xmlData = ""; - empty = true; - } - - if (!empty) { - restRequest(backend, endpoint, xmlData, "").then(function (result) { - if (result.status == "OK") { - targetElement.innerText = result.result.trim(); - highlightSyntax(targetElement.id); - - targetElement.style.backgroundColor = null; - infoElement.innerText = ' Computed'.concat(" in ", result.time, "ms."); - infoElement.style.color = "#30aa58"; - - } - else { - targetElement.style.backgroundColor = color_red; - infoElement.innerText = result.result; - infoElement.style.color = "#aa3030"; - } - - }); - } - - -} - - -/** -* Form REST request, send and return received data -* -* @async -* @function -* @name restRequest -* @kind function -* @param {any} backend target backend -* @param {any} endpoint of target service -* @param {any} xmlData XML that will be sent -* @param {any} transformData data used to transform given XML -* @returns {Promise} -*/ -async function restRequest(backend, endpoint, xmlData, transformData) { - - const addr = window.location.protocol + "//" + window.location.hostname + "/" + backend + "/" + endpoint; - - if (defaultStrings.includes(xmlData)) { - xmlData = ""; - } - - var jsonData = JSON.stringify({ - "data": xmlData, - "process": transformData, - "processor": getProcessor(), - "version": getVersion() - }); - var init = { - headers: new Headers({ - }), - body: jsonData, - // body: data, - method: "POST" - }; - var request = new Request(addr, init); - - - var result = await fetch(request).then(response => { - return response.text().then(function (text) { - return JSON.parse(text); - }); - - }); - return result; -} \ No newline at end of file diff --git a/Frontend/assets/scripts/tools/xmlFormatter.js b/Frontend/assets/scripts/tools/xmlFormatter.js deleted file mode 100644 index fef7d28..0000000 --- a/Frontend/assets/scripts/tools/xmlFormatter.js +++ /dev/null @@ -1,34 +0,0 @@ -/** - * This function is executed after the page is loaded. - * - * @function - * @name init - * @kind function - */ -function init() { - configurePastingInElement("xmlArea"); -} - -/** - * Function returns processor that will be used to transform XML. - * This solution allows to use one function for sending request from every tool - * - * @function - * @name getProcessor - * @kind function - */ -function getProcessor() { - return "libxml"; -} - -/** - * Function returns version of XML processor that will be used to transform XML. - * This solution allows to use one function for sending request from every tool - * - * @function - * @name getVersion - * @kind function - */ -function getVersion() { - return "1.0" -} \ No newline at end of file diff --git a/Frontend/assets/scripts/tools/xpath.js b/Frontend/assets/scripts/tools/xpath.js deleted file mode 100644 index ab5bff6..0000000 --- a/Frontend/assets/scripts/tools/xpath.js +++ /dev/null @@ -1,174 +0,0 @@ - -/** - * The `processVersionSelector()` function is responsible for updating the display of the web page - * based on the selected processor and version. - * - * @function - * @name processVersionSelector - * @kind function - * @returns {void} - */ -function processVersionSelector() { - var processor = getProcessor(); - var hideableOptions = document.getElementsByClassName("hideable"); - for (let i = 0; i < hideableOptions.length; i++) { - hideableOptions[i].style = "display: none;"; - } - if (processor == "xalan" || processor == "libxml") { - var xalanOptions = document.getElementsByClassName("xalan"); - for (let i = 0; i < xalanOptions.length; i++) { - xalanOptions[i].style = ""; - } - document.getElementById("versions").selectedIndex = 0; - } - else { - var saxonOptions = document.getElementsByClassName("saxon"); - for (let i = 0; i < saxonOptions.length; i++) { - saxonOptions[i].style = ""; - } - document.getElementById("versions").selectedIndex = 3; - - } - processTooltip(); - -} - -/** - * The `processTooltip()` function is responsible for updating the display of the tooltip based on the selected version of the processor. - * It shows or hides different sections of the tooltip based on the selected version. - * It also handles the click event on the form and updates the tooltip accordingly. - * - * @function - * @name processTooltip - * @kind function - */ -function processTooltip() { - var filter = "collapse" + getVersion(); - var collList; - - - if (filter == "collapse3.0") { - document.getElementById("tooltipFunctionInfo").innerText = "XPath 3.0 functions"; - hideList(document.getElementsByName("collapse10")); - hideList(document.getElementsByName("collapse20")); - showList(document.getElementsByName("collapse30")); - hideList(document.getElementsByName("collapse31")); - - } else if (filter == "collapse3.1") { - document.getElementById("tooltipFunctionInfo").innerText = "XPath 3.1 functions"; - hideList(document.getElementsByName("collapse10")); - hideList(document.getElementsByName("collapse20")); - hideList(document.getElementsByName("collapse30")); - showList(document.getElementsByName("collapse31")); - } else if (filter == "collapse2.0") { - document.getElementById("tooltipFunctionInfo").innerText = "XPath 2.0 functions"; - hideList(document.getElementsByName("collapse10")); - showList(document.getElementsByName("collapse20")); - hideList(document.getElementsByName("collapse30")); - hideList(document.getElementsByName("collapse31")); - } else { - document.getElementById("tooltipFunctionInfo").innerText = "XPath 1.0 functions"; - showList(document.getElementsByName("collapse10")); - hideList(document.getElementsByName("collapse20")); - hideList(document.getElementsByName("collapse30")); - hideList(document.getElementsByName("collapse31")); - - } -} - - - -/** - * This function is executed after the page is loaded. - * - * @function - * @name init - * @kind function - */ -function init() { - - // Make sure that only plain text is pasted - configurePastingInElement("xmlArea"); - configurePastingInElement("transformArea"); - - //Handle clicks in whole form and set info in tooltip - setDefaultContent(document.getElementById("xmlArea"), 'Insert XML here'); - setDefaultContent(document.getElementById("transformArea"), 'Insert XPath expression here'); - - processVersionSelector(); - processTooltip(); - tool.addEventListener('change', event => { - //Check if script was called from textarea or selector - var targetID = event.target.getAttribute('id'); - if (targetID == "processors") { - processVersionSelector(); - processTooltip(); - } - else if (targetID == "versions") { - processTooltip(); - } - - - }) - tool.addEventListener('click', event => { - //Check if script was called from textarea or selector - var targetID = event.target.getAttribute('id'); - if (targetID !== "xmlArea" && targetID !== "transformArea") { - return; - } - processTooltip(); - - }) - tool.addEventListener('change', event => { - //Check if script was called from textarea or selector - var targetID = event.target.getAttribute('id'); - if (targetID !== "xmlArea" && targetID !== "transformArea") { - return; - } - processTooltip(); - }) - - var triggerList = document.getElementsByClassName("collapseTrigger"); - for (i = 0; i < triggerList.length; i++) { - - triggerList[i].addEventListener("click", function () { - var collapsible = this.parentElement; - if (this.tagName == "A") { - var collapsibleData = this.nextElementSibling; - } else { - var collapsibleData = this.parentElement.nextElementSibling; - - } - - - if (collapsibleData.style.maxHeight > "0px") { - collapsibleData.style.maxHeight = "0px"; - - this.classList.toggle("active", false); - if (!this.classList.contains("collapsibleMini")) { - collapsible.classList.toggle("active", false); - } - - var subLists1 = collapsibleData.getElementsByClassName("content"); - var subLists2 = collapsibleData.getElementsByClassName("active"); - for (j = 0; j < subLists1.length; j++) { - subLists1[j].style.maxHeight = "0px"; - } - for (j = 0; j < subLists2.length; j++) { - subLists2[j].classList.toggle("active", false); - } - } else { - collapsibleData.style.maxHeight = (collapsibleData.scrollHeight) + "px"; - - this.classList.toggle("active", true); - if (!this.classList.contains("collapsibleMini")) { - collapsible.classList.toggle("active", true); - } else { - var parentContent = this.closest(".content"); - parentContent.style.maxHeight = (parentContent.scrollHeight + collapsibleData.scrollHeight) + "px"; - } - } - }); - } -} - diff --git a/Frontend/assets/scripts/tools/xquery.js b/Frontend/assets/scripts/tools/xquery.js deleted file mode 100644 index e723a8c..0000000 --- a/Frontend/assets/scripts/tools/xquery.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * This function is executed after the page is loaded. - * - * @function - * @name init - * @kind function - */ -function init() { - // Make sure that only plain text is pasted - configurePastingInElement("xmlArea"); - configurePastingInElement("transformArea"); - -} \ No newline at end of file diff --git a/Frontend/assets/scripts/tools/xsd.js b/Frontend/assets/scripts/tools/xsd.js deleted file mode 100644 index 62e5612..0000000 --- a/Frontend/assets/scripts/tools/xsd.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * This function is executed after the page is loaded. - * - * @function - * @name init - * @kind function - */ -function init() { - // Make sure that only plain text is pasted - configurePastingInElement("xmlArea"); - configurePastingInElement("transformArea"); - - //Handle clicks in whole form and set info in tooltip - setDefaultContent(document.getElementById("xmlArea"), 'Insert XML here'); - setDefaultContent(document.getElementById("transformArea"), 'Insert XSD here'); - - // refreshTooltip(); - processTooltip(); - tool.addEventListener('click', event => { - //Check if script was called from textarea or selector - var targetID = event.target.getAttribute('id'); - if (targetID !== "processors" && targetID !== "xmlArea" && targetID !== "transformArea" && targetID !== "versions") { - return; - } - - processTooltip(); - - }) -} - -/** - * The `processTooltip()` function is responsible for updating the display of the tooltip based on the selected version of the processor. - * It shows or hides different sections of the tooltip based on the selected version. - * It also handles the click event on the form and updates the tooltip accordingly. - * - * @function - * @name processTooltip - * @kind function - */ -function processTooltip() { - - if (getProcessor() == "xalan") { - document.getElementById("tooltipFunctionInfo").innerText = "XSLT 1.0 functions"; - document.getElementById("processorTooltipInfo").innerText = "Supports XSLT 1.0"; - hideList(document.getElementsByName("collapse30")); - } else { - document.getElementById("tooltipFunctionInfo").innerText = "XSLT 1.0, 2.0 & 3.0 functions"; - document.getElementById("processorTooltipInfo").innerText = "Supports XSLT up to 3.0"; - showList(document.getElementsByName("collapse30")); - } -} \ No newline at end of file diff --git a/Frontend/assets/scripts/tools/xslt.js b/Frontend/assets/scripts/tools/xslt.js deleted file mode 100644 index 4e61cb1..0000000 --- a/Frontend/assets/scripts/tools/xslt.js +++ /dev/null @@ -1,100 +0,0 @@ -/** - * The `processTooltip()` function is responsible for updating the display of the tooltip based on the selected version of the processor. - * It shows or hides different sections of the tooltip based on the selected version. - * It also handles the click event on the form and updates the tooltip accordingly. - * - * @function - * @name processTooltip - * @kind function - */ -function processTooltip() { - - if (getProcessor() == "xalan" || getProcessor() == "libxml") { - document.getElementById("tooltipFunctionInfo").innerText = "XSLT 1.0 functions"; - document.getElementById("processorTooltipInfo").innerText = "Supports XSLT 1.0"; - hideList(document.getElementsByName("collapse30")); - } else { - document.getElementById("tooltipFunctionInfo").innerText = "XSLT 1.0, 2.0 & 3.0 functions"; - document.getElementById("processorTooltipInfo").innerText = "Supports XSLT up to 3.0"; - showList(document.getElementsByName("collapse30")); - } -} - - -/** - * This function is executed after the page is loaded. - * - * @function - * @name init - * @kind function - */ -function init() { - // Make sure that only plain text is pasted - configurePastingInElement("xmlArea"); - configurePastingInElement("transformArea"); - - //Handle clicks in whole form and set info in tooltip - setDefaultContent(document.getElementById("xmlArea"), 'Insert XML here'); - setDefaultContent(document.getElementById("transformArea"), 'Insert XSLT here'); - - // refreshTooltip(); - processTooltip(); - tool.addEventListener('click', event => { - //Check if script was called from textarea or selector - var targetID = event.target.getAttribute('id'); - if (targetID !== "processors" && targetID !== "xmlArea" && targetID !== "transformArea" && targetID !== "versions") { - return; - } - - processTooltip(); - }) - - tool.addEventListener('change', event => { - //Check if script was called from textarea or selector - var targetID = event.target.getAttribute('id'); - if (targetID !== "processors") { - return; - } - - processTooltip(); - - }) - - var triggerList = document.getElementsByClassName("collapseTrigger"); - for (i = 0; i < triggerList.length; i++) { - - triggerList[i].addEventListener("click", function () { - - var collapsible = this.parentElement; - var collapsibleData = this.nextElementSibling; - if (collapsibleData.style.maxHeight > "0px") { - collapsibleData.style.maxHeight = "0px"; - - this.classList.toggle("active", false); - if (!this.classList.contains("collapsibleMini")) { - collapsible.classList.toggle("active", false); - } - - var subLists1 = collapsibleData.getElementsByClassName("content"); - var subLists2 = collapsibleData.getElementsByClassName("active"); - for (j = 0; j < subLists1.length; j++) { - subLists1[j].style.maxHeight = "0px"; - } - for (j = 0; j < subLists2.length; j++) { - subLists2[j].classList.toggle("active", false); - } - } else { - collapsibleData.style.maxHeight = (collapsibleData.scrollHeight) + "px"; - - this.classList.toggle("active", true); - if (!this.classList.contains("collapsibleMini")) { - collapsible.classList.toggle("active", true); - } else { - var parentContent = this.closest(".content"); - parentContent.style.maxHeight = (parentContent.scrollHeight + collapsibleData.scrollHeight) + "px"; - } - } - }); - } - -} \ No newline at end of file diff --git a/Frontend/common.css b/Frontend/common.css deleted file mode 100644 index 492ef0f..0000000 --- a/Frontend/common.css +++ /dev/null @@ -1,6 +0,0 @@ -@import url('https://necolas.github.io/normalize.css/8.0.1/normalize.css'); -@import url('Frontend/css/r11addons.css'); -@import url('Frontend/css/r11tables.css'); -@import url('Frontend/css/r11tool.css'); -@import url('Frontend/css/r11tooltip.css'); -@import url('Frontend/css/r11modal.css'); diff --git a/Frontend/env.d.ts b/Frontend/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/Frontend/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/Frontend/index.html b/Frontend/index.html index 1e7b80a..4e362b1 100644 --- a/Frontend/index.html +++ b/Frontend/index.html @@ -1,58 +1,13 @@ - - - - - - - - - Release11 Web Tools - - + + - - - - - -
-
-
- - -
- -
- - - + + + Release11 Tools + + +
+ + diff --git a/Frontend/insert_version.sh b/Frontend/insert_version.sh deleted file mode 100644 index 9962202..0000000 --- a/Frontend/insert_version.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -input="$(date +'%Y-%m-%d %H:%M')" - -sed -i "s/\[\:VERSION\:\]/$input/g" /usr/share/nginx/html/index.html \ No newline at end of file diff --git a/Frontend/lawful/privacy-policy.html b/Frontend/lawful/privacy-policy.html deleted file mode 100644 index a3c4061..0000000 --- a/Frontend/lawful/privacy-policy.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - -
-

Lorem ipsum

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Nullam ac tortor vitae purus. Felis imperdiet proin fermentum leo. Donec adipiscing tristique risus nec feugiat in fermentum. Etiam dignissim diam quis enim lobortis. Amet dictum sit amet justo donec. Leo integer malesuada nunc vel risus commodo. Scelerisque purus semper eget duis at tellus. In ornare quam viverra orci sagittis. Ultrices tincidunt arcu non sodales neque sodales.

- -

Congue nisi vitae

-

Congue nisi vitae suscipit tellus mauris a diam. Ullamcorper velit sed ullamcorper morbi tincidunt ornare massa eget egestas. Scelerisque eu ultrices vitae auctor eu augue. Sit amet mauris commodo quis imperdiet massa tincidunt nunc pulvinar. Et magnis dis parturient montes nascetur. Imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Quisque non tellus orci ac auctor. Tempor orci eu lobortis elementum nibh tellus molestie nunc. Purus in massa tempor nec feugiat nisl. Ultrices eros in cursus turpis. Feugiat scelerisque varius morbi enim nunc faucibus a pellentesque sit. Diam sit amet nisl suscipit adipiscing bibendum est ultricies. Egestas quis ipsum suspendisse ultrices gravida dictum fusce ut placerat. Et molestie ac feugiat sed. Ut tortor pretium viverra suspendisse potenti. Malesuada bibendum arcu vitae elementum curabitur vitae nunc.

- -

Interdum posuere lorem ipsum dolor sit amet. Amet porttitor eget dolor morbi non. Nulla pellentesque dignissim enim sit amet. Volutpat lacus laoreet non curabitur. Lectus quam id leo in vitae turpis massa. Facilisis sed odio morbi quis commodo odio aenean. Posuere lorem ipsum dolor sit. Tempor commodo ullamcorper a lacus. Metus vulputate eu scelerisque felis imperdiet proin fermentum leo. Aliquam sem fringilla ut morbi tincidunt augue interdum. Tellus mauris a diam maecenas sed enim ut sem. Placerat in egestas erat imperdiet sed euismod nisi porta lorem. Pellentesque id nibh tortor id aliquet lectus proin. A cras semper auctor neque vitae. Non curabitur gravida arcu ac. Netus et malesuada fames ac turpis. Nulla porttitor massa id neque aliquam. Aliquam nulla facilisi cras fermentum odio eu. Cras ornare arcu dui vivamus arcu felis bibendum ut. Non enim praesent elementum facilisis leo.

- -

Lectus arcu bibendum at varius. Vestibulum lectus mauris ultrices eros in cursus turpis massa tincidunt. Libero nunc consequat interdum varius sit amet mattis vulputate enim. Facilisis leo vel fringilla est. Eros in cursus turpis massa tincidunt dui ut ornare. In mollis nunc sed id semper risus. Morbi tincidunt ornare massa eget egestas purus. Libero volutpat sed cras ornare. Sit amet commodo nulla facilisi nullam vehicula ipsum a. Viverra suspendisse potenti nullam ac tortor. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Vitae semper quis lectus nulla. Nunc sed blandit libero volutpat sed cras. Morbi tristique senectus et netus et malesuada fames. Pretium quam vulputate dignissim suspendisse in. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet.

- -

Nec sagittis aliquam malesuada bibendum. In ante metus dictum at tempor commodo ullamcorper. Nec sagittis aliquam malesuada bibendum arcu vitae elementum. Diam phasellus vestibulum lorem sed risus. Diam maecenas ultricies mi eget mauris pharetra et ultrices neque. Amet volutpat consequat mauris nunc congue nisi vitae suscipit tellus. Quam nulla porttitor massa id neque. Dictum non consectetur a erat nam. At consectetur lorem donec massa sapien faucibus. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo nec. Non enim praesent elementum facilisis leo vel. Rhoncus urna neque viverra justo nec ultrices dui sapien eget.

- -

Amet facilisis

-

Amet facilisis magna etiam tempor. Vestibulum rhoncus est pellentesque elit. Fames ac turpis egestas integer eget. Dapibus ultrices in iaculis nunc. Sed turpis tincidunt id aliquet risus feugiat in. Et netus et malesuada fames ac. Amet massa vitae tortor condimentum lacinia. Felis eget nunc lobortis mattis aliquam faucibus purus. Nibh sed pulvinar proin gravida hendrerit lectus. Varius morbi enim nunc faucibus a pellentesque sit. Aliquam sem fringilla ut morbi. Sed nisi lacus sed viverra tellus in hac. Quis eleifend quam adipiscing vitae proin sagittis nisl rhoncus. Enim blandit volutpat maecenas volutpat blandit aliquam etiam. Fermentum iaculis eu non diam phasellus vestibulum lorem sed risus. Massa id neque aliquam vestibulum morbi. Enim diam vulputate ut pharetra. Orci sagittis eu volutpat odio facilisis.

- -

Sit amet cursus sit amet. Odio ut enim blandit volutpat maecenas volutpat blandit aliquam etiam. Amet est placerat in egestas erat imperdiet sed euismod nisi. Mattis vulputate enim nulla aliquet porttitor. At risus viverra adipiscing at in tellus integer. Sed viverra ipsum nunc aliquet. Dignissim cras tincidunt lobortis feugiat vivamus at augue eget arcu. Euismod elementum nisi quis eleifend quam adipiscing vitae proin sagittis. Placerat in egestas erat imperdiet sed. Eleifend donec pretium vulputate sapien nec. Ipsum dolor sit amet consectetur adipiscing.

- -

Morbi tristique senectus et netus et malesuada fames ac. Feugiat nibh sed pulvinar proin gravida hendrerit lectus. Amet purus gravida quis blandit turpis cursus in hac. Nulla aliquet enim tortor at auctor. Nulla facilisi etiam dignissim diam. Consequat nisl vel pretium lectus quam id leo. Enim neque volutpat ac tincidunt vitae semper. Tristique nulla aliquet enim tortor at. Eu mi bibendum neque egestas congue quisque egestas diam. Est ante in nibh mauris cursus. Felis bibendum ut tristique et. Tristique nulla aliquet enim tortor at. Non curabitur gravida arcu ac tortor dignissim convallis aenean. Eleifend donec pretium vulputate sapien nec. Massa tempor nec feugiat nisl pretium fusce id. Nulla facilisi morbi tempus iaculis urna id. Ornare suspendisse sed nisi lacus sed viverra tellus in.

- -

Morbi non arcu risus quis varius quam. Rhoncus est pellentesque elit ullamcorper dignissim cras. Gravida rutrum quisque non tellus orci ac auctor augue. Consequat semper viverra nam libero justo laoreet sit amet. Pellentesque habitant morbi tristique senectus et netus et malesuada. Ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Quisque sagittis purus sit amet volutpat consequat mauris nunc congue. Sed tempus urna et pharetra pharetra massa massa ultricies mi. Quis lectus nulla at volutpat diam ut venenatis. Amet porttitor eget dolor morbi non arcu. Massa tincidunt dui ut ornare lectus sit amet est placerat. Odio tempor orci dapibus ultrices in iaculis nunc sed augue. Vitae turpis massa sed elementum tempus egestas sed. Velit egestas dui id ornare arcu odio. Scelerisque felis imperdiet proin fermentum leo vel orci porta non. Arcu bibendum at varius vel pharetra. Sapien eget mi proin sed libero enim. Tempus imperdiet nulla malesuada pellentesque elit eget. Semper auctor neque vitae tempus. Dolor magna eget est lorem ipsum.

- -

Augue neque gravida in fermentum et sollicitudin ac orci phasellus. Est placerat in egestas erat imperdiet sed euismod nisi. Aliquet risus feugiat in ante metus dictum at tempor commodo. Ultricies integer quis auctor elit sed vulputate. Aliquet risus feugiat in ante metus dictum. Accumsan lacus vel facilisis volutpat est velit. Augue mauris augue neque gravida in fermentum et sollicitudin. Vel quam elementum pulvinar etiam. Amet aliquam id diam maecenas ultricies mi. Elit pellentesque habitant morbi tristique senectus et. Habitant morbi tristique senectus et netus et malesuada fames. Nisl nisi scelerisque eu ultrices. Morbi tristique senectus et netus. Et malesuada fames ac turpis egestas. Magna ac placerat vestibulum lectus mauris ultrices eros in cursus. Dis parturient montes nascetur ridiculus.

-
- - - diff --git a/Frontend/lawful/terms-of-service.html b/Frontend/lawful/terms-of-service.html deleted file mode 100644 index a3c4061..0000000 --- a/Frontend/lawful/terms-of-service.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - -
-

Lorem ipsum

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Nullam ac tortor vitae purus. Felis imperdiet proin fermentum leo. Donec adipiscing tristique risus nec feugiat in fermentum. Etiam dignissim diam quis enim lobortis. Amet dictum sit amet justo donec. Leo integer malesuada nunc vel risus commodo. Scelerisque purus semper eget duis at tellus. In ornare quam viverra orci sagittis. Ultrices tincidunt arcu non sodales neque sodales.

- -

Congue nisi vitae

-

Congue nisi vitae suscipit tellus mauris a diam. Ullamcorper velit sed ullamcorper morbi tincidunt ornare massa eget egestas. Scelerisque eu ultrices vitae auctor eu augue. Sit amet mauris commodo quis imperdiet massa tincidunt nunc pulvinar. Et magnis dis parturient montes nascetur. Imperdiet dui accumsan sit amet nulla facilisi morbi tempus. Quisque non tellus orci ac auctor. Tempor orci eu lobortis elementum nibh tellus molestie nunc. Purus in massa tempor nec feugiat nisl. Ultrices eros in cursus turpis. Feugiat scelerisque varius morbi enim nunc faucibus a pellentesque sit. Diam sit amet nisl suscipit adipiscing bibendum est ultricies. Egestas quis ipsum suspendisse ultrices gravida dictum fusce ut placerat. Et molestie ac feugiat sed. Ut tortor pretium viverra suspendisse potenti. Malesuada bibendum arcu vitae elementum curabitur vitae nunc.

- -

Interdum posuere lorem ipsum dolor sit amet. Amet porttitor eget dolor morbi non. Nulla pellentesque dignissim enim sit amet. Volutpat lacus laoreet non curabitur. Lectus quam id leo in vitae turpis massa. Facilisis sed odio morbi quis commodo odio aenean. Posuere lorem ipsum dolor sit. Tempor commodo ullamcorper a lacus. Metus vulputate eu scelerisque felis imperdiet proin fermentum leo. Aliquam sem fringilla ut morbi tincidunt augue interdum. Tellus mauris a diam maecenas sed enim ut sem. Placerat in egestas erat imperdiet sed euismod nisi porta lorem. Pellentesque id nibh tortor id aliquet lectus proin. A cras semper auctor neque vitae. Non curabitur gravida arcu ac. Netus et malesuada fames ac turpis. Nulla porttitor massa id neque aliquam. Aliquam nulla facilisi cras fermentum odio eu. Cras ornare arcu dui vivamus arcu felis bibendum ut. Non enim praesent elementum facilisis leo.

- -

Lectus arcu bibendum at varius. Vestibulum lectus mauris ultrices eros in cursus turpis massa tincidunt. Libero nunc consequat interdum varius sit amet mattis vulputate enim. Facilisis leo vel fringilla est. Eros in cursus turpis massa tincidunt dui ut ornare. In mollis nunc sed id semper risus. Morbi tincidunt ornare massa eget egestas purus. Libero volutpat sed cras ornare. Sit amet commodo nulla facilisi nullam vehicula ipsum a. Viverra suspendisse potenti nullam ac tortor. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Vitae semper quis lectus nulla. Nunc sed blandit libero volutpat sed cras. Morbi tristique senectus et netus et malesuada fames. Pretium quam vulputate dignissim suspendisse in. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet.

- -

Nec sagittis aliquam malesuada bibendum. In ante metus dictum at tempor commodo ullamcorper. Nec sagittis aliquam malesuada bibendum arcu vitae elementum. Diam phasellus vestibulum lorem sed risus. Diam maecenas ultricies mi eget mauris pharetra et ultrices neque. Amet volutpat consequat mauris nunc congue nisi vitae suscipit tellus. Quam nulla porttitor massa id neque. Dictum non consectetur a erat nam. At consectetur lorem donec massa sapien faucibus. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo nec. Non enim praesent elementum facilisis leo vel. Rhoncus urna neque viverra justo nec ultrices dui sapien eget.

- -

Amet facilisis

-

Amet facilisis magna etiam tempor. Vestibulum rhoncus est pellentesque elit. Fames ac turpis egestas integer eget. Dapibus ultrices in iaculis nunc. Sed turpis tincidunt id aliquet risus feugiat in. Et netus et malesuada fames ac. Amet massa vitae tortor condimentum lacinia. Felis eget nunc lobortis mattis aliquam faucibus purus. Nibh sed pulvinar proin gravida hendrerit lectus. Varius morbi enim nunc faucibus a pellentesque sit. Aliquam sem fringilla ut morbi. Sed nisi lacus sed viverra tellus in hac. Quis eleifend quam adipiscing vitae proin sagittis nisl rhoncus. Enim blandit volutpat maecenas volutpat blandit aliquam etiam. Fermentum iaculis eu non diam phasellus vestibulum lorem sed risus. Massa id neque aliquam vestibulum morbi. Enim diam vulputate ut pharetra. Orci sagittis eu volutpat odio facilisis.

- -

Sit amet cursus sit amet. Odio ut enim blandit volutpat maecenas volutpat blandit aliquam etiam. Amet est placerat in egestas erat imperdiet sed euismod nisi. Mattis vulputate enim nulla aliquet porttitor. At risus viverra adipiscing at in tellus integer. Sed viverra ipsum nunc aliquet. Dignissim cras tincidunt lobortis feugiat vivamus at augue eget arcu. Euismod elementum nisi quis eleifend quam adipiscing vitae proin sagittis. Placerat in egestas erat imperdiet sed. Eleifend donec pretium vulputate sapien nec. Ipsum dolor sit amet consectetur adipiscing.

- -

Morbi tristique senectus et netus et malesuada fames ac. Feugiat nibh sed pulvinar proin gravida hendrerit lectus. Amet purus gravida quis blandit turpis cursus in hac. Nulla aliquet enim tortor at auctor. Nulla facilisi etiam dignissim diam. Consequat nisl vel pretium lectus quam id leo. Enim neque volutpat ac tincidunt vitae semper. Tristique nulla aliquet enim tortor at. Eu mi bibendum neque egestas congue quisque egestas diam. Est ante in nibh mauris cursus. Felis bibendum ut tristique et. Tristique nulla aliquet enim tortor at. Non curabitur gravida arcu ac tortor dignissim convallis aenean. Eleifend donec pretium vulputate sapien nec. Massa tempor nec feugiat nisl pretium fusce id. Nulla facilisi morbi tempus iaculis urna id. Ornare suspendisse sed nisi lacus sed viverra tellus in.

- -

Morbi non arcu risus quis varius quam. Rhoncus est pellentesque elit ullamcorper dignissim cras. Gravida rutrum quisque non tellus orci ac auctor augue. Consequat semper viverra nam libero justo laoreet sit amet. Pellentesque habitant morbi tristique senectus et netus et malesuada. Ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Quisque sagittis purus sit amet volutpat consequat mauris nunc congue. Sed tempus urna et pharetra pharetra massa massa ultricies mi. Quis lectus nulla at volutpat diam ut venenatis. Amet porttitor eget dolor morbi non arcu. Massa tincidunt dui ut ornare lectus sit amet est placerat. Odio tempor orci dapibus ultrices in iaculis nunc sed augue. Vitae turpis massa sed elementum tempus egestas sed. Velit egestas dui id ornare arcu odio. Scelerisque felis imperdiet proin fermentum leo vel orci porta non. Arcu bibendum at varius vel pharetra. Sapien eget mi proin sed libero enim. Tempus imperdiet nulla malesuada pellentesque elit eget. Semper auctor neque vitae tempus. Dolor magna eget est lorem ipsum.

- -

Augue neque gravida in fermentum et sollicitudin ac orci phasellus. Est placerat in egestas erat imperdiet sed euismod nisi. Aliquet risus feugiat in ante metus dictum at tempor commodo. Ultricies integer quis auctor elit sed vulputate. Aliquet risus feugiat in ante metus dictum. Accumsan lacus vel facilisis volutpat est velit. Augue mauris augue neque gravida in fermentum et sollicitudin. Vel quam elementum pulvinar etiam. Amet aliquam id diam maecenas ultricies mi. Elit pellentesque habitant morbi tristique senectus et. Habitant morbi tristique senectus et netus et malesuada fames. Nisl nisi scelerisque eu ultrices. Morbi tristique senectus et netus. Et malesuada fames ac turpis egestas. Magna ac placerat vestibulum lectus mauris ultrices eros in cursus. Dis parturient montes nascetur ridiculus.

-
- - - diff --git a/Frontend/package-lock.json b/Frontend/package-lock.json new file mode 100644 index 0000000..386461c --- /dev/null +++ b/Frontend/package-lock.json @@ -0,0 +1,3842 @@ +{ + "name": "new-frontend", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "new-frontend", + "version": "0.0.0", + "dependencies": { + "vue": "^3.3.4", + "vue-router": "^4.2.2" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.2.0", + "@tsconfig/node18": "^2.0.1", + "@types/node": "^18.16.17", + "@vitejs/plugin-vue": "^4.2.3", + "@vue/eslint-config-prettier": "^7.1.0", + "@vue/eslint-config-typescript": "^11.0.3", + "@vue/tsconfig": "^0.4.0", + "eslint": "^8.39.0", + "eslint-plugin-vue": "^9.11.0", + "npm-run-all": "^4.1.5", + "prettier": "^2.8.8", + "typescript": "~5.0.4", + "vite": "^4.3.9", + "vue-tsc": "^1.6.5" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", + "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz", + "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.1.tgz", + "integrity": "sha512-RkmuBcqiNioeeBKbgzMlOdreUkJfYaSjwgx9XDgGGpjvWgyaxWvDmZVSN9CS6LjEASadhgPv2BcFp+SeouWXXA==", + "dev": true + }, + "node_modules/@tsconfig/node18": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-2.0.1.tgz", + "integrity": "sha512-UqdfvuJK0SArA2CxhKWwwAWfnVSXiYe63bVpMutc27vpngCntGUZQETO24pEJ46zU6XM+7SpqYoMgcO3bM11Ew==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.16.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.18.tgz", + "integrity": "sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.11.tgz", + "integrity": "sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.11", + "@typescript-eslint/type-utils": "5.59.11", + "@typescript-eslint/utils": "5.59.11", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.11.tgz", + "integrity": "sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.59.11", + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/typescript-estree": "5.59.11", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.11.tgz", + "integrity": "sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/visitor-keys": "5.59.11" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.11.tgz", + "integrity": "sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.59.11", + "@typescript-eslint/utils": "5.59.11", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.11.tgz", + "integrity": "sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.11.tgz", + "integrity": "sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/visitor-keys": "5.59.11", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.11.tgz", + "integrity": "sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.11", + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/typescript-estree": "5.59.11", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.11.tgz", + "integrity": "sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.11", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz", + "integrity": "sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.4.1.tgz", + "integrity": "sha512-EIY+Swv+TjsWpxOxujjMf1ZXqOjg9MT2VMXZ+1dKva0wD8W0L6EtptFFcCJdBbcKmGMFkr57Qzz9VNMWhs3jXQ==", + "dev": true, + "dependencies": { + "@volar/source-map": "1.4.1" + } + }, + "node_modules/@volar/source-map": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.4.1.tgz", + "integrity": "sha512-bZ46ad72dsbzuOWPUtJjBXkzSQzzSejuR3CT81+GvTEI2E994D8JPXzM3tl98zyCNnjgs4OkRyliImL1dvJ5BA==", + "dev": true, + "dependencies": { + "muggle-string": "^0.2.2" + } + }, + "node_modules/@volar/typescript": { + "version": "1.4.1-patch.2", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.4.1-patch.2.tgz", + "integrity": "sha512-lPFYaGt8OdMEzNGJJChF40uYqMO4Z/7Q9fHPQC/NRVtht43KotSXLrkPandVVMf9aPbiJ059eAT+fwHGX16k4w==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.4.1" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@volar/vue-language-core": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@volar/vue-language-core/-/vue-language-core-1.6.5.tgz", + "integrity": "sha512-IF2b6hW4QAxfsLd5mePmLgtkXzNi+YnH6ltCd80gb7+cbdpFMjM1I+w+nSg2kfBTyfu+W8useCZvW89kPTBpzg==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.4.1", + "@volar/source-map": "1.4.1", + "@vue/compiler-dom": "^3.3.0", + "@vue/compiler-sfc": "^3.3.0", + "@vue/reactivity": "^3.3.0", + "@vue/shared": "^3.3.0", + "minimatch": "^9.0.0", + "muggle-string": "^0.2.2", + "vue-template-compiler": "^2.7.14" + } + }, + "node_modules/@volar/vue-language-core/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@volar/vue-language-core/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@volar/vue-typescript": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-1.6.5.tgz", + "integrity": "sha512-er9rVClS4PHztMUmtPMDTl+7c7JyrxweKSAEe/o/Noeq2bQx6v3/jZHVHBe8ZNUti5ubJL/+Tg8L3bzmlalV8A==", + "dev": true, + "dependencies": { + "@volar/typescript": "1.4.1-patch.2", + "@volar/vue-language-core": "1.6.5" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", + "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "dependencies": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", + "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "dependencies": { + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", + "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-ssr": "3.3.4", + "@vue/reactivity-transform": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", + "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", + "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" + }, + "node_modules/@vue/eslint-config-prettier": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz", + "integrity": "sha512-Pv/lVr0bAzSIHLd9iz0KnvAr4GKyCEl+h52bc4e5yWuDVtLgFwycF7nrbWTAQAS+FU6q1geVd07lc6EWfJiWKQ==", + "dev": true, + "dependencies": { + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0" + }, + "peerDependencies": { + "eslint": ">= 7.28.0", + "prettier": ">= 2.0.0" + } + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", + "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.59.1", + "@typescript-eslint/parser": "^5.59.1", + "vue-eslint-parser": "^9.1.1" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", + "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "dependencies": { + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", + "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", + "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "dependencies": { + "@vue/reactivity": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", + "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "dependencies": { + "@vue/runtime-core": "3.3.4", + "@vue/shared": "3.3.4", + "csstype": "^3.1.1" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", + "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "dependencies": { + "@vue/compiler-ssr": "3.3.4", + "@vue/shared": "3.3.4" + }, + "peerDependencies": { + "vue": "3.3.4" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", + "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" + }, + "node_modules/@vue/tsconfig": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", + "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "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.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz", + "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.42.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.14.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.14.1.tgz", + "integrity": "sha512-LQazDB1qkNEKejLe/b5a9VfEbtbczcOaui5lQ4Qw0tbRBbQYREyxxOV5BQgNDTqGPs9pxqiEpbMi9ywuIaF7vw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.3.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.3.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/muggle-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.2.2.tgz", + "integrity": "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.4.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", + "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.1.tgz", + "integrity": "sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "dev": true + }, + "node_modules/string.prototype.padend": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", + "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", + "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", + "dev": true, + "dependencies": { + "esbuild": "^0.17.5", + "postcss": "^8.4.23", + "rollup": "^3.21.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", + "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-sfc": "3.3.4", + "@vue/runtime-dom": "3.3.4", + "@vue/server-renderer": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz", + "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-router": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.2.tgz", + "integrity": "sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", + "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.6.5.tgz", + "integrity": "sha512-Wtw3J7CC+JM2OR56huRd5iKlvFWpvDiU+fO1+rqyu4V2nMTotShz4zbOZpW5g9fUOcjnyZYfBo5q5q+D/q27JA==", + "dev": true, + "dependencies": { + "@volar/vue-language-core": "1.6.5", + "@volar/vue-typescript": "1.6.5", + "semver": "^7.3.8" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/Frontend/package.json b/Frontend/package.json new file mode 100644 index 0000000..6bd4163 --- /dev/null +++ b/Frontend/package.json @@ -0,0 +1,34 @@ +{ + "name": "new-frontend", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "run-p type-check build-only", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false", + "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", + "format": "prettier --write src/" + }, + "dependencies": { + "vue": "^3.3.4", + "vue-router": "^4.2.2" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.2.0", + "@tsconfig/node18": "^2.0.1", + "@types/node": "^18.16.17", + "@vitejs/plugin-vue": "^4.2.3", + "@vue/eslint-config-prettier": "^7.1.0", + "@vue/eslint-config-typescript": "^11.0.3", + "@vue/tsconfig": "^0.4.0", + "eslint": "^8.39.0", + "eslint-plugin-vue": "^9.11.0", + "npm-run-all": "^4.1.5", + "prettier": "^2.8.8", + "typescript": "~5.0.4", + "vite": "^4.3.9", + "vue-tsc": "^1.6.5" + } +} diff --git a/Frontend/assets/images/favicon.ico b/Frontend/public/favicon.ico similarity index 100% rename from Frontend/assets/images/favicon.ico rename to Frontend/public/favicon.ico diff --git a/Frontend/src/App.vue b/Frontend/src/App.vue new file mode 100644 index 0000000..d9dd349 --- /dev/null +++ b/Frontend/src/App.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/Frontend/src/components/FormatterComponent.vue b/Frontend/src/components/FormatterComponent.vue new file mode 100644 index 0000000..f5ef774 --- /dev/null +++ b/Frontend/src/components/FormatterComponent.vue @@ -0,0 +1,10 @@ + + + + + diff --git a/Frontend/src/components/LandingComponent.vue b/Frontend/src/components/LandingComponent.vue new file mode 100644 index 0000000..b3c0bde --- /dev/null +++ b/Frontend/src/components/LandingComponent.vue @@ -0,0 +1,9 @@ + + + + + diff --git a/Frontend/src/components/RestMockComponent.vue b/Frontend/src/components/RestMockComponent.vue new file mode 100644 index 0000000..25212f2 --- /dev/null +++ b/Frontend/src/components/RestMockComponent.vue @@ -0,0 +1,10 @@ + + + + + diff --git a/Frontend/src/components/XmlToolComponent.vue b/Frontend/src/components/XmlToolComponent.vue new file mode 100644 index 0000000..e9bd4cf --- /dev/null +++ b/Frontend/src/components/XmlToolComponent.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/Frontend/src/main.ts b/Frontend/src/main.ts new file mode 100644 index 0000000..b06cdcf --- /dev/null +++ b/Frontend/src/main.ts @@ -0,0 +1,5 @@ +import { createApp } from 'vue'; +import router from "./router"; +import App from './App.vue'; + +createApp(App).use(router).mount('#app') diff --git a/Frontend/src/router/index.ts b/Frontend/src/router/index.ts new file mode 100644 index 0000000..323644f --- /dev/null +++ b/Frontend/src/router/index.ts @@ -0,0 +1,38 @@ +import { createRouter, createWebHistory } from 'vue-router' + +const landingPage = import("@views/LandingView.vue") +const xmlTool = import("@views/XmlToolView.vue") +const restMock = import("@views/RestMockView.vue") +const formatter = import("@views/FormatterView.vue") + +const routes = [ + { + path: '/', + name: 'landing', + component: () => landingPage + }, + { + path: '/xml', + name: 'xmltool', + component: () => xmlTool + }, + { + path: '/restmock', + name: 'restmock', + component: () => restMock + }, + { + path: '/formatter', + name: 'formatter', + component: () => formatter + }, +] + + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: routes +}) + + +export default router; \ No newline at end of file diff --git a/Frontend/src/shims-vue.d.ts b/Frontend/src/shims-vue.d.ts new file mode 100644 index 0000000..cd04b72 --- /dev/null +++ b/Frontend/src/shims-vue.d.ts @@ -0,0 +1 @@ +declare module '*.vue'; \ No newline at end of file diff --git a/Frontend/src/views/FormatterView.vue b/Frontend/src/views/FormatterView.vue new file mode 100644 index 0000000..4e18d79 --- /dev/null +++ b/Frontend/src/views/FormatterView.vue @@ -0,0 +1,14 @@ + + + + + diff --git a/Frontend/src/views/LandingView.vue b/Frontend/src/views/LandingView.vue new file mode 100644 index 0000000..73891f8 --- /dev/null +++ b/Frontend/src/views/LandingView.vue @@ -0,0 +1,15 @@ + + + + + diff --git a/Frontend/src/views/RestMockView.vue b/Frontend/src/views/RestMockView.vue new file mode 100644 index 0000000..769a8b5 --- /dev/null +++ b/Frontend/src/views/RestMockView.vue @@ -0,0 +1,14 @@ + + + + + diff --git a/Frontend/src/views/XmlToolView.vue b/Frontend/src/views/XmlToolView.vue new file mode 100644 index 0000000..b86e201 --- /dev/null +++ b/Frontend/src/views/XmlToolView.vue @@ -0,0 +1,14 @@ + + + + + diff --git a/Frontend/tools/jsonFormatter.html b/Frontend/tools/jsonFormatter.html deleted file mode 100644 index 59eee48..0000000 --- a/Frontend/tools/jsonFormatter.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - -
-
-
-
-

Online JSON Formatter

-
- -
-
-
- Insert your JSON: -
- -
- - -
-
-
-              {"enter": "your", "json": "here"}
-          
- - - - -
-
- -
-

What is this?

-

This tool has 2 main functions: -

    -
  • Prettify JSON to make it human-readable (add indentation etc.)
  • -
  • Minimize JSON to make it more compact (exactly opposite to above)
  • -
-

-
- -
- - diff --git a/Frontend/tools/mock.html b/Frontend/tools/mock.html deleted file mode 100644 index 68ef091..0000000 --- a/Frontend/tools/mock.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - R11 MockedServices - - - - - - - - -
-
-
-
-

MockedServices

-
-
- -

Your Message

- - -
- - - -
-
- -
- -
- - - - -
- -
- - - - -
-
-
- -
-
- -
- - -
- - - -
- -
- - -
- -
- -
- - - - - - - - - - - - - - - - - - - - -
NameValue
-
- -
-
- - -
- - - - - - - - - - - -
TimestampMethodRequest BodyHeaders
-
-
-
-
-
-
-
-
-
-
-

What's this?

-

MockedServices is a tool that allows developer to create, in easy and simple way, http server mocked endpoints for integration tests.

-

Help

-

When cursor hovers over an item. It's description is displayed below.

-
-
-

Link

-

Link is an url representing an endpoint at which you can receive your mocked response by simply sending get request.

-
-
-
-
-

Save button!

-

To save message, the message must be changed!

-
-
- -
-
-
-
-

Http Status

-

Value of the field is corresponding to status value that server will return.

-
-
-
-
-

Content Type

-

Value of the field describes content of body payload contained in the response. For example if content is in xml format the value should be "application/xml" or "text/xml"

-
-
-
-
-

Body

-

Value of the field describes content of response body. It's basicly the message we want server to return. If it's simple response like 200 OK or 404 not found then field might be left empty.

-
-
-
-
-

Headers

-

Content of this tab allows to set and modify headers that will be included in the response.

-
-
-
-
-

History

-

Content of this tab displays the history of requests or responses received/sent to the endpoint

-
-
-
-
-

New header

-

Insert value in the field and press the plus icon to add a new header to the message.

-
-
-
-
-
-
- - - - - - - - - - - - - diff --git a/Frontend/tools/xmlFormatter.html b/Frontend/tools/xmlFormatter.html deleted file mode 100644 index a200e44..0000000 --- a/Frontend/tools/xmlFormatter.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - -
-
-
-
-

Online XML Formatter

-
- - -
-
-
- -
-
- - -
- -
- -
-

- - - -
-
-
-

What is this?

-

This tool has 2 main functions: -

    -
  • Prettify XML to make it human-readable (add indentation etc.)
  • -
  • Minimize XML to make it more compact (exactly opposite to above)
  • -
-

-
- - - -
- - - - diff --git a/Frontend/tools/xpath.html b/Frontend/tools/xpath.html deleted file mode 100644 index 6a6fc3c..0000000 --- a/Frontend/tools/xpath.html +++ /dev/null @@ -1,17121 +0,0 @@ - - - - - - - - - - - - - - - - - - -
-
-
-
-

Online XPath tester

-
- -
-
- -
- - -
-
- - - -
-
-
- -
-
- -
-
- -
- -
- -
-
-
-

What is XPath?

-

- XPath is a query language used for selecting nodes from XML and processing them.
- It may perform operations on strings, numbers and boolean values.
-

-

-

Semantics legend:

-

- "+" - 1 or more elements -

-

- "*" - 0 or more elements -

-

- "?" - optional element -

-

- - -
- - - -
-

XPath 2.0 introduced many new features XQuery-cośtam:
- - Added support for all XML simple types
- - Many new functions (tripled instruction count)
- - All expressions evaluate to sequence
- - Introduces conditional expressions and for-loops
-

-

XPath 3.0
- - Dynamic function calls (function may be called without being referenced by name (find - function in collection and call)
- - Inline functions
- - Namespace literals - Namespace may be embedded into function name
- - Support for union types - collections containing elements of different types
- - Mapping operator - '!' performs evaluation for each element in sequence and - concatenates results
- - Introduced maps
-

-

XPath 3.1
- - New operator for function chaining '=>'
- - Introduced maps that store data in pair 'key:value' - 'map{ key : value, key : value - }'
- - Introduced arrays - they differ from sequences in that they can be nested 'array{1, 5, 7, - (10 to 20)}'
- -

-
-
- -

XPath 1.0 & 2.0 functions

- - - - -
- - - -
- fn:position() -
- Returns the position of the current context node.
-
- W3C Documentation reference: Node-Set-Functions -
- - fn:last() -
- The last function returns a number equal to the context size from the expression evaluation context.
-
- W3C Documentation reference: Node-Set-Functions -
- - - fn:count() -
- Returns the number of nodes in the node-set
- Arguments: - - - - - - - - - -
TypeDescription
node-setNode-set to count nodes in
Examples:
- - - - - - - - - - - - - -
ExpressionResult
count(//b:book)5
count(//person[@id>5])17

- W3C Documentation reference: Node-Set-Functions -
- - - - fn:id() -
- Returns the element specified by it's unique id, requires DTD
-
- W3C Documentation reference: Node-Set-Functions -
- - - - fn:local-name() -
- Returns the local-name for the first node in the node-set
- Arguments: - - - - - - - - - -
TypeDescription
node-setExtract first node and return its local name
Examples:
- - - - - - - - - - - - - -
ExpressionResult
local-name(//b:books)b:book
local-name(//b:book)b:title

- W3C Documentation reference: Node-Set-Functions -
- - - fn:namespace-uri() -
- Returns the namespace-uri for the first node in the node-set
- Arguments: - - - - - - - - - -
TypeDescription
node-setExtract first node and return the namespace URI
Examples:
- - - - - - - - - -
ExpressionResult
namespace-uri(//b:book)http://www.book.com

- W3C Documentation reference: Node-Set-Functions -
- - - fn:name() -
- Returns the name for the first node in the node-set
- Arguments: - - - - - - - - - -
TypeDescription
node-set (Optional)Extract first node and return QName
Examples:
- - - - - - - - - - - - - -
ExpressionResult
name(//b:books/*)b:book
name(//b:book/*)b:title

- W3C Documentation reference: Node-Set-Functions -
- -
-
-
- - - -
- - - fn:boolean() -
- The boolean function converts its argument to a boolean as follows: -
    -
  • a number is true if and only if it is neither positive or negative zero nor NaN
  • -
  • a node-set is true if and only if it is non-empty
  • -
  • a string is true if and only if its length is non-zero
  • -
  • an object of a type other than the four basic types is converted to a boolean in a way that is dependent on that type
  • -
- - Arguments: - - - - - - - - - -
TypeDescription
objectThe object to convert to a boolean
Examples:
- - - - - - - - - - - - - -
ExpressionResult
boolean("Release11")true
boolean("")false

- W3C Documentation reference: Boolean-Functions -
- - fn:not() -
- The not function returns true if its argument is false, and false otherwise.
-
- W3C Documentation reference: Boolean-Functions -
- - - fn:true() -
- The true function returns true.
-
- W3C Documentation reference: Boolean-Functions -
- - - fn:false() -
- The true function returns false.
-
- W3C Documentation reference: Boolean-Functions -
- - fn:lang() -
- The lang function returns true or false depending on whether the language of the context node as specified by xml:lang attributes is the same as or is a sublanguage of the language specified by the argument string. The language of the context node is determined by the value of the xml:lang attribute on the context node, or, if the context node has no xml:lang attribute, by the value of the xml:lang attribute on the nearest ancestor of the context node that has an xml:lang attribute. If there is no such attribute, then lang returns false. If there is such an attribute, then lang returns true if the attribute value is equal to the argument ignoring case, or if there is some suffix starting with - such that the attribute value is equal to the argument ignoring that suffix of the attribute value and ignoring case.
- Arguments: - - - - - - - - - -
TypeDescription
stringLanguage that will be looked for in context node
Examples: Look W3C documentation
-
- W3C Documentation reference: Boolean-Functions -
- - -
-
-
- - - -
- - fn:string() -
- The string function converts an object to a string as follows: A node-set is converted to a string by returning the string-value of the node in the node-set that is first in document order. If the node-set is empty, an empty string is returned.
- - Arguments: - - - - - - - - - -
TypeDescription
objectThe object to convert to a string
Examples:
- - - - - - - - - -
ExpressionResult
string(10)true

- W3C Documentation reference: String-Functions -
- - - fn:concat() -
- The concat function returns the concatenation of its arguments.
- - Arguments: - - - - - - - - - -
TypeDescription
string*Strings to concatenate
Examples:
- - - - - - - - - -
ExpressionResult
concat("Release", 11)Release11

- W3C Documentation reference: String-Functions -
- - fn:starts-with() -
- Returns true if the first argument string starts with the second argument string, and otherwise returns false.
- - Arguments: - - - - - - - - - - - - - -
TypeDescription
stringString to test
stringString that first string has to start from
Examples:
- - - - - - - - - -
ExpressionResult
starts-with("Release11", "Rel")true

- W3C Documentation reference: String-Functions -
- - fn:contains() -
- The contains function returns true if the first argument string contains the second argument string, and otherwise returns false.
- - Arguments: - - - - - - - - - - - - - -
TypeDescription
stringString to test
stringString that first string has to contain
Examples:
- - - - - - - - - -
ExpressionResult
contains("Release11", "eas")true

- W3C Documentation reference: String-Functions -
- - fn:substring-before() -
- The substring-before function returns the substring of the first argument string that precedes the first occurrence of the second argument string in the first argument string, or the empty string if the first argument string does not contain the second argument string.
- - Arguments: - - - - - - - - - - - - - -
TypeDescription
stringString to test
stringString that first string has to contain
Examples:
- - - - - - - - - -
ExpressionResult
substring-before("1999/04/01","/")1999

- W3C Documentation reference: String-Functions -
- - - fn:substring-after() -
- The substring-after function returns the substring of the first argument string that follows the first occurrence of the second argument string in the first argument string, or the empty string if the first argument string does not contain the second argument string.
- - Arguments: - - - - - - - - - - - - - -
TypeDescription
stringString to test
stringString that first string has to contain
Examples:
- - - - - - - - - - - - - -
ExpressionResult
substring-after("1999/04/01","/")04/01
substring-after("1999/04/01","19")99/04/01

- W3C Documentation reference: String-Functions -
- - - fn:substring() -
- The substring function returns the substring of the first argument starting at the position specified in the second argument with length specified in the third argument.
- - Arguments: - - - - - - - - - - - - - - - - - -
TypeDescription
stringString to test
numberStarting index
number?Length of target substring
Examples:
- - - - - - - - - - - - - -
ExpressionResult
substring("12345",2)2345
substring("12345",2,3)234

- W3C Documentation reference: String-Functions -
- - fn:string-length() -
- The string-length returns the number of characters in the string. If the argument is omitted, it defaults to the context node converted to a string, in other words the string-value of the context node.
- - Arguments: - - - - - - - - - -
TypeDescription
string?String to test
Examples:
- - - - - - - - - -
ExpressionResult
string-length("abcdef")6

- W3C Documentation reference: String-Functions -
- - fn:normalize-space() -
- The normalize-space function returns the argument string with whitespace normalized by stripping leading and trailing whitespace and replacing sequences of whitespace characters by a single space. Whitespace characters are the same as those allowed by the S production in XML. If the argument is omitted, it defaults to the context node converted to a string, in other words the string-value of the context node.
- - Arguments: - - - - - - - - - -
TypeDescription
string?String to test
Examples:
- - - - - - - - - -
ExpressionResult
normalize-space(" abc def ")abc def

- W3C Documentation reference: String-Functions -
- - - fn:translate() -
- The translate function returns the first argument string with occurrences of characters in the second argument string replaced by the character at the corresponding position in the third argument string. If there is a character in the second argument string with no character at a corresponding position in the third argument string (because the second argument string is longer than the third argument string), then occurrences of that character in the first argument string are removed.
- - Arguments: - - - - - - - - - - - - - - - - - -
TypeDescription
stringString to translate
stringCharacters to remove
stringString to insert characters from second argument
Examples:
- - - - - - - - - - - - - -
ExpressionResult
translate("bar","abc","ABC")BAr
translate("--aaa--","abc-","ABC")AAA

- W3C Documentation reference: String-Functions -
- - -
-
-
- - - -
- - - fn:number() -
- The number function converts its argument to a number as follows: -
    -
  • a string that consists of optional whitespace followed by an optional minus sign followed by a Number followed by whitespace is converted to the IEEE 754 number that is nearest (according to the IEEE 754 round-to-nearest rule) to the mathematical value represented by the string; any other string is converted to NaN
  • -
  • boolean true is converted to 1; boolean false is converted to 0
  • -
  • a node-set is first converted to a string as if by a call to the string function and then converted in the same way as a string argument
  • -
  • an object of a type other than the four basic types is converted to a number in a way that is dependent on that type
  • -
- - Arguments: - - - - - - - - - -
TypeDescription
objectThe object to convert to a number
Examples:
- - - - - - - - - - - - - -
ExpressionResult
number(10)10
number("")NaN

- W3C Documentation reference -
- - fn:sum() -
- The sum function returns the sum, for each node in the argument node-set, of the result of converting the string-values of the node to a number.
- - Arguments: - - - - - - - - - -
TypeDescription
node-setNode set to sum
Examples:
- - - - - - - - - -
ExpressionResult
sum(/l:library/l:readerList/p:person/p:readerID)12444

- W3C Documentation reference -
- - fn:floor() -
- The floor function returns the largest (closest to positive infinity) number that is not greater than the argument and that is an integer.
- - Arguments: - - - - - - - - - -
TypeDescription
node-setNode set to sum
Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
floor(3.1)4
floor(3.9)4
floor(3.5)4

- W3C Documentation reference -
- - fn:ceiling() -
- The ceiling function returns the smallest (closest to negative infinity) number that is not less than the argument and that is an integer.
- - Arguments: - - - - - - - - - -
TypeDescription
node-setNode set to sum
Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
floor(3.1)3
floor(3.9)3
floor(3.5)3

- W3C Documentation reference -
- - - fn:round() -
- The round function returns the number that is closest to the argument and that is an integer. If there are two such numbers, then the one that is closest to positive infinity is returned. If the argument is NaN, then NaN is returned. If the argument is positive infinity, then positive infinity is returned. If the argument is negative infinity, then negative infinity is returned. If the argument is positive zero, then positive zero is returned. If the argument is negative zero, then negative zero is returned. If the argument is less than zero, but greater than or equal to -0.5, then negative zero is returned. - -

NOTE

- For these last two cases, the result of calling the round function is not the same as the result of adding 0.5 and then calling the floor function.
- - Arguments: - - - - - - - - - -
TypeDescription
node-setNode set to sum
Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
floor(3.1)3
floor(3.9)4
floor(3.5)3

- W3C Documentation reference -
- -
-
-
- -
- - - -
- - - fn:name() -
- Returns the name of a node, as an xs:string that is either the zero-length string, or - has the lexical form of an xs:QName.
- - If the argument is omitted, it defaults to the context item (.). The behavior of the - function if the argument is omitted is exactly the same as if the context item had been - passed as the argument.
- - The following errors may be raised: if the context item is undefined [err:XPDY0002]XP; - if the context item is not a node [err:XPTY0004]XP.
- - If the argument is supplied and is the empty sequence, the function returns the - zero-length string.
- - If the target node has no name (that is, if it is a document node, a comment, a text - node, or a namespace binding having no name), the function returns the zero-length - string.
- - Otherwise, the value returned is fn:string(fn:node-name($arg)).
-
- Arguments: - - - - - - - - - -
TypeDescription
node?Node to display name.
- Return type: xs:string

- - Examples: - - - - - - - - - -
QueryResult
name(/l:library)l:library

- W3C Documentation reference -
- - fn:local-name() -
- Returns the local part of the name of $arg as an xs:string that will either be the - zero-length string or will have the lexical form of an xs:NCName.
- - If the argument is omitted, it defaults to the context item (.). The behavior of the - function if the argument is omitted is exactly the same as if the context item had been - passed as the argument.
- - The following errors may be raised: if the context item is undefined [err:XPDY0002]XP; - if the context item is not a node [err:XPTY0004]XP.
- - If the argument is supplied and is the empty sequence, the function returns the - zero-length string.
- - If the target node has no name (that is, if it is a document node, a comment, or a text - node), the function returns the zero-length string.
- - Otherwise, the value returned will be the local part of the expanded-QName of the target - node (as determined by the dm:node-name accessor in Section 5.11 node-name Accessor). - This will be an xs:string whose lexical form is an xs:NCName.
- -
- Arguments: - - - - - - - - - -
TypeDescription
node?Node to display local-name.
- Return type: xs:string

- Examples: - - - - - - - - - -
QueryResult
name(/l:library)library

- - W3C Documentation reference -
- - fn:nilled() -
- Returns an xs:boolean indicating whether the argument node is "nilled". If the argument - is not an element node, returns the empty sequence. If the argument is the empty - sequence, returns the empty sequence.
- -
- Arguments: - - - - - - - - - -
TypeDescription
node?Node to test.
- Return type: xs:boolean?

- Examples: - - - - - - - - - -
QueryResult
nilled(/l:library)false

- - W3C Documentation reference -
- - fn:base-uri() -
- Returns the value of the base-uri URI property for $arg as defined by the accessor - function dm:base-uri() for that kind of node in Section 5.2 base-uri AccessorDM. If $arg - is not specified, the behavior is identical to calling the function with the context - item (.) as argument. The following errors may be raised: if the context item is - undefined [err:XPDY0002]XP; if the context item is not a node [err:XPTY0004]XP.
- - If $arg is the empty sequence, the empty sequence is returned.
- - Document, element and processing-instruction nodes have a base-uri property which may be - empty. The base-uri property of all other node types is the empty sequence. The value of - the base-uri property is returned if it exists and is not empty. Otherwise, if the node - has a parent, the value of dm:base-uri() applied to its parent is returned, recursively. - If the node does not have a parent, or if the recursive ascent up the ancestor chain - encounters a node whose base-uri property is empty and it does not have a parent, the - empty sequence is returned.
- -
- Arguments: - - - - - - - - - -
TypeDescription
node?Node to find base URI of.
- Return type: xs:anyURI?

- Examples: - - - - - - - - - -
QueryResult
base-uri(/l:library/l:libraryName)<empty sequence>

- - W3C Documentation reference -
- - fn:document-uri() -
- Returns the value of the document-uri property for $arg as defined by the - dm:document-uri accessor function defined in Section 6.1.2 AccessorsDM.
- - If $arg is the empty sequence, the empty sequence is returned.
- - Returns the empty sequence if the node is not a document node. Otherwise, returns the - value of the dm:document-uri accessor of the document node.
- - In the case of a document node $D returned by the fn:doc function, or a document node at - the root of a tree containing a node returned by the fn:collection function, it will - always be true that either fn:document-uri($D) returns the empty sequence, or that the - following expression is true: fn:doc(fn:document-uri($D)) is $D. It is - implementation-defined whether this guarantee also holds for document nodes obtained by - other means, for example a document node passed as the initial context node of a query - or transformation.
- -
- Arguments: - - - - - - - - - -
TypeDescription
node?Node which document-uri value needs to be returned.
- Return type: xs:anyURI?

- Examples: - - - - - - - - - - - - - - - - - -
QueryResult
document-uri(/l:library/l:libraryName)<empty sequence>
document-uri(/library/fiction:book[1])http://example.com/library.xml (assuming the document URI of the first - fiction:book element is "http://example.com/library.xml")
document-uri(/library)http://example.com/library.xml (assuming the document URI of the library - element is "http://example.com/library.xml")

- - W3C Documentation reference -
- - fn:lang() -
- This function tests whether the language of $node, or the context item if the second - argument is omitted, as specified by xml:lang attributes is the same as, or is a - sublanguage of, the language specified by $testlang. The behavior of the function if the - second argument is omitted is exactly the same as if the context item (.) had been - passed as the second argument. The language of the argument node, or the context item if - the second argument is omitted, is determined by the value of the xml:lang attribute on - the node, or, if the node has no such attribute, by the value of the xml:lang attribute - on the nearest ancestor of the node that has an xml:lang attribute. If there is no such - ancestor, then the function returns false

- - Arguments: - - - - - - - - - - - - - -
TypeDescription
xs:string?$testlang
node()$node (Optional)
- Return type: xs:boolean?

- Examples: Look W3C documentation below. -
- - W3C Documentation reference -
- - fn:root() -
- Returns the root of the tree to which $arg belongs. This will usually, but not - necessarily, be a document node.
- - If $arg is the empty sequence, the empty sequence is returned.
- - If $arg is a document node, $arg is returned.
- - If the function is called without an argument, the context item (.) is used as the - default argument. The behavior of the function if the argument is omitted is exactly the - same as if the context item had been passed as the argument.
- - The following errors may be raised: if the context item is undefined [err:XPDY0002]; if - the context item is not a node [err:XPTY0004].

- - Arguments: - - - - - - - - - -
TypeDescription
node()$arg (Optional)
- Return type: node()?

- Examples: - - - - - - - - - -
QueryResult
root()<l:library>[...]</l:library>

- - W3C Documentation reference -
- - fn:count() -
- Returns the number of items in the value of $arg. Returns 0 if $arg is the empty - sequence.

- - Arguments: - - - - - - - - - -
TypeDescription
item()*$arg
- Return type: xs:integer

- Examples: - - - - - - - - - - - - - -
QueryResult
count(/l:library/l:readerList/p:person)2
count(/l:library/l:writers)0

- - W3C Documentation reference -
- - - fn:avg() -
- Returns the number of items in the value of $arg. Returns 0 if $arg is the empty - sequence.

- - Arguments: - - - - - - - - - -
TypeDescription
xs:anyAtomicType*$arg
- Return type: xs:anyAtomicType

- Examples: - - - - - - - - - -
QueryResult
avg(/l:library/l:readerList/p:person/p:readerID)6222

- - W3C Documentation reference -
- - - fn:max() -
- Selects an item from the input sequence $arg whose value is greater than or equal to the - value of every other item in the input sequence. If there are two or more such items, - then the specific item whose value is returned is ·implementation dependent·.

- - Arguments: - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*$arg
xs:string$collation (Optional)
- Return type: xs:anyAtomicType?

- Examples: - - - - - - - - - - - - - -
QueryResult
max((3,4,5))5
max((5, 5.0e0))5.0e0

- - W3C Documentation reference -
- - fn:min() -
- Selects an item from the input sequence $arg whose value is less than or equal to the - value of every other item in the input sequence. If there are two or more such items, - then the specific item whose value is returned is ·implementation dependent·.

- - Arguments: - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*$arg
xs:string$collation (Optional)
- Return type: xs:anyAtomicType?

- Examples: - - - - - - - - - - - - - -
QueryResult
min((3,4,5))3
min((5, 5.0e0))5.0e0

- - W3C Documentation reference -
- - - fn:sum() -
- Returns a value obtained by adding together the values in $arg. If $zero is not - specified, then the value returned for an empty sequence is the xs:integer value 0. If - $zero is specified, then the value returned for an empty sequence is $zero.
- - Any values of type xs:untypedAtomic in $arg are cast to xs:double. The items in the - resulting sequence may be reordered in an arbitrary order. The resulting sequence is - referred to below as the converted sequence.

- - Arguments: - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*$arg
xs:anyAtomicType?$zero (Optional)
- Return type: xs:anyAtomicType?

- Examples: - - - - - - - - - -
QueryResult
sum(/l:library/l:readerList/p:person/p:readerID)12444

- - W3C Documentation reference -
- -
-
-
- - - -
- - - fn:boolean() -
- Computes the effective boolean value of the sequence $arg. See Section 2.4.3 Effective - Boolean ValueXP
- - If $arg is the empty sequence, fn:boolean returns false.
- - If $arg is a sequence whose first item is a node, fn:boolean returns true.
- - If $arg is a singleton value of type xs:boolean or a derived from xs:boolean, fn:boolean - returns $arg.
- - If $arg is a singleton value of type xs:string or a type derived from xs:string, - xs:anyURI or a type derived from xs:anyURI or xs:untypedAtomic, fn:boolean returns false - if the operand value has zero length; otherwise it returns true.
- - If $arg is a singleton value of any numeric type or a type derived from a numeric type, - fn:boolean returns false if the operand value is NaN or is numerically equal to zero; - otherwise it returns true. - - In all other cases, fn:boolean raises a type error [err:FORG0006].
- - The static semantics of this function are described in Section 7.2.4 The fn:boolean and - fn:not functionsFS.

- - Arguments: - - - - - - - - - -
TypeDescription
item()*$arg
- Return type: xs:boolean?

- Examples: - - - - - - - - - - - - - - - - - -
QueryResult
boolean("/l:library")true
boolean(0)false
boolean(())false

- - W3C Documentation reference -
- - - fn:true() -
- Returns the xs:boolean value true. Equivalent to xs:boolean("1").

- - Return type: xs:boolean

- Examples:
- - - - - - - - - -
ExpressionResult
true()true

- W3C Documentation reference -
- - fn:false() -
- Returns the xs:boolean value false. Equivalent to xs:boolean("0").

- - Return type: xs:boolean

- Examples:
- - - - - - - - - -
ExpressionResult
false()false

- W3C Documentation reference -
- - fn:not() -
- $arg is first reduced to an effective boolean value by applying the fn:boolean() - function. Returns true if the effective boolean value is false, and false if the - effective boolean value is true.

- - Arguments and return type: - - - - - - - - - -
TypeDescription
item$arg
- Return type: xs:boolean

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
not(false())true
not(true())false

- W3C Documentation reference -
- - -
-
-
- - - -
- - fn:string(object) -
- Returns the value of $arg represented as a xs:string. If no argument is supplied, the - context item (.) is used as the default argument. The behavior of the function if the - argument is omitted is exactly the same as if the context item had been passed as the - argument.
- - If the context item is undefined, error [err:XPDY0002]XP is raised.
- - If $arg is the empty sequence, the zero-length string is returned.
- - If $arg is a node, the function returns the string-value of the node, as obtained using - the dm:string-value accessor defined in the Section 5.13 string-value AccessorDM.
- - If $arg is an atomic value, then the function returns the same string as is returned by - the expression " $arg cast as xs:string " (see 17 Casting).
- Arguments and return type: - - - - - - - - - -
TypeDescription
stringThe object to convert to a string
- Return type: xs:string

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
string((1<0))false
string(.11)0.11

- W3C Documentation reference -
- - fn:codepoints-to-string() -
- Creates an xs:string from a sequence of The Unicode Standard code points. Returns the - zero-length string if $arg is the empty sequence. If any of the code points in $arg is - not a legal XML character, an error is raised [err:FOCH0001].
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:integer*$arg
- Return type: xs:string

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
codepoints-to-string((2309, 2358, 2378, 2325))अशॊक
codepoints-to-string((40, 32, 865, 176, 32, 860, 662, 32, 865, 176, 41)) - ( ͡° ͜ʖ ͡°)

- W3C Documentation reference -
- - fn:string-to-codepoints() -
- Returns the sequence of The Unicode Standard code points that constitute an xs:string. - If $arg is a zero-length string or the empty sequence, the empty sequence is - returned.
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string*$arg
- Return type: xs:integer*

- Examples:
- - - - - - - - - -
ExpressionResult
string-to-codepoints("Thérèse")(84, 104, 233, 114, 232, 115, 101)

- W3C Documentation reference -
- - fn:compare() -
- Returns -1, 0, or 1, depending on whether the value of the $comparand1 is respectively - less than, equal to, or greater than the value of $comparand2, according to the rules of - the collation that is used.
- - The collation used by the invocation of this function is determined according to the - rules in 7.3.1 Collations.
- - If either argument is the empty sequence, the result is the empty sequence.
- - This function, invoked with the first signature, backs up the "eq", "ne", "gt", "lt", - "le" and "ge" operators on string values.
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?$comparand1
xs:string?$comparand2
xs:string$collation (Optional)
- Return type: xs:integer*

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
compare('abc', 'abc')0
compare('abc', 'acc')-1
compare('abc', 'acc')1

- W3C Documentation reference -
- - fn:codepoint-equal() -
- Returns true or false depending on whether the value of $comparand1 is equal to the - value of $comparand2, according to the Unicode code - point collation.
- - If either argument is the empty sequence, the result is the empty sequence.
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?$comparand1
xs:string?$comparand2
- Return type: xs:boolean?

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
codepoint-equal("asdf", "asdf")true
codepoint-equal("asdf", "asdf ")false

- W3C Documentation reference -
- - fn:concat() -
- Accepts two or more xs:anyAtomicType arguments and casts them to xs:string. Returns the - xs:string that is the concatenation of the values of its arguments after conversion. If - any of the arguments is the empty sequence, the argument is treated as the zero-length - string.
- - The fn:concat function is specified to allow two or more arguments, which are - concatenated together. This is the only function specified in this document that allows - a variable number of arguments. This capability is retained for compatibility with [XML - Path Language (XPath) Version 1.0].
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType?$arg1
xs:anyAtomicType?$arg2
xs:anyAtomicType?$arg... (Optional)
- Return type: xs:string

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
concat('un', 'grateful')ungrateful
concat('Thy ', (), 'old ', "groans", "", ' ring', ' yet', ' in', ' my', ' - ancient',' ears.')Thy old groans ring yet in my ancient ears.
fn:concat('Ciao!',())Ciao!

- W3C Documentation reference -
- - fn:string-join() -
- Returns a xs:string created by concatenating the members of the $arg1 sequence using - $arg2 as a separator. If the value of $arg2 is the zero-length string, then the members - of $arg1 are concatenated without a separator.
- - If the value of $arg1 is the empty sequence, the zero-length string is returned.
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string*$arg1
xs:string$arg2
- Return type: xs:string

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
string-join(('Now', 'is', 'the', 'time', '...'), ' ')Now is the time ...
string-join(('Blow, ', 'blow, ', 'thou ', 'winter ', 'wind!'), '')Blow, blow, thou winter wind!

- W3C Documentation reference -
- - fn:substring() -
- Returns the portion of the value of $sourceString beginning at the position indicated by - the value of $startingLoc and continuing for the number of characters indicated by the - value of $length. The characters returned do not extend beyond $sourceString. If - $startingLoc is zero or negative, only those characters in positions greater than zero - are returned.
- More specifically, the three argument version of the function returns the characters in - $sourceString whose position $p obeys:
- fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length)
- The two argument version of the function assumes that $length is infinite and returns - the characters in $sourceString whose position $p obeys:
- fn:round($startingLoc) <= $p < fn:round(INF)
- In the above computations, the rules for op:numeric-less-than() and - op:numeric-greater-than() apply.
- If the value of $sourceString is the empty sequence, the zero-length string is - returned.
- - Note:
- The first character of a string is located at position 1, not position 0.
- - Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?$sourceString
xs:double$startingLoc
xs:double$length (Optional)
- Return type: xs:string

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
substring("motor car", 6)" car"
substring("metadata", 4, 3)ada

- W3C Documentation reference -
- - fn:string-length() -
- Returns an xs:integer equal to the length in characters of the value of $arg.
- - If the value of $arg is the empty sequence, the xs:integer 0 is returned.
- - If no argument is supplied, $arg defaults to the string value (calculated using - fn:string()) of the context item (.). If no argument is supplied and the context item is - undefined an error is raised: [err:XPDY0002].
- - Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?$arg (Optional)
- Return type: xs:integer

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
string-length("Harp not on that string, madam; that is past.")45
string-length(())0

- W3C Documentation reference -
- - fn:normalize-space() -
- Returns the value of $arg with whitespace normalized by stripping leading and trailing - whitespace and replacing sequences of one or more than one whitespace character with a - single space, #x20.
- - If the value of $arg is the empty sequence, returns the zero-length string.
- - If no argument is supplied, then $arg defaults to the string value (calculated using - fn:string()) of the context item (.). If no argument is supplied and the context item is - undefined an error is raised: [err:XPDY0002].
- - Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?$arg (Optional)
- Return type: xs:string

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
normalize-space(" The wealthy curled darlings of our nation. ")The wealthy curled darlings of our nation.
normalize-space(())""

- W3C Documentation reference -
- - fn:normalize-unicode() -
- Returns the value of $arg normalized according to the normalization criteria for a - normalization form identified by the value of $normalizationForm. The effective value of - the $normalizationForm is computed by removing leading and trailing blanks, if present, - and converting to upper case.
- - If the value of $arg is the empty sequence, returns the zero-length string.
- - Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?$arg
xs:string$normalizationForm (Optional)
- Return type: xs:string

- Examples:
- - - - - - - - - -
ExpressionResult
normalize-unicode("test ")test

- W3C Documentation reference -
- - fn:upper-case() -
- Returns the value of $arg after translating every character to its upper-case - correspondent as defined in the appropriate case mappings section in the Unicode - standard [The Unicode Standard]. For versions of Unicode beginning with the 2.1.8 - update, only locale-insensitive case mappings should be applied. Beginning with version - 3.2.0 (and likely future versions) of Unicode, precise mappings are described in default - case operations, which are full case mappings in the absence of tailoring for particular - languages and environments. Every lower-case character that does not have an upper-case - correspondent, as well as every upper-case character, is included in the returned value - in its original form.
- - If the value of $arg is the empty sequence, the zero-length string is returned.
- - Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?$arg
- Return type: xs:string

- Examples:
- - - - - - - - - -
ExpressionResult
upper-case("abCd0")ABCD0

- W3C Documentation reference -
- - fn:lower-case() -
- Returns the value of $arg after translating every character to its lower-case - correspondent as defined in the appropriate case mappings section in the Unicode - standard [The Unicode Standard]. For versions of Unicode beginning with the 2.1.8 - update, only locale-insensitive case mappings should be applied. Beginning with version - 3.2.0 (and likely future versions) of Unicode, precise mappings are described in default - case operations, which are full case mappings in the absence of tailoring for particular - languages and environments. Every upper-case character that does not have a lower-case - correspondent, as well as every lower-case character, is included in the returned value - in its original form.
- - If the value of $arg is the empty sequence, the zero-length string is returned.
- - Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?$arg
- Return type: xs:string

- Examples:
- - - - - - - - - -
ExpressionResult
lower-case("abCd0")abcd0

- W3C Documentation reference -
- - fn:translate() -
- Returns the value of $arg modified so that every character in the value of $arg that - occurs at some position N in the value of $mapString has been replaced by the character - that occurs at position N in the value of $transString.
- - If the value of $arg is the empty sequence, the zero-length string is returned.
- - Every character in the value of $arg that does not appear in the value of $mapString is - unchanged.
- - Every character in the value of $arg that appears at some position M in the value of - $mapString, where the value of $transString is less than M characters in length, is - omitted from the returned value. If $mapString is the zero-length string $arg is - returned.
- - If a character occurs more than once in $mapString, then the first occurrence determines - the replacement character. If $transString is longer than $mapString, the excess - characters are ignored.
- - Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?$arg
xs:string$mapString
xs:string$mapString
- Return type: xs:string

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
translate("bar","abc","ABC")BAr
translate("--aaa--","abc-","ABC")AAA
translate("abcdabc", "abc", "AB")ABdAB

- W3C Documentation reference -
- - fn:encode-for-uri() -
- This function encodes reserved characters in an xs:string that is intended to be used in - the path segment of a URI. It is invertible but not idempotent. This function applies - the URI escaping rules defined in section 2 of [RFC 3986] to the xs:string supplied as - $uri-part. The effect of the function is to escape reserved characters. Each such - character in the string is replaced with its percent-encoded form as described in [RFC - 3986].
- - If $uri-part is the empty sequence, returns the zero-length string.
- - All characters are escaped except those identified as "unreserved" by [RFC 3986], that - is the upper- and lower-case letters A-Z, the digits 0-9, HYPHEN-MINUS ("-"), LOW LINE - ("_"), FULL STOP ".", and TILDE "~".
- - Note that this function escapes URI delimiters and therefore cannot be used - indiscriminately to encode "invalid" characters in a path segment.
- - Since [RFC 3986] recommends that, for consistency, URI producers and normalizers should - use uppercase hexadecimal digits for all percent-encodings, this function must always - generate hexadecimal values using the upper-case letters A-F.
- - Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?$uri-part
- Return type: xs:string

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
encode-for-uri("https://www.google.com")"https%3A%2F%2Fwww.
google.com"
concat("http://www.example.com/", encode-for-uri("~bébé"))http://www.example.com/
~b%C3%A9b%C3%A9
concat("http://www.example.com/", encode-for-uri("100% organic"))http://www.example.com/
100%25%20organic

- W3C Documentation reference -
- - fn:iri-to-uri() -
- This function converts an xs:string containing an IRI into a URI according to the rules - spelled out in Section 3.1 of [RFC 3987]. It is idempotent but not invertible.
- - If $iri contains a character that is invalid in an IRI, such as the space character (see - note below), the invalid character is replaced by its percent-encoded form as described - in [RFC 3986] before the conversion is performed.
- - If $iri is the empty sequence, returns the zero-length string.
- - Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?$iri
- Return type: xs:string

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
iri-to-uri ("http://www.example.com/00/Weather/CA/Los%20Angeles#ocean")"http://www.example.com/00/
Weather/CA/Los%20Angeles#ocean"
iri-to-uri ("http://www.example.com/~bébé")http://www.example.com/
~b%C3%A9b%C3%A9

- W3C Documentation reference -
- - fn:escape-html-uri() -
- This function escapes all characters except printable characters of the US-ASCII coded - character set, specifically the octets ranging from 32 to 126 (decimal). The effect of - the function is to escape a URI in the manner html user agents handle attribute values - that expect URIs. Each character in $uri to be escaped is replaced by an escape - sequence, which is formed by encoding the character as a sequence of octets in UTF-8, - and then representing each of these octets in the form %HH, where HH is the hexadecimal - representation of the octet. This function must always generate hexadecimal values using - the upper-case letters A-F.
- If $uri is the empty sequence, returns the zero-length string. - -

Note:

- The behavior of this function corresponds to the recommended handling of non-ASCII - characters in URI attribute values as described in [HTML 4.0] Appendix B.2.1.

- - - Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?$uri
- Return type: xs:string

- Examples:
- - - - - - - - - -
ExpressionResult
escape-html-uri("http://www.example.com/00/Weather/CA/Los Angeles#ocean") - http://www.example.com/00/Weather/CA/Los Angeles#ocean

- W3C Documentation reference -
- - fn:contains() -
- Returns an xs:boolean indicating whether or not the value of $arg1 contains (at the - beginning, at the end, or anywhere within) at least one sequence of collation units that - provides a minimal match to the collation units in the value of $arg2, according to the - collation that is used. - - If the value of $arg1 or $arg2 is the empty sequence, or contains only ignorable - collation units, it is interpreted as the zero-length string.
- - If the value of $arg2 is the zero-length string, then the function returns true.
- - If the value of $arg1 is the zero-length string, the function returns false.
- - The collation used by the invocation of this function is determined according to the - rules in 7.3.1 Collations. If the specified collation does not support collation units - an error ·may· be raised [err:FOCH0004].

- - - Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?$arg1
xs:string?$arg2
xs:string?$collation (Optional)
- Return type: xs:boolean

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
contains( "tattoo", "tat")true
contains( "tattoo", "ttt")false
contains ( "", ())true

- W3C Documentation reference -
- - fn:starts-with() -
- Returns an xs:boolean indicating whether or not the value of $arg1 starts with a - sequence of collation units that provides a match to the collation units of $arg2 - according to the collation that is used. - - If the value of $arg1 or $arg2 is the empty sequence, or contains only ignorable - collation units, it is interpreted as the zero-length string.
- - If the value of $arg2 is the zero-length string, then the function returns true. If the - value of $arg1 is the zero-length string and the value of $arg2 is not the zero-length - string, then the function returns false.
- - The collation used by the invocation of this function is determined according to the - rules in 7.3.1 Collations. If the specified collation does not support collation units - an error ·may· be raised [err:FOCH0004].

- - - Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?$arg1
xs:string?$arg2
xs:string?$collation (Optional)
- Return type: xs:boolean

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
starts-with( "tattoo", "tat")true
starts-with( "tattoo", "ttt")false
starts-with ( "", ())true

- W3C Documentation reference -
- - fn:ends-with() -
- Returns an xs:boolean indicating whether or not the value of $arg1 starts with a - sequence of collation units that provides a match to the collation units of $arg2 - according to the collation that is used.
- - If the value of $arg1 or $arg2 is the empty sequence, or contains only ignorable - collation units, it is interpreted as the zero-length string.
- - If the value of $arg2 is the zero-length string, then the function returns true. If the - value of $arg1 is the zero-length string and the value of $arg2 is not the zero-length - string, then the function returns false.
- - The collation used by the invocation of this function is determined according to the - rules in 7.3.1 Collations. If the specified collation does not support collation units - an error ·may· be raised [err:FOCH0004].

- - - Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?$arg1
xs:string?$arg2
xs:string?$collation (Optional)
- Return type: xs:boolean

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
ends-with( "tattoo", "too")true
ends-with( "tattoo", "tatoo")false
ends-with ((), ())true

- W3C Documentation reference -
- - fn:substring-before() -
- Returns the substring of the value of $arg1 that precedes in the value of $arg1 the - first occurrence of a sequence of collation units that provides a minimal match to the - collation units of $arg2 according to the collation that is used.
- - If the value of $arg1 or $arg2 is the empty sequence, or contains only ignorable - collation units, it is interpreted as the zero-length string.
- - If the value of $arg2 is the zero-length string, then the function returns the - zero-length string.
- - If the value of $arg1 does not contain a string that is equal to the value of $arg2, - then the function returns the zero-length string.
- - The collation used by the invocation of this function is determined according to the - rules in 7.3.1 Collations If the specified collation does not support collation units an - error ·may· be raised [err:FOCH0004].

- - - Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?$arg1
xs:string?$arg2
xs:string?$collation (Optional)
- Return type: xs:string

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
substring-before( "tattoo", "too")tat
substring-before( "tattoo", "tat")<empty string>

- W3C Documentation reference -
- - fn:substring-after() -
- Returns the substring of the value of $arg1 that follows in the value of $arg1 the first - occurrence of a sequence of collation units that provides a minimal match to the - collation units of $arg2 according to the collation that is used.
- - If the value of $arg1 or $arg2 is the empty sequence, or contains only ignorable - collation units, it is interpreted as the zero-length string.
- - If the value of $arg2 is the zero-length string, then the function returns the value of - $arg1.
- - If the value of $arg1 does not contain a string that is equal to the value of $arg2, - then the function returns the zero-length string.
- - The collation used by the invocation of this function is determined according to the - rules in 7.3.1 Collations If the specified collation does not support collation units an - error ·may· be raised [err:FOCH0004].

- - - Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?$arg1
xs:string?$arg2
xs:string?$collation (Optional)
- Return type: xs:string

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
substring-after( "tattoo", "too")<empty string>
substring-after( "tattoo", "tat")too

- W3C Documentation reference -
- - - fn:matches() -
- The function returns true if $input matches the regular expression supplied as $pattern - as influenced by the value of $flags, if present; otherwise, it returns false.
- - The effect of calling the first version of this function (omitting the argument $flags) - is the same as the effect of calling the second version with the $flags argument set to - a zero-length string. Flags are defined in 7.6.1.1 Flags.
- - If $input is the empty sequence, it is interpreted as the zero-length string.
- Unless the metacharacters ^ and $ are used as anchors, the string is considered to match - the pattern if any substring matches the pattern. But if anchors are used, the anchors - must match the start/end of the string (in string mode), or the start/end of a line (in - multiline mode).
- - An error is raised [err:FORX0002] if the value of $pattern is invalid according to the - rules described in section 7.6.1 Regular Expression Syntax.
- - An error is raised [err:FORX0001] if the value of $flags is invalid according to the - rules described in section 7.6.1 Regular Expression Syntax.

- - - Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?$input
xs:string$pattern
xs:string$flags (Optional)
- Return type: xs:boolean

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
matches("abracadabra", "bra")true
matches("abracadabra", "^a.*a$")false

- W3C Documentation reference -
- - fn:replace() -
- The function returns the xs:string that is obtained by replacing each non-overlapping - substring of $input that matches the given $pattern with an occurrence of the - $replacement string.
- - The effect of calling the first version of this function (omitting the argument $flags) - is the same as the effect of calling the second version with the $flags argument set to - a zero-length string. Flags are defined in 7.6.1.1 Flags.
- - The $flags argument is interpreted in the same manner as for the fn:matches() - function.
- - If $input is the empty sequence, it is interpreted as the zero-length string.
- - If two overlapping substrings of $input both match the $pattern, then only the
first - one (that is, the one whose first character comes first in the $input string) is - replaced. - - Within the $replacement string, a variable $N may be used to refer to the substring - captured by the Nth parenthesized sub-expression in the regular expression. For each - match of the pattern, these variables are assigned the value of the content matched by - the relevant sub-expression, and the modified replacement string is then substituted for - the characters in $input that matched the pattern. $0 refers to the substring captured - by the regular expression as a whole.

- - - Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?$input
xs:string$pattern
xs:string$replacement
xs:string$flags (Optional)
- Return type: xs:string

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
replace("abracadabra", "bra", "*")a*cada*
replace("abracadabra", "a.*a", "*")*
replace("AAAA", "A+", "b")b

- W3C Documentation reference -
- - fn:tokenize() -
- This function breaks the $input string into a sequence of strings, treating any - substring that matches $pattern as a separator. The separators themselves are not - returned.
- - The effect of calling the first version of this function (omitting the argument $flags) - is the same as the effect of calling the second version with the $flags argument set to - a zero-length string. Flags are defined in 7.6.1.1 Flags.
- - The $flags argument is interpreted in the same way as for the fn:matches() function.
- - If $input is the empty sequence, or if $input is the zero-length string, the result is - the empty sequence.
- - If the supplied $pattern matches a zero-length string, that is, if fn:matches("", - $pattern, $flags) returns true, then an error is raised: [err:FORX0003].
- - If a separator occurs at the start of the $input string, the result sequence will start - with a zero-length string. Zero-length strings will also occur in the result sequence if - a separator occurs at the end of the $input string, or if two adjacent substrings match - the supplied $pattern.

- - - Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?$input
xs:string$pattern
xs:string$flags (Optional)
- Return type: xs:string*

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
tokenize("The cat sat on the mat", "\s+")("The", "cat", "sat", "on", "the", "mat")
tokenize("1, 15, 24, 50", ",\s*")("1", "15", "24", "50")
tokenize("1,15,,24,50,", ",")("1", "15", "", "24", "50", "")

- W3C Documentation reference -
- -
-
-
- - - -
- - fn:number() -
- Returns the value indicated by $arg or, if $arg is not specified, the context item after - atomization, converted to an xs:double
- - Calling the zero-argument version of the function is defined to give the same result as - calling the single-argument version with the context item (.). That is, fn:number() is - equivalent to fn:number(.).
- - If $arg is the empty sequence or if $arg or the context item cannot be converted to an - xs:double, the xs:double value NaN is returned. If the context item is undefined an - error is raised: [err:XPDY0002]XP.
- - If $arg is the empty sequence, NaN is returned. Otherwise, $arg, or the context item - after atomization, is converted to an xs:double following the rules of 17.1.3.2 Casting - to xs:double. If the conversion to xs:double fails, the xs:double value NaN is - returned.
- -
- Arguments: - - - - - - - - - -
TypeDescription
xs:anyAtomicType?Value to convert to number
- Return type: xs:double

- W3C Documentation reference -
- - fn:abs() -
- Returns the absolute value of $arg. If $arg is negative returns -$arg otherwise returns - $arg. If type of $arg is one of the four numeric types xs:float, xs:double, xs:decimal - or xs:integer the type of the result is the same as the type of $arg. If the type of - $arg is a type derived from one of the numeric types, the result is an instance of the - base numeric type.
- - For xs:float and xs:double arguments, if the argument is positive zero or negative zero, - then positive zero is returned. If the argument is positive or negative infinity, - positive infinity is returned.
- - For detailed type semantics, see Section 7.2.3 The fn:abs, fn:ceiling, fn:floor, - fn:round, and fn:round-half-to-even functions.
-
- Arguments: - - - - - - - - - -
TypeDescription
numeric?$arg
- Return type: numeric?

- - Examples: - - - - - - - - - - - - - -
QueryResult
abs(-2)2
abs(2137)2137

- W3C Documentation reference -
- - fn:ceiling() -
- Returns the smallest (closest to negative infinity) number with no fractional part that - is not less than the value of $arg. If type of $arg is one of the four numeric types - xs:float, xs:double, xs:decimal or xs:integer the type of the result is the same as the - type of $arg. If the type of $arg is a type derived from one of the numeric types, the - result is an instance of the base numeric type.
- - For xs:float and xs:double arguments, if the argument is positive zero, then positive - zero is returned. If the argument is negative zero, then negative zero is returned. If - the argument is less than zero and greater than -1, negative zero is returned.
-
- Arguments: - - - - - - - - - -
TypeDescription
numeric?$arg
- Return type: numeric?

- - Examples: - - - - - - - - - - - - - - - - - -
QueryResult
ceiling(10.5)11
ceiling(-10.5)-10
ceiling(10.1)11

- W3C Documentation reference -
- - fn:floor() -
- Returns the largest (closest to positive infinity) number with no fractional part that - is not greater than the value of $arg. If type of $arg is one of the four numeric types - xs:float, xs:double, xs:decimal or xs:integer the type of the result is the same as the - type of $arg. If the type of $arg is a type derived from one of the numeric types, the - result is an instance of the base numeric type.
- - For float and double arguments, if the argument is positive zero, then positive zero is - returned. If the argument is negative zero, then negative zero is returned.
-
- Arguments: - - - - - - - - - -
TypeDescription
numeric?$arg
- Return type: numeric?

- - Examples: - - - - - - - - - - - - - - - - - -
QueryResult
floor(10.5)10
floor(-10.5)-11
floor(10.8)10

- W3C Documentation reference -
- - fn:round() -
- Returns the number with no fractional part that is closest to the argument. If there are - two such numbers, then the one that is closest to positive infinity is returned. If type - of $arg is one of the four numeric types xs:float, xs:double, xs:decimal or xs:integer - the type of the result is the same as the type of $arg. If the type of $arg is a type - derived from one of the numeric types, the result is an instance of the base numeric - type.
- - For xs:float and xs:double arguments, if the argument is positive infinity, then - positive infinity is returned. If the argument is negative infinity, then negative - infinity is returned. If the argument is positive zero, then positive zero is returned. - If the argument is negative zero, then negative zero is returned. If the argument is - less than zero, but greater than or equal to -0.5, then negative zero is returned. In - the cases where positive zero or negative zero is returned, negative zero or positive - zero may be returned as [XML Schema Part 2: Datatypes Second Edition] does not - distinguish between the values positive zero and negative zero.
- - For the last two cases, note that the result is not the same as fn:floor(x+0.5).
-
- Arguments: - - - - - - - - - -
TypeDescription
numeric?$arg
- Return type: numeric?

- - Examples: - - - - - - - - - - - - - - - - - -
QueryResult
round(10.5)11
round(10.4999)10
round(-10.5)-10

- W3C Documentation reference -
- - fn:round-half-to-even() -
- The value returned is the nearest (that is, numerically closest) value to $arg that is a - multiple of ten to the power of minus $precision. If two such values are equally near - (e.g. if the fractional part in $arg is exactly .500...), the function returns the one - whose least significant digit is even.
- - If the type of $arg is one of the four numeric types xs:float, xs:double, xs:decimal or - xs:integer the type of the result is the same as the type of $arg. If the type of $arg - is a type derived from one of the numeric types, the result is an instance of the base - numeric type.
- - The first signature of this function produces the same result as the second signature - with $precision=0.
- - For arguments of type xs:float and xs:double, if the argument is NaN, positive or - negative zero, or positive or negative infinity, then the result is the same as the - argument. In all other cases, the argument is cast to xs:decimal, the function is - applied to this xs:decimal value, and the resulting xs:decimal is cast back to xs:float - or xs:double as appropriate to form the function result. If the resulting xs:decimal - value is zero, then positive or negative zero is returned according to the sign of the - original argument.
- - Note that the process of casting to xs:decimal may result in an error - [err:FOCA0001].
- - If $arg is of type xs:float or xs:double, rounding occurs on the value of the mantissa - computed with exponent = 0.
-
- Arguments: - - - - - - - - - - - - - -
TypeDescription
numeric?$arg
numeric?$precision (Optional)
- Return type: numeric?

- - Examples: - - - - - - - - - - - - - - - - - - - - - -
QueryResult
round-half-to-even(0.5)0
round-half-to-even(1.5)2
round-half-to-even(2.5)2
round-half-to-even(2.6)3

- W3C Documentation reference -
- -
-
-
- - - -
- - fn:data() -
- fn:data takes a sequence of items and returns a sequence of atomic values.
- - The result of fn:data is the sequence of atomic values produced by applying the - following rules to each item in $arg:
-
    -
  • If the item is an atomic value, it is returned.
  • -
  • - If the item is a node: -
      -
    • If the node does not have a typed value an error is raised - [err:FOTY0012].
    • -
    • Otherwise, fn:data() returns the typed value of the node as defined by - the accessor function dm:typed-value in Section 5.15 typed-value - AccessorDM.
    • -
    -
  • -
-
- Arguments: - - - - - - - - - -
TypeDescription
item*Items to convert.
- Return type: xs:anyAtomicType*

- Examples: - - - - - - - - - -
QueryResult
data(/l:library/l:readerList/p:person[1])7321
Adam
Choke

- - W3C Documentation reference -
- - fn:index-of() -
- Returns the root of the tree to which $arg belongs. This will usually, but not - necessarily, be a document node.
- - If $arg is the empty sequence, the empty sequence is returned.
- - If $arg is a document node, $arg is returned.
- - If the function is called without an argument, the context item (.) is used as the - default argument. The behavior of the function if the argument is omitted is exactly the - same as if the context item had been passed as the argument.
- - The following errors may be raised: if the context item is undefined [err:XPDY0002]; if - the context item is not a node [err:XPTY0004].

- - Arguments: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType$seqParam
xs:anyAtomicType$srchParam
xs:string$collation (Optional)
- Return type: xs:integer*

- Examples: - - - - - - - - - - - - - - - - - -
QueryResult
index-of((10, 20, 30, 40), 35)()
index-of((10, 20, 30, 30, 20, 10), 20)(2, 5)
index-of(("a", "sport", "and", "a", "pastime"), "a")(1, 4)

- - W3C Documentation reference -
- - - fn:empty() -
- If the value of $arg is the empty sequence, the function returns true; otherwise, the - function returns false.

- - Arguments: - - - - - - - - - -
TypeDescription
item()*$arg
- Return type: xs:boolean

- Examples: - - - - - - - - - -
QueryResult
empty(fn:remove(("hello", "world"), 1))false

- - W3C Documentation reference -
- - - fn:exists() -
- If the value of $arg is not the empty sequence, the function returns true; otherwise, - the function returns false.

- - Arguments: - - - - - - - - - -
TypeDescription
item()*$arg
- Return type: xs:boolean

- Examples: - - - - - - - - - -
QueryResult
exists(fn:remove(("hello"), 1))true

- - W3C Documentation reference -
- - - fn:distinct-values() -
- Returns the sequence that results from removing from $arg all but one of a set of values - that are eq to one other. Values of type xs:untypedAtomic are compared as if they were - of type xs:string. Values that cannot be compared, i.e. the eq operator is not defined - for their types, are considered to be distinct. The order in which the sequence of - values is returned is ·implementation dependent·.

- - Arguments: - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*$arg
xs:string$collation (Optional)
- Return type: xs:anyAtomicType*

- Examples: - - - - - - - - - -
QueryResult
distinct-values((1, 2.0, 3, 2))(1, 3, 2.0)

- - W3C Documentation reference -
- - fn:insert-before() -
- Returns a new sequence constructed from the value of $target with the value of $inserts - inserted at the position specified by the value of $position. (The value of $target is - not affected by the sequence construction.)
- - If $target is the empty sequence, $inserts is returned. If $inserts is the empty - sequence, $target is returned.
- - The value returned by the function consists of all items of $target whose index is less - than $position, followed by all items of $inserts, followed by the remaining elements of - $target, in that sequence.
- - If $position is less than one (1), the first position, the effective value of $position - is one (1). If $position is greater than the number of items in $target, then the - effective value of $position is equal to the number of items in $target plus 1.

- - Arguments: - - - - - - - - - - - - - - - - - -
TypeDescription
item()*$target
xs:integer$position
item()*$inserts
- Return type: item()*

- Examples:
- let $x := ("a", "b", "c") - - - - - - - - - - - - - - - - - -
QueryResult
insert-before($x, 0, "z")("z", "a", "b", "c")
insert-before($x, 1, "z")("z", "a", "b", "c")
insert-before($x, 2, "z")("a", "z", "b", "c")

- - W3C Documentation reference -
- - fn:remove() -
- Returns a new sequence constructed from the value of $target with the item at the - position specified by the value of $position removed.
- - If $position is less than 1 or greater than the number of items in $target, $target is - returned. Otherwise, the value returned by the function consists of all items of $target - whose index is less than $position, followed by all items of $target whose index is - greater than $position. If $target is the empty sequence, the empty sequence is - returned.

- - Arguments: - - - - - - - - - - - - - -
TypeDescription
item()*$target
xs:integer$position
- Return type: item()*

- Examples:
- let $x := ("a", "b", "c") - - - - - - - - - - - - - - - - - -
QueryResult
remove($x, 0) ("a", "b", "c")
remove($x, 1)("b", "c")
remove($x, 6)("a", "b", "c")

- - W3C Documentation reference -
- - - fn:reverse() -
- Reverses the order of items in a sequence. If $arg is the empty sequence, the empty - sequence is returned.

- - Arguments: - - - - - - - - - -
TypeDescription
item()*$arg
- Return type: item()*

- Examples:
- let $x := ("a", "b", "c") - - - - - - - - - - - - - - - - - -
QueryResult
reverse($x)("c", "b", "a")
reverse(("hello")) ("hello")
reverse(())()

- - W3C Documentation reference -
- - - fn:subsequence() -
- Returns the contiguous sequence of items in the value of $sourceSeq beginning at the - position indicated by the value of $startingLoc and continuing for the number of items - indicated by the value of $length. - If $sourceSeq is the empty sequence, the empty sequence is returned.
- - If $startingLoc is zero or negative, the subsequence includes items from the beginning - of the $sourceSeq.
- - If $length is not specified, the subsequence includes items to the end of - $sourceSeq.
- - If $length is greater than the number of items in the value of $sourceSeq following - $startingLoc, the subsequence includes items to the end of $sourceSeq.
- - The first item of a sequence is located at position 1, not position 0.

- - Arguments: - - - - - - - - - - - - - - - - - -
TypeDescription
item()*$sourceSeq
xs:double$startingLoc (Optional)
xs:double$length (Optional)
- Return type: item()*

- Examples:
- let $seq = ($item1, $item2, $item3, $item4, ...) - - - - - - - - - - - - - -
QueryResult
subsequence($seq, 4)($item4, ...)
subsequence($seq, 3, 2)($item3, $item4)

- - W3C Documentation reference -
- - - fn:unordered() -
- Returns the items of $sourceSeq in an implementation dependent order.

- - Arguments: - - - - - - - - - -
TypeDescription
item()*$sourceSeq
- Return type: item()*

- - W3C Documentation reference -
- - fn:zero-or-one() -
- Returns $arg if it contains zero or one items. Otherwise, raises an error - [err:FORG0003].

- - Arguments: - - - - - - - - - -
TypeDescription
item()*$arg
- Return type: item()?

- Examples: - - - - - - - - - - - - - -
QueryResult
zero-or-one(("a"))a
zero-or-one(("a", "b"))A sequence of more than one item is not allowed as the first argument of - fn:zero-or-one() ("a", "b")

- - W3C Documentation reference -
- - - fn:one-or-more() -
- Returns $arg if it contains one or more items. Otherwise, raises an error - [err:FORG0004].

- - Arguments: - - - - - - - - - -
TypeDescription
item()*$arg
- Return type: item()?

- Examples: - - - - - - - - - - - - - -
QueryResult
one-or-more(("a"))a
one-or-more(("a", "b"))a
b

- - W3C Documentation reference -
- - - fn:exactly-one() -
- Returns $arg if it contains exactly one item. Otherwise, raises an error - [err:FORG0005].

- - Arguments: - - - - - - - - - -
TypeDescription
item()*$arg
- Return type: item()?

- Examples: - - - - - - - - - - - - - -
QueryResult
exactly-one(("a"))a
exactly-one(("a", "b"))A sequence of more than one item is not allowed as the first argument of - fn:exactly-one() ("a", "b")

- - W3C Documentation reference -
- - - fn:deep-equal() -
- This function assesses whether two sequences are deep-equal to each other. To be - deep-equal, they must contain items that are pairwise deep-equal; and for two items to - be deep-equal, they must either be atomic values that compare equal, or nodes of the - same kind, with the same name, whose children are deep-equal. This is defined in more - detail below. The $collation argument identifies a collation which is used at all levels - of recursion when strings are compared (but not when names are compared), according to - the rules in 7.3.1 Collations.
- - If the two sequences are both empty, the function returns true.
- - If the two sequences are of different lengths, the function returns false.
- - If the two sequences are of the same length, the function returns true if and only if - every item in the sequence $parameter1 is deep-equal to the item at the same position in - the sequence $parameter2. The rules for deciding whether two items are deep-equal - follow. - - For more in-depth description look into W3C Documentation

- - Arguments: - - - - - - - - - - - - - - - - - -
TypeDescription
item()*$parameter1
item()*$parameter2
xs:string$collation (Optional)
- Return type: xs:boolean

- Examples: - - - - - - - - - - - - - -
QueryResult
deep-equal(/l:library/p:person[0], /l:library/p:person[1])true
deep-equal(/l:library/p:person[0], /l:library)false

- - W3C Documentation reference -
- - - fn:id() -
- Returns the sequence of element nodes that have an ID value matching the value of one or - more of the IDREF values supplied in $arg. - -

Note:

- - This function does not have the desired effect when searching a document in which - elements of type xs:ID are used as identifiers. To preserve backwards compatibility, a - new function fn:element-with-id is therefore being introduced; it behaves the same way - as fn:id in the case of ID-valued attributes. -

- - Arguments: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string*$arg
node()*$node
xs:string$collation (Optional)
- Return type: element()*

- - W3C Documentation reference -
- - fn:idref() -
- Returns the sequence of element or attribute nodes with an IDREF value matching the - value of one or more of the ID values supplied in $arg.

- - Arguments: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string*$arg
node()*$node
xs:string$collation (Optional)
- Return type: node()*

- - W3C Documentation reference -
- - - fn:doc() -
- Returns the sequence of element or attribute nodes with an IDREF value matching the - value of one or more of the ID values supplied in $arg.

- - Arguments: - - - - - - - - - -
TypeDescription
xs:string$uri
- Return type: document-node()?

- Examples: - - - - - - - - - -
QueryResult
doc("test.xml")Contents of test.xml file returned as node

- - W3C Documentation reference -
- - - fn:doc-available() -
- Retrieves a document using a URI supplied as an xs:string, and returns the corresponding - document node.
- - If $uri is the empty sequence, the result is an empty sequence.
- - If $uri is not a valid URI, an error may be raised [err:FODC0005].
- - If $uri is a relative URI reference, it is resolved relative to the value of the base - URI property from the static context. The resulting absolute URI is promoted to an - xs:string.

- - Arguments: - - - - - - - - - -
TypeDescription
xs:string$uri
- Return type: xs:boolean

- Examples: - - - - - - - - - -
QueryResult
doc("test.xml")true (If document is available)

- - W3C Documentation reference -
- - - fn:collection() -
- This function takes an xs:string as argument and returns a sequence of nodes obtained by - interpreting $arg as an xs:anyURI and resolving it according to the mapping specified in - Available collections described in Section C.2 Dynamic Context ComponentsXP. If - Available collections provides a mapping from this string to a sequence of nodes, the - function returns that sequence. If Available collections maps the string to an empty - sequence, then the function returns an empty sequence. If Available collections provides - no mapping for the string, an error is raised [err:FODC0004].
- If $arg is not specified, the function returns the sequence of the nodes in the default - collection in the dynamic context. See Section C.2 Dynamic Context ComponentsXP. If the - value of the default collection is undefined an error is raised [err:FODC0002].

- - Arguments: - - - - - - - - - -
TypeDescription
xs:string?$arg (Optional)
- Return type: node()*

- Examples: - - - - - - - - - -
QueryResult
collection("")<empty sequence>

- - W3C Documentation reference -
- - fn:element-with-id() -
- Returns the sequence of element nodes that have an ID value matching the value of one or - more of the IDREF values supplied in $arg.

- - Arguments: - - - - - - - - - -
TypeDescription
xs:string?$arg (Optional)
- Return type: node()*

- - W3C Documentation reference -
- - fn:position() -
- Returns the context position from the dynamic context. (See Section C.2 Dynamic Context - ComponentsXP.) If the context item is undefined, an error is raised: - [err:XPDY0002]XP.

- - Return type: xs:integer

- Examples: - - - - - - - - - -
QueryResult
/l:library/l:readerList/position()1

- - W3C Documentation reference -
- - - fn:last() -
- Returns the context size from the dynamic context. (See Section C.2 Dynamic Context - ComponentsXP.) If the context item is undefined, an error is raised: - [err:XPDY0002]XP.

- - Return type: xs:integer

- Examples: - - - - - - - - - -
QueryResult
/l:library/l:readerList/p:person/last()2
2

- - W3C Documentation reference -
- -
-
-
- - - -
- - fn:years-from-duration() -
- Returns an xs:integer representing the years component in the value of $arg. The result - is obtained by casting $arg to an xs:yearMonthDuration (see 17.1.4 Casting to duration - types) and then computing the years component as described in 10.3.1.3 Canonical - representation.
- - The result may be negative.
- - If $arg is an xs:dayTimeDuration returns 0.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
years-from-duration(xs:yearMonthDuration("P20Y15M"))21
years-from-duration(xs:yearMonthDuration("-P15M"))-1
years-from-duration(xs:dayTimeDuration("-P2DT15H"))0

- W3C Documentation reference -
- - fn:months-from-duration() -
- Returns an xs:integer representing the months component in the value of $arg. The result - is obtained by casting $arg to an xs:yearMonthDuration (see 17.1.4 Casting to duration - types) and then computing the months component as described in 10.3.1.3 Canonical - representation.
- - The result may be negative.
- - If $arg is an xs:dayTimeDuration returns 0.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
months-from-duration(xs:yearMonthDuration("P20Y15M"))3
months-from-duration(xs:yearMonthDuration("-P20Y18M"))-6
months-from-duration(xs:dayTimeDuration("-P2DT15H0M0S"))0

- W3C Documentation reference -
- - fn:days-from-duration() -
- Returns an xs:integer representing the days component in the value of $arg. The result - is obtained by casting $arg to an xs:dayTimeDuration (see 17.1.4 Casting to duration - types) and then computing the days component as described in 10.3.2.3 Canonical - representation.
- - The result may be negative.
- - If $arg is an xs:yearMonthDuration returns 0.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
days-from-duration(xs:dayTimeDuration("P3DT10H"))3
days-from-duration(xs:dayTimeDuration("P3DT55H"))5
days-from-duration(xs:yearMonthDuration("P3Y5M"))0

- W3C Documentation reference -
- - fn:hours-from-duration() -
- Returns an xs:integer representing the hours component in the value of $arg. The result - is obtained by casting $arg to an xs:dayTimeDuration (see 17.1.4 Casting to duration - types) and then computing the hours component as described in 10.3.2.3 Canonical - representation.
- - The result may be negative.
- - If $arg is an xs:yearMonthDuration returns 0.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
hours-from-duration(xs:dayTimeDuration("P3DT10H"))10
hours-from-duration(xs:dayTimeDuration("P3DT12H32M12S"))12
hours-from-duration(xs:dayTimeDuration("PT123H"))0

- W3C Documentation reference -
- - - fn:minutes-from-duration() -
- Returns an xs:integer representing the minutes component in the value of $arg. The - result is obtained by casting $arg to an xs:dayTimeDuration (see 17.1.4 Casting to - duration types) and then computing the minutes component as described in 10.3.2.3 - Canonical representation. - - The result may be negative. - - If $arg is an xs:yearMonthDuration returns 0. - - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
minutes-from-duration(xs:dayTimeDuration("P3DT10H"))0
minutes-from-duration(xs:dayTimeDuration("-P5DT12H30M"))-30

- W3C Documentation reference -
- - - fn:seconds-from-duration() -
- Returns an xs:decimal representing the seconds component in the value of $arg. The - result is obtained by casting $arg to an xs:dayTimeDuration (see 17.1.4 Casting to - duration types) and then computing the seconds component as described in 10.3.2.3 - Canonical representation.
- - The result may be negative.
- - If $arg is an xs:yearMonthDuration returns 0.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?$arg
- Return type: xs:decimal?

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
seconds-from-duration(xs:dayTimeDuration("P3DT10H12.5S"))12.5
seconds-from-duration(xs:dayTimeDuration("-PT256S"))-16.0

- W3C Documentation reference -
- - - fn:year-from-dateTime() -
- Returns an xs:integer representing the year component in the localized value of $arg. - The result may be negative.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
year-from-dateTime(xs:dateTime("1999-05-31T13:20:00-05:00"))1999
year-from-dateTime(xs:dateTime("1999-12-31T19:20:00"))1999
year-from-dateTime(xs:dateTime("1999-12-31T24:00:00"))2000

- W3C Documentation reference -
- - - fn:month-from-dateTime() -
- Returns an xs:integer between 1 and 12, both inclusive, representing the month component - in the localized value of $arg.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
month-from-dateTime(xs:dateTime("1999-05-31T13:20:00-05:00"))5
month-from-dateTime(xs:dateTime("1999-12-31T19:20:00"))12
month-from-dateTime(xs:dateTime("1999-12-31T24:00:00"))1

- W3C Documentation reference -
- - fn:day-from-dateTime() -
- Returns an xs:integer between 1 and 31, both inclusive, representing the day component - in the localized value of $arg.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
day-from-dateTime(xs:dateTime("1999-05-31T13:20:00-05:00"))31
day-from-dateTime(xs:dateTime("1999-12-31T19:20:00"))31
day-from-dateTime(xs:dateTime("1999-12-31T24:00:00"))1

- W3C Documentation reference -
- - - fn:hours-from-dateTime() -
- Returns an xs:integer between 0 and 23, both inclusive, representing the hours component - in the localized value of $arg.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
hours-from-dateTime(xs:dateTime("1999-05-31T13:20:00-05:00"))13
hours-from-dateTime(xs:dateTime("1999-12-31T19:20:00"))19
hours-from-dateTime(xs:dateTime("1999-12-31T24:00:00"))0

- W3C Documentation reference -
- - - fn:minutes-from-dateTime() -
- Returns an xs:integer value between 0 and 59, both inclusive, representing the minute - component in the localized value of $arg.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
minutes-from-dateTime(xs:dateTime("1999-05-31T13:20:00-05:00"))20
minutes-from-dateTime(xs:dateTime("1999-05-31T13:30:00+05:30"))30

- W3C Documentation reference -
- - fn:seconds-from-dateTime() -
- Returns an xs:decimal value greater than or equal to zero and less than 60, representing - the seconds and fractional seconds in the localized value of $arg.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?$arg
- Return type: xs:decimal?

- Examples:
- - - - - - - - - -
ExpressionResult
seconds-from-dateTime(xs:dateTime("1999-05-31T13:20:00-05:00"))0

- W3C Documentation reference -
- - fn:timezone-from-dateTime() -
- Returns an xs:decimal value greater than or equal to zero and less than 60, representing - the seconds and fractional seconds in the localized value of $arg.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?$arg
- Return type: xs:dayTimeDuration?

- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
timezone-from-dateTime(xs:dateTime("1999-05-31T13:20:00-05:00"))-PT5H
timezone-from-dateTime(xs:dateTime("2000-06-12T13:20:00Z")) PT0S
timezone-from-dateTime(xs:dateTime("2004-08-27T00:00:00"))()

- W3C Documentation reference -
- - - fn:year-from-date() -
- Returns an xs:integer representing the year in the localized value of $arg. The value - may be negative.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:date?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
year-from-date(xs:date("1999-05-31"))1999
year-from-date(xs:date("2000-01-01+05:00"))2000

- W3C Documentation reference -
- - fn:month-from-date() -
- Returns an xs:integer between 1 and 12, both inclusive, representing the month component - in the localized value of $arg.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:date?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
month-from-date(xs:date("1999-05-31-05:00"))5
month-from-date(xs:date("2000-01-01+05:00"))1

- W3C Documentation reference -
- - fn:day-from-date() -
- Returns an xs:integer between 1 and 31, both inclusive, representing the day component - in the localized value of $arg.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:date?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
day-from-date(xs:date("1999-05-31-05:00"))31
day-from-date(xs:date("2000-01-01+05:00"))1

- W3C Documentation reference -
- - - fn:timezone-from-date() -
- Returns the timezone component of $arg if any. If $arg has a timezone component, then - the result is an xs:dayTimeDuration that indicates deviation from UTC; its value may - range from +14:00 to -14:00 hours, both inclusive. Otherwise, the result is the empty - sequence.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:date?$arg
- Return type: xs:dayTimeDuration?

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
timezone-from-date(xs:date("1999-05-31-05:00"))-PT5H
timezone-from-date(xs:date("2000-06-12Z"))PT0S

- W3C Documentation reference -
- - - fn:hours-from-time() -
- Returns an xs:integer between 0 and 23, both inclusive, representing the value of the - hours component in the localized value of $arg.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:time?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
hours-from-time(xs:time("11:23:00"))11
hours-from-time(xs:time("24:00:00"))0

- W3C Documentation reference -
- - - fn:minutes-from-time() -
- Returns an xs:integer between 0 and 23, both inclusive, representing the value of the - hours component in the localized value of $arg.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:time?$arg
- Return type: xs:integer?

- Examples:
- - - - - - - - - - - - - -
ExpressionResult
hours-from-time(xs:time("11:23:00"))11
hours-from-time(xs:time("24:00:00"))0

- W3C Documentation reference -
- - fn:seconds-from-time() -
- Returns an xs:decimal value greater than or equal to zero and less than 60, representing - the seconds and fractional seconds in the localized value of $arg.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:time?$arg
- Return type: xs:decimal?

- Examples:
- - - - - - - - - - -
ExpressionResult
seconds-from-time(xs:time("13:20:10.5"))10.5

- W3C Documentation reference -
- - - fn:timezone-from-time() -
- Returns an xs:decimal value greater than or equal to zero and less than 60, representing - the seconds and fractional seconds in the localized value of $arg.
- - If $arg is the empty sequence, returns the empty sequence.

- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:time?$arg
- Return type: xs:dayTimeDuration?

- Examples:
- - - - - - - - - - - - - - -
ExpressionResult
timezone-from-time(xs:time("13:20:00-05:00"))-PT5H
timezone-from-time(xs:time("13:20:00"))()

- W3C Documentation reference -
- - - fn:adjust-date-to-timezone() -
- Adjusts an xs:date value to a specific timezone, or to no timezone at all. If $timezone - is the empty sequence, returns an xs:date without a timezone. Otherwise, returns an - xs:date with a timezone. For purposes of timezone adjustment, an xs:date is treated as - an xs:dateTime with time 00:00:00.
- - If $timezone is not specified, then $timezone is the value of the implicit timezone in - the dynamic context.
- - If $arg is the empty sequence, then the result is the empty sequence.
- - A dynamic error is raised [err:FODT0003] if $timezone is less than -PT14H or greater - than PT14H or if does not contain an integral number of minutes.
- - If $arg does not have a timezone component and $timezone is the empty sequence, then the - result is the value of $arg.
- - If $arg does not have a timezone component and $timezone is not the empty sequence, then - the result is $arg with $timezone as the timezone component.
- - If $arg has a timezone component and $timezone is the empty sequence, then the result is - the localized value of $arg without its timezone component.
- - If $arg has a timezone component and $timezone is not the empty sequence, then: -
    -
  • Let $srcdt be an xs:dateTime value, with 00:00:00 for the time component and - date and timezone components that are the same as the date and timezone - components of $arg.
  • -
  • Let $r be the result of evaluating fn:adjust-dateTime-to-timezone($srcdt, - $timezone)
  • -
  • The result of this function will be a date value that has date and timezone - components that are the same as the date and timezone components of $r.
  • -
-

- - Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:date?$arg
xs:dayTimeDuration?$timezone
- Return type: xs:date?

- Examples:
- - - - - - - - - - - - - - -
ExpressionResult
adjust-date-to-timezone(xs:date("2002-03-07"))2002-03-07-05:00
adjust-date-to-timezone(xs:date("2002-03-07"), xs:dayTimeDuration("-PT10H")) - 2002-03-07-10:00

- W3C Documentation reference -
- - fn:adjust-time-to-timezone() -
- Adjusts an xs:time value to a specific timezone, or to no timezone at all. If $timezone - is the empty sequence, returns an xs:time without a timezone. Otherwise, returns an - xs:time with a timezone.
- - If $timezone is not specified, then $timezone is the value of the implicit timezone in - the dynamic context.
- - If $arg is the empty sequence, then the result is the empty sequence.
- - A dynamic error is raised [err:FODT0003] if $timezone is less than -PT14H or greater - than PT14H or if does not contain an integral number of minutes.
- - If $arg does not have a timezone component and $timezone is the empty sequence, then the - result is $arg.
- - If $arg does not have a timezone component and $timezone is not the empty sequence, then - the result is $arg with $timezone as the timezone component.
- - If $arg has a timezone component and $timezone is the empty sequence, then the result is - the localized value of $arg without its timezone component.
- - If $arg has a timezone component and $timezone is not the empty sequence, then: -
    -
  • Let $srcdt be an xs:dateTime value, with an arbitrary date for the date - component and time and timezone components that are the same as the time and - timezone components of $arg.
  • -
  • Let $r be the result of evaluating fn:adjust-dateTime-to-timezone($srcdt, - $timezone)
  • -
  • The result of this function will be a time value that has time and timezone - components that are the same as the time and timezone components of $r.
  • -
-

- - Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:time?$arg
xs:dayTimeDuration?$timezone
- Return type: xs:time?

- Examples:
- - - - - - - - - - - - - - -
ExpressionResult
adjust-time-to-timezone(xs:time("10:00:00"))10:00:00-05:00
adjust-time-to-timezone(xs:time("10:00:00"), xs:dayTimeDuration("-PT10H")) - 10:00:00-10:00

- W3C Documentation reference -
- - fn:current-dateTime() -
- Returns the current dateTime (with timezone) from the dynamic context. (See Section C.2 - Dynamic Context ComponentsXP.) This is an xs:dateTime that is current at some time - during the evaluation of a query or transformation in which fn:current-dateTime() is - executed. This function is ·stable·. The precise instant during the query or - transformation represented by the value of fn:current-dateTime() is ·implementation - dependent·.

- - Return type: xs:dateTime

- Examples:
- - - - - - - - - - -
ExpressionResult
current-dateTime()xs:dateTime corresponding to the current date and time

- W3C Documentation reference -
- - fn:current-date() -
- Returns xs:date(fn:current-dateTime()). This is an xs:date (with timezone) that is - current at some time during the evaluation of a query or transformation in which - fn:current-date() is executed. This function is ·stable·. The precise instant during the - query or transformation represented by the value of fn:current-date() is ·implementation - dependent·.

- - Return type: xs:date

- Examples:
- - - - - - - - - - -
ExpressionResult
current-date()xs:date corresponding to the current date

- W3C Documentation reference -
- - - fn:current-time() -
- Returns xs:date(fn:current-dateTime()). This is an xs:date (with timezone) that is - current at some time during the evaluation of a query or transformation in which - fn:current-date() is executed. This function is ·stable·. The precise instant during the - query or transformation represented by the value of fn:current-date() is ·implementation - dependent·.

- - Return type: xs:time

- Examples:
- - - - - - - - - - -
ExpressionResult
current-time()xs:date corresponding to the current time

- W3C Documentation reference -
- - fn:implicit-timezone() -
- Returns the value of the implicit timezone property from the dynamic context. Components - of the dynamic context are discussed in Section C.2 Dynamic Context - ComponentsXP.

- - Return type: xs:string

- Examples:
- - - - - - - - - - -
ExpressionResult
implicit-timezone()PT0S

- W3C Documentation reference -
-
-
-
- - - -
- - fn:error() -
- The fn:error function is a general function that may be invoked as above but may also be - invoked from [XQuery 1.0: An XML Query Language] or [XML Path Language (XPath) 2.0] - applications with, for example, an xs:QName argument. -
- W3C Documentation reference -
- - - fn:trace() -
- Provides an execution trace intended to be used in debugging queries.
- - The input $value is returned, unchanged, as the result of the function. In addition, the - inputs $value, converted to an xs:string, and $label may be directed to a trace data - set. The destination of the trace output is ·implementation-defined·. The format of the - trace output is ·implementation dependent·. The ordering of output from invocations of - the fn:trace() function is ·implementation dependent·.
- - Arguments: - - - - - - - - - - - - - -
TypeDescription
item*$value
xs:string$label
- Return type: item

-
- W3C Documentation reference -
- - -
-
-
- - - -
- - fn:resolve-uri() -
- This function enables a relative URI reference to be resolved against an absolute URI. - - The first form of this function resolves $relative against the value of the base-uri - property from the static context. If the base-uri property is not initialized in the - static context an error is raised [err:FONS0005].
- - If $relative is a relative URI reference, it is resolved against $base, or against the - base-uri property from the static context, using an algorithm such as those described in - [RFC 2396] or [RFC 3986], and the resulting absolute URI reference is returned.
- If $relative is an absolute URI reference, it is returned unchanged.
- - If $relative is the empty sequence, the empty sequence is returned.
- - If $relative is not a valid URI according to the rules of the xs:anyURI data type, or if - it is not a suitable relative reference to use as input to the chosen resolution - algorithm, then an error is raised [err:FORG0002].
- - If $base is not a valid URI according to the rules of the xs:anyURI data type, if it is - not a suitable URI to use as input to the chosen resolution algorithm (for example, if - it is a relative URI reference, if it is a non-hierarchic URI, or if it contains a - fragment identifier), then an error is raised [err:FORG0002].
- - If the chosen resolution algorithm fails for any other reason then an error is raised - [err:FORG0009].
- -

Note:

- - Resolving a URI does not dereference it. This is merely a syntactic operation on two - character strings. -

- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?$relative
xs:string$base
- Return type: xs:anyURI?

-
- W3C Documentation reference -
- - fn:resolve-QName() -
- Returns an xs:QName value (that is, an expanded-QName) by taking an xs:string that has - the lexical form of an xs:QName (a string in the form "prefix:local-name" or - "local-name") and resolving it using the in-scope namespaces for a given element.
- - If $qname does not have the correct lexical form for xs:QName an error is raised - [err:FOCA0002].
- - If $qname is the empty sequence, returns the empty sequence.
- - More specifically, the function searches the namespace bindings of $element for a - binding whose name matches the prefix of $qname, or the zero-length string if it has no - prefix, and constructs an expanded-QName whose local name is taken from the supplied - $qname, and whose namespace URI is taken from the string value of the namespace - binding.
- - If the $qname has a prefix and if there is no namespace binding for $element that - matches this prefix, then an error is raised [err:FONS0004].
- - If the $qname has no prefix, and there is no namespace binding for $element - corresponding to the default (unnamed) namespace, then the resulting expanded-QName has - no namespace part.
- - The prefix (or absence of a prefix) in the supplied $qname argument is retained in the - returned expanded-QName, as discussed in Section 2.1 TerminologyDM.

- - Arguments: - - - - - - - - - - - - - -
TypeDescription
xs:string?$qname
element$element
- Return type: xs:QName?

- Examples: - - - - - - - - - - - - - -
QueryResult
resolve-QName("hello", /l:library/l:libraryName)hello
resolve-QName("l:libraryID", /l:library/l:libraryName)l:libraryID

- - W3C Documentation reference -
- - fn:QName() -
- Returns an xs:QName with the namespace URI given in $paramURI. If $paramURI is the - zero-length string or the empty sequence, it represents "no namespace"; in this case, if - the value of $paramQName contains a colon (:), an error is raised [err:FOCA0002]. The - prefix (or absence of a prefix) in $paramQName is retained in the returned xs:QName - value. The local name in the result is taken from the local part of $paramQName.
- - If $paramQName does not have the correct lexical form for xs:QName an error is raised - [err:FOCA0002].
- - Note that unlike xs:QName this function does not require a xs:string literal as the - argument.

- Arguments: - - - - - - - - - - - - - -
TypeDescription
xs:string?$paramURI
xs:string$paramQName
- Return type: xs:QName

- Examples: - - - - - - - - - -
QueryResult
QName("http://www.release11.com/library", "l:libraryName")l:libraryName
- For more extensive examples see W3C documentation below.
- - W3C Documentation reference -
- - fn:prefix-from-QName() -
- Returns an xs:NCName representing the prefix of $arg. The empty sequence is returned if - $arg is the empty sequence or if the value of $arg contains no prefix.

- - Arguments: - - - - - - - - - -
TypeDescription
xs:QName?$arg
- Return type: xs:NCName?

- Examples: - - - - - - - - - -
QueryResult
prefix-from-QName(resolve-QName("l:library", /l:library))l
- - W3C Documentation reference -
- - fn:local-name-from-QName() -
- Returns an xs:NCName representing the local part of $arg. If $arg is the empty sequence, - returns the empty sequence.

- - Arguments: - - - - - - - - - -
TypeDescription
xs:QName?$arg
- Return type: xs:NCName?

- Examples: - - - - - - - - - -
QueryResult
prefix-from-QName(resolve-QName("l:library", /l:library))library
- - W3C Documentation reference -
- - - fn:prefix-from-QName() -
- Returns an xs:NCName representing the prefix of $arg. The empty sequence is returned if - $arg is the empty sequence or if the value of $arg contains no prefix.

- - Arguments: - - - - - - - - - -
TypeDescription
xs:QName?$arg
- Return type: xs:NCName?

- Examples: - - - - - - - - - -
QueryResult
prefix-from-QName(resolve-QName("l:library", /l:library))l
- - W3C Documentation reference -
- - fn:namespace-uri-from-QName() -
- Returns the namespace URI for $arg as an xs:anyURI. If $arg is the empty sequence, the - empty sequence is returned. If $arg is in no namespace, the zero-length xs:anyURI is - returned.

- - Arguments: - - - - - - - - - -
TypeDescription
xs:QName?$arg
- Return type: xs:anyURI?

- Examples: - - - - - - - - - -
QueryResult
prefix-from-QName(resolve-QName("l:library", /l:library))http://www.release11.com/library
- - W3C Documentation reference -
- - - fn:namespace-uri-for-prefix() -
- Returns the namespace URI of one of the in-scope namespaces for $element, identified by - its namespace prefix.
- - If $element has an in-scope namespace whose namespace prefix is equal to $prefix, it - returns the namespace URI of that namespace. If $prefix is the zero-length string or the - empty sequence, it returns the namespace URI of the default (unnamed) namespace. - Otherwise, it returns the empty sequence.
- - Prefixes are equal only if their Unicode code points match exactly.

- - Arguments: - - - - - - - - - - - - - -
TypeDescription
xs:string?$prefix
element()$element
- Return type: xs:anyURI?

- Examples: - - - - - - - - - -
QueryResult
namespace-uri-for-prefix("l", /l:library)http://www.release11.com/library
- - W3C Documentation reference -
- - - fn:in-scope-prefixes() -
- Returns the prefixes of the in-scope namespaces for $element. For namespaces that have a - prefix, it returns the prefix as an xs:NCName. For the default namespace, which has no - prefix, it returns the zero-length string.

- - Arguments: - - - - - - - - - -
TypeDescription
element()$element
- Return type: xs:string*

- Examples: - - - - - - - - - -
QueryResult
in-scope-prefixes(/l:library)b
l
p
xsi
xml
- - W3C Documentation reference -
- - fn:static-base-uri() -
- Returns the value of the Base URI property from the static context. If the Base URI - property is undefined, the empty sequence is returned. Components of the static context - are discussed in Section C.1 Static Context ComponentsXP.

- - Return type: xs:anyURI?

- Examples:
- - - - - - - - - - -
ExpressionResult
static-base-uri()()<empty sequence>

- W3C Documentation reference -
- -
-
-
- -
- - - -
- - fn:outermost(node()*) -
- Returns the outermost nodes of the input sequence that are not ancestors of any other - node in the input sequence
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()*Sequence of nodes
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:outermost(//chapter)Sequence of outermost chapter nodes
fn:outermost(/book//*)Sequence of outermost nodes in the book

- W3C Documentation reference: outermost -
- - - fn:innermost(node()*) -
- Returns the innermost nodes of the input sequence that are not descendants of any other - node in the input sequence
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()*Sequence of nodes
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:innermost(//chapter)Sequence of innermost chapter nodes
fn:innermost(/book//*)Sequence of innermost nodes in the book

- W3C Documentation reference: innermost -
- - - fn:has-children(node()?) -
- Returns true if the specified node has one or more children, otherwise returns false
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:has-children(/book/chapter[1])true
fn:has-children(/book/chapter[1]/title)false

- W3C Documentation reference: has-children -
- - - fn:path(node()?) -
- Returns a string that represents the path of the specified node within the XML - document
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:path(/book/chapter[1])/book/chapter[1]
fn:path(/book/chapter[2]/title)/book/chapter[2]/title

- W3C Documentation reference: path -
- - - fn:root(node()?) -
- Returns the root node of the tree that contains the specified node
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:root(/book/chapter)<book> element (root node)
fn:root(/book/chapter[1])<book> element (root node)

- W3C Documentation reference: root -
- - - fn:namespace-uri(node()?) -
- Returns the namespace URI of the specified node
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:namespace-uri(/example:root)"http://www.example.com/ns"
fn:namespace-uri(/a/b)""

- W3C Documentation reference: namespace-uri -
- - - fn:local-name(node()?) -
- Returns the local part of the name of the specified node
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:local-name(/a/b)"b"
fn:local-name(/example:root)"root"

- W3C Documentation reference: local-name -
- - fn:name(node()?) -
- Returns the expanded QName of the specified node as a string
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:name(/a/b)"b"
fn:name(/example:root)"example:root"

- W3C Documentation reference: name -
- - - - fn:document-uri(node?) -
- Returns the document URI of the given node or the context item
- Arguments and return type: - - - - - - - - - -
TypeDescription
node?Returns the document URI of the specified node or the context item (if no - argument is provided)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:document-uri(/library/fiction:book[1])http://example.com/library.xml (assuming the document URI of the first - fiction:book element is "http://example.com/library.xml")
fn:document-uri(/library)http://example.com/library.xml (assuming the document URI of the library - element is "http://example.com/library.xml")

- W3C Documentation reference: Document-URI -
- - - fn:base-uri(node?) -
- Returns the base URI of the node or the context item
- Arguments and return type: - - - - - - - - - -
TypeDescription
node?Returns the base URI of the specified node or the context item (if no - argument is provided)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:base-uri(/library/fiction:book[1])http://example.com/library.xml (assuming the base URI of the first - fiction:book element is "http://example.com/library.xml")
fn:base-uri(/library)http://example.com/library.xml (assuming the base URI of the library element - is "http://example.com/library.xml")

- W3C Documentation reference: Base-URI -
- - - fn:node-name(node?) -
- - Returns the name of a node as an xs:QName
- Arguments and return type: - - - - - - - - - -
TypeDescription
node?Returns the name of the specified node or the context item if the argument - is omitted
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:node-name(/library/*[1])fiction:book
fn:node-name(/library/fiction:book[1]/title)title

- W3C Documentation reference: Node-Name -
- -
-
-
- - - -
- - fn:not(item()*) -
- Returns the negation of the effective boolean value of the argument
- Arguments and return type: - - - - - - - - - -
TypeDescription
item()*Argument whose effective boolean value is to be negated
- Examples:
- - - - - - - - - - - - - - - - - - - - - -
ExpressionResult
fn:not(1)false
fn:not(0)true
fn:not('')true
fn:not('true')false

- W3C Documentation reference: Not -
- - - fn:false() -
- Returns the boolean value false
- Arguments and return type: - - - - - - - - - -
TypeDescription
NoneReturns the boolean value false
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:false()false
//item[fn:false()]Returns an empty node-set

- W3C Documentation reference: False -
- - - fn:true() -
- Returns the boolean value true
- Arguments and return type: - - - - - - - - - -
TypeDescription
NoneReturns the boolean value true
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:true()true
//item[fn:true()]Returns all <item> elements

- W3C Documentation reference: True -
- - - fn:boolean(item()*) -
- Converts the argument to a boolean value
- Arguments and return type: - - - - - - - - - -
TypeDescription
item()*Argument to be converted to a boolean value
- Examples:
- - - - - - - - - - - - - - - - - - - - - -
ExpressionResult
fn:boolean(1)true
fn:boolean(0)false
fn:boolean('')false
fn:boolean('true')true

- W3C Documentation reference: Boolean -
- - -
-
-
- - - -
- - fn:unparsed-text-available(xs:string?, xs:string?) -
- Determines if an unparsed text resource identified by a URI can be read using the given - encoding
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI identifying the unparsed text resource
xs:string?The encoding to be used for reading the resource
xs:booleanIndicates if the resource can be read using the given encoding
- Examples:
- - - - - - - - - -
ExpressionResult
fn:unparsed-text-available("http://www.example.com/text.txt", "UTF-8")Returns true if the text resource identified by the specified URI can be - read using the specified encoding, otherwise false

- W3C Documentation reference: unparsed-text-available -
- - - fn:unparsed-text-lines(xs:string?, xs:string?) -
- Returns the contents of an unparsed text resource identified by a URI, split into - lines
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI identifying the unparsed text resource
xs:string?The encoding to be used for reading the resource
xs:string*The lines of the unparsed text resource
- Examples:
- - - - - - - - - -
ExpressionResult
fn:unparsed-text-lines("http://www.example.com/text.txt", "UTF-8")Returns the lines of the text resource identified by the specified URI, - using the specified encoding

- W3C Documentation reference: unparsed-text-lines -
- - - fn:unparsed-text(xs:string?, xs:string?) -
- Returns the contents of an unparsed text resource identified by a URI
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI identifying the unparsed text resource
xs:string?The encoding to be used for reading the resource
xs:string?The contents of the unparsed text resource
- Examples:
- - - - - - - - - -
ExpressionResult
fn:unparsed-text("http://www.example.com/text.txt", "UTF-8")Returns the contents of the text resource identified by the specified URI, - using the specified encoding

- W3C Documentation reference: unparsed-text -
- - - fn:escape-html-uri(xs:string?) -
- Escapes special characters in a URI to be used in HTML
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?URI to be escaped for use in HTML
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:escape-html-uri('https://example.com/search?q=test&lang=en')https://example.com/search?q=test&lang=en
fn:escape-html-uri('https://example.com/page?id=1§ion=2')https://example.com/page?id=1&section=2

- W3C Documentation reference: Escape-HTML-URI -
- - - fn:iri-to-uri(xs:string?) -
- Converts an IRI to a URI by escaping non-ASCII characters
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?IRI to be converted to a URI
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:iri-to-uri('https://example.com/ümlaut')https://example.com/%C3%BCmlaut
fn:iri-to-uri('https://example.com/日本語')https://example.com/%E6%97%A5%E6%9C%AC%E8%AA%9E

- W3C Documentation reference: IRI-to-URI -
- - - fn:encode-for-uri(xs:string?) -
- Encodes a string for use in a URI by escaping special characters
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?String to be encoded for use in a URI
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:encode-for-uri('hello world')hello%20world
fn:encode-for-uri('example?query=value¶m=value2')example%3Fquery%3Dvalue%26param%3Dvalue2

- W3C Documentation reference: Encode-for-URI -
- - - fn:resolve-uri(xs:string?, xs:string?) -
- Resolves a relative URI using a base URI
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Relative URI to resolve
xs:string?Base URI to use for resolving (optional)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:resolve-uri('example.html', 'https://www.example.com/folder/')https://www.example.com/folder/example.html
fn:resolve-uri('../images/pic.jpg', - 'https://www.example.com/folder/page.html')https://www.example.com/images/pic.jpg

- W3C Documentation reference: Resolve-URI -
- - fn:analyze-string(xs:string?, xs:string, xs:string?) -
- Analyzes the input string and returns an XML fragment containing match and non-match - elements
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to analyze
xs:stringRegular expression pattern to match
xs:string?Flags to control the regular expression matching (optional)
- Examples:
- - - - - - - - - -
ExpressionResult
fn:analyze-string('red,green,blue', ',') - <fn:analyze-string-result><fn:non-match>red</fn:non-match><fn:match>, - <fn:non-match>green</fn:non-match><fn:match>, - <fn:non-match>blue</fn:non-match></fn:analyze-string-result> -

- W3C Documentation reference: Analyze-String -
- - - fn:tokenize(xs:string?, xs:string, xs:string?) -
- Splits the input string into a sequence of substrings using the pattern as a delimiter -
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to tokenize
xs:stringRegular expression pattern to use as delimiter
xs:string?Flags to control the regular expression matching (optional)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:tokenize('XPath 3.0, XQuery 3.0, XSLT 3.0', ',\\s*')('XPath 3.0', 'XQuery 3.0', 'XSLT 3.0')
fn:tokenize('apple,orange,banana', ',')('apple', 'orange', 'banana')

- W3C Documentation reference: Tokenize -
- - - fn:replace(xs:string?, xs:string, xs:string, xs:string?) -
- Replaces occurrences of the pattern in the input string with the replacement string
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to search within
xs:stringRegular expression pattern to match
xs:stringReplacement string
xs:string?Flags to control the regular expression matching (optional)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:replace('XPath 3.0 is great', '3.0', '3.1')'XPath 3.1 is great'
fn:replace('Hello, World!', 'World', 'XPath')'Hello, XPath!'

- W3C Documentation reference: Replace -
- - - fn:matches(xs:string?, xs:string, xs:string?) -
- Returns true if the input string matches the regular expression pattern, otherwise false -
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to search within
xs:stringRegular expression pattern to match
xs:string?Flags to control the regular expression matching (optional)
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:matches('XPath 3.0', '\\d\\.\\d')true
fn:matches('Hello, World!', '[A-Z][a-z]*')true
fn:matches('example123', '\\d+', 'q')false

- W3C Documentation reference: Matches -
- - - fn:substring-after(xs:string?, xs:string?) -
- Returns the part of the first string that follows the first occurrence of the second - string
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to search within
xs:string?Substring to search for
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:substring-after('Hello, World!', ',')' World!'
fn:substring-after('XPath 3.0 is awesome!', '3.0')' is awesome!'

- W3C Documentation reference: Substring-After -
- - - fn:substring-before(xs:string?, xs:string?) -
- Returns the part of the first string that precedes the first occurrence of the second - string
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to search within
xs:string?Substring to search for
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:substring-before('Hello, World!', ',')'Hello'
fn:substring-before('XPath 3.0 is awesome!', '3.0')'XPath '

- W3C Documentation reference: Substring-Before -
- - - fn:ends-with(xs:string?, xs:string?) -
- Returns true if the first string ends with the second string, otherwise false
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to check
xs:string?Substring to check for at the end of the first string
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:ends-with('Hello, World!', 'World!')true
fn:ends-with('Hello, World!', 'Hello')false
fn:ends-with('XPath 3.0', '3.0')true

- W3C Documentation reference: Ends-With -
- - - fn:starts-with(xs:string?, xs:string?) -
- Returns true if the first string starts with the second string, otherwise false
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to check
xs:string?Substring to check for at the beginning of the first string
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:starts-with('Hello, World!', 'Hello')true
fn:starts-with('Hello, World!', 'World')false
fn:starts-with('XPath 3.0', 'XPath')true

- W3C Documentation reference: Starts-With -
- - - fn:contains(xs:string?, xs:string?) -
- Returns true if the first string contains the second string, otherwise false
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to search within
xs:string?Substring to search for
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:contains('Hello, World!', 'World')true
fn:contains('Hello, World!', 'world')false
fn:contains('XPath 3.0', '3.0')true

- W3C Documentation reference: Contains -
- - - fn:translate(xs:string?, xs:string, xs:string) -
- Returns the input string with specified characters replaced
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to be translated
xs:stringMap string with characters to replace
xs:stringTranslate string with replacement characters
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:translate('apple', 'aeiou', '12345')'1ppl2'
fn:translate('Hello, World!', 'HW', 'hw')'hello, world!'

- W3C Documentation reference: Translate -
- - - fn:lower-case(xs:string?) -
- Returns the input string with all characters converted to lowercase
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?Input string to convert to lowercase
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:lower-case('HELLO, WORLD!')'hello, world!'
fn:lower-case('XPath 3.0')'xpath 3.0'
fn:lower-case('BANANA')'banana'

- W3C Documentation reference: Lower-Case -
- - - fn:upper-case(xs:string?) -
- Returns the input string with all characters converted to uppercase
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?Input string to convert to uppercase
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:upper-case('Hello, World!')'HELLO, WORLD!'
fn:upper-case('XPath 3.0')'XPATH 3.0'
fn:upper-case('banana')'BANANA'

- W3C Documentation reference: Upper-Case -
- - - fn:normalize-unicode(xs:string?, xs:string) -
- Returns the input string with Unicode normalization applied
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to normalize
xs:stringNormalization form to apply (NFC, NFD, NFKC, NFKD)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:normalize-unicode('Café', 'NFC')'Café'
fn:normalize-unicode('Café', 'NFD')'Café'

- W3C Documentation reference: Normalize-Unicode -
- - - fn:normalize-space(xs:string?) -
- Returns the input string with whitespace normalized
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?Input string to normalize whitespace
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:normalize-space(' Hello, World! ')'Hello, World!'
fn:normalize-space(' XPath 3.0 ')'XPath 3.0'
fn:normalize-space('\tbanana\t')'banana'

- W3C Documentation reference: Normalize-Space -
- - - fn:string-length(xs:string?) -
- Returns the length of the input string
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?Input string to calculate length
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:string-length('Hello, World!')13
fn:string-length('XPath 3.0')8
fn:string-length('banana')6

- W3C Documentation reference: String-Length -
- - - fn:substring(xs:string?, xs:double) -
- Returns a substring of the source string, starting from a specific location
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input source string
xs:doubleStarting location to extract the substring
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:substring('Hello, World!', 1, 5)'Hello'
fn:substring('XPath 3.0', 7)'3.0'
fn:substring('banana', 2, 3)'ana'

- W3C Documentation reference: Substring -
- - fn:string-join(xs:string*, xs:string) -
- Joins a sequence of strings with a specified separator, returning a single string
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string*Input sequence of strings to join
xs:stringSeparator string to insert between joined strings
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:string-join(('apple', 'banana', 'orange'), ', ')'apple, banana, orange'
fn:string-join(('XPath', '3.0', 'Functions'), ' - ')'XPath - 3.0 - Functions'
fn:string-join(('A', 'B', 'C'), '')'ABC'

- W3C Documentation reference: String-Join -
- - - fn:concat(xs:anyAtomicType?, xs:anyAtomicType?, ...) -
- Concatenates two or more strings or atomic values, returning a single string
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:anyAtomicType?Input strings or atomic values to concatenate
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:concat('Hello', ' ', 'World')'Hello World'
fn:concat('I have ', 3, ' apples')'I have 3 apples'
fn:concat('XPath ', '3.0')'XPath 3.0'

- W3C Documentation reference: Concat -
- - - fn:codepoint-equal(xs:string?, xs:string?) -
- Compares two strings on a codepoint-by-codepoint basis and returns true if they are - equal, false otherwise
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?First string to compare
xs:string?Second string to compare
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:codepoint-equal('Hello', 'Hello')true
fn:codepoint-equal('Hello', 'hello')false
fn:codepoint-equal('apple', 'banana')false

- W3C Documentation reference: Codepoint-Equal -
- - - fn:compare(xs:string?, xs:string?) -
- Compares two strings and returns -1, 0, or 1 if the first string is less than, equal to, - or greater than the second string, respectively
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?First string to compare
xs:string?Second string to compare
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:compare('apple', 'banana')-1
fn:compare('apple', 'apple')0
fn:compare('banana', 'apple')1

- W3C Documentation reference: Compare -
- - - fn:string-to-codepoints(xs:string?) -
- Returns a sequence of Unicode code points for a given string
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?Input string
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:string-to-codepoints('Hello')(72, 101, 108, 108, 111)
fn:string-to-codepoints('( ͡° ͜ʖ ͡°)')(40, 32, 865, 176, 32, 860, 662, 32, 865, 176, 41)
fn:string-to-codepoints('😊')(128522)

- W3C Documentation reference: String-To-Codepoints -
- - - fn:codepoints-to-string(xs:integer*) -
- Constructs a string from a sequence of Unicode code points
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:integer*Sequence of Unicode code points
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:codepoints-to-string((72, 101, 108, 108, 111))Hello
codepoints-to-string((40, 32, 865, 176, 32, 860, 662, 32, 865, 176, 41)) - ( ͡° ͜ʖ ͡°)
fn:codepoints-to-string((128522))😊

- W3C Documentation reference: Codepoints-To-String -
- - - - fn:string(object) -
- Returns the string representation of the object argument
- Arguments and return type: - - - - - - - - - -
TypeDescription
stringThe object to convert to a string
Examples:
- - - - - - - - - - - - - -
ExpressionResult
string((1<0))false
string(.11)0.11

- W3C Documentation reference: String-Functions -
- - -
-
-
- - - -
- - - fn:format-number(numeric?, xs:string, $decimal-format-name) -
- Formats a numeric value according to the supplied picture string and optional decimal - format name
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
numeric?Numeric value to be formatted
xs:stringPicture string defining the format
xs:string?Optional decimal format name
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:format-number(1234.567, '0.00')1,234.57
fn:format-number(-1234.567, '0.00')-1,234.57
fn:format-number(0.12345, '0.00%')12.35%

- W3C Documentation reference: Format-Number -
- - - fn:format-integer(xs:integer?, xs:string) -
- Formats an integer value according to the supplied picture string
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:integer?Integer value to be formatted
xs:stringPicture string defining the format
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:format-integer(12345, '0,0')12,345
fn:format-integer(-1234, '0,0')-1,234
fn:format-integer(1234, '00-00-00')01-23-45

- W3C Documentation reference: Format-Integer -
- - - fn:round-half-to-even(numeric?) -
- Returns the closest integer to the given numeric value, rounding half-way cases to the - nearest even integer (also known as "bankers' rounding")
- Arguments and return type: - - - - - - - - - -
TypeDescription
numeric?Numeric value for which the rounded value will be calculated
- Examples:
- - - - - - - - - - - - - - - - - - - - - -
ExpressionResult
fn:round-half-to-even(3.5)4
fn:round-half-to-even(2.5)2
fn:round-half-to-even(-1.5)-2
fn:round-half-to-even(xs:decimal('1.25'), 1)1.2

- W3C Documentation reference: Round-Half-To-Even -
- - - fn:round(numeric?) -
- Returns the closest integer to the given numeric value, rounding half-way cases away - from zero
- Arguments and return type: - - - - - - - - - -
TypeDescription
numeric?Numeric value for which the rounded value will be calculated
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:round(3.14)3
fn:round(-4.7)-5
fn:round(xs:decimal('2.5'))3

- W3C Documentation reference: Round -
- - - fn:floor(numeric?) -
- Returns the largest integer less than or equal to the given numeric value
- Arguments and return type: - - - - - - - - - -
TypeDescription
numeric?Numeric value for which the floor value will be calculated
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:floor(3.14)3
fn:floor(-4.7)-5
fn:floor(xs:decimal('2.5'))2

- W3C Documentation reference: Floor -
- - - - fn:ceiling(numeric?) -
- Returns the smallest integer greater than or equal to the given numeric value
- Arguments and return type: - - - - - - - - - -
TypeDescription
numeric?Numeric value for which the ceiling value will be calculated
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:ceiling(3.14)4
fn:ceiling(-4.7)-4
fn:ceiling(xs:decimal('2.5'))3

- W3C Documentation reference: Ceiling -
- - - fn:abs(numeric?) -
- Returns the absolute value of the given numeric value
- Arguments and return type: - - - - - - - - - -
TypeDescription
numeric?Numeric value for which the absolute value will be calculated
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:abs(-42)42
fn:abs(3.14)3.14
fn:abs(xs:decimal('-5.5'))5.5

- W3C Documentation reference: Abs -
- - fn:number(item?) -
- Converts the given value to a number
- Arguments and return type: - - - - - - - - - -
TypeDescription
item?Returns the numeric value of the specified expression or the context item - (if no argument is provided)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:number(/library/fiction:book[1]/@id)1 (if the first fiction:book element's id attribute is "1")
fn:number(/library/fiction:book[1]/price)19.99 (if the first fiction:book element's price element contains "19.99") -

- W3C Documentation reference: Number -
- - - - -
-
-
- - - -
- - fn:fold-right(item()*, item()*, function(item(), item()*)) -
- Applies a processing function cumulatively to the items of a sequence from right to - left, so as to reduce the sequence to a single value
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
item()*The input sequence of items
item()*The initial value, also known as the zero value
function(item(), item()*)The processing function used to accumulate the items
item()*The resulting single value after applying the processing function
- Examples:
- - - - - - - - - -
ExpressionResult
fold-right((1, 2, 3, 4), 0, function($current, $accumulator) { $accumulator - - $current })Returns the result of subtracting each number in the input sequence from - right to left: -2

- W3C Documentation reference: fold-right -
- - - fn:fold-left(item()*, item()*, function(item()*, item())) -
- Applies a processing function cumulatively to the items of a sequence from left to - right, so as to reduce the sequence to a single value
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
item()*The input sequence of items
item()*The initial value, also known as the zero value
function(item()*, item())The processing function used to accumulate the items
item()*The resulting single value after applying the processing function
- Examples:
- - - - - - - - - -
ExpressionResult
fold-left((1, 2, 3, 4), 0, function($accumulator, $current) { $accumulator + - $current })Returns the sum of the numbers in the input sequence: 10

- W3C Documentation reference: fold-left -
- - - - - fn:last() -
- Returns the position of the last item in the current context sequence
- Arguments and return type: - - - - - - - - - -
TypeDescription
NoneReturns the position of the last item in the current context sequence
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
/library/fiction:book[position() = last()]Returns the last fiction:book element in the library
/library/fiction:book[last()]Returns the last fiction:book element in the library

- W3C Documentation reference: Last -
- - fn:position() -
- Returns the context position of the context item in the sequence currently being - processed
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:integerThe position of the context item in the sequence
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
<items><item>Item 1</item><item>Item - 2</item></items>/item[position()=2]Returns '<item>Item 2</item>'
<items><item>Item 1</item><item>Item - 2</item></items>/item[position()=1]Returns '<item>Item 1</item>'

- W3C Documentation reference: position -
- - - fn:collection(xs:string?) -
- Returns a sequence of documents in a collection identified by a URI
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI identifying the collection of documents
xs:anyAtomicType*A sequence of documents in the collection
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:collection("http://www.example.com/collection/")Returns a sequence of documents in the collection identified by the - specified URI
fn:collection()Returns a sequence of documents in the default collection, if one is defined -

- W3C Documentation reference: collection -
- - - fn:sum(xs:anyAtomicType*, xs:anyAtomicType?) -
- Returns the sum of a sequence of numeric values
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*Input sequence of numeric values
xs:anyAtomicType?Value to return if the sequence is empty (optional)
xs:anyAtomicType?Sum of the input sequence
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:sum((10, 20, 30, 40, 50))150
fn:sum((), 0)0

- W3C Documentation reference: sum -
- - - fn:min(xs:anyAtomicType*, xs:string) -
- Returns the minimum value from a sequence of values
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*Input sequence of values
xs:stringCollation to use when comparing strings
xs:anyAtomicType?Minimum value in the input sequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:min((10, 20, 30, 40, 50))10
fn:min(("apple", "banana", "cherry"), - "http://www.w3.org/2005/xpath-functions/collation/codepoint")"apple"
fn:min(())empty sequence

- W3C Documentation reference: min -
- - - fn:max(xs:anyAtomicType*, xs:string) -
- Returns the maximum value from a sequence of values
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*Input sequence of values
xs:stringCollation to use when comparing strings
xs:anyAtomicType?Maximum value in the input sequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:max((10, 20, 30, 40, 50))50
fn:max(("apple", "banana", "cherry"), - "http://www.w3.org/2005/xpath-functions/collation/codepoint")"cherry"
fn:max(())empty sequence

- W3C Documentation reference: max -
- - - fn:avg(xs:anyAtomicType*) -
- Computes the average of the numeric values in the input sequence
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*Input sequence of numeric values
xs:anyAtomicType?Average of the numeric values in the input sequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:avg((10, 20, 30, 40, 50))30
fn:avg((2.5, 3.5, 4.5))3.5
fn:avg(())empty sequence

- W3C Documentation reference: avg -
- - - fn:count(item()*) -
- Returns the number of items in the input sequence
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
xs:integerNumber of items in the input sequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:count(('apple', 'banana', 'orange'))3
fn:count(())0
fn:count((1, 2, 3, 4, 5))5

- W3C Documentation reference: count -
- - - fn:exactly-one(item()*) -
- Returns the single item in the input sequence or raises an error if the sequence is - empty or contains more than one item
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
item()Single item from the input sequence, otherwise an error is raised
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:exactly-one(('apple'))'apple'
fn:exactly-one(('apple', 'banana'))Error (more than one item)
fn:exactly-one(())Error (empty sequence)

- W3C Documentation reference: exactly-one -
- - - fn:one-or-more(item()*)+ -
- Returns the input sequence if it contains one or more items, otherwise raises an - error
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
item()+Sequence containing one or more items, otherwise an error is raised
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:one-or-more(('apple', 'banana'))('apple', 'banana')
fn:one-or-more(('pear'))('pear')

- W3C Documentation reference: one-or-more -
- - - fn:zero-or-one(item()*) -
- Returns the input sequence if it contains zero or one items, otherwise raises an - error
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
item()?Sequence containing zero or one item, otherwise an error is raised
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:zero-or-one(('apple'))('apple')
fn:zero-or-one(())()

- W3C Documentation reference: zero-or-one -
- - - fn:deep-equal(item()* , item()*) -
- Returns true if the two input sequences are deep-equal, meaning that they have the same - structure and atomic values
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
item()*First input sequence
item()*Second input sequence
xs:booleanTrue if the input sequences are deep-equal, otherwise false
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:deep-equal((1, 2, 3), (1, 2, 3))true
fn:deep-equal((1, 2, 3), (1, 2, 4))false

- W3C Documentation reference: deep-equal -
- - - fn:index-of(xs:anyAtomicType*, xs:anyAtomicType) -
- Returns a sequence of integers indicating the positions of items in the input sequence - that are equal to the search item
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*Input sequence of atomic values
xs:anyAtomicTypeSearch item to find in the input sequence
xs:integer*Sequence of integers representing the positions of the search item in the - input sequence
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:index-of((3, 1, 4, 1, 5, 9, 2, 2, 3), 1)(2, 4)
fn:index-of(('apple', 'banana', 'orange', 'apple', 'grape', 'orange'), - 'apple')(1, 4)

- W3C Documentation reference: index-of -
- - - fn:distinct-values(xs:anyAtomicType*) -
- Returns a sequence of distinct atomic values from the input sequence
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*Input sequence of atomic values
xs:anyAtomicType*Distinct sequence of atomic values
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:distinct-values((3, 1, 4, 1, 5, 9, 2, 2, 3))(3, 1, 4, 5, 9, 2)
fn:distinct-values(('apple', 'banana', 'orange', 'apple', 'grape', - 'orange'))('apple', 'banana', 'orange', 'grape')

- W3C Documentation reference: distinct-values -
- - - fn:unordered(item()*) -
- Returns the items of a sequence in an implementation-dependent order
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
item()*Unordered sequence
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:unordered((3, 1, 4, 1, 5, 9, 2))(1, 2, 3, 4, 5, 9, 1) (example result; actual order may vary)
fn:unordered(('apple', 'banana', 'orange', 'grape'))('banana', 'apple', 'orange', 'grape') (example result; actual order may - vary)

- W3C Documentation reference: unordered -
- - - fn:subsequence(item()*, xs:double, xs:double) -
- Returns a subsequence of a given sequence starting at a specified position with a - specified length
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
xs:doubleStarting position
xs:doubleLength of subsequence
item()*Subsequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:subsequence((1, 2, 3, 4, 5), 2, 3)(2, 3, 4)
fn:subsequence(('apple', 'banana', 'orange', 'grape'), 1, 2)('apple', 'banana')
fn:subsequence(('red', 'blue', 'green', 'yellow'), 3)('green', 'yellow')

- W3C Documentation reference: subsequence -
- - - fn:reverse(item()*) -
- Reverses the order of items in a sequence
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
item()*Reversed sequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:reverse((1, 2, 3, 4))(4, 3, 2, 1)
fn:reverse(('apple', 'banana', 'orange'))('orange', 'banana', 'apple')
fn:reverse(('red', 'blue', 'green'))('green', 'blue', 'red')

- W3C Documentation reference: reverse -
- - - fn:remove(item()*, xs:integer) -
- Removes an item from a sequence at the specified position
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
item()*Target sequence
xs:integerPosition of the item to remove
item()*New sequence with the item removed
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:remove((1, 2, 3, 4), 2)(1, 3, 4)
fn:remove(('apple', 'banana', 'orange'), 3)('apple', 'banana')
fn:remove((10, 20, 30), 1)(20, 30)

- W3C Documentation reference: remove -
- - - fn:insert-before(item()*, xs:integer, item()*) -
- Inserts items from the specified sequence into another sequence at a given position
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
item()*Target sequence
xs:integerPosition at which to insert the items
item()*Sequence of items to insert
item()*New sequence with items inserted
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:insert-before((1, 3, 4), 2, (2))(1, 2, 3, 4)
fn:insert-before(('apple', 'orange'), 1, ('banana'))('banana', 'apple', 'orange')
fn:insert-before((10, 20, 30), 4, (40))(10, 20, 30, 40)

- W3C Documentation reference: insert-before -
- - - fn:tail(item()*) -
- Returns all items of the input sequence except the first one, or an empty sequence if - the input is empty or contains only one item
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Sequence of items
item()*All items except the first one, or an empty sequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:tail((1, 2, 3))(2, 3)
fn:tail((1))()
fn:tail(/books/book/author)All authors in the "books" element except the first one

- W3C Documentation reference: tail -
- - - fn:head(item()*) -
- Returns the first item of the input sequence, or an empty sequence if the input is - empty
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Sequence of items
item()?The first item of the sequence, or an empty sequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:head((1, 2, 3))1
fn:head(())()
fn:head(/books/book[1]/author)The first author of the first book in the "books" element

- W3C Documentation reference: head -
- - - fn:exists(item()*) -
- Returns true if the input sequence is not empty, otherwise returns false
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Sequence of items
xs:booleanResult of the test (true or false)
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:exists((1, 2, 3))true
fn:exists(())false
fn:exists(//chapter[5])true if there are at least 5 chapters, otherwise false

- W3C Documentation reference: exists -
- - - fn:empty(item()*) -
- Returns true if the input sequence is empty, otherwise returns false
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Sequence of items
xs:booleanResult of the test (true or false)
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:empty((1, 2, 3))false
fn:empty(())true
fn:empty(//chapter[100])true if there are less than 100 chapters, otherwise false

- W3C Documentation reference: empty -
- - - - - fn:data(item*) -
- Returns the simple value of an item or a sequence of items
- Arguments and return type: - - - - - - - - - -
TypeDescription
item?Returns the simple value of the specified item or the context item (if no - argument is provided)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:data(/library/fiction:book[1]/title)The Catcher in the Rye
fn:data(/library/fiction:book[2]/author)Harper Lee

- W3C Documentation reference: Data -
- - -
-
-
- - - -
- fn:implicit-timezone() -
- Returns the implicit timezone as an xs:dayTimeDuration
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:dayTimeDurationThe implicit timezone as a dayTimeDuration
- Examples:
- - - - - - - - - -
ExpressionResult
implicit-timezone()Returns the implicit timezone as an xs:dayTimeDuration, e.g., '-PT7H' -

- W3C Documentation reference: implicit-timezone -
- - - fn:current-time() -
- Returns the current time with timezone
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:timeThe current time with timezone
- Examples:
- - - - - - - - - -
ExpressionResult
current-time()Returns the current time with timezone, e.g., '13:45:30.123-07:00'

- W3C Documentation reference: current-time -
- - - fn:current-date() -
- Returns the current date with timezone
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:dateThe current date with timezone
- Examples:
- - - - - - - - - -
ExpressionResult
current-date()Returns the current date with timezone, e.g., '2023-03-29-07:00'

- W3C Documentation reference: current-date -
- - - fn:current-dateTime() -
- Returns the current date and time with timezone
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:dateTimeThe current date and time with timezone
- Examples:
- - - - - - - - - -
ExpressionResult
current-dateTime()Returns the current date and time with timezone, e.g., - '2023-03-29T12:34:56.789-07:00'

- W3C Documentation reference: current-dateTime -
- - - fn:format-time(xs:time?, xs:string, xs:string?, xs:string?, xs:string?) -
- Formats a time value using the provided picture string and optional language, - calendar, and country settings
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
xs:time?Time value
xs:stringPicture string
xs:string?Language
xs:string?Calendar
xs:string?Country
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:format-time(xs:time('14:30:15'), '[H01]:[m01]:[s01]')14:30:15
fn:format-time(xs:time('14:30:15'), '[h01] [P] [ZN,*-3]')02 PM UTC

- W3C Documentation reference: Format-Time -
- - - fn:format-date(xs:date?, xs:string, xs:string?, xs:string?, xs:string?) -
- Formats a date value using the provided picture string and optional language, - calendar, and country settings
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
xs:date?Date value
xs:stringPicture string
xs:string?Language
xs:string?Calendar
xs:string?Country
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:format-date(xs:date('2023-04-01'), '[Y0001]-[M01]-[D01]')2023-04-01
fn:format-date(xs:date('2023-04-01'), '[MNn,*-3] [D], [Y]')Apr 1, 2023

- W3C Documentation reference: Format-Date -
- - - fn:format-dateTime(xs:dateTime?, xs:string, xs:string?, xs:string?, xs:string?) -
- Formats a dateTime value using the provided picture string and optional language, - calendar, and country settings
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
xs:stringPicture string
xs:string?Language
xs:string?Calendar
xs:string?Country
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:format-dateTime(xs:dateTime('2023-04-01T12:00:00'), - '[Y0001]-[M01]-[D01] [H01]:[m01]:[s01]')2023-04-01 12:00:00
fn:format-dateTime(xs:dateTime('2023-04-01T12:00:00'), '[MNn,*-3], [D], - [Y]')Apr, 1, 2023

- W3C Documentation reference: Format-DateTime -
- - - fn:adjust-time-to-timezone(xs:time?, xs:dayTimeDuration?) -
- Adjusts the timezone of a time value
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:time?Time value
xs:dayTimeDuration?Timezone adjustment
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:adjust-time-to-timezone(xs:time('10:00:00-07:00'), - xs:dayTimeDuration('PT2H'))12:00:00-05:00
fn:adjust-time-to-timezone(xs:time('10:00:00Z'), - xs:dayTimeDuration('-PT3H'))07:00:00-03:00

- W3C Documentation reference: Adjust-Time-To-Timezone -
- - - - - fn:adjust-date-to-timezone(xs:date?, xs:dayTimeDuration?) -
- Adjusts the timezone of a date value
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:date?Date value
xs:dayTimeDuration?Timezone adjustment
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:adjust-date-to-timezone(xs:date('2023-01-01-07:00'), - xs:dayTimeDuration('PT2H'))2023-01-01-05:00
fn:adjust-date-to-timezone(xs:date('2023-01-01Z'), - xs:dayTimeDuration('-PT3H'))2022-12-31-03:00

- W3C Documentation reference: Adjust-Date-To-Timezone -
- - - fn:adjust-dateTime-to-timezone(xs:dateTime?, xs:dayTimeDuration?) -
- Adjusts the timezone of a dateTime value
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
xs:dayTimeDuration?Timezone adjustment
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:adjust-dateTime-to-timezone(xs:dateTime('2023-01-01T12:00:00-07:00'), - xs:dayTimeDuration('PT2H'))2023-01-01T17:00:00-05:00
fn:adjust-dateTime-to-timezone(xs:dateTime('2023-01-01T12:00:00Z'), - xs:dayTimeDuration('-PT3H'))2023-01-01T09:00:00-03:00

- W3C Documentation reference: Adjust-DateTime-To-Timezone -
- - - fn:timezone-from-time(xs:time?) -
- Extracts the timezone component from an xs:time value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:time?Time value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:timezone-from-time(xs:time('12:00:00-07:00'))-PT7H
fn:timezone-from-time(xs:time('14:30:00+02:30'))PT2H30M

- W3C Documentation reference: Timezone-From-Time -
- - - fn:seconds-from-time(xs:time?) -
- Extracts the seconds component from an xs:time value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:time?Time value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:seconds-from-time(xs:time('21:45:30.5'))30.5
fn:seconds-from-time(xs:time('04:15:12.1'))12.1

- W3C Documentation reference: Seconds-From-Time -
- - - fn:minutes-from-time(xs:time?) -
- Extracts the minutes component from an xs:time value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:time?Time value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:minutes-from-time(xs:time('21:45:30'))45
fn:minutes-from-time(xs:time('04:15:12'))15

- W3C Documentation reference: Minutes-From-Time -
- - - fn:hours-from-time(xs:time?) -
- Extracts the hours component from an xs:time value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:time?Time value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:hours-from-time(xs:time('21:45:30'))21
fn:hours-from-time(xs:time('04:15:12'))4

- W3C Documentation reference: Hours-From-Time -
- - - fn:timezone-from-date(xs:date?) -
- Extracts the timezone component from an xs:date value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:date?Date value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:timezone-from-date(xs:date('2023-03-29+02:00'))PT2H
fn:timezone-from-date(xs:date('1980-12-15-05:00'))-PT5H

- W3C Documentation reference: Timezone-From-Date -
- - - fn:day-from-date(xs:date?) -
- Extracts the day component from an xs:date value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:date?Date value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:day-from-date(xs:date('2023-03-29'))29
fn:day-from-date(xs:date('1980-12-15'))15

- W3C Documentation reference: Day-From-Date -
- - - fn:month-from-date(xs:date?) -
- Extracts the month component from an xs:date value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:date?Date value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:month-from-date(xs:date('2023-03-29'))3
fn:month-from-date(xs:date('1980-12-15'))12

- W3C Documentation reference: Month-From-Date -
- - - fn:year-from-date(xs:date?) -
- Extracts the year component from an xs:date value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:date?Date value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:year-from-date(xs:date('2023-03-29'))2023
fn:year-from-date(xs:date('1980-12-15'))1980

- W3C Documentation reference: Year-From-Date -
- - - fn:timezone-from-dateTime(xs:dateTime?) -
- Extracts the timezone component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:timezone-from-dateTime(xs:dateTime('2023-03-29T12:30:45-07:00'))-PT7H
fn:timezone-from-dateTime(xs:dateTime('2023-12-15T18:45:30+03:30'))PT3H30M

- W3C Documentation reference: Timezone-From-DateTime -
- - - fn:seconds-from-dateTime(xs:dateTime?) -
- Extracts the seconds component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:seconds-from-dateTime(xs:dateTime('2023-03-29T12:30:45'))45
fn:seconds-from-dateTime(xs:dateTime('2023-12-15T18:45:30.5-08:00')) - 30.5

- W3C Documentation reference: Seconds-From-DateTime -
- - - fn:minutes-from-dateTime(xs:dateTime?) -
- Extracts the minutes component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:minutes-from-dateTime(xs:dateTime('2023-03-29T12:30:00'))30
fn:minutes-from-dateTime(xs:dateTime('2023-12-15T18:45:00-08:00'))45

- W3C Documentation reference: Minutes-From-DateTime -
- - - fn:hours-from-dateTime(xs:dateTime?) -
- Extracts the hours component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:hours-from-dateTime(xs:dateTime('2023-03-29T12:30:00'))12
fn:hours-from-dateTime(xs:dateTime('2023-12-15T18:45:00-08:00'))18

- W3C Documentation reference: Hours-From-DateTime -
- - - fn:day-from-dateTime(xs:dateTime?) -
- Extracts the day component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:day-from-dateTime(xs:dateTime('2023-03-29T12:30:00'))29
fn:day-from-dateTime(xs:dateTime('2023-12-15T18:45:00-08:00'))15

- W3C Documentation reference: Day-From-DateTime -
- - - fn:month-from-dateTime(xs:dateTime?) -
- Extracts the month component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:month-from-dateTime(xs:dateTime('2023-03-29T12:30:00'))3
fn:month-from-dateTime(xs:dateTime('2023-12-15T18:45:00-08:00'))12

- W3C Documentation reference: Month-From-DateTime -
- - - fn:year-from-dateTime(xs:dateTime?) -
- Extracts the year component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:year-from-dateTime(xs:dateTime('2023-03-29T12:30:00'))2023
fn:year-from-dateTime(xs:dateTime('2023-03-29T12:30:00-08:00'))2023

- W3C Documentation reference: Year-From-DateTime -
- - - - - fn:dateTime(xs:date?, xs:time?) -
- Constructs an xs:dateTime value from an xs:date and an xs:time value
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:date?Date value
xs:time?Time value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:dateTime(xs:date('2023-03-29'), xs:time('12:30:00'))2023-03-29T12:30:00
fn:dateTime(xs:date('2023-03-29+05:00'), xs:time('12:30:00-08:00'))2023-03-29T12:30:00-08:00

- W3C Documentation reference: DateTime -
- - - fn:seconds-from-duration(xs:duration?) -
- Returns the seconds component of the duration
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?Duration from which to extract the seconds component
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:seconds-from-duration(xs:dayTimeDuration('PT1H30M15.5S'))15.5
fn:seconds-from-duration(xs:dayTimeDuration('-PT2M10.3S'))-10.3

- W3C Documentation reference: Seconds-From-Duration -
- - - fn:minutes-from-duration(xs:duration?) -
- Returns the minutes component of the duration
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?Duration from which to extract the minutes component
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:minutes-from-duration(xs:dayTimeDuration('PT2H30M'))30
fn:minutes-from-duration(xs:dayTimeDuration('-PT1H45M'))-45

- W3C Documentation reference: Minutes-From-Duration -
- - - fn:hours-from-duration(xs:duration?) -
- Returns the hours component of the duration
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?Duration from which to extract the hours component
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:hours-from-duration(xs:dayTimeDuration('PT36H'))36
fn:hours-from-duration(xs:dayTimeDuration('-PT12H30M'))-12

- W3C Documentation reference: Hours-From-Duration -
- - - fn:days-from-duration(xs:duration?) -
- Returns the days component of the duration
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?Duration from which to extract the days component
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:days-from-duration(xs:dayTimeDuration('P5DT12H30M'))5
fn:days-from-duration(xs:dayTimeDuration('-P2DT6H'))-2

- W3C Documentation reference: Days-From-Duration -
- - - - fn:months-from-duration(xs:duration?) -
- Returns the months component of the duration
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?Duration from which to extract the months component
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:months-from-duration(xs:duration('P2Y3M4DT5H6M7S'))3
fn:months-from-duration(xs:duration('-P2Y3M4DT5H6M7S'))-3

- W3C Documentation reference: Months-From-Duration -
- - - fn:years-from-duration(xs:duration?) -
- Returns the years component of the duration
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?Duration from which to extract the years component
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:years-from-duration(xs:duration('P2Y3M4DT5H6M7S'))2
fn:years-from-duration(xs:duration('-P2Y3M4DT5H6M7S'))-2

- W3C Documentation reference: Years-From-Duration -
-
-
-
- - - -
- - fn:trace(item()*, xs:string) -
- Outputs the provided label and value for diagnostic purposes and returns the value - unchanged
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Value to be traced
xs:stringLabel to be output along with the value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:trace(42, 'The value is:')Outputs "The value is: 42" for diagnostic purposes and returns 42
fn:trace(/library/book/title, 'Book title:')Outputs "Book title: [book title]" for diagnostic purposes and returns - the book title

- W3C Documentation reference: Trace -
- - - fn:error(xs:QName?, xs:string?, $error-object) -
- Raises an error with the specified error code, description, and error object
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:QName?Error code (optional)
xs:string?Description of the error (optional)
item()*Error object (optional)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:error(xs:QName('err:FOER0000'))Raise error with the code err:FOER0000
fn:error(xs:QName('err:FOER0000'), 'Invalid value')Raise error with the code err:FOER0000 and description "Invalid value" -

- W3C Documentation reference: Error -
- -
-
-
- - - -
- - fn:function-arity(function(*)) -
- Returns the arity (number of arguments) of the specified function
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
function(*)The function to obtain the arity for
xs:integerThe arity (number of arguments) of the specified function
- Examples:
- - - - - - - - - -
ExpressionResult
function-arity(fn:substring)Returns the arity of the substring function: 2 (since - substring accepts two required arguments: the input string and the - starting index)

- W3C Documentation reference: function-arity -
- - - fn:function-name(function(*)) -
- Returns the QName of the specified function
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
function(*)The function to obtain the QName for
xs:QName?The QName of the specified function, or an empty sequence if the - function is anonymous
- Examples:
- - - - - - - - - -
ExpressionResult
function-name(fn:substring)Returns the QName of the substring function: - QName("http://www.w3.org/2005/xpath-functions", "substring") -

- W3C Documentation reference: function-name -
- - - fn:function-lookup(xs:QName, xs:integer) -
- Returns a function with the specified QName and arity if available, otherwise - returns an empty sequence
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:QNameFunction name as QName
xs:integerArity of the function
function(*)?A function with the specified QName and arity if available, otherwise an - empty sequence
- Examples:
- - - - - - - - - -
ExpressionResult
function-lookup(QName('http://www.w3.org/2005/xpath-functions', - 'substring'), 2)Returns the substring function with arity 2, if available

- W3C Documentation reference: function-lookup -
- - - fn:static-base-uri() -
- Returns the static base URI as an xs:anyURI, if available
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:anyURI?The static base URI, if available; otherwise, an empty sequence
- Examples:
- - - - - - - - - -
ExpressionResult
static-base-uri()Returns the static base URI as an xs:anyURI, if available, e.g., - 'https://www.example.com/base/'

- W3C Documentation reference: static-base-uri -
- - - fn:default-collation() -
- Returns the default collation URI as an xs:string
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:stringThe default collation URI as a string
- Examples:
- - - - - - - - - -
ExpressionResult
default-collation()Returns the default collation URI as an xs:string, e.g., - 'http://www.w3.org/2005/xpath-functions/collation/codepoint'

- W3C Documentation reference: default-collation -
- - - fn:serialize(item()?, item()?) -
- Serializes an XML node, producing a string representation of the node
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
item()?An XML node to serialize
item()?Serialization options as a map, with key-value pairs defining the - serialization parameters (optional)
xs:string?A string representation of the serialized XML node or an empty sequence - if the input is an empty sequence
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:serialize(<item>Item 1</item>)Returns '<item>Item 1</item>'
fn:serialize(<item>Item 1</item>, map{'method': 'xml', 'indent': - 'yes'})Returns an indented XML string representation of the input node

- W3C Documentation reference: serialize -
- - - fn:parse-xml-fragment(xs:string?) -
- Parses a string containing an XML fragment and returns a corresponding document - node
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?A string containing an XML fragment
document-node(element(*))?A document node containing the parsed XML fragment or an empty sequence - if the input is an empty sequence
- Examples:
- - - - - - - - - -
ExpressionResult
fn:parse-xml-fragment('<item>Item 1</item><item>Item - 2</item>')Returns a document node containing the parsed XML fragment

- W3C Documentation reference: parse-xml-fragment -
- - - fn:parse-xml(xs:string?) -
- Parses a string containing an XML document and returns a corresponding document - node
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?A string containing an XML document
document-node(element(*))?A document node containing the parsed XML content or an empty sequence - if the input is an empty sequence
- Examples:
- - - - - - - - - -
ExpressionResult
fn:parse-xml('<root><item>Item 1</item></root>')Returns a document node containing the parsed XML content

- W3C Documentation reference: parse-xml -
- - - fn:available-environment-variables() -
- Retrieves a sequence of the names of all available environment variables
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneNo argument is required
xs:string*A sequence of the names of all available environment variables
- Examples:
- - - - - - - - - -
ExpressionResult
fn:available-environment-variables()Returns a sequence of the names of all available environment variables -

- W3C Documentation reference: available-environment-variables -
- - - fn:environment-variable(xs:string) -
- Retrieves the value of an environment variable
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:stringThe name of the environment variable
xs:string?The value of the environment variable, or an empty sequence if the - variable is not set
- Examples:
- - - - - - - - - -
ExpressionResult
fn:environment-variable("PATH")Returns the value of the PATH environment variable, or an empty sequence - if the variable is not set

- W3C Documentation reference: environment-variable -
- - - fn:uri-collection(xs:string?) -
- Returns a sequence of URIs in a collection identified by a URI
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI identifying the collection of URIs
xs:anyURI*A sequence of URIs in the collection
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:uri-collection("http://www.example.com/collection/")Returns a sequence of URIs in the collection identified by the specified - URI -
fn:uri-collection()Returns a sequence of URIs in the default collection, if one is defined -

- W3C Documentation reference: uri-collection -
- - fn:doc-available(xs:string?) -
- Tests whether an XML document is available at a given URI
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI of the XML document to be tested
xs:booleanTrue if the XML document is available, otherwise false
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:doc-available("http://www.example.com/books.xml")Returns true if the XML document located at the specified URI is - available, otherwise false
fn:doc-available("")Returns true if the XML document containing the context item is - available, otherwise false

- W3C Documentation reference: doc-available -
- - - fn:doc(xs:string?) -
- Loads an XML document from a URI and returns the document node
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI of the XML document to be loaded
document-node()?The document node of the loaded XML document
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:doc("http://www.example.com/books.xml")Loads the XML document located at the specified URI and returns its - document node
fn:doc("")Returns the document node of the XML document containing the context - item

- W3C Documentation reference: doc -
- - - fn:generate-id(node()?) -
- Returns a unique identifier for the specified node
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
node()?Input node for which the unique identifier is to be generated
xs:stringUnique identifier for the specified node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:generate-id(/bookstore/book[1])A unique identifier for the first <book> element in the - <bookstore>
fn:generate-id(.)A unique identifier for the context node

- W3C Documentation reference: generate-id -
- - - fn:idref(xs:string*) -
- Returns a sequence of nodes that are referenced by the specified IDREF attribute - values
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string*Input sequence of IDREF attribute values
node()*Sequence of nodes referenced by the specified IDREF attribute values -
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:idref("reference42")Nodes referenced by the IDREF attribute value "reference42"
fn:idref(("ref1", "ref2", "ref3"))Nodes referenced by the IDREF attribute values "ref1", "ref2", and - "ref3"

- W3C Documentation reference: idref -
- - - fn:id(xs:string*) -
- Returns a sequence of elements with the specified ID attribute values
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string*Input sequence of ID attribute values
element()*Sequence of elements with the specified ID attribute values
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:id("item42")Element with the ID attribute value "item42"
fn:id(("item1", "item2", "item3"))Elements with the ID attribute values "item1", "item2", and "item3"

- W3C Documentation reference: id -
- - - fn:lang(xs:string, node()?) -
- Returns true if the language of the specified node or its nearest ancestor matches - the given language code
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:stringLanguage code to test
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:lang("en", /book/title)true
fn:lang("fr", /book/title)false

- W3C Documentation reference: lang -
- - - - fn:in-scope-prefixes(element()) -
- Returns a sequence of strings representing the prefixes of the in-scope namespaces - for the specified element
- Arguments and return type: - - - - - - - - - -
TypeDescription
element()Element node
- Examples:
- - - - - - - - - -
ExpressionResult
fn:in-scope-prefixes(/*)("xml", "x")

- W3C Documentation reference: in-scope-prefixes -
- - - fn:namespace-uri-for-prefix(xs:string?, element()) -
- Returns the namespace URI associated with the given prefix, using the in-scope - namespaces for the specified element
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Prefix
element()Element node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:namespace-uri-for-prefix('x', /*)"http://www.example.com/ns"
fn:namespace-uri-for-prefix('', /*)""

- W3C Documentation reference: namespace-uri-for-prefix -
- - - fn:namespace-uri-from-QName(xs:QName?) -
- Returns the namespace URI of the given QName value, or an empty sequence if there's - no namespace URI
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:QName?QName value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:namespace-uri-from-QName(fn:QName('http://www.example.com/ns', - 'x:local'))"http://www.example.com/ns"
fn:namespace-uri-from-QName(fn:QName('', 'local'))""

- W3C Documentation reference: namespace-uri-from-QName -
- - - fn:local-name-from-QName(xs:QName?) -
- Returns the local name of the given QName value, or an empty sequence if there's no - local name
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:QName?QName value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:local-name-from-QName(fn:QName('http://www.example.com/ns', - 'x:local'))"local"
fn:local-name-from-QName(fn:QName('', 'local'))"local"

- W3C Documentation reference: local-name-from-QName -
- - - fn:prefix-from-QName(xs:QName?) -
- Returns the prefix of the given QName value, or an empty sequence if there's no - prefix
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:QName?QName value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:prefix-from-QName(fn:QName('http://www.example.com/ns', 'x:local')) - "x"
fn:prefix-from-QName(fn:QName('', 'local'))()

- W3C Documentation reference: prefix-from-QName -
- - - fn:QName(xs:string?, xs:string) -
- Constructs an xs:QName value from a namespace URI and a lexical QName
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Namespace URI
xs:stringLexical QName
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:QName('http://www.example.com/ns', 'x:local')QName("http://www.example.com/ns", "x:local")
fn:QName('', 'local')QName("", "local")

- W3C Documentation reference: QName -
- - - fn:resolve-QName(xs:string?, element()) -
- Resolves a QName by expanding a prefix using the in-scope namespaces of a given - element
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?QName to resolve
element()Element with in-scope namespaces
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:resolve-QName('x:local', $element)QName("http://www.example.com/ns", "local")
fn:resolve-QName('local', $element)QName("", "local")

- W3C Documentation reference: Resolve-QName -
- - - - fn:nilled(node) -
- Returns a Boolean value indicating whether the argument node is nilled
-
- W3C Documentation reference: #func-nilled - -
- - - - - -
-
-
- - - -
- - fn:for-each-pair(item()*, item()*, function(item(), item())) -
- Applies a processing function to pairs of items from two input sequences in a - pairwise fashion, resulting in a sequence of the same length as the shorter input - sequence
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
item()*The first input sequence of items
item()*The second input sequence of items
function(item(), item())The processing function used to process pairs of items from the input - sequences
item()*The resulting sequence after applying the processing function to pairs - of items
- Examples:
- - - - - - - - - -
ExpressionResult
for-each-pair((1, 2, 3), ("a", "b"), function($item1, $item2) { - concat($item1, $item2) })Returns a sequence with the concatenated pairs of items: - ("1a", "2b") -

- W3C Documentation reference: for-each-pair -
- - - - - fn:filter(item()*, function(item()) -
- Filters a sequence of items based on a given predicate function
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
item()*The input sequence of items
function(item())The predicate function used to filter the items
item()*The resulting sequence after applying the predicate function
- Examples:
- - - - - - - - - -
ExpressionResult
filter((1, 2, 3, 4), function($x) { $x mod 2 = 0 })Returns a new sequence containing only the even numbers from the input - sequence: (2, 4)

- W3C Documentation reference: filter -
- - - fn:for-each(item()*, function(item())) -
- Applies a specified function to each item in a sequence, returning a new - sequence
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
item()*The input sequence of items
function(item())The function to apply to each item in the sequence
item()*The new sequence created by applying the function to each item in the - input sequence
- Examples:
- - - - - - - - - -
ExpressionResult
for-each((1, 2, 3, 4), function($x) { $x * 2 })Returns a new sequence with the result of doubling each number in the - input sequence: (2, 4, 6, 8)

- W3C Documentation reference: for-each -
- -
-
-
- -
- - - -
- - fn:apply(function(item()*), array(*)) -
- Applies a function to a sequence of arguments
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
function(item()*) as item()*The function to be applied
SequenceSequence of arguments to pass to the function
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:apply(fn:concat#2, ('Hello', ' World'))'Hello World'
fn:apply(fn:substring#2, ('Hello World', 7))'World'

- W3C Documentation reference: Apply -
- - - fn:outermost(node()*) -
- Returns the outermost nodes of the input sequence that are not ancestors of any other - node in the input sequence
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()*Sequence of nodes
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:outermost(//chapter)Sequence of outermost chapter nodes
fn:outermost(/book//*)Sequence of outermost nodes in the book

- W3C Documentation reference: outermost -
- - - fn:innermost(node()*) -
- Returns the innermost nodes of the input sequence that are not descendants of any other - node in the input sequence
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()*Sequence of nodes
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:innermost(//chapter)Sequence of innermost chapter nodes
fn:innermost(/book//*)Sequence of innermost nodes in the book

- W3C Documentation reference: innermost -
- - - fn:has-children(node()?) -
- Returns true if the specified node has one or more children, otherwise returns false
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:has-children(/book/chapter[1])true
fn:has-children(/book/chapter[1]/title)false

- W3C Documentation reference: has-children -
- - - fn:path(node()?) -
- Returns a string that represents the path of the specified node within the XML - document
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:path(/book/chapter[1])/book/chapter[1]
fn:path(/book/chapter[2]/title)/book/chapter[2]/title

- W3C Documentation reference: path -
- - - fn:root(node()?) -
- Returns the root node of the tree that contains the specified node
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:root(/book/chapter)<book> element (root node)
fn:root(/book/chapter[1])<book> element (root node)

- W3C Documentation reference: root -
- - - fn:namespace-uri(node()?) -
- Returns the namespace URI of the specified node
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:namespace-uri(/example:root)"http://www.example.com/ns"
fn:namespace-uri(/a/b)""

- W3C Documentation reference: namespace-uri -
- - - fn:local-name(node()?) -
- Returns the local part of the name of the specified node
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:local-name(/a/b)"b"
fn:local-name(/example:root)"root"

- W3C Documentation reference: local-name -
- - fn:name(node()?) -
- Returns the expanded QName of the specified node as a string
- Arguments and return type: - - - - - - - - - -
TypeDescription
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:name(/a/b)"b"
fn:name(/example:root)"example:root"

- W3C Documentation reference: name -
- - - - fn:document-uri(node?) -
- Returns the document URI of the given node or the context item
- Arguments and return type: - - - - - - - - - -
TypeDescription
node?Returns the document URI of the specified node or the context item (if no - argument is provided)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:document-uri(/library/fiction:book[1])http://example.com/library.xml (assuming the document URI of the first - fiction:book element is "http://example.com/library.xml")
fn:document-uri(/library)http://example.com/library.xml (assuming the document URI of the library - element is "http://example.com/library.xml")

- W3C Documentation reference: Document-URI -
- - - fn:base-uri(node?) -
- Returns the base URI of the node or the context item
- Arguments and return type: - - - - - - - - - -
TypeDescription
node?Returns the base URI of the specified node or the context item (if no - argument is provided)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:base-uri(/library/fiction:book[1])http://example.com/library.xml (assuming the base URI of the first - fiction:book element is "http://example.com/library.xml")
fn:base-uri(/library)http://example.com/library.xml (assuming the base URI of the library element - is "http://example.com/library.xml")

- W3C Documentation reference: Base-URI -
- - - fn:node-name(node?) -
- - Returns the name of a node as an xs:QName
- Arguments and return type: - - - - - - - - - -
TypeDescription
node?Returns the name of the specified node or the context item if the argument - is omitted
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:node-name(/library/*[1])fiction:book
fn:node-name(/library/fiction:book[1]/title)title

- W3C Documentation reference: Node-Name -
- -
-
-
- - - -
- - fn:not(item()*) -
- Returns the negation of the effective boolean value of the argument
- Arguments and return type: - - - - - - - - - -
TypeDescription
item()*Argument whose effective boolean value is to be negated
- Examples:
- - - - - - - - - - - - - - - - - - - - - -
ExpressionResult
fn:not(1)false
fn:not(0)true
fn:not('')true
fn:not('true')false

- W3C Documentation reference: Not -
- - - fn:false() -
- Returns the boolean value false
- Arguments and return type: - - - - - - - - - -
TypeDescription
NoneReturns the boolean value false
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:false()false
//item[fn:false()]Returns an empty node-set

- W3C Documentation reference: False -
- - - fn:true() -
- Returns the boolean value true
- Arguments and return type: - - - - - - - - - -
TypeDescription
NoneReturns the boolean value true
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:true()true
//item[fn:true()]Returns all <item> elements

- W3C Documentation reference: True -
- - - fn:boolean(item()*) -
- Converts the argument to a boolean value
- Arguments and return type: - - - - - - - - - -
TypeDescription
item()*Argument to be converted to a boolean value
- Examples:
- - - - - - - - - - - - - - - - - - - - - -
ExpressionResult
fn:boolean(1)true
fn:boolean(0)false
fn:boolean('')false
fn:boolean('true')true

- W3C Documentation reference: Boolean -
- - -
-
-
- - - -
- - fn:unparsed-text-available(xs:string?, xs:string?) -
- Determines if an unparsed text resource identified by a URI can be read using the given - encoding
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI identifying the unparsed text resource
xs:string?The encoding to be used for reading the resource
xs:booleanIndicates if the resource can be read using the given encoding
- Examples:
- - - - - - - - - -
ExpressionResult
fn:unparsed-text-available("http://www.example.com/text.txt", "UTF-8")Returns true if the text resource identified by the specified URI can be - read using the specified encoding, otherwise false

- W3C Documentation reference: unparsed-text-available -
- - - fn:unparsed-text-lines(xs:string?, xs:string?) -
- Returns the contents of an unparsed text resource identified by a URI, split into - lines
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI identifying the unparsed text resource
xs:string?The encoding to be used for reading the resource
xs:string*The lines of the unparsed text resource
- Examples:
- - - - - - - - - -
ExpressionResult
fn:unparsed-text-lines("http://www.example.com/text.txt", "UTF-8")Returns the lines of the text resource identified by the specified URI, - using the specified encoding

- W3C Documentation reference: unparsed-text-lines -
- - - fn:unparsed-text(xs:string?, xs:string?) -
- Returns the contents of an unparsed text resource identified by a URI
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI identifying the unparsed text resource
xs:string?The encoding to be used for reading the resource
xs:string?The contents of the unparsed text resource
- Examples:
- - - - - - - - - -
ExpressionResult
fn:unparsed-text("http://www.example.com/text.txt", "UTF-8")Returns the contents of the text resource identified by the specified URI, - using the specified encoding

- W3C Documentation reference: unparsed-text -
- - - fn:escape-html-uri(xs:string?) -
- Escapes special characters in a URI to be used in HTML
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?URI to be escaped for use in HTML
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:escape-html-uri('https://example.com/search?q=test&lang=en')https://example.com/search?q=test&lang=en
fn:escape-html-uri('https://example.com/page?id=1§ion=2')https://example.com/page?id=1&section=2

- W3C Documentation reference: Escape-HTML-URI -
- - - fn:iri-to-uri(xs:string?) -
- Converts an IRI to a URI by escaping non-ASCII characters
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?IRI to be converted to a URI
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:iri-to-uri('https://example.com/ümlaut')https://example.com/%C3%BCmlaut
fn:iri-to-uri('https://example.com/日本語')https://example.com/%E6%97%A5%E6%9C%AC%E8%AA%9E

- W3C Documentation reference: IRI-to-URI -
- - - fn:encode-for-uri(xs:string?) -
- Encodes a string for use in a URI by escaping special characters
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?String to be encoded for use in a URI
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:encode-for-uri('hello world')hello%20world
fn:encode-for-uri('example?query=value¶m=value2')example%3Fquery%3Dvalue%26param%3Dvalue2

- W3C Documentation reference: Encode-for-URI -
- - - fn:resolve-uri(xs:string?, xs:string?) -
- Resolves a relative URI using a base URI
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Relative URI to resolve
xs:string?Base URI to use for resolving (optional)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:resolve-uri('example.html', 'https://www.example.com/folder/')https://www.example.com/folder/example.html
fn:resolve-uri('../images/pic.jpg', - 'https://www.example.com/folder/page.html')https://www.example.com/images/pic.jpg

- W3C Documentation reference: Resolve-URI -
- - - - fn:analyze-string(xs:string?, xs:string, xs:string?) -
- Analyzes the input string and returns an XML fragment containing match and non-match - elements
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to analyze
xs:stringRegular expression pattern to match
xs:string?Flags to control the regular expression matching (optional)
- Examples:
- - - - - - - - - -
ExpressionResult
fn:analyze-string('red,green,blue', ',') - <fn:analyze-string-result><fn:non-match>red</fn:non-match><fn:match>, - <fn:non-match>green</fn:non-match><fn:match>, - <fn:non-match>blue</fn:non-match></fn:analyze-string-result> -

- W3C Documentation reference: Analyze-String -
- - - fn:tokenize(xs:string?, xs:string, xs:string?) -
- Splits the input string into a sequence of substrings using the pattern as a delimiter -
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to tokenize
xs:stringRegular expression pattern to use as delimiter
xs:string?Flags to control the regular expression matching (optional)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:tokenize('XPath 3.0, XQuery 3.0, XSLT 3.0', ',\\s*')('XPath 3.0', 'XQuery 3.0', 'XSLT 3.0')
fn:tokenize('apple,orange,banana', ',')('apple', 'orange', 'banana')

- W3C Documentation reference: Tokenize -
- - - fn:replace(xs:string?, xs:string, xs:string, xs:string?) -
- Replaces occurrences of the pattern in the input string with the replacement string
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to search within
xs:stringRegular expression pattern to match
xs:stringReplacement string
xs:string?Flags to control the regular expression matching (optional)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:replace('XPath 3.0 is great', '3.0', '3.1')'XPath 3.1 is great'
fn:replace('Hello, World!', 'World', 'XPath')'Hello, XPath!'

- W3C Documentation reference: Replace -
- - - fn:matches(xs:string?, xs:string, xs:string?) -
- Returns true if the input string matches the regular expression pattern, otherwise false -
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to search within
xs:stringRegular expression pattern to match
xs:string?Flags to control the regular expression matching (optional)
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:matches('XPath 3.0', '\\d\\.\\d')true
fn:matches('Hello, World!', '[A-Z][a-z]*')true
fn:matches('example123', '\\d+', 'q')false

- W3C Documentation reference: Matches -
- - - fn:substring-after(xs:string?, xs:string?) -
- Returns the part of the first string that follows the first occurrence of the second - string
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to search within
xs:string?Substring to search for
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:substring-after('Hello, World!', ',')' World!'
fn:substring-after('XPath 3.0 is awesome!', '3.0')' is awesome!'

- W3C Documentation reference: Substring-After -
- - - fn:substring-before(xs:string?, xs:string?) -
- Returns the part of the first string that precedes the first occurrence of the second - string
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to search within
xs:string?Substring to search for
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:substring-before('Hello, World!', ',')'Hello'
fn:substring-before('XPath 3.0 is awesome!', '3.0')'XPath '

- W3C Documentation reference: Substring-Before -
- - - fn:ends-with(xs:string?, xs:string?) -
- Returns true if the first string ends with the second string, otherwise false
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to check
xs:string?Substring to check for at the end of the first string
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:ends-with('Hello, World!', 'World!')true
fn:ends-with('Hello, World!', 'Hello')false
fn:ends-with('XPath 3.0', '3.0')true

- W3C Documentation reference: Ends-With -
- - - fn:starts-with(xs:string?, xs:string?) -
- Returns true if the first string starts with the second string, otherwise false
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to check
xs:string?Substring to check for at the beginning of the first string
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:starts-with('Hello, World!', 'Hello')true
fn:starts-with('Hello, World!', 'World')false
fn:starts-with('XPath 3.0', 'XPath')true

- W3C Documentation reference: Starts-With -
- - - fn:contains(xs:string?, xs:string?) -
- Returns true if the first string contains the second string, otherwise false
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to search within
xs:string?Substring to search for
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:contains('Hello, World!', 'World')true
fn:contains('Hello, World!', 'world')false
fn:contains('XPath 3.0', '3.0')true

- W3C Documentation reference: Contains -
- - - fn:translate(xs:string?, xs:string, xs:string) -
- Returns the input string with specified characters replaced
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to be translated
xs:stringMap string with characters to replace
xs:stringTranslate string with replacement characters
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:translate('apple', 'aeiou', '12345')'1ppl2'
fn:translate('Hello, World!', 'HW', 'hw')'hello, world!'

- W3C Documentation reference: Translate -
- - - fn:lower-case(xs:string?) -
- Returns the input string with all characters converted to lowercase
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?Input string to convert to lowercase
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:lower-case('HELLO, WORLD!')'hello, world!'
fn:lower-case('XPath 3.0')'xpath 3.0'
fn:lower-case('BANANA')'banana'

- W3C Documentation reference: Lower-Case -
- - - fn:upper-case(xs:string?) -
- Returns the input string with all characters converted to uppercase
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?Input string to convert to uppercase
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:upper-case('Hello, World!')'HELLO, WORLD!'
fn:upper-case('XPath 3.0')'XPATH 3.0'
fn:upper-case('banana')'BANANA'

- W3C Documentation reference: Upper-Case -
- - - fn:normalize-unicode(xs:string?, xs:string) -
- Returns the input string with Unicode normalization applied
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input string to normalize
xs:stringNormalization form to apply (NFC, NFD, NFKC, NFKD)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:normalize-unicode('Café', 'NFC')'Café'
fn:normalize-unicode('Café', 'NFD')'Café'

- W3C Documentation reference: Normalize-Unicode -
- - - fn:normalize-space(xs:string?) -
- Returns the input string with whitespace normalized
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?Input string to normalize whitespace
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:normalize-space(' Hello, World! ')'Hello, World!'
fn:normalize-space(' XPath 3.0 ')'XPath 3.0'
fn:normalize-space('\tbanana\t')'banana'

- W3C Documentation reference: Normalize-Space -
- - - fn:string-length(xs:string?) -
- Returns the length of the input string
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?Input string to calculate length
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:string-length('Hello, World!')13
fn:string-length('XPath 3.0')8
fn:string-length('banana')6

- W3C Documentation reference: String-Length -
- - - fn:substring(xs:string?, xs:double) -
- Returns a substring of the source string, starting from a specific location
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Input source string
xs:doubleStarting location to extract the substring
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:substring('Hello, World!', 1, 5)'Hello'
fn:substring('XPath 3.0', 7)'3.0'
fn:substring('banana', 2, 3)'ana'

- W3C Documentation reference: Substring -
- - fn:string-join(xs:string*, xs:string) -
- Joins a sequence of strings with a specified separator, returning a single string
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string*Input sequence of strings to join
xs:stringSeparator string to insert between joined strings
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:string-join(('apple', 'banana', 'orange'), ', ')'apple, banana, orange'
fn:string-join(('XPath', '3.0', 'Functions'), ' - ')'XPath - 3.0 - Functions'
fn:string-join(('A', 'B', 'C'), '')'ABC'

- W3C Documentation reference: String-Join -
- - - fn:concat(xs:anyAtomicType?, xs:anyAtomicType?, ...) -
- Concatenates two or more strings or atomic values, returning a single string
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:anyAtomicType?Input strings or atomic values to concatenate
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:concat('Hello', ' ', 'World')'Hello World'
fn:concat('I have ', 3, ' apples')'I have 3 apples'
fn:concat('XPath ', '3.0')'XPath 3.0'

- W3C Documentation reference: Concat -
- - - fn:codepoint-equal(xs:string?, xs:string?) -
- Compares two strings on a codepoint-by-codepoint basis and returns true if they are - equal, false otherwise
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?First string to compare
xs:string?Second string to compare
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:codepoint-equal('Hello', 'Hello')true
fn:codepoint-equal('Hello', 'hello')false
fn:codepoint-equal('apple', 'banana')false

- W3C Documentation reference: Codepoint-Equal -
- - - fn:compare(xs:string?, xs:string?) -
- Compares two strings and returns -1, 0, or 1 if the first string is less than, equal to, - or greater than the second string, respectively
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?First string to compare
xs:string?Second string to compare
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:compare('apple', 'banana')-1
fn:compare('apple', 'apple')0
fn:compare('banana', 'apple')1

- W3C Documentation reference: Compare -
- - - fn:string-to-codepoints(xs:string?) -
- Returns a sequence of Unicode code points for a given string
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?Input string
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:string-to-codepoints('Hello')(72, 101, 108, 108, 111)
fn:string-to-codepoints('( ͡° ͜ʖ ͡°)')(40, 32, 865, 176, 32, 860, 662, 32, 865, 176, 41)
fn:string-to-codepoints('😊')(128522)

- W3C Documentation reference: String-To-Codepoints -
- - - fn:codepoints-to-string(xs:integer*) -
- Constructs a string from a sequence of Unicode code points
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:integer*Sequence of Unicode code points
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:codepoints-to-string((72, 101, 108, 108, 111))Hello
codepoints-to-string((40, 32, 865, 176, 32, 860, 662, 32, 865, 176, 41)) - ( ͡° ͜ʖ ͡°)
fn:codepoints-to-string((128522))😊

- W3C Documentation reference: Codepoints-To-String -
- - - - fn:string(object) -
- Returns the string representation of the object argument
- Arguments and return type: - - - - - - - - - -
TypeDescription
stringThe object to convert to a string
Examples:
- - - - - - - - - - - - - -
ExpressionResult
string((1<0))false
string(.11)0.11

- W3C Documentation reference: String-Functions -
- - -
-
-
- - - -
- - - fn:format-number(numeric?, xs:string, item()?) -
- Returns a string that represents a formatted version of a number using a formatting - pattern and an optional - set of properties
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
numeric?The number to format
xs:stringThe formatting pattern
item()?Optional: the set of properties for formatting the number
xs:stringThe formatted number as a string
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
format-number(12345.678, "#,##0.00")Returns the formatted number: "12,345.68"
format-number(12345.678, "#,##0")Returns the formatted number: "12,346"
format-number(12345.678, "0.000")Returns the formatted number: "12345.678"

- W3C Documentation reference: format-number -
- - - - fn:format-integer(xs:integer?, xs:string) -
- Formats an integer value according to the supplied picture string
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:integer?Integer value to be formatted
xs:stringPicture string defining the format
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:format-integer(12345, '0,0')12,345
fn:format-integer(-1234, '0,0')-1,234
fn:format-integer(1234, '00-00-00')01-23-45

- W3C Documentation reference: Format-Integer -
- - - fn:round-half-to-even(numeric?) -
- Returns the closest integer to the given numeric value, rounding half-way cases to the - nearest even integer (also known as "bankers' rounding")
- Arguments and return type: - - - - - - - - - -
TypeDescription
numeric?Numeric value for which the rounded value will be calculated
- Examples:
- - - - - - - - - - - - - - - - - - - - - -
ExpressionResult
fn:round-half-to-even(3.5)4
fn:round-half-to-even(2.5)2
fn:round-half-to-even(-1.5)-2
fn:round-half-to-even(xs:decimal('1.25'), 1)1.2

- W3C Documentation reference: Round-Half-To-Even -
- - - fn:round(numeric?) -
- Returns the closest integer to the given numeric value, rounding half-way cases away - from zero
- Arguments and return type: - - - - - - - - - -
TypeDescription
numeric?Numeric value for which the rounded value will be calculated
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:round(3.14)3
fn:round(-4.7)-5
fn:round(xs:decimal('2.5'))3

- W3C Documentation reference: Round -
- - - fn:floor(numeric?) -
- Returns the largest integer less than or equal to the given numeric value
- Arguments and return type: - - - - - - - - - -
TypeDescription
numeric?Numeric value for which the floor value will be calculated
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:floor(3.14)3
fn:floor(-4.7)-5
fn:floor(xs:decimal('2.5'))2

- W3C Documentation reference: Floor -
- - - - fn:ceiling(numeric?) -
- Returns the smallest integer greater than or equal to the given numeric value
- Arguments and return type: - - - - - - - - - -
TypeDescription
numeric?Numeric value for which the ceiling value will be calculated
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:ceiling(3.14)4
fn:ceiling(-4.7)-4
fn:ceiling(xs:decimal('2.5'))3

- W3C Documentation reference: Ceiling -
- - - fn:abs(numeric?) -
- Returns the absolute value of the given numeric value
- Arguments and return type: - - - - - - - - - -
TypeDescription
numeric?Numeric value for which the absolute value will be calculated
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:abs(-42)42
fn:abs(3.14)3.14
fn:abs(xs:decimal('-5.5'))5.5

- W3C Documentation reference: Abs -
- - fn:number(item?) -
- Converts the given value to a number
- Arguments and return type: - - - - - - - - - -
TypeDescription
item?Returns the numeric value of the specified expression or the context item - (if no argument is provided)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:number(/library/fiction:book[1]/@id)1 (if the first fiction:book element's id attribute is "1")
fn:number(/library/fiction:book[1]/price)19.99 (if the first fiction:book element's price element contains "19.99") -

- W3C Documentation reference: Number -
- - - - -
-
-
- - - -
- - fn:sort(item()*) -
- Sorts an array of items based on their atomic values
- Arguments and return type: - - - - - - - - - -
TypeDescription
ArrayThe array of items to be sorted
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:sort([10, 5, 20])[5, 10, 20]
fn:sort(['banana', 'apple', 'cherry'])['apple', 'banana', 'cherry']

- W3C Documentation reference: Sort -
- - - fn:fold-right(item()*, item()*, function(item(), item()*)) -
- Applies a processing function cumulatively to the items of a sequence from right to - left, so as to reduce the sequence to a single value
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
item()*The input sequence of items
item()*The initial value, also known as the zero value
function(item(), item()*)The processing function used to accumulate the items
item()*The resulting single value after applying the processing function
- Examples:
- - - - - - - - - -
ExpressionResult
fold-right((1, 2, 3, 4), 0, function($current, $accumulator) { $accumulator - - $current })Returns the result of subtracting each number in the input sequence from - right to left: -2

- W3C Documentation reference: fold-right -
- - - fn:fold-left(item()*, item()*, function(item()*, item())) -
- Applies a processing function cumulatively to the items of a sequence from left to - right, so as to reduce the sequence to a single value
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
item()*The input sequence of items
item()*The initial value, also known as the zero value
function(item()*, item())The processing function used to accumulate the items
item()*The resulting single value after applying the processing function
- Examples:
- - - - - - - - - -
ExpressionResult
fold-left((1, 2, 3, 4), 0, function($accumulator, $current) { $accumulator + - $current })Returns the sum of the numbers in the input sequence: 10

- W3C Documentation reference: fold-left -
- - - - - fn:last() -
- Returns the position of the last item in the current context sequence
- Arguments and return type: - - - - - - - - - -
TypeDescription
NoneReturns the position of the last item in the current context sequence
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
/library/fiction:book[position() = last()]Returns the last fiction:book element in the library
/library/fiction:book[last()]Returns the last fiction:book element in the library

- W3C Documentation reference: Last -
- - fn:position() -
- Returns the context position of the context item in the sequence currently being - processed
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:integerThe position of the context item in the sequence
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
<items><item>Item 1</item><item>Item - 2</item></items>/item[position()=2]Returns '<item>Item 2</item>'
<items><item>Item 1</item><item>Item - 2</item></items>/item[position()=1]Returns '<item>Item 1</item>'

- W3C Documentation reference: position -
- - - fn:collection(xs:string?) -
- Returns a sequence of document nodes obtained from the collection identified by the - argument URI, or the - default collection if no argument is supplied.
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI of the collection to retrieve (Optional)
document-node()*A sequence of document nodes obtained from the collection
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
collection()Returns the sequence of document nodes from the default collection
collection("http://example.com/collection")Returns the sequence of document nodes from the collection identified by the - specified URI
count(collection())Returns the number of document nodes in the default collection

- W3C Documentation reference: collection -
- - - fn:sum(xs:anyAtomicType*, xs:anyAtomicType?) -
- Returns the sum of a sequence of numeric values
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*Input sequence of numeric values
xs:anyAtomicType?Value to return if the sequence is empty (optional)
xs:anyAtomicType?Sum of the input sequence
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:sum((10, 20, 30, 40, 50))150
fn:sum((), 0)0

- W3C Documentation reference: sum -
- - - fn:min(xs:anyAtomicType*) -
- Returns the minimum value of a sequence of atomic values, according to the ordering - rules for the value's - type
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*The input sequence of atomic values
xs:anyAtomicType?The minimum value of the input sequence, or the empty sequence if the input - sequence is empty -
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
min((5, 1, 9, 3))Returns the minimum value: 1
min(())Returns the empty sequence: ()
min(("apple", "banana", "cherry"))Returns the minimum value (alphabetical order): "apple"

- W3C Documentation reference: min -
- - - fn:max(xs:anyAtomicType*) -
- Returns the maximum value of a sequence of atomic values, according to the ordering - rules for the value's - type
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*The input sequence of atomic values
xs:anyAtomicType?The maximum value of the input sequence, or the empty sequence if the input - sequence is empty -
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
max((5, 1, 9, 3))Returns the maximum value: 9
max(())Returns the empty sequence: ()
max(("apple", "banana", "cherry"))Returns the maximum value (alphabetical order): "cherry"

- W3C Documentation reference: max -
- - - - fn:avg(xs:anyAtomicType*) -
- Computes the average of the numeric values in the input sequence
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*Input sequence of numeric values
xs:anyAtomicType?Average of the numeric values in the input sequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:avg((10, 20, 30, 40, 50))30
fn:avg((2.5, 3.5, 4.5))3.5
fn:avg(())empty sequence

- W3C Documentation reference: avg -
- - - fn:count(item()*) -
- Returns the number of items in the input sequence
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
xs:integerNumber of items in the input sequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:count(('apple', 'banana', 'orange'))3
fn:count(())0
fn:count((1, 2, 3, 4, 5))5

- W3C Documentation reference: count -
- - - fn:exactly-one(item()*) -
- Returns the single item in the input sequence or raises an error if the sequence is - empty or contains more than one item
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
item()Single item from the input sequence, otherwise an error is raised
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:exactly-one(('apple'))'apple'
fn:exactly-one(('apple', 'banana'))Error (more than one item)
fn:exactly-one(())Error (empty sequence)

- W3C Documentation reference: exactly-one -
- - - fn:one-or-more(item()*)+ -
- Returns the input sequence if it contains one or more items, otherwise raises an - error
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
item()+Sequence containing one or more items, otherwise an error is raised
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:one-or-more(('apple', 'banana'))('apple', 'banana')
fn:one-or-more(('pear'))('pear')

- W3C Documentation reference: one-or-more -
- - - fn:zero-or-one(item()*) -
- Returns the input sequence if it contains zero or one items, otherwise raises an - error
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
item()?Sequence containing zero or one item, otherwise an error is raised
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:zero-or-one(('apple'))('apple')
fn:zero-or-one(())()

- W3C Documentation reference: zero-or-one -
- - - fn:deep-equal(item()* , item()*) -
- Returns true if the two input sequences are deep-equal, meaning that they have the same - structure and atomic values
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
item()*First input sequence
item()*Second input sequence
xs:booleanTrue if the input sequences are deep-equal, otherwise false
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:deep-equal((1, 2, 3), (1, 2, 3))true
fn:deep-equal((1, 2, 3), (1, 2, 4))false

- W3C Documentation reference: deep-equal -
- - - fn:index-of(xs:anyAtomicType*, xs:anyAtomicType) -
- Returns a sequence of integers indicating the positions of items in the input sequence - that are equal to the search item
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*Input sequence of atomic values
xs:anyAtomicTypeSearch item to find in the input sequence
xs:integer*Sequence of integers representing the positions of the search item in the - input sequence
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:index-of((3, 1, 4, 1, 5, 9, 2, 2, 3), 1)(2, 4)
fn:index-of(('apple', 'banana', 'orange', 'apple', 'grape', 'orange'), - 'apple')(1, 4)

- W3C Documentation reference: index-of -
- - - fn:distinct-values(xs:anyAtomicType*) -
- Returns a sequence of distinct atomic values from the input sequence
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:anyAtomicType*Input sequence of atomic values
xs:anyAtomicType*Distinct sequence of atomic values
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:distinct-values((3, 1, 4, 1, 5, 9, 2, 2, 3))(3, 1, 4, 5, 9, 2)
fn:distinct-values(('apple', 'banana', 'orange', 'apple', 'grape', - 'orange'))('apple', 'banana', 'orange', 'grape')

- W3C Documentation reference: distinct-values -
- - - fn:unordered(item()*) -
- Returns the items of a sequence in an implementation-dependent order
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
item()*Unordered sequence
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:unordered((3, 1, 4, 1, 5, 9, 2))(1, 2, 3, 4, 5, 9, 1) (example result; actual order may vary)
fn:unordered(('apple', 'banana', 'orange', 'grape'))('banana', 'apple', 'orange', 'grape') (example result; actual order may - vary)

- W3C Documentation reference: unordered -
- - - fn:subsequence(item()*, xs:double, xs:double) -
- Returns a subsequence of a given sequence starting at a specified position with a - specified length
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
xs:doubleStarting position
xs:doubleLength of subsequence
item()*Subsequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:subsequence((1, 2, 3, 4, 5), 2, 3)(2, 3, 4)
fn:subsequence(('apple', 'banana', 'orange', 'grape'), 1, 2)('apple', 'banana')
fn:subsequence(('red', 'blue', 'green', 'yellow'), 3)('green', 'yellow')

- W3C Documentation reference: subsequence -
- - - fn:reverse(item()*) -
- Reverses the order of items in a sequence
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Input sequence
item()*Reversed sequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:reverse((1, 2, 3, 4))(4, 3, 2, 1)
fn:reverse(('apple', 'banana', 'orange'))('orange', 'banana', 'apple')
fn:reverse(('red', 'blue', 'green'))('green', 'blue', 'red')

- W3C Documentation reference: reverse -
- - - fn:remove(item()*, xs:integer) -
- Removes an item from a sequence at the specified position
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
item()*Target sequence
xs:integerPosition of the item to remove
item()*New sequence with the item removed
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:remove((1, 2, 3, 4), 2)(1, 3, 4)
fn:remove(('apple', 'banana', 'orange'), 3)('apple', 'banana')
fn:remove((10, 20, 30), 1)(20, 30)

- W3C Documentation reference: remove -
- - - fn:insert-before(item()*, xs:integer, item()*) -
- Inserts items from the specified sequence into another sequence at a given position
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
item()*Target sequence
xs:integerPosition at which to insert the items
item()*Sequence of items to insert
item()*New sequence with items inserted
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:insert-before((1, 3, 4), 2, (2))(1, 2, 3, 4)
fn:insert-before(('apple', 'orange'), 1, ('banana'))('banana', 'apple', 'orange')
fn:insert-before((10, 20, 30), 4, (40))(10, 20, 30, 40)

- W3C Documentation reference: insert-before -
- - - fn:tail(item()*) -
- Returns all items of the input sequence except the first one, or an empty sequence if - the input is empty or contains only one item
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Sequence of items
item()*All items except the first one, or an empty sequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:tail((1, 2, 3))(2, 3)
fn:tail((1))()
fn:tail(/books/book/author)All authors in the "books" element except the first one

- W3C Documentation reference: tail -
- - - fn:head(item()*) -
- Returns the first item of the input sequence, or an empty sequence if the input is - empty
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Sequence of items
item()?The first item of the sequence, or an empty sequence
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:head((1, 2, 3))1
fn:head(())()
fn:head(/books/book[1]/author)The first author of the first book in the "books" element

- W3C Documentation reference: head -
- - - fn:exists(item()*) -
- Returns true if the input sequence is not empty, otherwise returns false
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Sequence of items
xs:booleanResult of the test (true or false)
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:exists((1, 2, 3))true
fn:exists(())false
fn:exists(//chapter[5])true if there are at least 5 chapters, otherwise false

- W3C Documentation reference: exists -
- - - fn:empty(item()*) -
- Returns true if the input sequence is empty, otherwise returns false
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Sequence of items
xs:booleanResult of the test (true or false)
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
fn:empty((1, 2, 3))false
fn:empty(())true
fn:empty(//chapter[100])true if there are less than 100 chapters, otherwise false

- W3C Documentation reference: empty -
- - - - - fn:data(item*) -
- Returns the simple value of an item or a sequence of items
- Arguments and return type: - - - - - - - - - -
TypeDescription
item?Returns the simple value of the specified item or the context item (if no - argument is provided)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:data(/library/fiction:book[1]/title)The Catcher in the Rye
fn:data(/library/fiction:book[2]/author)Harper Lee

- W3C Documentation reference: Data -
- - -
-
-
- - - -
- - - - fn:implicit-timezone() -
- Returns the implicit timezone as an xs:dayTimeDuration
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:dayTimeDurationThe implicit timezone as a dayTimeDuration
- Examples:
- - - - - - - - - -
ExpressionResult
implicit-timezone()Returns the implicit timezone as an xs:dayTimeDuration, e.g., '-PT7H' -

- W3C Documentation reference: implicit-timezone -
- - - fn:current-time() -
- Returns the current time with timezone
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:timeThe current time with timezone
- Examples:
- - - - - - - - - -
ExpressionResult
current-time()Returns the current time with timezone, e.g., '13:45:30.123-07:00'

- W3C Documentation reference: current-time -
- - - fn:current-date() -
- Returns the current date with timezone
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:dateThe current date with timezone
- Examples:
- - - - - - - - - -
ExpressionResult
current-date()Returns the current date with timezone, e.g., '2023-03-29-07:00'

- W3C Documentation reference: current-date -
- - - fn:current-dateTime() -
- Returns the current date and time with timezone
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:dateTimeThe current date and time with timezone
- Examples:
- - - - - - - - - -
ExpressionResult
current-dateTime()Returns the current date and time with timezone, e.g., - '2023-03-29T12:34:56.789-07:00'

- W3C Documentation reference: current-dateTime -
- - - fn:format-time(xs:time?, xs:string, xs:string?, xs:string?, xs:string?) -
- Formats a time value according to a formatting picture string, with optional language, - calendar, and - country parameters.
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
xs:time?The time value to be formatted (Optional)
xs:stringThe formatting picture string
xs:string?The language for formatting (Optional)
xs:string?The calendar for formatting (Optional)
xs:string?The country for formatting (Optional)
xs:stringThe formatted time value as a string
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
format-time(xs:time("14:30:00"), "[H]:[m]")"14:30"
format-time(xs:time("14:30:00"), "[H]:[m]:[s]")"14:30:00"
format-time(xs:time("14:30:00.456"), "[H]:[m]:[s].[f]")"14:30:00.456"

- W3C Documentation reference: format-time -
- - - - fn:format-date(xs:date?, xs:string, xs:string?, xs:string?, xs:string?) -
- Formats a date value using the provided picture string and optional language, - calendar, and country settings
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
xs:date?Date value
xs:stringPicture string
xs:string?Language
xs:string?Calendar
xs:string?Country
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:format-date(xs:date('2023-04-01'), '[Y0001]-[M01]-[D01]')2023-04-01
fn:format-date(xs:date('2023-04-01'), '[MNn,*-3] [D], [Y]')Apr 1, 2023

- W3C Documentation reference: Format-Date -
- - - fn:format-dateTime(xs:dateTime?, xs:string, xs:string?, xs:string?, xs:string?) -
- Formats a dateTime value according to a formatting picture string, with optional - language, calendar, and - country parameters.
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
xs:dateTime?The dateTime value to be formatted (Optional)
xs:stringThe formatting picture string
xs:string?The language for formatting (Optional)
xs:string?The calendar for formatting (Optional)
xs:string?The country for formatting (Optional)
xs:stringThe formatted dateTime value as a string
- Examples:
- - - - - - - - - - - - - - - - - -
ExpressionResult
format-dateTime(xs:dateTime("2023-04-12T14:30:00"), "[Y]-[M]-[D]T[H]:[m]") - "2023-04-12T14:30"
format-dateTime(xs:dateTime("2023-04-12T14:30:00"), "[FNn, Nn] [D] [MNn] - [Y]")"Wednesday, 12 April 2023"
format-dateTime(xs:dateTime("2023-04-12T14:30:00.123"), - "[Y]-[M]-[D]T[H]:[m]:[s].[f]")"2023-04-12T14:30:00.123"

- W3C Documentation reference: format-dateTime -
- - - - fn:adjust-time-to-timezone(xs:time?, xs:dayTimeDuration?) -
- Adjusts the timezone of a time value
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:time?Time value
xs:dayTimeDuration?Timezone adjustment
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:adjust-time-to-timezone(xs:time('10:00:00-07:00'), - xs:dayTimeDuration('PT2H'))12:00:00-05:00
fn:adjust-time-to-timezone(xs:time('10:00:00Z'), - xs:dayTimeDuration('-PT3H'))07:00:00-03:00

- W3C Documentation reference: Adjust-Time-To-Timezone -
- - - - - fn:adjust-date-to-timezone(xs:date?, xs:dayTimeDuration?) -
- Adjusts the timezone of a date value
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:date?Date value
xs:dayTimeDuration?Timezone adjustment
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:adjust-date-to-timezone(xs:date('2023-01-01-07:00'), - xs:dayTimeDuration('PT2H'))2023-01-01-05:00
fn:adjust-date-to-timezone(xs:date('2023-01-01Z'), - xs:dayTimeDuration('-PT3H'))2022-12-31-03:00

- W3C Documentation reference: Adjust-Date-To-Timezone -
- - - fn:adjust-dateTime-to-timezone(xs:dateTime?, xs:dayTimeDuration?) -
- Adjusts the timezone of a dateTime value
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
xs:dayTimeDuration?Timezone adjustment
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:adjust-dateTime-to-timezone(xs:dateTime('2023-01-01T12:00:00-07:00'), - xs:dayTimeDuration('PT2H'))2023-01-01T17:00:00-05:00
fn:adjust-dateTime-to-timezone(xs:dateTime('2023-01-01T12:00:00Z'), - xs:dayTimeDuration('-PT3H'))2023-01-01T09:00:00-03:00

- W3C Documentation reference: Adjust-DateTime-To-Timezone -
- - - fn:timezone-from-time(xs:time?) -
- Extracts the timezone component from an xs:time value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:time?Time value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:timezone-from-time(xs:time('12:00:00-07:00'))-PT7H
fn:timezone-from-time(xs:time('14:30:00+02:30'))PT2H30M

- W3C Documentation reference: Timezone-From-Time -
- - - fn:seconds-from-time(xs:time?) -
- Extracts the seconds component from an xs:time value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:time?Time value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:seconds-from-time(xs:time('21:45:30.5'))30.5
fn:seconds-from-time(xs:time('04:15:12.1'))12.1

- W3C Documentation reference: Seconds-From-Time -
- - - fn:minutes-from-time(xs:time?) -
- Extracts the minutes component from an xs:time value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:time?Time value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:minutes-from-time(xs:time('21:45:30'))45
fn:minutes-from-time(xs:time('04:15:12'))15

- W3C Documentation reference: Minutes-From-Time -
- - - fn:hours-from-time(xs:time?) -
- Extracts the hours component from an xs:time value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:time?Time value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:hours-from-time(xs:time('21:45:30'))21
fn:hours-from-time(xs:time('04:15:12'))4

- W3C Documentation reference: Hours-From-Time -
- - - fn:timezone-from-date(xs:date?) -
- Extracts the timezone component from an xs:date value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:date?Date value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:timezone-from-date(xs:date('2023-03-29+02:00'))PT2H
fn:timezone-from-date(xs:date('1980-12-15-05:00'))-PT5H

- W3C Documentation reference: Timezone-From-Date -
- - - fn:day-from-date(xs:date?) -
- Extracts the day component from an xs:date value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:date?Date value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:day-from-date(xs:date('2023-03-29'))29
fn:day-from-date(xs:date('1980-12-15'))15

- W3C Documentation reference: Day-From-Date -
- - - fn:month-from-date(xs:date?) -
- Extracts the month component from an xs:date value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:date?Date value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:month-from-date(xs:date('2023-03-29'))3
fn:month-from-date(xs:date('1980-12-15'))12

- W3C Documentation reference: Month-From-Date -
- - - fn:year-from-date(xs:date?) -
- Extracts the year component from an xs:date value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:date?Date value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:year-from-date(xs:date('2023-03-29'))2023
fn:year-from-date(xs:date('1980-12-15'))1980

- W3C Documentation reference: Year-From-Date -
- - - fn:timezone-from-dateTime(xs:dateTime?) -
- Extracts the timezone component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:timezone-from-dateTime(xs:dateTime('2023-03-29T12:30:45-07:00'))-PT7H
fn:timezone-from-dateTime(xs:dateTime('2023-12-15T18:45:30+03:30'))PT3H30M

- W3C Documentation reference: Timezone-From-DateTime -
- - - fn:seconds-from-dateTime(xs:dateTime?) -
- Extracts the seconds component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:seconds-from-dateTime(xs:dateTime('2023-03-29T12:30:45'))45
fn:seconds-from-dateTime(xs:dateTime('2023-12-15T18:45:30.5-08:00')) - 30.5

- W3C Documentation reference: Seconds-From-DateTime -
- - - fn:minutes-from-dateTime(xs:dateTime?) -
- Extracts the minutes component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:minutes-from-dateTime(xs:dateTime('2023-03-29T12:30:00'))30
fn:minutes-from-dateTime(xs:dateTime('2023-12-15T18:45:00-08:00'))45

- W3C Documentation reference: Minutes-From-DateTime -
- - - fn:hours-from-dateTime(xs:dateTime?) -
- Extracts the hours component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:hours-from-dateTime(xs:dateTime('2023-03-29T12:30:00'))12
fn:hours-from-dateTime(xs:dateTime('2023-12-15T18:45:00-08:00'))18

- W3C Documentation reference: Hours-From-DateTime -
- - - fn:day-from-dateTime(xs:dateTime?) -
- Extracts the day component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:day-from-dateTime(xs:dateTime('2023-03-29T12:30:00'))29
fn:day-from-dateTime(xs:dateTime('2023-12-15T18:45:00-08:00'))15

- W3C Documentation reference: Day-From-DateTime -
- - - fn:month-from-dateTime(xs:dateTime?) -
- Extracts the month component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:month-from-dateTime(xs:dateTime('2023-03-29T12:30:00'))3
fn:month-from-dateTime(xs:dateTime('2023-12-15T18:45:00-08:00'))12

- W3C Documentation reference: Month-From-DateTime -
- - - fn:year-from-dateTime(xs:dateTime?) -
- Extracts the year component from an xs:dateTime value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:dateTime?DateTime value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:year-from-dateTime(xs:dateTime('2023-03-29T12:30:00'))2023
fn:year-from-dateTime(xs:dateTime('2023-03-29T12:30:00-08:00'))2023

- W3C Documentation reference: Year-From-DateTime -
- - - - - fn:dateTime(xs:date?, xs:time?) -
- Constructs an xs:dateTime value from an xs:date and an xs:time value
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:date?Date value
xs:time?Time value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:dateTime(xs:date('2023-03-29'), xs:time('12:30:00'))2023-03-29T12:30:00
fn:dateTime(xs:date('2023-03-29+05:00'), xs:time('12:30:00-08:00'))2023-03-29T12:30:00-08:00

- W3C Documentation reference: DateTime -
- - - fn:seconds-from-duration(xs:duration?) -
- Returns the seconds component of the duration
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?Duration from which to extract the seconds component
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:seconds-from-duration(xs:dayTimeDuration('PT1H30M15.5S'))15.5
fn:seconds-from-duration(xs:dayTimeDuration('-PT2M10.3S'))-10.3

- W3C Documentation reference: Seconds-From-Duration -
- - - fn:minutes-from-duration(xs:duration?) -
- Returns the minutes component of the duration
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?Duration from which to extract the minutes component
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:minutes-from-duration(xs:dayTimeDuration('PT2H30M'))30
fn:minutes-from-duration(xs:dayTimeDuration('-PT1H45M'))-45

- W3C Documentation reference: Minutes-From-Duration -
- - - fn:hours-from-duration(xs:duration?) -
- Returns the hours component of the duration
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?Duration from which to extract the hours component
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:hours-from-duration(xs:dayTimeDuration('PT36H'))36
fn:hours-from-duration(xs:dayTimeDuration('-PT12H30M'))-12

- W3C Documentation reference: Hours-From-Duration -
- - - fn:days-from-duration(xs:duration?) -
- Returns the days component of the duration
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?Duration from which to extract the days component
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:days-from-duration(xs:dayTimeDuration('P5DT12H30M'))5
fn:days-from-duration(xs:dayTimeDuration('-P2DT6H'))-2

- W3C Documentation reference: Days-From-Duration -
- - - - fn:months-from-duration(xs:duration?) -
- Returns the months component of the duration
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?Duration from which to extract the months component
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:months-from-duration(xs:duration('P2Y3M4DT5H6M7S'))3
fn:months-from-duration(xs:duration('-P2Y3M4DT5H6M7S'))-3

- W3C Documentation reference: Months-From-Duration -
- - - fn:years-from-duration(xs:duration?) -
- Returns the years component of the duration
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:duration?Duration from which to extract the years component
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:years-from-duration(xs:duration('P2Y3M4DT5H6M7S'))2
fn:years-from-duration(xs:duration('-P2Y3M4DT5H6M7S'))-2

- W3C Documentation reference: Years-From-Duration -
-
-
-
- - - -
- - fn:trace(item()*, xs:string) -
- Outputs the provided label and value for diagnostic purposes and returns the value - unchanged
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
item()*Value to be traced
xs:stringLabel to be output along with the value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:trace(42, 'The value is:')Outputs "The value is: 42" for diagnostic purposes and returns 42
fn:trace(/library/book/title, 'Book title:')Outputs "Book title: [book title]" for diagnostic purposes and returns - the book title

- W3C Documentation reference: Trace -
- - - fn:error(xs:QName?, xs:string?, $error-object) -
- Raises an error with the specified error code, description, and error object
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:QName?Error code (optional)
xs:string?Description of the error (optional)
item()*Error object (optional)
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:error(xs:QName('err:FOER0000'))Raise error with the code err:FOER0000
fn:error(xs:QName('err:FOER0000'), 'Invalid value')Raise error with the code err:FOER0000 and description "Invalid value" -

- W3C Documentation reference: Error -
- -
-
-
- - - -
- - fn:xml-to-json(node(), map(*)) -
- Converts an XML representation of a JSON value to its JSON serialization
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
node()XML representation of a JSON value
map(*)Options for the JSON serialization
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:xml-to-json('<map><string - key="name">John</string><number - key="age">30</number></map>')'{"name": "John", "age": 30}'
fn:xml-to-json('<array><number>1</number><number>2</number><number>3</number></array>') - '[1, 2, 3]'

- W3C Documentation reference: XML-to-JSON -
- - - fn:json-to-xml(item()) -
- Converts a JSON value to its XML representation
- Arguments and return type: - - - - - - - - - -
TypeDescription
item()JSON value to be converted
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:json-to-xml(map{"name": "John", "age": 30}) - <map> - <string key="name">John</string> - <number key="age">30</number> - </map> -
fn:json-to-xml([1, 2, 3]) - <array> - <number>1</number> - <number>2</number> - <number>3</number> - </array> -

- W3C Documentation reference: JSON-to-XML -
- - - fn:json-doc(xs:string) -
- Parses a JSON document from a URI and returns the corresponding value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:stringURI of the JSON document to be parsed
- Examples:
- - - - - - - - - -
ExpressionResult
fn:json-doc('https://example.com/data.json')Parsed JSON value from the specified URI

- W3C Documentation reference: JSON-Doc -
- - - fn:parse-json(xs:string?) -
- Parses a JSON string and returns the corresponding value
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:string?JSON string to be parsed
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:parse-json('{"name": "John", "age": 30}')map{"name": "John", "age": 30}
fn:parse-json('[1, 2, 3]')[1, 2, 3]

- W3C Documentation reference: Parse-JSON -
- - - fn:function-arity(function(*)) -
- Returns the arity (number of arguments) of the specified function
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
function(*)The function to obtain the arity for
xs:integerThe arity (number of arguments) of the specified function
- Examples:
- - - - - - - - - -
ExpressionResult
function-arity(fn:substring)Returns the arity of the substring function: 2 (since - substring accepts two required arguments: the input string and the - starting index)

- W3C Documentation reference: function-arity -
- - - fn:function-name(function(*)) -
- Returns the QName of the specified function
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
function(*)The function to obtain the QName for
xs:QName?The QName of the specified function, or an empty sequence if the - function is anonymous
- Examples:
- - - - - - - - - -
ExpressionResult
function-name(fn:substring)Returns the QName of the substring function: - QName("http://www.w3.org/2005/xpath-functions", "substring") -

- W3C Documentation reference: function-name -
- - - fn:function-lookup(xs:QName, xs:integer) -
- Returns a function with the specified QName and arity if available, otherwise - returns an empty sequence
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
xs:QNameFunction name as QName
xs:integerArity of the function
function(*)?A function with the specified QName and arity if available, otherwise an - empty sequence
- Examples:
- - - - - - - - - -
ExpressionResult
function-lookup(QName('http://www.w3.org/2005/xpath-functions', - 'substring'), 2)Returns the substring function with arity 2, if available

- W3C Documentation reference: function-lookup -
- - - fn:static-base-uri() -
- Returns the static base URI as an xs:anyURI, if available
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:anyURI?The static base URI, if available; otherwise, an empty sequence
- Examples:
- - - - - - - - - -
ExpressionResult
static-base-uri()Returns the static base URI as an xs:anyURI, if available, e.g., - 'https://www.example.com/base/'

- W3C Documentation reference: static-base-uri -
- - - fn:default-collation() -
- Returns the default collation URI as an xs:string
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneFunction takes no arguments
xs:stringThe default collation URI as a string
- Examples:
- - - - - - - - - -
ExpressionResult
default-collation()Returns the default collation URI as an xs:string, e.g., - 'http://www.w3.org/2005/xpath-functions/collation/codepoint'

- W3C Documentation reference: default-collation -
- - - fn:serialize(item()?, item()?) -
- Serializes an XML node, producing a string representation of the node
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
item()?An XML node to serialize
item()?Serialization options as a map, with key-value pairs defining the - serialization parameters (optional)
xs:string?A string representation of the serialized XML node or an empty sequence - if the input is an empty sequence
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:serialize(<item>Item 1</item>)Returns '<item>Item 1</item>'
fn:serialize(<item>Item 1</item>, map{'method': 'xml', 'indent': - 'yes'})Returns an indented XML string representation of the input node

- W3C Documentation reference: serialize -
- - - fn:parse-xml-fragment(xs:string?) -
- Parses a string containing an XML fragment and returns a corresponding document - node
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?A string containing an XML fragment
document-node(element(*))?A document node containing the parsed XML fragment or an empty sequence - if the input is an empty sequence
- Examples:
- - - - - - - - - -
ExpressionResult
fn:parse-xml-fragment('<item>Item 1</item><item>Item - 2</item>')Returns a document node containing the parsed XML fragment

- W3C Documentation reference: parse-xml-fragment -
- - - fn:parse-xml(xs:string?) -
- Parses a string containing an XML document and returns a corresponding document - node
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?A string containing an XML document
document-node(element(*))?A document node containing the parsed XML content or an empty sequence - if the input is an empty sequence
- Examples:
- - - - - - - - - -
ExpressionResult
fn:parse-xml('<root><item>Item 1</item></root>')Returns a document node containing the parsed XML content

- W3C Documentation reference: parse-xml -
- - - fn:available-environment-variables() -
- Retrieves a sequence of the names of all available environment variables
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
NoneNo argument is required
xs:string*A sequence of the names of all available environment variables
- Examples:
- - - - - - - - - -
ExpressionResult
fn:available-environment-variables()Returns a sequence of the names of all available environment variables -

- W3C Documentation reference: available-environment-variables -
- - - fn:environment-variable(xs:string) -
- Retrieves the value of an environment variable
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:stringThe name of the environment variable
xs:string?The value of the environment variable, or an empty sequence if the - variable is not set
- Examples:
- - - - - - - - - -
ExpressionResult
fn:environment-variable("PATH")Returns the value of the PATH environment variable, or an empty sequence - if the variable is not set

- W3C Documentation reference: environment-variable -
- - - fn:uri-collection(xs:string?) -
- Returns a sequence of URIs in a collection identified by a URI
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI identifying the collection of URIs
xs:anyURI*A sequence of URIs in the collection
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:uri-collection("http://www.example.com/collection/")Returns a sequence of URIs in the collection identified by the specified - URI -
fn:uri-collection()Returns a sequence of URIs in the default collection, if one is defined -

- W3C Documentation reference: uri-collection -
- - fn:doc-available(xs:string?) -
- Tests whether an XML document is available at a given URI
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI of the XML document to be tested
xs:booleanTrue if the XML document is available, otherwise false
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:doc-available("http://www.example.com/books.xml")Returns true if the XML document located at the specified URI is - available, otherwise false
fn:doc-available("")Returns true if the XML document containing the context item is - available, otherwise false

- W3C Documentation reference: doc-available -
- - - fn:doc(xs:string?) -
- Loads an XML document from a URI and returns the document node
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?The URI of the XML document to be loaded
document-node()?The document node of the loaded XML document
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:doc("http://www.example.com/books.xml")Loads the XML document located at the specified URI and returns its - document node
fn:doc("")Returns the document node of the XML document containing the context - item

- W3C Documentation reference: doc -
- - - fn:generate-id(node()?) -
- Returns a unique identifier for the specified node
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
node()?Input node for which the unique identifier is to be generated
xs:stringUnique identifier for the specified node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:generate-id(/bookstore/book[1])A unique identifier for the first <book> element in the - <bookstore>
fn:generate-id(.)A unique identifier for the context node

- W3C Documentation reference: generate-id -
- - - fn:idref(xs:string*) -
- Returns a sequence of nodes that are referenced by the specified IDREF attribute - values
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string*Input sequence of IDREF attribute values
node()*Sequence of nodes referenced by the specified IDREF attribute values -
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:idref("reference42")Nodes referenced by the IDREF attribute value "reference42"
fn:idref(("ref1", "ref2", "ref3"))Nodes referenced by the IDREF attribute values "ref1", "ref2", and - "ref3"

- W3C Documentation reference: idref -
- - - fn:id(xs:string*) -
- Returns a sequence of elements with the specified ID attribute values
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string*Input sequence of ID attribute values
element()*Sequence of elements with the specified ID attribute values
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:id("item42")Element with the ID attribute value "item42"
fn:id(("item1", "item2", "item3"))Elements with the ID attribute values "item1", "item2", and "item3"

- W3C Documentation reference: id -
- - - fn:lang(xs:string, node()?) -
- Returns true if the language of the specified node or its nearest ancestor matches - the given language code
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:stringLanguage code to test
node()?Optional node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:lang("en", /book/title)true
fn:lang("fr", /book/title)false

- W3C Documentation reference: lang -
- - - - fn:in-scope-prefixes(element()) -
- Returns a sequence of strings representing the prefixes of the in-scope namespaces - for the specified element
- Arguments and return type: - - - - - - - - - -
TypeDescription
element()Element node
- Examples:
- - - - - - - - - -
ExpressionResult
fn:in-scope-prefixes(/*)("xml", "x")

- W3C Documentation reference: in-scope-prefixes -
- - - fn:namespace-uri-for-prefix(xs:string?, element()) -
- Returns the namespace URI associated with the given prefix, using the in-scope - namespaces for the specified element
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Prefix
element()Element node
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:namespace-uri-for-prefix('x', /*)"http://www.example.com/ns"
fn:namespace-uri-for-prefix('', /*)""

- W3C Documentation reference: namespace-uri-for-prefix -
- - - fn:namespace-uri-from-QName(xs:QName?) -
- Returns the namespace URI of the given QName value, or an empty sequence if there's - no namespace URI
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:QName?QName value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:namespace-uri-from-QName(fn:QName('http://www.example.com/ns', - 'x:local'))"http://www.example.com/ns"
fn:namespace-uri-from-QName(fn:QName('', 'local'))""

- W3C Documentation reference: namespace-uri-from-QName -
- - - fn:local-name-from-QName(xs:QName?) -
- Returns the local name of the given QName value, or an empty sequence if there's no - local name
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:QName?QName value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:local-name-from-QName(fn:QName('http://www.example.com/ns', - 'x:local'))"local"
fn:local-name-from-QName(fn:QName('', 'local'))"local"

- W3C Documentation reference: local-name-from-QName -
- - - fn:prefix-from-QName(xs:QName?) -
- Returns the prefix of the given QName value, or an empty sequence if there's no - prefix
- Arguments and return type: - - - - - - - - - -
TypeDescription
xs:QName?QName value
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:prefix-from-QName(fn:QName('http://www.example.com/ns', 'x:local')) - "x"
fn:prefix-from-QName(fn:QName('', 'local'))()

- W3C Documentation reference: prefix-from-QName -
- - - fn:QName(xs:string?, xs:string) -
- Constructs an xs:QName value from a namespace URI and a lexical QName
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?Namespace URI
xs:stringLexical QName
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:QName('http://www.example.com/ns', 'x:local')QName("http://www.example.com/ns", "x:local")
fn:QName('', 'local')QName("", "local")

- W3C Documentation reference: QName -
- - - fn:resolve-QName(xs:string?, element()) -
- Resolves a QName by expanding a prefix using the in-scope namespaces of a given - element
- Arguments and return type: - - - - - - - - - - - - - -
TypeDescription
xs:string?QName to resolve
element()Element with in-scope namespaces
- Examples:
- - - - - - - - - - - - - -
ExpressionResult
fn:resolve-QName('x:local', $element)QName("http://www.example.com/ns", "local")
fn:resolve-QName('local', $element)QName("", "local")

- W3C Documentation reference: Resolve-QName -
- - - - fn:nilled(node) -
- Returns a Boolean value indicating whether the argument node is nilled
-
- W3C Documentation reference: #func-nilled - -
- - - - - -
-
-
- - - -
- - fn:for-each-pair(item()*, item()*, function(item(), item())) -
- Applies a processing function to pairs of items from two input sequences in a - pairwise fashion, resulting in a sequence of the same length as the shorter input - sequence
- Arguments and return type: - - - - - - - - - - - - - - - - - - - - - -
TypeDescription
item()*The first input sequence of items
item()*The second input sequence of items
function(item(), item())The processing function used to process pairs of items from the input - sequences
item()*The resulting sequence after applying the processing function to pairs - of items
- Examples:
- - - - - - - - - -
ExpressionResult
for-each-pair((1, 2, 3), ("a", "b"), function($item1, $item2) { - concat($item1, $item2) })Returns a sequence with the concatenated pairs of items: - ("1a", "2b") -

- W3C Documentation reference: for-each-pair -
- - - - - fn:filter(item()*, function(item()) -
- Filters a sequence of items based on a given predicate function
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
item()*The input sequence of items
function(item())The predicate function used to filter the items
item()*The resulting sequence after applying the predicate function
- Examples:
- - - - - - - - - -
ExpressionResult
filter((1, 2, 3, 4), function($x) { $x mod 2 = 0 })Returns a new sequence containing only the even numbers from the input - sequence: (2, 4)

- W3C Documentation reference: filter -
- - - fn:for-each(item()*, function(item())) -
- Applies a specified function to each item in a sequence, returning a new - sequence
- Arguments and return type: - - - - - - - - - - - - - - - - - -
TypeDescription
item()*The input sequence of items
function(item())The function to apply to each item in the sequence
item()*The new sequence created by applying the function to each item in the - input sequence
- Examples:
- - - - - - - - - -
ExpressionResult
for-each((1, 2, 3, 4), function($x) { $x * 2 })Returns a new sequence with the result of doubling each number in the - input sequence: (2, 4, 6, 8)

- W3C Documentation reference: for-each -
- -
-
-
- -
- - -
- - - - - - \ No newline at end of file diff --git a/Frontend/tools/xquery.html b/Frontend/tools/xquery.html deleted file mode 100644 index 682f04b..0000000 --- a/Frontend/tools/xquery.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - -
-
-
-
-

Online XQuery Interpreter

-
-
-
- - - - -
-
- - - -
-
- - Supports XQuery up to 4.0
-
- - -
-
- -
- -
- -
-
-
-
- -
- - -
- -
-
-
-

What is XQuery?

-

XQuery (XML Query) is a query and functional programming language that queries and transforms collections of structured and unstructured data, usually in the form of XML, text and with vendor-specific extensions for other data formats (JSON, binary, etc.).

-

Source: Wikipedia

-
- - -
- - - - - - - - \ No newline at end of file diff --git a/Frontend/tools/xsd.html b/Frontend/tools/xsd.html deleted file mode 100644 index 52e559a..0000000 --- a/Frontend/tools/xsd.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - -
-
-
-
-

Online XSD tester

-
-
-
- - - -
-
- - - -
-
- - - - -
-
- - -
-
- -
- - -
- -
-
-
-

What is XSD?

-

XSD is a W3C recomedation that specifies how to describe the elements in XML document

-

XSD specifies data types, order and arity of elements in XML file.
- Main components of XSD file are:
- - Element declaration - declares properties of elements (names and namespaces)
- - Attribute declarations - declares properties of attributes
- - Simple and complex types:
- - - XSD provides 19 simple data types
- - - More complex types are declared using simple types and relationships
-

-
- - - -
- - - - \ No newline at end of file diff --git a/Frontend/tools/xslt.html b/Frontend/tools/xslt.html deleted file mode 100644 index e5dd2f0..0000000 --- a/Frontend/tools/xslt.html +++ /dev/null @@ -1,1153 +0,0 @@ - - - - - - - - - - - - - - - - - - - -
-
-
-
-

Online XSLT tester

-
-
-
- - - -
-
- - - -
-
- - procInfo
-
- - -
-
- -
- -
- -
-
-
-
- -
- - -
- -
-
-
-

What is XSLT?

-

XSLT is a language for transforming XML documents into other documents such as XML, HTML and many - other.

- -
- -
-

XSLT 2.0 introduced a host of new features:
- - Strong typing and all XSD types
- - The ability to define and write own functions
- - node-set() - replaces XSLT's 1.0 Result Tree Fragment, creating fully functional tree
- - New functions and operators:
- - - XPath 2.0
- - - String processing and regular expressions
- - - Grouping (for-each-group function) - - - String processing
- - - Sequence type
-

-

XSLT 3.0 further improved the formula:
- - Streaming tranformations (previously file had to be loaded to memory to be processed)
- - Packages - improve the modularity of large stylesheets
- - Improved error handling (for example <xsl:try>)
- - Support for maps and arrays, enabling XSLT to handle JSON as well as XML
- - Functions can now be arguments to other (higher-order) functions -

-
-
- -

XSLT 1.0, 2.0 & 3.0 functions

- - - -
- -
- - - [1.0] xsl:template -
-
- defines a set of rules to be applied to specified node.
-
- W3C Documentation reference: Defining-Template-Rules -
-
- - - - [1.0] xsl:apply-templates -
-
- applies a template rule to the current element or to element's child nodes.
-
- W3C Documentation reference: Applying-Template-Rules -
-
- - - - [1.0] xsl:apply-imports -
-
- Applies a template rule from an imported style sheet
-
- W3C Documentation reference: #apply-imports -
-
- - - - [1.0] xsl:apply-templates -
-
- Applies a template rule to the current element or to the current element's child nodes -
-
- W3C Documentation reference: Applying-Template-Rules -
-
- - - - [1.0] xsl:call-template -
-
- Calls a named template
-
- W3C Documentation reference: #named-templates -
-
- - - - [2.0] xsl:next-match -
-
- overrides another template rule (considers all other template rules of lower import - precedence/priority)
-
- W3C Documentation reference: #element-next-match -
-
-
- - - [3.0] xsl:mode -
-
- Allows properties of a mode to be defined
-
- W3C Documentation reference: #element-mode -
-
-
- - - [3.0] xsl:override -
-
- Allows using package to override selected components from a used package
-
- W3C Documentation reference: #element-override -
-
-
- - - [3.0] xsl:package -
-
- Defines a set of stylesheet modules that can be compiled as a unit
-
- W3C Documentation reference: #element-package -
-
-
- - - [3.0] xsl:accept -
-
- Allows a package to restrict the visibility of components exposed by a package
-
- W3C Documentation reference: #element-accept -
-
-
- - - [3.0] xsl:global-context-item -
-
- Declares whether a global context item is required, and if so, to declare its - required type
-
- W3C Documentation reference: #element-global-context-item -
-
-
- - -
-
-
- -
- - - [1.0] xsl:for-each -
-
- Loops through each node in a specified node set
-
- W3C Documentation reference: #for-each -
-
- - - - [1.0] xsl:if -
-
- Contains a template that will be applied only if a specified condition is true
-
- W3C Documentation reference: Conditional-Processing -
-
- - - - [1.0] xsl:choose -
-
- Used in conjunction with <
-
- W3C Documentation reference: Conditional-Processing-with-xsl:choose -
-
- - - - [1.0] xsl:when -
-
- Specifies an action for the <
-
- W3C Documentation reference: Conditional-Processing-with-xsl:choose -
-
- - - - [1.0] xsl:otherwise -
-
- Specifies a default action for the <
-
- W3C Documentation reference: Conditional-Processing-with-xsl:choose -
-
- - - - [2.0] xsl:for-each-group -
-
- Groups elements and performs operations once for each group
-
- W3C Documentation reference: #element-for-each-group -
-
-
- - - [3.0] xsl:iterate -
-
- Used to iterate over a sequence, with the option to set parameters for use in the - next iteration
-
- W3C Documentation reference: #element-iterate -
-
-
- - - [3.0] xsl:break -
-
- Causes premature completion before the entire input sequence has been processed
-
- W3C Documentation reference: #element-break -
-
-
- - - [3.0] xsl:next-iteration -
-
- The contents are a set of xsl:with-param elements defining the values of the - iteration parameters to be used on the next iteration
-
- W3C Documentation reference: #element-next-iteration -
-
-
- - - [3.0] xsl:on-completion -
-
- Defines processing to be carried out when the input sequence is exhausted
-
- W3C Documentation reference: #element-on-completion -
-
-
- - - [3.0] xsl:fork -
-
- The result of the xsl:fork instruction is the sequence formed by concatenating the - results of evaluating each of its contained instructions, in order
-
- W3C Documentation reference: #element-fork -
-
-
- - - [3.0] xsl:on-empty -
-
- Outputs the enclosed content only if the containing sequence generates no "ordinary" - content
-
- W3C Documentation reference: #element-on-empty -
-
-
- - - [3.0] xsl:on-non-empty -
-
- Outputs the enclosed content only if the containing sequence also generates - "ordinary" content
-
- W3C Documentation reference: #element-on-non-empty -
-
-
- - - [3.0] xsl:try -
-
- Allows recovery from dynamic errors occurring within the expression it wraps
-
- W3C Documentation reference: #element-try -
-
-
- - - [3.0] xsl:catch -
-
- http://www.w3.org/TR/xslt-30/#element-catchIn conjunction with xsl:try, handles - dynamic errors
-
- W3C Documentation reference: #element-catchIn conjunction with xsl:try, handles dynamic errors -
-
-
- - - [3.0] xsl:context-item -
-
- Used to declare the initial context item for a template
-
- W3C Documentation reference: #element-context-item -
-
-
- - -
-
-
- -
- - - [1.0] xsl:attribute -
-
- Adds an attribute
-
- W3C Documentation reference: #creating-attributes -
-
- - - - [1.0] xsl:attribute-set -
-
- Defines a named set of attributes
-
- W3C Documentation reference: #attribute-sets -
-
- - - - [1.0] xsl:copy -
-
- Creates a copy of the current node (without child nodes and attributes)
-
- W3C Documentation reference: #copying -
-
- - - - [1.0] xsl:number -
-
- Determines the integer position of the current node and formats a number
-
- W3C Documentation reference: #number -
-
- - - - [1.0] xsl:value-of -
-
- Extracts the value of a selected node
-
- W3C Documentation reference: #value-of -
-
- - - - [1.0] xsl:text -
-
- Writes literal text to the output
-
- W3C Documentation reference: Creating-Text -
-
- - - - [1.0] xsl:comment -
-
- Creates a comment node in the result tree
-
- W3C Documentation reference: Creating-Comments -
-
- - - - [1.0] xsl:processing-instruction -
-
- Writes a processing instruction to the output
-
- W3C Documentation reference: Creating-Processing-Instructions -
-
- - - - [1.0] xsl:key -
-
- Declares a named key that can be used in the style sheet with the key() function
-
- W3C Documentation reference: #key -
-
- - - - [1.0] xsl:decimal-format -
-
- Defines the characters and symbols to be used when converting numbers into strings, with - the format-number() function
-
- W3C Documentation reference: #format-number -
-
- - - - [1.0] xsl:preserve-space -
-
- Defines the elements for which white space should be preserved
-
- W3C Documentation reference: #strip -
-
- - - - [1.0] xsl:strip-space -
-
- Defines the elements for which white space should be removed
-
- W3C Documentation reference: #strip -
-
- - - - [1.0] xsl:sort -
-
- Sorts the output
-
- W3C Documentation reference: #sorting -
-
- - - - [1.0] xsl:output -
-
- Defines the format of the output document
-
- W3C Documentation reference: #output -
-
- - - - [2.0] xsl:for-each-group -
-
- Sorts given sequence
-
- W3C Documentation reference: #element-perform-sort -
-
-
- - - [2.0] xsl:result-document -
-
- Creates a final result tree
-
- W3C Documentation reference: #element-result-document -
-
-
- - - [2.0] xsl:character-map -
-
- Allows a specific character appearing in the final result tree to be substituted by - a specified string of characters
-
- W3C Documentation reference: #element-character-map -
-
-
- - - [2.0] xsl:output-character -
-
- Defines characters and their replacements to be used by character-map
-
- W3C Documentation reference: #element-character-map -
-
-
- - - [3.0] xsl:merge -
-
- Merges two or more pre-sorted input files
-
- W3C Documentation reference: #element-merge -
-
-
- - - [3.0] xsl:merge-action -
-
- Defines action to be carried out on each merged group
-
- W3C Documentation reference: #element-merge-action -
-
-
- - - [3.0] xsl:merge-key -
-
- Used to define the merge keys on which the input sequences are sorted
-
- W3C Documentation reference: #element-merge-key -
-
-
- - - [3.0] xsl:merge-source -
-
- Describes the input source for an xsl:merge instruction
-
- W3C Documentation reference: #element-merge-source -
-
-
- - -
-
-
- -
- - - [1.0] xsl:stylesheet -
-
- Defines the root element of a style sheet
-
- W3C Documentation reference: #stylesheet-element -
-
- - - - [1.0] xsl:transform -
-
- Defines the root element of a style sheet
-
- W3C Documentation reference: #stylesheet-element -
-
- - - - [1.0] xsl:import -
-
- Imports the contents of one style sheet into another. Note: An imported style sheet has - lower precedence than the importing style sheet
-
- W3C Documentation reference: #import -
-
- - - - [1.0] xsl:include -
-
- Includes the contents of one style sheet into another. Note: An included style sheet has - the same precedence as the including style sheet
-
- W3C Documentation reference: #include -
-
- - - - [1.0] xsl:namespace-alias -
-
- Replaces a namespace in the style sheet to a different namespace in the output
-
- W3C Documentation reference: #literal-result-element -
-
- - - - [1.0] xsl:element -
-
- Creates an element node in the output document
-
- W3C Documentation reference: Creating-Elements-with-xsl:element -
-
- - - -
-
-
- -
- - - [1.0] xsl:param -
-
- Declares a local or global parameter
-
- W3C Documentation reference: #variables -
-
- - - - [1.0] xsl:variable -
-
- Declares a local or global variable
-
- W3C Documentation reference: #variables -
-
- - - - [1.0] xsl:with-param -
-
- Defines the value of a parameter to be passed into a template
-
- W3C Documentation reference: Passing-Parameters-to-Templates -
-
- - - - [1.0] xsl:copy-of -
-
- Creates a copy of the current node (with child nodes and attributes)
-
- W3C Documentation reference: #copy-of -
-
- - - - [2.0] xsl:document -
-
- Creates a new document node
-
- W3C Documentation reference: #element-document -
-
-
- - - [2.0] xsl:namespace -
-
- Creates a namespace node
-
- W3C Documentation reference: #element-namespace -
-
-
- - - [2.0] xsl:namespace-alias -
-
- Declares that a literal namespace URI is being used as an alias for a target - namespace URI
-
- W3C Documentation reference: #element-namespace-alias -
-
-
- - - [2.0] xsl:sequence -
-
- Constructs a sequence of nodes and/or atomic values
-
- W3C Documentation reference: #element-sequence -
-
-
- - -
-
- -
- -
- - - [2.0] xsl:analyze-string -
-
- Identifies substrings that match given regex
-
- W3C Documentation reference: #element-analyze-string -
-
-
- - - [2.0] xsl:matching-substring -
-
- Used in conjunction with analize-string, returns matching substrings
-
- W3C Documentation reference: #element-analyze-string -
-
-
- - - [2.0] xsl:non-matching-substring -
-
- Used in conjunction with analize-string, returns substrings that didn't match the regex
-
- W3C Documentation reference: #element-analyze-string -
-
-
- - -
-
- -
- -
- - - [2.0] xsl:function -
-
- Declares a function that can be called from any XPath expression in the stylesheet
-
- W3C Documentation reference: #element-function -
-
-
- - - [3.0] xsl:evaluate -
-
- Allows dynamic evaluation of XPath expressions from a string
-
- W3C Documentation reference: #element-evaluate -
-
-
- - - [3.0] xsl:assert -
-
- Asserts a XPath expression, optionally throwing a dynamic error
-
- W3C Documentation reference: #element-assert -
-
-
- - -
-
-
- -
- - - [1.0] xsl:message -
-
- Writes a message to the output (used to report errors)
-
- W3C Documentation reference: #message -
-
- - - - [1.0] xsl:fallback -
-
- Specifies an alternate code to run if the processor does not support an XSLT element
-
- W3C Documentation reference: #fallback -
-
- - - - [3.0] xsl:map -
-
- Used to construct a new map
-
- W3C Documentation reference: #element-map -
-
-
- - - [3.0] xsl:map-entry -
-
- Used to construct a singleton map (one key and one value)
-
- W3C Documentation reference: #element-map-entry -
-
-
- - - [3.0] xsl:expose -
-
- Used to modify the visibility of selected components within a package
-
- W3C Documentation reference: #element-expose -
-
-
- - - [3.0] xsl:accumulator -
-
- Defines a rule that is to be applied while the document is being sequentially processed
-
- W3C Documentation reference: #element-accumulator -
-
-
- - - [3.0] xsl:accumulator-rule -
-
- Defines a rule for an xsl:accumulator
-
- W3C Documentation reference: #element-accumulator-rule -
-
-
- - - [3.0] xsl:source-document -
-
- Initiates streamed or unstreamed processing of a source document
-
- W3C Documentation reference: #element-source-document -
-
-
- - - [3.0] xsl:use-package -
-
- http://www.w3.org/TR/xslt-30/#element-use-package
-
- W3C Documentation reference: #element-use-package -
-
-
- - - [3.0] xsl:where-populated -
-
- Allows conditional content construction to be made streamable
-
- W3C Documentation reference: #element-where-populated -
-
-
- - - [3.0] xsl:accept -
-
- Allows a package to restrict the visibility of components exposed by a package that it uses
-
- W3C Documentation reference: #element-accept -
-
-
-
- - -
- -
- -
- - - - \ No newline at end of file diff --git a/Frontend/tsconfig.app.json b/Frontend/tsconfig.app.json new file mode 100644 index 0000000..3e5b621 --- /dev/null +++ b/Frontend/tsconfig.app.json @@ -0,0 +1,12 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/Frontend/tsconfig.json b/Frontend/tsconfig.json new file mode 100644 index 0000000..54b6bd3 --- /dev/null +++ b/Frontend/tsconfig.json @@ -0,0 +1,27 @@ +{ + "extends": "@vue/tsconfig/tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"], + "@components/*":["./src/components/*"], + "@views/*":["./src/views/*"], + } + }, + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + } + ], + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.vue", + "tests/**/*.ts", + "tests/**/*.tsx" + ], + "exclude": ["node_modules"], +} diff --git a/Frontend/tsconfig.node.json b/Frontend/tsconfig.node.json new file mode 100644 index 0000000..bb67dfc --- /dev/null +++ b/Frontend/tsconfig.node.json @@ -0,0 +1,15 @@ +{ + "extends": "@tsconfig/node18/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true, + "module": "ESNext", + "types": ["node"] + } +} diff --git a/Frontend/vite.config.ts b/Frontend/vite.config.ts new file mode 100644 index 0000000..b9e82c0 --- /dev/null +++ b/Frontend/vite.config.ts @@ -0,0 +1,18 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + '@components': fileURLToPath(new URL('./src/components', import.meta.url)), + '@views': fileURLToPath(new URL('./src/views', import.meta.url)), + } + } +}) diff --git a/Samples/xsd/sample.xsd b/Samples/xsd/sample.xsd new file mode 100644 index 0000000..2ea41fb --- /dev/null +++ b/Samples/xsd/sample.xsd @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file