diff --git a/distrib/idea/IDEAPlugin-3.7.0.zip b/distrib/idea/IDEAPlugin-3.9.0.zip similarity index 91% rename from distrib/idea/IDEAPlugin-3.7.0.zip rename to distrib/idea/IDEAPlugin-3.9.0.zip index 64fd3a32..0ef37098 100644 Binary files a/distrib/idea/IDEAPlugin-3.7.0.zip and b/distrib/idea/IDEAPlugin-3.9.0.zip differ diff --git a/distrib/vscode/dochub-0.0.21.vsix b/distrib/vscode/dochub-0.0.21.vsix deleted file mode 100644 index 28ed27f1..00000000 Binary files a/distrib/vscode/dochub-0.0.21.vsix and /dev/null differ diff --git a/distrib/vscode/dochub-0.0.23.vsix b/distrib/vscode/dochub-0.0.23.vsix deleted file mode 100644 index 99b51901..00000000 Binary files a/distrib/vscode/dochub-0.0.23.vsix and /dev/null differ diff --git a/distrib/vscode/dochub-0.0.24.vsix b/distrib/vscode/dochub-0.0.24.vsix deleted file mode 100644 index 6f2c45ef..00000000 Binary files a/distrib/vscode/dochub-0.0.24.vsix and /dev/null differ diff --git a/distrib/vscode/dochub-0.0.25.vsix b/distrib/vscode/dochub-0.0.25.vsix deleted file mode 100644 index 4de8f8a0..00000000 Binary files a/distrib/vscode/dochub-0.0.25.vsix and /dev/null differ diff --git a/distrib/vscode/dochub-0.0.27.vsix b/distrib/vscode/dochub-0.1.0.vsix similarity index 80% rename from distrib/vscode/dochub-0.0.27.vsix rename to distrib/vscode/dochub-0.1.0.vsix index 679f2ecb..d3a1e4aa 100644 Binary files a/distrib/vscode/dochub-0.0.27.vsix and b/distrib/vscode/dochub-0.1.0.vsix differ diff --git a/example.env b/example.env index 3493186f..9eca02f6 100644 --- a/example.env +++ b/example.env @@ -30,14 +30,23 @@ # # file://root.yaml - (FB) Прямая ссылка на файл в хранилище VUE_APP_DOCHUB_BACKEND_FILE_STORAGE. # Если VUE_APP_DOCHUB_BACKEND_FILE_STORAGE не задан, то ./public/* +# bitbucket:myproject:myrepo:mybranch@dochub.yaml Прямая ссылка на на файл в BitBucket репозитории. +# (F/FB) Может использоваться только при указании VUE_APP_DOCHUB_PERSONAL_TOKEN # (F / FB) Идентификатор документа главной страницы (необязательно). По умолчанию dochub_welcome # VUE_APP_DOCHUB_ROOT_DOCUMENT=dochub_welcome # (F / FB) URL GitLab (необязательно) # VUE_APP_DOCHUB_GITLAB_URL=https://foo.space +# с base url слеш на конце обязателен +# VUE_APP_DOCHUB_GITLAB_URL=https://foo.space/baseurl/ -# (F / FB) Персональный токен gitlab. Используется для развертывания в backend режиме и для локальной разработки (npm run serve) +# (F / FB) URL BitBucket (необязательно) +# VUE_APP_DOCHUB_BITBUCKET_URL=https://foo.space +# с base url слеш на конце обязателен +# VUE_APP_DOCHUB_BITBUCKET_URL=https://foo.space/baseurl/ + +# (F / FB) Персональный токен gitlab/bitbucket. Используется для развертывания в backend режиме и для локальной разработки (npm run serve) # VUE_APP_DOCHUB_PERSONAL_TOKEN=9H...FR # (FB) Secret для доступа к перезагрузке данных архитектуры @@ -55,6 +64,11 @@ # При сборке через docker-compose по умолчанию localhost:8079/svg/ # VUE_APP_PLANTUML_SERVER=localhost:8079/svg/ +# (F / FB) Метод запроса к серверу рендеринга PlantUML (По умолчанию GET) +# POST - в теле запрос в формате plantuml как есть +# POST_COMPRESSED - аналогично GET сжат zopfli, но не перекодирован в base64 +# VUE_APP_PLANTUML_REQUEST_TYPE= GET | POST | POST_COMPRESSED + # (P) Если "plugin" сборка осуществляется для использования в IDEA плагине https://github.com/RabotaRu/DocHubIdeaPlugin # Для production сборки используйте npm run plugin. # Данный параметр удобен для разработки в режиме плагина, т.к. подключает моки $PAPI. diff --git a/package-lock.json b/package-lock.json index d5a0c6eb..d0aca8e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,10 +21,9 @@ "dateformat": "3.0.3", "jsonata": "2.0.3", "md5": "2.3.0", - "mermaid": "9.3.0", + "mermaid": "10.6.1", "monaco-editor": "0.34.1", "mustache": "4.2.0", - "object-hash": "^3.0.0", "semver": "7.5.4", "swagger-ui": "3.52.5", "uuid": "8.3.2", @@ -67,6 +66,7 @@ "jest-environment-jsdom": "29.4.1", "jest-test-gen": "1.4.3", "nodemon": "2.0.20", + "object-hash": "3.0.0", "postcss-loader": "2.1.6", "raw-loader": "4.0.2", "redis": "4.6.10", @@ -4931,6 +4931,32 @@ "@types/node": "*" } }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==" + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/dompurify": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-2.4.0.tgz", @@ -5107,6 +5133,14 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, + "node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dependencies": { + "@types/unist": "^2" + } + }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -5125,6 +5159,11 @@ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, "node_modules/@types/node": { "version": "18.16.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", @@ -10143,6 +10182,41 @@ "node": ">=12" } }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, "node_modules/d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", @@ -10253,11 +10327,11 @@ } }, "node_modules/dagre-d3-es": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.6.tgz", - "integrity": "sha512-CaaE/nZh205ix+Up4xsnlGmpog5GGm81Upi2+/SBHxwNwrccBb3K51LzjZ1U6hgvOlAEUsVWf1xSTzCyKpJ6+Q==", + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", + "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", "dependencies": { - "d3": "^7.7.0", + "d3": "^7.8.2", "lodash-es": "^4.17.21" } }, @@ -10303,6 +10377,11 @@ "node": "*" } }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, "node_modules/de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -10348,6 +10427,27 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decode-named-character-reference/node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", @@ -10565,6 +10665,14 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -10882,6 +10990,11 @@ "integrity": "sha512-XKGdI4pWM78eLH2cbXJHiBnWUwFSzZM7XujsB6stDiGu9AeSqziedP6amNLpJzE3i0rLTcfAwdCTs5ecP5yeSg==", "dev": true }, + "node_modules/elkjs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", + "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==" + }, "node_modules/emitter-component": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", @@ -18471,6 +18584,41 @@ "is-buffer": "~1.1.6" } }, + "node_modules/mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", @@ -18789,26 +18937,36 @@ } }, "node_modules/mermaid": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.3.0.tgz", - "integrity": "sha512-mGl0BM19TD/HbU/LmlaZbjBi//tojelg8P/mxD6pPZTAYaI+VawcyBdqRsoUHSc7j71PrMdJ3HBadoQNdvP5cg==", + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.6.1.tgz", + "integrity": "sha512-Hky0/RpOw/1il9X8AvzOEChfJtVvmXm+y7JML5C//ePYMy0/9jCEmW1E1g86x9oDfW9+iVEdTV/i+M6KWRNs4A==", "dependencies": { - "@braintree/sanitize-url": "^6.0.0", - "d3": "^7.0.0", - "dagre-d3-es": "7.0.6", - "dompurify": "2.4.1", + "@braintree/sanitize-url": "^6.0.1", + "@types/d3-scale": "^4.0.3", + "@types/d3-scale-chromatic": "^3.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", + "d3": "^7.4.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.10", + "dayjs": "^1.11.7", + "dompurify": "^3.0.5", + "elkjs": "^0.8.2", "khroma": "^2.0.0", "lodash-es": "^4.17.21", - "moment-mini": "^2.24.0", + "mdast-util-from-markdown": "^1.3.0", "non-layered-tidy-tree-layout": "^2.0.2", - "stylis": "^4.1.2", - "uuid": "^9.0.0" + "stylis": "^4.1.3", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" } }, "node_modules/mermaid/node_modules/dompurify": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.1.tgz", - "integrity": "sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA==" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", + "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" }, "node_modules/mermaid/node_modules/uuid": { "version": "9.0.0", @@ -18827,6 +18985,427 @@ "node": ">= 0.6" } }, + "node_modules/micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -19145,16 +19724,19 @@ "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==", "dev": true }, - "node_modules/moment-mini": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.29.4.tgz", - "integrity": "sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg==" - }, "node_modules/monaco-editor": { "version": "0.34.1", "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz", "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==" }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, "node_modules/mrmime": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", @@ -20196,6 +20778,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, "engines": { "node": ">= 6" } @@ -23575,6 +24158,17 @@ "tslib": "^2.1.0" } }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/safe-array-concat": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", @@ -26386,6 +26980,14 @@ "utf8-byte-length": "^1.0.1" } }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "engines": { + "node": ">=6.10" + } + }, "node_modules/ts-easing": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz", @@ -27000,6 +27602,18 @@ "node": ">=4" } }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", @@ -27368,6 +27982,39 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uvu/node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/uvu/node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -27989,6 +28636,11 @@ "integrity": "sha512-flC9JJmTII9uAeeYpWF8hxDJ7bfY+leldQryetll8Nv4WgI+MXc6h7TiyAZASWl9uC9TvmfdgOjZn1DAQecb3A==", "optional": true }, + "node_modules/web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + }, "node_modules/webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -34216,6 +34868,32 @@ "@types/node": "*" } }, + "@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "requires": { + "@types/d3-time": "*" + } + }, + "@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==" + }, + "@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "requires": { + "@types/ms": "*" + } + }, "@types/dompurify": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-2.4.0.tgz", @@ -34385,6 +35063,14 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, + "@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "requires": { + "@types/unist": "^2" + } + }, "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -34403,6 +35089,11 @@ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, + "@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, "@types/node": { "version": "18.16.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", @@ -38044,7 +38735,7 @@ "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "requires": { - "es5-ext": "^0.10.50", + "es5-ext": "0.10.53", "type": "^1.0.1" }, "dependencies": { @@ -38249,6 +38940,43 @@ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" }, + "d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "requires": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + }, + "dependencies": { + "d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "requires": { + "internmap": "^1.0.0" + } + }, + "d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "requires": { + "d3-path": "1" + } + }, + "internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + } + } + }, "d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", @@ -38329,11 +39057,11 @@ } }, "dagre-d3-es": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.6.tgz", - "integrity": "sha512-CaaE/nZh205ix+Up4xsnlGmpog5GGm81Upi2+/SBHxwNwrccBb3K51LzjZ1U6hgvOlAEUsVWf1xSTzCyKpJ6+Q==", + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", + "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", "requires": { - "d3": "^7.7.0", + "d3": "^7.8.2", "lodash-es": "^4.17.21" } }, @@ -38367,6 +39095,11 @@ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" }, + "dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -38398,6 +39131,21 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, + "decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "requires": { + "character-entities": "^2.0.0" + }, + "dependencies": { + "character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" + } + } + }, "decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", @@ -38559,6 +39307,11 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" + }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -38808,6 +39561,11 @@ "integrity": "sha512-XKGdI4pWM78eLH2cbXJHiBnWUwFSzZM7XujsB6stDiGu9AeSqziedP6amNLpJzE3i0rLTcfAwdCTs5ecP5yeSg==", "dev": true }, + "elkjs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", + "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==" + }, "emitter-component": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", @@ -39025,7 +39783,7 @@ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "requires": { "d": "1", - "es5-ext": "^0.10.35", + "es5-ext": "0.10.53", "es6-symbol": "^3.1.1" }, "dependencies": { @@ -39061,7 +39819,7 @@ "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "requires": { "d": "1", - "es5-ext": "^0.10.46", + "es5-ext": "0.10.53", "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.1" }, @@ -39528,7 +40286,7 @@ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "requires": { "d": "1", - "es5-ext": "~0.10.14" + "es5-ext": "0.10.53" }, "dependencies": { "es5-ext": { @@ -44439,7 +45197,7 @@ "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", "requires": { - "es5-ext": "~0.10.2" + "es5-ext": "0.10.53" }, "dependencies": { "es5-ext": { @@ -44663,6 +45421,33 @@ "is-buffer": "~1.1.6" } }, + "mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + } + }, + "mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "requires": { + "@types/mdast": "^3.0.0" + } + }, "mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", @@ -44763,7 +45548,7 @@ "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", "requires": { "d": "^1.0.1", - "es5-ext": "^0.10.53", + "es5-ext": "0.10.53", "es6-weak-map": "^2.0.3", "event-emitter": "^0.3.5", "is-promise": "^2.2.2", @@ -44937,26 +45722,36 @@ "dev": true }, "mermaid": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.3.0.tgz", - "integrity": "sha512-mGl0BM19TD/HbU/LmlaZbjBi//tojelg8P/mxD6pPZTAYaI+VawcyBdqRsoUHSc7j71PrMdJ3HBadoQNdvP5cg==", + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.6.1.tgz", + "integrity": "sha512-Hky0/RpOw/1il9X8AvzOEChfJtVvmXm+y7JML5C//ePYMy0/9jCEmW1E1g86x9oDfW9+iVEdTV/i+M6KWRNs4A==", "requires": { - "@braintree/sanitize-url": "^6.0.0", - "d3": "^7.0.0", - "dagre-d3-es": "7.0.6", - "dompurify": "2.4.1", + "@braintree/sanitize-url": "^6.0.1", + "@types/d3-scale": "^4.0.3", + "@types/d3-scale-chromatic": "^3.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", + "d3": "^7.4.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.10", + "dayjs": "^1.11.7", + "dompurify": "^3.0.5", + "elkjs": "^0.8.2", "khroma": "^2.0.0", "lodash-es": "^4.17.21", - "moment-mini": "^2.24.0", + "mdast-util-from-markdown": "^1.3.0", "non-layered-tidy-tree-layout": "^2.0.2", - "stylis": "^4.1.2", - "uuid": "^9.0.0" + "stylis": "^4.1.3", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" }, "dependencies": { "dompurify": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.1.tgz", - "integrity": "sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA==" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", + "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" }, "uuid": { "version": "9.0.0", @@ -44971,6 +45766,217 @@ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, + "micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "requires": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "requires": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==" + }, + "micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==" + }, + "micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "requires": { + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==" + }, + "micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==" + }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -45212,16 +46218,16 @@ "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==", "dev": true }, - "moment-mini": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.29.4.tgz", - "integrity": "sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg==" - }, "monaco-editor": { "version": "0.34.1", "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz", "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==" }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + }, "mrmime": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", @@ -46037,7 +47043,8 @@ "object-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true }, "object-inspect": { "version": "1.12.3", @@ -48551,6 +49558,14 @@ "tslib": "^2.1.0" } }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "requires": { + "mri": "^1.1.0" + } + }, "safe-array-concat": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", @@ -50576,7 +51591,7 @@ "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", "requires": { - "es5-ext": "~0.10.46", + "es5-ext": "0.10.53", "next-tick": "1" }, "dependencies": { @@ -50789,6 +51804,11 @@ "utf8-byte-length": "^1.0.1" } }, + "ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==" + }, "ts-easing": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz", @@ -51231,6 +52251,14 @@ "crypto-random-string": "^1.0.0" } }, + "unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "requires": { + "@types/unist": "^2.0.0" + } + }, "universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", @@ -51516,6 +52544,29 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, + "uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "requires": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "dependencies": { + "diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==" + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" + } + } + }, "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -52020,6 +53071,11 @@ "integrity": "sha512-flC9JJmTII9uAeeYpWF8hxDJ7bfY+leldQryetll8Nv4WgI+MXc6h7TiyAZASWl9uC9TvmfdgOjZn1DAQecb3A==", "optional": true }, + "web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + }, "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", diff --git a/package.json b/package.json index 7999f7a7..220d8c19 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "dateformat": "3.0.3", "jsonata": "2.0.3", "md5": "2.3.0", - "mermaid": "9.3.0", + "mermaid": "10.6.1", "monaco-editor": "0.34.1", "mustache": "4.2.0", "semver": "7.5.4", diff --git a/public/documentation/docs/manual/docs/examples/sa-gravity.yaml b/public/documentation/docs/manual/docs/examples/sa-gravity.yaml new file mode 100644 index 00000000..34a38ab7 --- /dev/null +++ b/public/documentation/docs/manual/docs/examples/sa-gravity.yaml @@ -0,0 +1,84 @@ +config: + distance: 80 + trackWidth: 18 + grid: + - row: + - col: app + - col: user + - row: + - col: default + +nodes: + # Первый уровень + third-level.second-level.first-level: + title: 1-ый уровень + tag: default + third-level.second-level.first-level.user: + title: Пользователь + symbol: user + third-level.second-level.first-level.application: + title: AndroidApp + symbol: system + tag: app + + # Второй уровень + third-level.second-level: + title: 2-ой уровень + tag: user + third-level.second-level.developer: + title: Разработчик + symbol: user + third-level.second-level.tester: + title: Тестировщик + symbol: user + + # Третий уровень + third-level: + title: 3-ий уровень + tag: user + third-level.arch: + title: Архитектор + symbol: user + tag: user + third-level.manager: + title: Менеджер + symbol: user + tag: user + + # Внешняя среда + outside: + title: Внешняя среда + tag: user + outside.customer: + title: Заказчик + symbol: user + tag: user +links: + # Внешняя среда + - from: outside + to: third-level + style: "<->" + - from: outside.customer + to: third-level.manager + style: "<->" + - from: third-level.arch + to: third-level.manager + style: "<->" + - from: third-level.arch + to: third-level.second-level.developer + style: "<->" + - from: third-level.second-level.tester + to: third-level.second-level.developer + style: "<->" + - from: outside + to: third-level.second-level.first-level + style: "<->" + - from: third-level.second-level.first-level.user + to: third-level.second-level.first-level.application + style: "<->" + - from: third-level.second-level.first-level.application + to: outside.customer + style: "->" + - from: third-level.second-level + to: outside.customer + style: "<->" diff --git a/public/documentation/docs/manual/docs/root.yaml b/public/documentation/docs/manual/docs/root.yaml index 27ed2b3c..af94ea02 100644 --- a/public/documentation/docs/manual/docs/root.yaml +++ b/public/documentation/docs/manual/docs/root.yaml @@ -231,20 +231,27 @@ docs: autor: R.Piontik type: smartants source: examples/sa-group.yaml + dochub.smartants.examples.gravity: + location: DocHub/Руководство/Документы/SmartAnts/05 Gravity points + description: Размещение объектов объединенных в группы + autor: R.Piontik + type: smartants + source: examples/sa-gravity.yaml + dochub.smartants.examples.anim: - location: DocHub/Руководство/Документы/SmartAnts/05 Анимация + location: DocHub/Руководство/Документы/SmartAnts/06 Анимация description: Анимированная диаграмма SmartAnts autor: R.Piontik type: smartants source: examples/sa-anim.yaml dochub.smartants.examples.custom-symbol: - location: DocHub/Руководство/Документы/SmartAnts/06 Собственные символы + location: DocHub/Руководство/Документы/SmartAnts/07 Собственные символы description: Кастомные символы SmartAnts autor: R.Piontik type: smartants source: examples/sa-symbol.yaml dochub.smartants.examples.simple-query: - location: DocHub/Руководство/Документы/SmartAnts/07 Простой запрос к данным + location: DocHub/Руководство/Документы/SmartAnts/08 Простой запрос к данным description: Простой запрос к данным в SmartAnts autor: R.Piontik type: smartants @@ -272,7 +279,7 @@ docs: } ) dochub.smartants.examples.complex-query: - location: DocHub/Руководство/Документы/SmartAnts/08 Сложный запрос к данным + location: DocHub/Руководство/Документы/SmartAnts/09 Сложный запрос к данным description: Сложный запрос к данным в SmartAnts autor: R.Piontik type: smartants diff --git a/public/documentation/docs/manual/docs/smartants.md b/public/documentation/docs/manual/docs/smartants.md index 50afce94..0bc406a7 100644 --- a/public/documentation/docs/manual/docs/smartants.md +++ b/public/documentation/docs/manual/docs/smartants.md @@ -203,6 +203,43 @@ config: Результат на примере сложной диаграммы: ![Результат на примере сложной диаграммы](@document/dochub.smartants.examples.complex.hidetitles) +## Управление сеткой расположения элементов + +По умолчанию элементы SmartAnts располагаются на холсте произвольно. +Благодаря конфигурации сетки и разметке элементов тегами можно управлять расположением объектов +Например: + +```yaml +... +config: + grid: + - row: + - col: app + - col: user + - row: + - col: default +... +nodes: + # Первый уровень + third-level.second-level.first-level: + title: 1-ый уровень + tag: default + third-level.second-level.first-level.user: + title: Пользователь + symbol: user + third-level.second-level.first-level.application: + title: AndroidApp + symbol: system + tag: app + + # Второй уровень + third-level.second-level: + title: 2-ой уровень + tag: user +... +``` +Получаем такую схему: +![Получаем такую схему](@document/dochub.smartants.examples.gravity) ## Анимированные сценарии diff --git a/public/metamodel/dochub/entities/aspects/base.yaml b/public/metamodel/dochub/entities/aspects/base.yaml index 41b788a9..158d2104 100644 --- a/public/metamodel/dochub/entities/aspects/base.yaml +++ b/public/metamodel/dochub/entities/aspects/base.yaml @@ -63,9 +63,11 @@ entities: "link": "/entities/aspects/tree", /* Ссылка на форму представления аспектов в виде дерева */ "location": $config.root_menu /* Расположение в меню */ }], - [$aspects.$spread().{ + [$aspects.$spread().( + *.location ? { "link": "/entities/aspects/blank?dh-aspect-id=" & $keys()[0], /* Формируем ссылку на карточку */ "location": $makeLocation($keys()[0]) /* Формируем расположение в меню */ - }][location] + } + )][location] )]; ) \ No newline at end of file diff --git a/src/assets/libs/smartants.js b/src/assets/libs/smartants.js index 0f1bcd44..35e0e557 100644 --- a/src/assets/libs/smartants.js +++ b/src/assets/libs/smartants.js @@ -1 +1 @@ -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('3 T={2k:"21-1k-20",1P:"25-28-1A",1J:"29-1n-1A",1W:"2b-2d-2e",1z:"1C-O"},2g=1Q,27=10,1Z=5;14 1w(t,e){B o=0,s=0;M(3 e 1k t)o+=e.w*e.h,s=g.W(s,e.w);3 r=[{x:0,y:0,w:g.W(g.2f(g.2c(o/.2a)),s,e||0),h:1/0,Q:[]}];B h=0,i=0,a=[];M(3 e 1k t)M(B t=r.D-1;t>=0;t--){3 o=r[t];9(!(e.w>o.w||e.h>o.h&&r.1e)){9(e.h>o.h&&!r.1e){3 s=e.h-o.h,h=o.y+o.h,i=o.y;r.j((e=>{e.y>=h?e.y+=s:e.y>=i&&e.y+e.h>=h?e.h+=s:t&&(r.1e=!0)}))}9(e.x=o.x,e.y=o.y,a.E(e),i=g.W(i,e.y+e.h),h=g.W(h,e.x+e.w),e.w===o.w&&e.h===o.h){3 e=r.1Y();tt)&&(6.7.x=t),(A===6.7.y||6.7.y>e)&&(6.7.y=e),(A===6.7.C||6.7.C=0&&t>=0&&e<=r&&t<=o},a=(t,e)=>!h[`${e}:${t}`],l=(t,e)=>h[`${e}:${t}`]||0,n=(t,e,o)=>h[`${e}:${t}`]=o;B u={};3 d=(t,e,o,s)=>e>=t.x-s&&e<=t.C+s&&o>=t.y-s&&o<=t.J+s,x=(e,o,s,r)=>{3 h=t.j[e].X;8 d(h,o,s,r)},c=(e,o,s,r)=>{3 h=t.j[e].X;8 o>=h.x-r&&o<=h.C+r&&s>h.y&&sh.x&&o=h.y-r&&s<=h.J+r},y=(e,o,s)=>{3 r=t.j[e].Y;8 d(r,o,s,0)},b=(e,o,s)=>{M(3 r 11 t.j){9(t.j[r].Y&&y(r,o,s))8!0;9(!(t.j[r].R.N||e.23(r)>=0)&&x(r,o,s,1))8!0}8!1},f=14(t){9(t.D<2)8[];3 e=[t[0]],o=t.D;B s=t[0].x,r=t[0].y;M(B h=1;h{B h=[],i=e.x,a=e.y;M(;i!==t.x||a!==t.y;){B u=-1,d=o*r;3 x=[{x:-1,y:0,v:l(i-1,a)},{x:0,y:-1,v:l(i,a-1)},{x:1,y:0,v:l(i+1,a)},{x:0,y:1,v:l(i,a+1)}].j(((e,o)=>{3 s=t.x===i+e.x&&t.y===a+e.y;8(s||e.v>0&&e.v{h={};3 o=t.j[e.U],r=t.j[e.V];9(!o||!r){9(6.H={1a:T.1W,1s:e,19:`Нетобъектовдлясвязи[${e.U}${e.1d}${e.V}]`},s)8 1m 18.H(6.H);1j 6.H}{3 h={F:e.U},d={F:e.V},x=5,c={x:g.G(o.K+x),w:g.G(o.q-2*x),y:g.G(o.L+x),h:g.G(o.k-2*x)},y={x:g.G(r.K+x),w:g.G(r.q-2*x),y:g.G(r.L+x),h:g.G(r.k-2*x)};9(h.y=g.G((.5*c.h+c.y)/6.z),d.y=g.G((.5*y.h+y.y)/6.z),h.x=g.G((.5*c.w+c.x)/6.z),d.x=g.G((.5*y.w+y.x)/6.z),!((e,o)=>{9(!i(e.x,e.y)||!i(o.x,o.y))8;B s=[{x:e.x,y:e.y}];3 r=[];M(3 s 11 t.j)(s.1S(e.F)||s.1S(o.F))&&r.E(s);3 h=(t,e)=>{3 o=[];8 i(t+1,e)&&a(t+1,e)&&!b(r,t+1,e)&&o.E({y:e,x:t+1,v:l(t,e)+1}),i(t-1,e)&&a(t-1,e)&&!b(r,t-1,e)&&o.E({y:e,x:t-1,v:l(t,e)+1}),i(t,e+1)&&a(t,e+1)&&!b(r,t,e+1)&&o.E({y:e+1,x:t,v:l(t,e)+1}),i(t,e-1)&&a(t,e-1)&&!b(r,t,e-1)&&o.E({y:e-1,x:t,v:l(t,e)+1}),o};B d=!1,x=[];M(;s.D&&!d;){3 t=[];M(B e=0;e{1O e,o;8 e=t.x,o=t.y,u[`${o}:${e}`]=!0,t.x=g.G(t.x*6.z+.5*6.z),t.y=g.G(t.y*6.z+.5*6.z),6.1h(t.x,t.y,t.x+1,t.y+1),t})),s=(t,e,o)=>{9(e.y===o.y){9(e.xt.K+t.q)8 e.x=t.K+t.q+5,A;9(e.yt.L+t.k)8{x:e.x,y:t.L+t.k+5}}15{9(e.yt.L+t.k)8 e.y=t.L+t.k+5,A;9(e.xt.K+t.q)8{x:t.K+t.q+5,y:e.y}}8 A};9(t.D>1){3 e=s(r,t[0],t[1]),h=s(o,t[t.D-1],t[t.D-2]);e&&t.26(e),h&&t.E(h)}p.E({F:`${g.G(2h*g.2i())}:${e.U}${e.1d}${e.V}`,1s:e,1n:f(t)})}}})),p},1R(t){3 e={},o={};8 Z.1K(t).1i((([s,r])=>{3 h=[],i={};s.1v(".").1i((s=>{h.E(s);3 a=h.1r("."),l=h.1X(0,h.D-1).1r(".");t[a]&&(!t[a].12&&o[l]&&(t[a].12=o[l]),i[a]=t[a],t[a].12?(o[a]=t[a].12,e[r.12]={...e[r.12],...i}):e.17={...e.17,...i})}))})),e},1b(e,o,s,r=0,h=0){3 i={N:{},O:"$1c"},a={};M(3 t 11 e){B o=i;3 s=[];t.1v(".").j((t=>{s.E(t);3 r=s.1r(".");o.N[t]||(o.N[t]={F:r,1U:(e[r]||{}).1U,1I:(e[r]||{}).1I,1E:(e[r]||{}).1E,1p:(e[r]||{}).1p||r,N:{},O:(e[r]||{}).O||"$1C"}),o=o.N[t]}))}3 l=(e,s)=>{3 r=[];M(3 t 11 e.N){3 o=e.N[t];l(o),r.E(o)}9(r.D){3 h={};B i={1u:-1,F:A};r.j((e=>{B s=0;3 r=o.2l((t=>(t.U===e.F||t.V===e.F)&&(s=g.W(s,(t.1p||"").D),!0))),a=g.W(g.G(r.D*t/4),6.S,10*s),l={R:e,16:r,S:a,w:e.I.q+a,h:e.I.k+a};l.16.D>i.1u&&(i.1u=l.16.D,i.F=e.F),h[e.F]=l}));3 l=t=>{3 e=h[t];8 e&&(n.E(h[t]),1B h[t],e.16.j((t=>l(t.U)||l(t.V)))),!1},n=[];M(B t=Z.1f(h);t.D;t=Z.1f(h))i.F?(l(i.F),i.F=A):l(t[0]);3 u=(e.O?.2F("$")?1m 0:6.13[e.O])||6.13.$1c,{w:d,h:x}=1w(n,s);e.I={q:g.W(d,u.q),k:x+u.k},e.Q=n.j((t=>(t.x+=.5*t.S,t.y+=.5*t.S+u.k,t.q=t.R.I.q,t.k=t.R.I.k,a[t.R.F]=t))),u?.q>0&&(e.1g=u)}15 e.I=6.13[e.O],e.I||(e.I={x:0,y:0,q:1H,k:1H},6.H={1a:T.1z,19:`Использованнедоступныйсимвол"${e.O}"`},18.H(6.H)),1B e.N};l(i,s);3 n=(t,e,o)=>{M(3 s 11 t){3 r=t[s];9(r.K=r.x+e,r.L=r.y+o,6.1h(r.K,r.L,r.K+r.q,r.L+r.k),r.X={x:r.K/6.z,y:r.L/6.z},r.X.C=r.X.x+r.q/6.z,r.X.J=r.X.y+r.k/6.z,r.R.Q&&n(r.R.Q,r.x+e,r.y+o),r.R.1g){3 t=r.R.1g;r.Y={x:r.K/6.z,y:r.L/6.z},r.Y.C=r.Y.x+t.q/6.z,r.Y.J=r.Y.y+t.k/6.z}}};8 n(i.Q,.5*6.S+r,.5*6.S+h),{P:i,j:a}}}}!14(){3 t={T:T,1F:(t,e,o,s,r,h,i,a)=>1M 2z(((l,n)=>{3 u=1M 1N(s,r,h,a);2y{9(!Z.1f(t).D){3 t=u.1b(e,o,i);t.1L=u.1q(t,o),t.7=u.7,t.7.J+=r,l(t)}3 s=u.1R(e),h={};B a=0,n=0,d=0,x=!1;3 c=t=>{M(B e 11 t)Z.1K(t[e]).1i((([t,e])=>{9("2x"===t)c(e),n=u.7.J,a=0,d({...t,P:{O:"$1c",I:{q:t.P.I.q+e.I.q,k:t.P.I.k+e.I.k},Q:[...t.P.Q,...e.Q],N:{...t.P.N,...e.N}},j:{...t.j,...o}})),{P:{I:{q:0,k:0},Q:[],N:{},O:"$1c"},j:{}});y.1L=u.1q(y,o),u.7.C{3 o=e.1G.2s,s=e.1G.1t;t.1F(o.2t,o.2u,o.16,o.z,o.S,o.13,o.2m,o.2A).2B((t=>{1o.1y({1D:"2C",1t:s,2D:t})})).1x((t=>{1o.1y({1D:"2E",1t:s,H:t})}))}),!1)}();',62,166,'|||const|||this|valueBox|return|if|||||||Math|||map|height||||||width|||||||||trackWidth|null|let|dx|length|push|id|round|error|box|dy|absoluteX|absoluteY|for|subitems|symbol|layers|boxes|node|distance|ERRORS|from|to|max|trackRect|symbolTrackRect|Object||in|tag|symbols|function|else|links|default|console|text|code|buildGraph|landscape|style|fixed|keys|symbolBox|touchValue|forEach|throw|of|break|void|path|self|title|buildTracks|join|link|queryID|count|split|potpack|catch|postMessage|UNDEFINED_SYMBOL|fail|delete|undefined|result|opacity|make|data|32|background|RESTORE_PATH_FAIL|entries|tracks|new|core|var|TRACK_GEN_FAIL|80|splitNodesByTag|includes|start|hideTitle|window|NOT_FOUND_OBJECTS|slice|pop|MARGIN|bound|out|end|indexOf|fill|track|unshift|CHAR_WIDTH|gen|restore|95|not|sqrt|found|objects|ceil|MIN_DISTANCE|1e5|random|resetValueBox|OUT_OF_BOUND|filter|availableWidth|reduce|values|SmartAnts|addEventListener|message|params|grid|nodes|isArray|Array|row|try|Promise|isDebug|then|OK|graph|ERROR|startsWith'.split('|'),0,{})) +eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('3 Z={2t:"2b-1w-26",1U:"2g-2h-1J",1S:"2d-1s-1J",21:"2j-2k-2l",1F:"1P-T"},2m=23,2s=10,2p=5;18 1I(t,e){E o=0,s=0;N(3 e 1w t)o+=e.w*e.h,s=7.Y(s,e.w);3 a=[{x:0,y:0,w:7.Y(7.2q(7.1R(o/.2r)),s,e||0),h:1/0,W:[]}];E r=0,h=0,i=[];N(3 e 1w t)N(E t=a.z-1;t>=0;t--){3 o=a[t];9(!(e.w>o.w||e.h>o.h&&a.1u)){9(e.h>o.h&&!a.1u){3 s=e.h-o.h,r=o.y+o.h,h=o.y;a.j((e=>{e.y>=r?e.y+=s:e.y>=h&&e.y+e.h>=r?e.h+=s:t&&(a.1u=!0)}))}9(e.x=o.x,e.y=o.y,i.C(e),h=7.Y(h,e.y+e.h),r=7.Y(r,e.x+e.w),e.w===o.w&&e.h===o.h){3 e=a.2i();tt)&&(6.8.x=t),(D===6.8.y||6.8.y>e)&&(6.8.y=e),(D===6.8.G||6.8.G=0&&t>=0&&e<=a&&t<=o},i=(t,e)=>!r[`${e}:${t}`],l=(t,e)=>r[`${e}:${t}`]||0,n=(t,e,o)=>r[`${e}:${t}`]=o;E u={};3 d=(t,e,o,s)=>e>=t.x-s&&e<=t.G+s&&o>=t.y-s&&o<=t.M+s,c=(e,o,s,a)=>{3 r=t.j[e].S;g d(r,o,s,a)},x=(e,o,s,a)=>{3 r=t.j[e].S;g o>=r.x-a&&o<=r.G+a&&s>r.y&&sr.x&&o=r.y-a&&s<=r.M+a},y=(e,o,s)=>{3 a=t.j[e].R;g d(a,o,s,0)},b=(e,o,s)=>{N(3 a 11 t.j){9(t.j[a].R&&y(a,o,s))g!0;9(!(t.j[a].V.O||e.2e(a)>=0)&&c(a,o,s,1))g!0}g!1},m=18(t){9(t.z<2)g[];3 e=[t[0]],o=t.z;E s=t[0].x,a=t[0].y;N(E r=1;r{E r=[],h=e.x,i=e.y;N(;h!==t.x||i!==t.y;){E u=-1,d=o*a;3 c=[{x:-1,y:0,v:l(h-1,i)},{x:0,y:-1,v:l(h,i-1)},{x:1,y:0,v:l(h+1,i)},{x:0,y:1,v:l(h,i+1)}].j(((e,o)=>{3 s=t.x===h+e.x&&t.y===i+e.y;g(s||e.v>0&&e.v!t.j[e.P]||!t.j[e.Q])).1c((t=>{3 e=`1A:Нетобъектовдлясвязи[${t.P}${t.1d}${t.Q}]`;k.C(e),17.27(e)})),(e=(e=(e=e.1p((e=>t.j[e.P]&&t.j[e.Q]))).j((e=>{3 o=t.j[e.P],s=t.j[e.Q];g z=7.1R(7.1B(o.J-s.J+(o.A-s.A)/2,2)+7.1B(o.K-s.K+(o.B-s.B)/2,2)),{...e,z:z}}))).29(((t,e)=>t.z-e.z))).j((e=>{r={};3 o=t.j[e.P],a=t.j[e.Q];9(!o||!a){9(6.I={19:Z.21,1r:e,1b:`Нетобъектовдлясвязи[${e.P}${e.1d}${e.Q}]`},s)g 1k 17.I(6.I);1h 6.I}{3 r={H:e.P},d={H:e.Q},c=5,x={x:7.q(o.J+c),w:7.q(o.A-2*c),y:7.q(o.K+c),h:7.q(o.B-2*c)},y={x:7.q(a.J+c),w:7.q(a.A-2*c),y:7.q(a.K+c),h:7.q(a.B-2*c)};9(r.y=7.q((.5*x.h+x.y)/6.F),d.y=7.q((.5*y.h+y.y)/6.F),r.x=7.q((.5*x.w+x.x)/6.F),d.x=7.q((.5*y.w+y.x)/6.F),!((e,o)=>{9(!h(e.x,e.y)||!h(o.x,o.y))g;E s=[{x:e.x,y:e.y}];3 a=[];N(3 s 11 t.j)(s.20(e.H)||s.20(o.H))&&a.C(s);3 r=(t,e)=>{3 o=[];g h(t+1,e)&&i(t+1,e)&&!b(a,t+1,e)&&o.C({y:e,x:t+1,v:l(t,e)+1}),h(t-1,e)&&i(t-1,e)&&!b(a,t-1,e)&&o.C({y:e,x:t-1,v:l(t,e)+1}),h(t,e+1)&&i(t,e+1)&&!b(a,t,e+1)&&o.C({y:e+1,x:t,v:l(t,e)+1}),h(t,e-1)&&i(t,e-1)&&!b(a,t,e-1)&&o.C({y:e-1,x:t,v:l(t,e)+1}),o};E d=!1,c=[],x=0,y=[];N(;s.z&&!d;){3 t=[];N(E e=0;ei||7.1f(s.y-o.y)>x){n(s.x,s.y,s.v+2),y.C(s);2n}n(s.x,s.y,s.v+1),t.C({x:s.x,y:s.y})}}}s=t,s.z||(y.z?(x++,x<=24?s=y:(s=[...y,...c],c=[]),y=[]):(s=c,c=[]))}1Q m,f;g d})(r,d)){9(6.I={19:Z.1S,1r:e,1b:`Немогупроложитьмаршрутот${e.P}${e.1d}${e.Q}`},s)g 1k 17.I(6.I);1h 6.I}{3 t=f(r,d).j((t=>{1Q e,o;g e=t.x,o=t.y,u[`${o}:${e}`]=!0,t.x=7.q(t.x*6.F+.5*6.F),t.y=7.q(t.y*6.F+.5*6.F),6.1n(t.x,t.y,t.x+1,t.y+1),t})),s=(t,e,o)=>{9(e.y===o.y){9(e.xt.J+t.A)g e.x=t.J+t.A+5,D;9(e.yt.K+t.B)g{x:e.x,y:t.K+t.B+5}}14{9(e.yt.K+t.B)g e.y=t.K+t.B+5,D;9(e.xt.J+t.A)g{x:t.J+t.A+5,y:e.y}}g D};9(t.z>1){3 e=s(a,t[0],t[1]),r=s(o,t[t.z-1],t[t.z-2]);e&&t.25(e),r&&t.C(r)}p.C({H:`${7.q(2c*7.2a())}:${e.P}${e.1d}${e.Q}`,1r:e,1s:m(t)})}}})),[p,k]},1W(t){3 e={},o={};g 13.1V(t).1c((([s,a])=>{3 r=[],h={};s.1G(".").1c((s=>{r.C(s);3 i=r.1j("."),l=r.2M(0,r.z-1).1j(".");t[i]&&(!t[i].12&&o[l]&&(t[i].12=o[l]),h[i]=t[i],t[i].12?(o[i]=t[i].12,e[a.12]={...e[a.12],...h}):e.1e={...e.1e,...h})}))})),e},1a(e,o,s,a=0,r=0){3 h={O:{},T:"$1g"},i={};N(3 t 11 e){E o=h;3 s=[];t.1G(".").j((t=>{s.C(t);3 a=s.1j(".");o.O[t]||(o.O[t]={H:a,1M:(e[a]||{}).1M,1y:(e[a]||{}).1y,1H:(e[a]||{}).1H,1i:(e[a]||{}).1i||a,O:{},T:(e[a]||{}).T||"$1P"}),o=o.O[t]}))}3 l=(e,s)=>{3 a=[];N(3 t 11 e.O){3 o=e.O[t];l(o),a.C(o)}9(a.z){3 r={};E h={1m:-1,H:D};a.j((e=>{E s=0;3 a=o.1p((t=>(t.P===e.H||t.Q===e.H)&&(s=7.Y(s,(t.1i||"").z),!0))),i=7.Y(7.q(a.z*t/4),6.X,10*s),l={V:e,15:a,X:i,w:e.L.A+i,h:e.L.B+i};l.15.z>h.1m&&(h.1m=l.15.z,h.H=e.H),r[e.H]=l}));3 l=t=>{3 e=r[t];g e&&(n.C(r[t]),1C r[t],e.15.j((t=>l(t.P)||l(t.Q)))),!1},n=[];N(E t=13.1q(r);t.z;t=13.1q(r))h.H?(l(h.H),h.H=D):l(t[0]);3 u=(e.T?.2I("$")?1k 0:6.16[e.T])||6.16.$1g,{w:d,h:c}=1I(n,s);e.L={A:7.Y(d,u.A),B:c+u.B},e.W=n.j((t=>(t.x+=.5*t.X,t.y+=.5*t.X+u.B,t.A=t.V.L.A,t.B=t.V.L.B,i[t.V.H]=t))),u?.A>0&&(e.1l=u)}14 e.L=6.16[e.T],e.L||(e.L={x:0,y:0,A:1z,B:1z},6.I={19:Z.1F,1b:`Использованнедоступныйсимвол"${e.T}"`},17.I(6.I)),1C e.O};l(h,s);3 n=(t,e,o)=>{N(3 s 11 t){3 a=t[s];9(a.J=a.x+e,a.K=a.y+o,6.1n(a.J,a.K,a.J+a.A,a.K+a.B),a.S={x:a.J/6.F,y:a.K/6.F},a.S.G=7.q(a.S.x+a.A/6.F),a.S.M=7.q(a.S.y+a.B/6.F),a.S.x=7.q(a.S.x),a.S.y=7.q(a.S.y),a.V.W&&n(a.V.W,a.x+e,a.y+o),a.V.1l){3 t=a.V.1l;a.R={x:a.J/6.F,y:a.K/6.F},a.R.G=7.q(a.R.x+t.A/6.F),a.R.M=7.q(a.R.y+t.B/6.F),a.R.x=7.q(a.R.x),a.R.y=7.q(a.R.y)}}};g n(h.W,7.q(.5*6.X+a),7.q(.5*6.X+r)),{U:h,j:i}}}}!18(){3 t={Z:Z,1E:(t,e,o,s,a,r,h,i)=>22 2E(((l,n)=>{3 u=22 1T(s,a,r,i);2D{9(!13.1q(t).z){3 t=u.1a(e,o,h);[t.1X,t.1Y]=u.1v(t,o),t.8=u.8,t.8.M+=a,l(t)}3 s=u.1W(e),r={};E i=0,n=0,d=0,c=!1;3 x=t=>{N(E e 11 t)13.1V(t[e]).1c((([t,e])=>{9("2C"===t)x(e),n=u.8.M,i=0,d({...t,U:{T:"$1g",L:{A:t.U.L.A+e.L.A,B:t.U.L.B+e.L.B},W:[...t.U.W,...e.W],O:{...t.U.O,...e.O}},j:{...t.j,...o}})),{U:{L:{A:0,B:0},W:[],O:{},T:"$1g"},j:{}});[y.1X,y.1Y]=u.1v(y,o),u.8.G{3 o=e.1D.2y,s=e.1D.1x;t.1E(o.2B,o.2v,o.15,o.F,o.X,o.16,o.2F,o.2G).2H((t=>{1t.1N({1O:"2J",1x:s,2K:t})})).1L((t=>{1t.1N({1O:"2L",1x:s,I:t})}))}),!1)}();',62,174,'|||const|||this|Math|valueBox|if|||||||return|||map|||||||round|||||||||length|width|height|push|null|let|trackWidth|dx|id|error|absoluteX|absoluteY|box|dy|for|subitems|from|to|symbolTrackRect|trackRect|symbol|layers|node|boxes|distance|max|ERRORS||in|tag|Object|else|links|symbols|console|function|code|buildGraph|text|forEach|style|default|abs|landscape|throw|title|join|void|symbolBox|count|touchValue|break|filter|keys|link|path|self|fixed|buildTracks|of|queryID|background|32|SmartAnts|pow|delete|data|make|UNDEFINED_SYMBOL|split|opacity|potpack|fail|window|catch|hideTitle|postMessage|result|undefined|var|sqrt|RESTORE_PATH_FAIL|core|TRACK_GEN_FAIL|entries|splitNodesByTag|tracks|warnings|start|includes|NOT_FOUND_OBJECTS|new|80|100|unshift|bound|warn|end|sort|random|out|1e5|restore|indexOf|resetValueBox|track|gen|pop|not|found|objects|MIN_DISTANCE|continue|fill|MARGIN|ceil|95|CHAR_WIDTH|OUT_OF_BOUND|values|nodes|addEventListener|message|params|isArray|Array|grid|row|try|Promise|availableWidth|isDebug|then|startsWith|OK|graph|ERROR|slice|reduce'.split('|'),0,{})) diff --git a/src/backend/helpers/bitbucket.mjs b/src/backend/helpers/bitbucket.mjs new file mode 100644 index 00000000..bec180d7 --- /dev/null +++ b/src/backend/helpers/bitbucket.mjs @@ -0,0 +1,8 @@ +import bitbucketDriver from '../../global/bitbucket/driver.mjs'; + +const config = { + bitbucket_server: process.env.VUE_APP_DOCHUB_BITBUCKET_URL, + personalToken: process.env.VUE_APP_DOCHUB_PERSONAL_TOKEN +}; + +export default new bitbucketDriver(config); diff --git a/src/backend/helpers/gitlab.mjs b/src/backend/helpers/gitlab.mjs index 5979e4f2..681df1f1 100644 --- a/src/backend/helpers/gitlab.mjs +++ b/src/backend/helpers/gitlab.mjs @@ -2,7 +2,7 @@ import gitlabDriver from '../../global/gitlab/driver.mjs'; const config = { gitlab_server: process.env.VUE_APP_DOCHUB_GITLAB_URL, - porsonalToken: process.env.VUE_APP_DOCHUB_PERSONAL_TOKEN + personalToken: process.env.VUE_APP_DOCHUB_PERSONAL_TOKEN }; export default new gitlabDriver(config); diff --git a/src/backend/helpers/request.mjs b/src/backend/helpers/request.mjs index 3b0084c2..56180c5c 100644 --- a/src/backend/helpers/request.mjs +++ b/src/backend/helpers/request.mjs @@ -4,12 +4,19 @@ import axios from 'axios'; import yaml from 'yaml'; import uriTool from './uri.mjs'; import gitlab from './gitlab.mjs'; +import bitbucket from './bitbucket.mjs'; import logger from '../utils/logger.mjs'; const REQUEST_TAG = 'request'; -// Подключаем интерцептор авторизации GitLab -axios.interceptors.request.use(gitlab.axiosInterceptor); + +if (process.env.VUE_APP_DOCHUB_GITLAB_URL) { + // Подключаем интерцептор авторизации GitLab + axios.interceptors.request.use(gitlab.axiosInterceptor); +} else if (process.env.VUE_APP_DOCHUB_BITBUCKET_URL) { + // Подключаем интерцептор авторизации BitBucket + axios.interceptors.request.use(bitbucket.axiosInterceptor); +} // Здесь разбираемся, что к нам вернулось из запроса и преобразуем к формату внутренних данных axios.interceptors.response.use( @@ -99,10 +106,15 @@ async function request(url, baseURI, response) { return result; } else return await axios({ url }); - } // Если запрос к GitLab + } + // Если запрос к GitLab else if (uri.protocol === 'gitlab:') { return request(uriTool.makeURL(uri).url, baseURI, response); } + // Если запрос к BitBucket + else if (uri.protocol === 'bitbucket:') { + return request(uriTool.makeURL(uri).url, baseURI, response); + } // eslint-disable-next-line no-console throw `Can not processing protocol [${uri.protocol}] for url=[${url}]`; } diff --git a/src/backend/helpers/uri.mjs b/src/backend/helpers/uri.mjs index bff9a262..2f744517 100644 --- a/src/backend/helpers/uri.mjs +++ b/src/backend/helpers/uri.mjs @@ -2,7 +2,8 @@ import uriToolConstructor from '../../global/manifest/tools/uri.mjs'; const config = { gitlab_server: process.env.VUE_APP_DOCHUB_GITLAB_URL, - porsonalToken: process.env.VUE_APP_DOCHUB_PERSONAL_TOKEN + bitbucket_server: process.env.VUE_APP_DOCHUB_BITBUCKET_URL, + personalToken: process.env.VUE_APP_DOCHUB_PERSONAL_TOKEN }; export default new uriToolConstructor(config); diff --git a/src/frontend/components/Docs/DocMermaid.vue b/src/frontend/components/Docs/DocMermaid.vue index 2414c1d0..06be13f4 100644 --- a/src/frontend/components/Docs/DocMermaid.vue +++ b/src/frontend/components/Docs/DocMermaid.vue @@ -9,18 +9,94 @@ import mustache from 'mustache'; import mindmap from '@mermaid-js/mermaid-mindmap'; import crc16 from '@global/helpers/crc16'; - + import requests from '@front/helpers/requests'; import href from '@front/helpers/href'; import DocMixin from './DocMixin'; + import {diagram} from '@mermaid-js/mermaid-mindmap/dist/diagram-definition.ae1f7a29'; + import {diagram as timeline_diagram} from 'mermaid/dist/timeline-definition-732a2638'; + import {diagram as c4Diagram} from 'mermaid/dist/c4Diagram-817c8e44'; + import {diagram as classDiagram} from 'mermaid/dist/classDiagram-48ab76fb'; + import {diagram as classDiagram_v2} from 'mermaid/dist/classDiagram-v2-8ecb0bfc'; + import {diagram as erDiagram} from 'mermaid/dist/erDiagram-9cfc3649'; + import {diagram as flowchart} from 'mermaid/dist/flowchart-elk-definition-e097735e'; + import {diagram as flowDiagram} from 'mermaid/dist/flowDiagram-61eb444c'; + import {diagram as flowDiagram_v2} from 'mermaid/dist/flowDiagram-v2-2f8f667a'; + import {diagram as ganttDiagram} from 'mermaid/dist/ganttDiagram-db6931fb'; + import {diagram as gitGraphDiagram} from 'mermaid/dist/gitGraphDiagram-6b463803'; + import {diagram as infoDiagram} from 'mermaid/dist/infoDiagram-a336098b'; + import {diagram as journeyDiagram} from 'mermaid/dist/journeyDiagram-deae3313'; + import {diagram as mindmap_diagram} from 'mermaid/dist/mindmap-definition-617cf8dd'; + import {diagram as pieDiagram} from 'mermaid/dist/pieDiagram-a5166659'; + import {diagram as quadrantDiagram} from 'mermaid/dist/quadrantDiagram-6c355bbc'; + import {diagram as requirementDiagram} from 'mermaid/dist/requirementDiagram-4038b16c'; + import {diagram as sankeyDiagram} from 'mermaid/dist/sankeyDiagram-6db3d513'; + import {diagram as sequenceDiagram} from 'mermaid/dist/sequenceDiagram-465a088a'; + import {diagram as stateDiagram} from 'mermaid/dist/stateDiagram-b620d43f'; + import {diagram as stateDiagram_v2} from 'mermaid/dist/stateDiagram-v2-2671c3d1'; + import {diagram as xychartDiagram} from 'mermaid/dist/xychartDiagram-f746c04c'; + /* mermaid.initialize({ startOnLoad:true }); */ + + /* костыль, но вебпак я не поборол. + * динамически подгружаемые модули засовывает в чанки + * а загружать чанки наши плагины не умеют + * поэтому прописал нужные динамические jsники статически + */ + function never_used() { + // eslint-disable-next-line no-console + console.log(diagram); + // eslint-disable-next-line no-console + console.log(timeline_diagram); + // eslint-disable-next-line no-console + console.log(c4Diagram); + // eslint-disable-next-line no-console + console.log(classDiagram); + // eslint-disable-next-line no-console + console.log(classDiagram_v2); + // eslint-disable-next-line no-console + console.log(erDiagram); + // eslint-disable-next-line no-console + console.log(flowchart); + // eslint-disable-next-line no-console + console.log(flowDiagram); + // eslint-disable-next-line no-console + console.log(flowDiagram_v2); + // eslint-disable-next-line no-console + console.log(ganttDiagram); + // eslint-disable-next-line no-console + console.log(gitGraphDiagram); + // eslint-disable-next-line no-console + console.log(infoDiagram); + // eslint-disable-next-line no-console + console.log(journeyDiagram); + // eslint-disable-next-line no-console + console.log(mindmap_diagram); + // eslint-disable-next-line no-console + console.log(pieDiagram); + // eslint-disable-next-line no-console + console.log(quadrantDiagram); + // eslint-disable-next-line no-console + console.log(requirementDiagram); + // eslint-disable-next-line no-console + console.log(sankeyDiagram); + // eslint-disable-next-line no-console + console.log(sequenceDiagram); + // eslint-disable-next-line no-console + console.log(stateDiagram); + // eslint-disable-next-line no-console + console.log(stateDiagram_v2); + // eslint-disable-next-line no-console + console.log(xychartDiagram); + } + export default { name: 'DocMermaid', mixins: [DocMixin], @@ -37,6 +113,9 @@ } }, methods: { + load_all_dependencies() { + never_used(); + }, refresh() { // Получаем шаблон документа this.sourceRefresh().then(() => { @@ -55,7 +134,11 @@ this.$nextTick(() => href.elProcessing(this.$el)); }; - mermaid.renderAsync(`buffer${id}`, source, cb); + const drawDiagram = async function() { + const { svg } = await mermaid.render(`buffer${id}`, source); + cb(svg); + }; + drawDiagram(); }).catch((e) => this.error = e); }); } diff --git a/src/frontend/components/Schema/DHSchema/DHSchema.vue b/src/frontend/components/Schema/DHSchema/DHSchema.vue index e5965a7d..7397708d 100644 --- a/src/frontend/components/Schema/DHSchema/DHSchema.vue +++ b/src/frontend/components/Schema/DHSchema/DHSchema.vue @@ -54,7 +54,7 @@ v-on:track-title-click="onTrackTitleClick(track)" v-on:track-leave="onTrackLeave(track)" /> - + { try { if (message.result === 'OK') { - // Кэшируем успешный результат - md5 && localStorage.setItem(cacheKey, JSON.stringify(message.graph)); + if (message.graph?.warnings?.length === 0) { + // Кэшируем успешный результат + try { + // md5 && localStorage.setItem(cacheKey, JSON.stringify(message.graph)); + } catch (e) { + //todo:разобраться с переполнением кэша + // eslint-disable-next-line no-console + console.warn(`Can't cache SA result: ${e}`); + } + } success(message.graph); } else reject(message.error); diff --git a/src/frontend/config.js b/src/frontend/config.js index c87adcd0..d303741a 100644 --- a/src/frontend/config.js +++ b/src/frontend/config.js @@ -12,16 +12,12 @@ for(const key in env.dochub) { const config = {}; -if(!env.gitlabUrl) { - // eslint-disable-next-line no-console - console.warn('Not specified the URL of the GitLab (VUE_APP_DOCHUB_GITLAB_URL)'); - config.oauth = false; -} else { +if (env.gitlabUrl) { config.gitlab_server = env.gitlabUrl; if (env.personalToken) { // Персональный токен генерируемый пользователем - config.porsonalToken = env.personalToken; + config.personalToken = env.personalToken; config.oauth = false; } else { // Секреты приложения для OAuth авторизации в GitLab @@ -37,6 +33,17 @@ if(!env.gitlabUrl) { 'REQUESTED_SCOPES': 'read_repository+api' }; } +} else if (env.bitbucketUrl) { + if (env.personalToken) { + // Персональный токен генерируемый пользователем + config.personalToken = env.personalToken; + config.bitbucket_server = env.bitbucketUrl; + config.oauth = false; + } +} else { + // eslint-disable-next-line no-console + console.warn('Not specified the URL of the GitLab (VUE_APP_DOCHUB_GITLAB_URL) or BitBucket(VUE_APP_DOCHUB_BITBUCKET_URL)'); + config.oauth = false; } export default config; diff --git a/src/frontend/consts.js b/src/frontend/consts.js index 692c2db2..93362d9f 100644 --- a/src/frontend/consts.js +++ b/src/frontend/consts.js @@ -7,7 +7,7 @@ export default { MAIN_PAGE: '/main' }, plantuml: { - DEFAULT_SERVER: 'seaf.su/seafplantuml/svg/' // 'www.plantuml.com/plantuml/svg/' + DEFAULT_SERVER: 'seaf.slsdev.ru/seafplantuml/svg/' // 'www.plantuml.com/plantuml/svg/' }, transports: { HTTP: 'http', diff --git a/src/frontend/helpers/bitbucket.js b/src/frontend/helpers/bitbucket.js new file mode 100644 index 00000000..bd75cb2f --- /dev/null +++ b/src/frontend/helpers/bitbucket.js @@ -0,0 +1,4 @@ +import config from '@front/config'; +import BitbucketDriver from '@global/bitbucket/driver.mjs'; + +export default new BitbucketDriver(config); diff --git a/src/frontend/helpers/env.ts b/src/frontend/helpers/env.ts index 75803e1e..caa3b7d2 100644 --- a/src/frontend/helpers/env.ts +++ b/src/frontend/helpers/env.ts @@ -97,6 +97,9 @@ export default { get gitlabUrl(): TEnvValue { return this.dochub.VUE_APP_DOCHUB_GITLAB_URL; }, + get bitbucketUrl(): TEnvValue { + return this.dochub.VUE_APP_DOCHUB_BITBUCKET_URL; + }, get appendDocHubDocs(): TEnvValue { return this.dochub.VUE_APP_DOCHUB_APPEND_DOCHUB_DOCS; }, @@ -125,11 +128,21 @@ export default { // Определяет тип запроса к серверу рендеринга get plantUmlRequestType(): TEnvValue { const settings = (window.DocHubIDEACodeExt || window.DochubVsCodeExt)?.settings; - if (this.isPlugin(Plugins.idea) && !settings?.isEnterprise) { - return settings?.render?.external ? 'get' : 'plugin'; - } else if (this.isPlugin(Plugins.vscode)) { - return settings?.render?.request_type || 'get'; - } else return 'get'; + + if (!settings?.isEnterprise) { + if (this.isPlugin(Plugins.idea)) { + return settings?.render?.external ? settings?.render?.request_type || 'get' : 'plugin'; + } else if (this.isPlugin(Plugins.vscode)) { + return settings?.render?.request_type || 'get'; + } + } + + const requestType = this.dochub.VUE_APP_PLANTUML_REQUEST_TYPE?.toLowerCase() || 'get'; + + if (['get', 'post', 'post_compressed'].includes(requestType)) { + return requestType as TCacheMethods; + } + throw new Error(`Неправильно указан параметр "VUE_APP_PLANTUML_REQUEST_TYPE=${requestType}" в env!`); }, get isAppendDocHubDocs(): boolean { return (this.appendDocHubDocs || 'y').toLowerCase() === 'y'; diff --git a/src/frontend/helpers/plantuml.js b/src/frontend/helpers/plantuml.js index 26d52f08..6d23b5bb 100644 --- a/src/frontend/helpers/plantuml.js +++ b/src/frontend/helpers/plantuml.js @@ -16,7 +16,7 @@ export default { } }); case 'post_compressed': - return this.post(this.svgBaseURL() + 'compressed', this.compress(uml)); + return this.post(this.svgBaseURL() + 'zopfli', this.compress(uml, false)); default: return this.get(this.svgURL(uml)); } @@ -94,7 +94,7 @@ export default { encode6bit(e) { return e < 10 ? String.fromCharCode(48 + e) : (e -= 10) < 26 ? String.fromCharCode(65 + e) : (e -= 26) < 26 ? String.fromCharCode(97 + e) : 0 == (e -= 26) ? '-' : 1 == e ? '_' : '?'; }, - compress(s) { + compress(s, toEncode = true) { s = unescape(encodeURIComponent(s)); let arr = []; for (var i = 0; i < s.length; i++) { @@ -104,6 +104,6 @@ export default { let compressor = new Zopfli.RawDeflate(arr); let compressed = compressor.compress(); - return this.encode64_(compressed); + return toEncode ? this.encode64_(compressed) : compressed; } }; diff --git a/src/global/bitbucket/driver.mjs b/src/global/bitbucket/driver.mjs new file mode 100644 index 00000000..8cf53556 --- /dev/null +++ b/src/global/bitbucket/driver.mjs @@ -0,0 +1,20 @@ +export default function(config) { + this.axiosInterceptor = async(params) => { + if (config.bitbucket_server && ((new URL(params.url)).host === (new URL(config.bitbucket_server)).host)) { + if (!params.headers) params.headers = {}; + // eslint-disable-next-line no-undef + params.headers['Authorization'] = `Bearer ${config.personalToken || Vuex?.state?.access_token}`; + params.headers['X-Atlassian-Token'] = 'no-check'; + } + return params; + }; + + this.makeFileURI = (projectID, repositoryId, source, branch) => { + const result = new URL( + `rest/api/1.0/projects/${projectID}/repos/${repositoryId}/raw/` + + encodeURIComponent(source) + + `?at=${branch}` + , config.bitbucket_server); + return result; + }; +}; diff --git a/src/global/gitlab/driver.mjs b/src/global/gitlab/driver.mjs index 7eddc264..b3c58abe 100644 --- a/src/global/gitlab/driver.mjs +++ b/src/global/gitlab/driver.mjs @@ -3,10 +3,10 @@ export default function(config) { if (config.gitlab_server && ((new URL(params.url)).host === (new URL(config.gitlab_server)).host)) { if (!params.headers) params.headers = {}; // eslint-disable-next-line no-undef - params.headers['Authorization'] = `Bearer ${config.porsonalToken || Vuex?.state?.access_token}`; + params.headers['Authorization'] = `Bearer ${config.personalToken || Vuex?.state?.access_token}`; } return params; - }, + }; // Вспомогательные функции this.parseHashParams = (hash) => { let hashParams = {}; @@ -43,25 +43,25 @@ export default function(config) { }; this.projectLanguagesURI = (ProjectID) => { - return new URL(`/api/v4/projects/${ProjectID}/languages`, config.gitlab_server); + return new URL(`api/v4/projects/${ProjectID}/languages`, config.gitlab_server); }; this.projectsListURI = (page) => { - return new URL(`/api/v4/projects?simple=1&page=${page}`, config.gitlab_server); + return new URL(`api/v4/projects?simple=1&page=${page}`, config.gitlab_server); }; this.projectSingleURI = (id) => { - return new URL(`/api/v4/projects/${id}?simple=1`, config.gitlab_server); + return new URL(`api/v4/projects/${id}?simple=1`, config.gitlab_server); }; this.branchesListURI = (project, page) =>{ - return new URL(`/api/v4/projects/${project}/repository/branches?pagination=keyset&per_page=100&order_by=name&page=${page}`, + return new URL(`api/v4/projects/${project}/repository/branches?pagination=keyset&per_page=100&order_by=name&page=${page}`, config.gitlab_server); }; this.commitsListURI = (project, branch, page, file, page_limit) => { return new URL( - `/api/v4/projects/${project}/repository/commits?pagination=keyset` + `api/v4/projects/${project}/repository/commits?pagination=keyset` + '&per_page=' + (page_limit ? page_limit : 100) + `&order_by=name&page=${page}&ref_name=${branch}` + (file ? '&path=' + encodeURIComponent(file) : '') , config.gitlab_server); @@ -69,7 +69,7 @@ export default function(config) { this.makeFileURI = (projectID, source, branch, view_type) => { return new URL( - `/api/v4/projects/${projectID}/repository/files/` + `api/v4/projects/${projectID}/repository/files/` + encodeURIComponent(source) + (view_type ? `/${view_type}` : '') + (branch ? `?ref=${branch}` : '') diff --git a/src/global/manifest/tools/uri.mjs b/src/global/manifest/tools/uri.mjs index e06d7565..5276ed9b 100644 --- a/src/global/manifest/tools/uri.mjs +++ b/src/global/manifest/tools/uri.mjs @@ -1,7 +1,9 @@ import gitlabDriver from '../../gitlab/driver.mjs'; +import bitbucketDriver from '../../bitbucket/driver.mjs'; export default function(config) { const gitlab = new gitlabDriver(config); + const bitbucket = new bitbucketDriver(config); this.isURL= (url) => { // eslint-disable-next-line no-useless-escape return url && url.match(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.?[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/); @@ -23,10 +25,10 @@ export default function(config) { throw `Error in base URI ${uri}! Base URI is empty.`; } const protocol = (new URL(baseURI)).protocol; - if (protocol === 'gitlab:') { + if (protocol === 'gitlab:' || protocol === 'bitbucket:') { const segments = baseURI.split('@'); if (segments.length !== 2) { - // Не указаны идентификатор проекта и бранч GitLab + // Не найден разделитель репозитория+ветка от файла throw `Error in URI ${baseURI}! Not found divider '@'`; } const basePathURL = new URL(`/${segments[1]}`, 'http://nop.none'); @@ -49,16 +51,14 @@ export default function(config) { if (url.protocol === 'gitlab:') { let segments = url.pathname.split('@'); if (segments.length !== 2) { - // Не указаны идентификатор проекта и бранч GitLab + // Не найден разделитель проекта+бранч от файла GitLab // eslint-disable-next-line no-debugger - debugger; throw `Error in URI ${uri}! Not found divider '@'`; } else { let gilab_params = segments[0].split(':'); if (gilab_params.length !== 2) { // Неверно указаны идентификатор проекта и бранч GitLab // eslint-disable-next-line no-debugger - debugger; throw `Error in URI ${uri}! Incorrect project id and branch`; } @@ -73,6 +73,32 @@ export default function(config) { ) }; } + } else if (url.protocol === 'bitbucket:') { + let segments = url.pathname.split('@'); + if (segments.length !== 2) { + // Не найден разделитель проекта+репозиторий+бранч от файла BitBucket + // eslint-disable-next-line no-debugger + throw `Error in URI ${uri}! Not found divider '@'`; + } else { + let bitbucket_params = segments[0].split(':'); + if (bitbucket_params.length !== 3) { + // Не верно указаны идентификаторы проекта, репозитория и бранча BitBucket + // eslint-disable-next-line no-debugger + throw `Error in URI ${uri}! Incorrect project id, repository id and branch`; + } + + result = { + type: 'bitbucket', + projectID: bitbucket_params[0], + repositoryID: bitbucket_params[1], + url: bitbucket.makeFileURI( + bitbucket_params[0], // Project ID + bitbucket_params[1], // Repository ID + segments[1], // Путь к файлу + bitbucket_params[2] // Бранч + ) + }; + } // В ином случае считаем, что ничего делать не нужно } else { result = { @@ -84,7 +110,6 @@ export default function(config) { // Если возникла ошибка, считаем путь относительным if (!baseURI) { // eslint-disable-next-line no-debugger - debugger; throw `Error in base URI ${uri}! Base URI is empty.`; } result = this.makeURL(baseURI);