├── .browserslistrc ├── .dockerignore ├── .editorconfig ├── .eslintignore ├── .eslintrc.json ├── .github └── workflows │ └── build.yml ├── .gitignore ├── CODEOWNERS ├── CODEOWNERS.EN.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── NOTICE ├── README.EN.md ├── README.md ├── babel-jest.config.js ├── babel.config.js ├── config.d.ts ├── distrib ├── idea │ ├── IDEAPlugin-4.2.0.zip │ └── README.md └── vscode │ ├── README.md │ └── dochub-0.1.6.vsix ├── docker-compose.yaml ├── example.env ├── jest.config.js ├── jest.setup.js ├── oidc-settings.js ├── package-lock.json ├── package.json ├── pics ├── decentralized.png ├── ecosystem.png ├── facade.png ├── gitoauth.png ├── inc_arch.png ├── interface.png ├── personal_token.png ├── problems.png └── validators.png ├── plugins.json ├── plugins ├── bpmnjs │ ├── components │ │ └── bpmnjs │ │ │ ├── BaseMixin.js │ │ │ ├── Modeler.vue │ │ │ ├── Viewer.vue │ │ │ └── index.vue │ ├── index.js │ ├── package-lock.json │ ├── package.json │ └── resource │ │ └── empty.bpmn ├── charts │ ├── components │ │ ├── ChartMixin.js │ │ ├── bar │ │ │ └── BarChart.vue │ │ ├── bubble │ │ │ └── BubbleChart.vue │ │ ├── doughnut │ │ │ └── DoughnutChart.vue │ │ ├── line │ │ │ └── LineChart.vue │ │ ├── pie │ │ │ └── PieChart.vue │ │ ├── polararea │ │ │ └── PolarArea.vue │ │ ├── radar │ │ │ └── RadarChart.vue │ │ └── scatter │ │ │ └── ScatterChart.vue │ ├── index.js │ └── package.json ├── devtool │ ├── components │ │ ├── CodeComponent.vue │ │ ├── DevTool.vue │ │ ├── ResponseComponent.vue │ │ └── jsonata.js │ ├── index.js │ └── package.json ├── drawio │ ├── components │ │ └── DrawIODocument.vue │ ├── index.js │ └── package.json ├── html │ ├── components │ │ └── HTMLDocument.vue │ ├── index.js │ └── package.json ├── markaper │ ├── components │ │ ├── elements │ │ │ └── Content.vue │ │ ├── grid │ │ │ ├── Columns.vue │ │ │ ├── Grid.vue │ │ │ ├── Rows.vue │ │ │ └── Section.vue │ │ ├── select │ │ │ └── Select.vue │ │ └── tree │ │ │ ├── Tree.vue │ │ │ └── TreeItem.vue │ ├── helpers │ │ └── src.js │ ├── index.js │ ├── package.json │ ├── schema │ │ ├── grid.js │ │ ├── select.js │ │ ├── src.js │ │ ├── tree.js │ │ └── urlparams.js │ └── styles │ │ ├── markdown.css │ │ └── styles.js └── svg │ ├── components │ └── SVGDocument.vue │ ├── index.js │ └── package.json ├── public ├── documentation │ ├── arch │ │ ├── aspects.yaml │ │ ├── components │ │ │ ├── browser.yaml │ │ │ ├── examples │ │ │ │ ├── context.yaml │ │ │ │ ├── order.yaml │ │ │ │ ├── payment.yaml │ │ │ │ └── root.yaml │ │ │ ├── front.yaml │ │ │ ├── gitlab.yaml │ │ │ ├── plantuml.yaml │ │ │ ├── root.yaml │ │ │ ├── user.yaml │ │ │ └── web.yaml │ │ ├── contexts.yaml │ │ ├── forms.yaml │ │ ├── namespaces.yaml │ │ ├── root.yaml │ │ ├── rules.yaml │ │ └── technologies.yaml │ ├── dochub.yaml │ ├── docs │ │ ├── conception │ │ │ ├── archdistrib.puml │ │ │ ├── archeco.puml │ │ │ ├── archeco_proc.puml │ │ │ ├── archver.puml │ │ │ ├── facade.puml │ │ │ ├── introduction.md │ │ │ ├── mindmap.puml │ │ │ └── root.yaml │ │ ├── manual │ │ │ ├── aspects.md │ │ │ ├── backend │ │ │ │ └── api.yaml │ │ │ ├── components.md │ │ │ ├── config │ │ │ │ └── deployment.md │ │ │ ├── context_source.puml │ │ │ ├── contexts.md │ │ │ ├── datasets.md │ │ │ ├── docs │ │ │ │ ├── asyncapi.md │ │ │ │ ├── bpmn.md │ │ │ │ ├── charts.md │ │ │ │ ├── docs.md │ │ │ │ ├── examples │ │ │ │ │ ├── asyncapi.yaml │ │ │ │ │ ├── asyncapi_template.json │ │ │ │ │ ├── autors.yaml │ │ │ │ │ ├── bpmn.xml │ │ │ │ │ ├── cat.jpg │ │ │ │ │ ├── charts-bar.yaml │ │ │ │ │ ├── charts-bubble.yaml │ │ │ │ │ ├── charts-doughnut.yaml │ │ │ │ │ ├── charts-line.yaml │ │ │ │ │ ├── charts-pie.yaml │ │ │ │ │ ├── charts-polararea.yaml │ │ │ │ │ ├── charts-radar.yaml │ │ │ │ │ ├── charts-scatter.yaml │ │ │ │ │ ├── charts.yaml │ │ │ │ │ ├── contexts.jsonata │ │ │ │ │ ├── example.puml │ │ │ │ │ ├── example.yaml │ │ │ │ │ ├── ext-schema.yaml │ │ │ │ │ ├── inlinemeta.md │ │ │ │ │ ├── mermaid.mmd │ │ │ │ │ ├── openapi_template.json │ │ │ │ │ ├── pizza-collaboration.xml │ │ │ │ │ ├── sa-anim.yaml │ │ │ │ │ ├── sa-complex-hide-boundary.yaml │ │ │ │ │ ├── sa-complex-hide-leaves.yaml │ │ │ │ │ ├── sa-complex-hide-title.yaml │ │ │ │ │ ├── sa-complex.yaml │ │ │ │ │ ├── sa-gravity.yaml │ │ │ │ │ ├── sa-group.yaml │ │ │ │ │ ├── sa-query.jsonata │ │ │ │ │ ├── sa-symbol.yaml │ │ │ │ │ ├── showcases.jsonata │ │ │ │ │ ├── smartants_.yaml │ │ │ │ │ ├── table.yaml │ │ │ │ │ └── template.puml │ │ │ │ ├── images │ │ │ │ │ ├── cloud.png │ │ │ │ │ ├── component.png │ │ │ │ │ ├── system.png │ │ │ │ │ └── user.png │ │ │ │ ├── markdown.md │ │ │ │ ├── mermaid.md │ │ │ │ ├── network.md │ │ │ │ ├── plantuml.md │ │ │ │ ├── root.yaml │ │ │ │ ├── smartants.md │ │ │ │ ├── swagger.md │ │ │ │ ├── tables.md │ │ │ │ └── templates.md │ │ │ ├── entities │ │ │ │ ├── bstages.md │ │ │ │ ├── bundle.md │ │ │ │ ├── entities.md │ │ │ │ ├── images │ │ │ │ │ ├── id_errors.png │ │ │ │ │ ├── landspace.jpeg │ │ │ │ │ ├── menu-single.jpeg │ │ │ │ │ ├── menu-tree.jpeg │ │ │ │ │ ├── object_select.png │ │ │ │ │ ├── problems.png │ │ │ │ │ ├── select_inter.png │ │ │ │ │ ├── stages.jpg │ │ │ │ │ └── suggests.png │ │ │ │ ├── intro.md │ │ │ │ └── rules.md │ │ │ ├── functions │ │ │ │ ├── example.yaml │ │ │ │ ├── functions.md │ │ │ │ └── root.yaml │ │ │ ├── imports.md │ │ │ ├── inheritance.md │ │ │ ├── introduction.md │ │ │ ├── jsonata.md │ │ │ ├── plugins │ │ │ │ ├── drawio_intro.md │ │ │ │ ├── examples │ │ │ │ │ ├── example.html │ │ │ │ │ └── test.jsonata │ │ │ │ ├── interface.md │ │ │ │ ├── introduction.md │ │ │ │ ├── root.yaml │ │ │ │ ├── svg_inline.md │ │ │ │ └── templates │ │ │ │ │ ├── example.drawio │ │ │ │ │ └── test.svg │ │ │ ├── radar.md │ │ │ ├── root.yaml │ │ │ ├── rules │ │ │ │ ├── exceptions.md │ │ │ │ ├── exreason.md │ │ │ │ ├── root.yaml │ │ │ │ ├── rules.md │ │ │ │ ├── standard.md │ │ │ │ └── validators.md │ │ │ └── technologies.md │ │ ├── root.yaml │ │ └── sequence.puml │ ├── entities │ │ ├── extentions │ │ │ ├── entity.yaml │ │ │ └── templates │ │ │ │ └── people.md │ │ ├── interactions │ │ │ ├── entity.yaml │ │ │ └── templates │ │ │ │ ├── blank.puml │ │ │ │ ├── bpmn.xml │ │ │ │ └── tree.puml │ │ └── root.yaml │ └── root.yaml ├── favicon.ico ├── index.html ├── libs │ └── zopfli.min.js └── metamodel │ ├── dochub.yaml │ ├── dochub │ ├── entities │ │ ├── aspects │ │ │ ├── base.yaml │ │ │ ├── blank.yaml │ │ │ ├── components.yaml │ │ │ ├── contexts.yaml │ │ │ ├── docs.yaml │ │ │ ├── hierarchy.yaml │ │ │ ├── root.yaml │ │ │ ├── summary.yaml │ │ │ ├── templates │ │ │ │ ├── components.md │ │ │ │ ├── hierarchy.puml │ │ │ │ ├── summary.md │ │ │ │ └── tree.puml │ │ │ └── tree.yaml │ │ ├── components │ │ │ ├── base.yaml │ │ │ ├── blank.yaml │ │ │ ├── contexts.yaml │ │ │ ├── docs.yaml │ │ │ ├── hierarchy.yaml │ │ │ ├── index.yaml │ │ │ ├── root.yaml │ │ │ ├── summary.yaml │ │ │ ├── symbol.yaml │ │ │ ├── templates │ │ │ │ ├── hierarchy.puml │ │ │ │ ├── summary.md │ │ │ │ └── tree.puml │ │ │ └── tree.yaml │ │ ├── contexts │ │ │ ├── base.yaml │ │ │ ├── plantuml.yaml │ │ │ ├── root.yaml │ │ │ ├── smartants.yaml │ │ │ ├── templates │ │ │ │ ├── template.puml │ │ │ │ └── tree.puml │ │ │ └── tree.yaml │ │ ├── documents │ │ │ ├── base.yaml │ │ │ ├── blank.yaml │ │ │ └── root.yaml │ │ └── root.yaml │ ├── functions │ │ ├── root.yaml │ │ └── tools.yaml │ ├── root.yaml │ ├── rules │ │ ├── root.yaml │ │ └── validators.yaml │ └── samples │ │ ├── 01_components.yaml │ │ ├── 02_contexts.yaml │ │ ├── 03_documents.yaml │ │ ├── root.yaml │ │ └── test.puml │ ├── docs │ └── welcome.md │ └── root.yaml ├── src ├── assets │ ├── base.yaml │ ├── c4model_dsl.txt │ ├── fonts.css │ ├── libs │ │ ├── prism.js │ │ ├── smartants.js │ │ └── vue-split-panel.min.js │ ├── master-schema.yaml │ ├── plantuml_dsl.txt │ ├── sber_dsl.txt │ ├── sec_dsl.txt │ └── styles │ │ ├── asyncapi.min.css │ │ ├── base.css │ │ ├── main.css │ │ ├── material_icons.css │ │ ├── prism.css │ │ ├── swagger-ui.css │ │ ├── typography.css │ │ └── vuetify │ │ ├── v-application.css │ │ └── v-list-item.css ├── backend │ ├── controllers │ │ ├── core.mjs │ │ ├── entity.mjs │ │ ├── helpers.mjs │ │ ├── static.mjs │ │ └── storage.mjs │ ├── drivers │ │ └── redis.mjs │ ├── entities │ │ └── entities.mjs │ ├── helpers │ │ ├── bitbucket.mjs │ │ ├── datasets.mjs │ │ ├── env.mjs │ │ ├── events.mjs │ │ ├── gitlab.mjs │ │ ├── jwt.mjs │ │ ├── request.mjs │ │ ├── uri.mjs │ │ └── validators.mjs │ ├── main.mjs │ ├── middlewares │ │ ├── access.mjs │ │ ├── cluster.mjs │ │ └── compression.mjs │ ├── storage │ │ ├── cache.mjs │ │ └── manager.mjs │ └── utils │ │ ├── logger.mjs │ │ └── rules.mjs ├── building │ └── plugin-maker.js ├── frontend │ ├── auth │ │ └── oidc-client.js │ ├── bootstrap.js │ ├── components │ │ ├── Architecture │ │ │ ├── Aspect.vue │ │ │ ├── Component.vue │ │ │ ├── Context.vue │ │ │ ├── Document.vue │ │ │ └── tabs │ │ │ │ ├── Docs.vue │ │ │ │ ├── SrcLocations.vue │ │ │ │ └── TabContext.vue │ │ ├── Controls │ │ │ ├── DCLink.vue │ │ │ ├── Empty.vue │ │ │ ├── Spinner.vue │ │ │ ├── Tree.vue │ │ │ └── TreeItem.vue │ │ ├── Docs │ │ │ ├── DocAsyncApi.vue │ │ │ ├── DocContextMenu.vue │ │ │ ├── DocHubDoc.vue │ │ │ ├── DocHubObject.vue │ │ │ ├── DocMarkdown.vue │ │ │ ├── DocMermaid.vue │ │ │ ├── DocMixin.js │ │ │ ├── DocNetwork.vue │ │ │ ├── DocPlantUML.vue │ │ │ ├── DocSmartAnts.vue │ │ │ ├── DocSwagger.vue │ │ │ ├── DocTable.vue │ │ │ ├── SmartAntsBar.vue │ │ │ ├── enums │ │ │ │ └── doc-types.enum.js │ │ │ └── styles │ │ │ │ └── asyncapi.js │ │ ├── Entities │ │ │ ├── Entity.vue │ │ │ └── EntityUpload.js │ │ ├── JSONata │ │ │ ├── DevTool.vue │ │ │ ├── JSONResult.vue │ │ │ ├── JSONataEditor.vue │ │ │ └── JSONataErrorExplainer.vue │ │ ├── Layouts │ │ │ ├── Header.vue │ │ │ ├── HeaderLogo.vue │ │ │ └── Menu.vue │ │ ├── Main.vue │ │ ├── Problems │ │ │ ├── Problems.vue │ │ │ ├── mixin.js │ │ │ └── tabs │ │ │ │ ├── ProblemBlank.vue │ │ │ │ └── Validators.vue │ │ ├── Root.vue │ │ ├── Schema │ │ │ ├── DHSchema │ │ │ │ ├── DHSchema.vue │ │ │ │ ├── DHSchemaAnimationMixin.js │ │ │ │ ├── DHSchemaDebugNode.vue │ │ │ │ ├── DHSchemaExcalidrawMixin.js │ │ │ │ ├── DHSchemaInfo.vue │ │ │ │ ├── DHSchemaNode.vue │ │ │ │ ├── DHSchemaTrack.vue │ │ │ │ ├── preset.json │ │ │ │ ├── rounding.js │ │ │ │ ├── symbols │ │ │ │ │ ├── cloud.xml │ │ │ │ │ ├── component.xml │ │ │ │ │ ├── database.xml │ │ │ │ │ ├── system.xml │ │ │ │ │ └── user.xml │ │ │ │ └── test.json │ │ │ ├── PlantUML.vue │ │ │ ├── Schema.vue │ │ │ └── zoomAndPan.js │ │ ├── Techradar │ │ │ ├── LangFram.vue │ │ │ ├── Main.vue │ │ │ ├── Radar.vue │ │ │ └── Technology.vue │ │ ├── Tools │ │ │ ├── Anchor.vue │ │ │ ├── Image.vue │ │ │ └── Youtube.vue │ │ └── sso │ │ │ └── SSOError.vue │ ├── config.js │ ├── constants │ │ ├── errConstants.json │ │ └── validators.json │ ├── consts.js │ ├── entities │ │ └── entities.js │ ├── helpers │ │ ├── bitbucket.js │ │ ├── cache.ts │ │ ├── clipboard.js │ │ ├── datasets.js │ │ ├── download.js │ │ ├── env.ts │ │ ├── fullscreen.js │ │ ├── gitlab.js │ │ ├── href.js │ │ ├── html.js │ │ ├── http.js │ │ ├── misc.js │ │ ├── plantuml.js │ │ ├── requests.js │ │ ├── rules.js │ │ ├── strings.js │ │ └── uri.js │ ├── index.js │ ├── main.js │ ├── manifest │ │ ├── cache.js │ │ ├── manager.js │ │ └── query.js │ ├── mixins │ │ └── global.js │ ├── plugins │ │ ├── api.js │ │ └── plugins.js │ ├── router │ │ ├── index.js │ │ └── routes.js │ ├── shared │ │ └── ErrorBoundary │ │ │ ├── DefaultFallback.vue │ │ │ ├── ErrorBoundary.vue │ │ │ └── index.js │ ├── storage │ │ ├── gitlab.js │ │ └── indexedDB │ │ │ ├── cache │ │ │ ├── config.json │ │ │ └── index.ts │ │ │ ├── core │ │ │ ├── data.ts │ │ │ ├── idb.ts │ │ │ └── store.ts │ │ │ ├── helpers │ │ │ ├── Exception.ts │ │ │ └── util.ts │ │ │ ├── index.ts │ │ │ └── types │ │ │ └── idb.types.ts │ └── tools │ │ └── meta │ │ ├── import.js │ │ └── parser.js ├── global │ ├── bitbucket │ │ └── driver.mjs │ ├── compress │ │ └── compress.mjs │ ├── datasets │ │ ├── driver.mjs │ │ └── source.mjs │ ├── entities │ │ └── entities.mjs │ ├── gitlab │ │ └── driver.mjs │ ├── helpers │ │ ├── crc16.js │ │ ├── pattrent.mjs │ │ └── xmlparser.mjs │ ├── jsonata │ │ ├── driver.mjs │ │ ├── functions.mjs │ │ └── queries.mjs │ ├── manifest │ │ ├── parser.mjs │ │ ├── parser2.mjs │ │ ├── prototype.mjs │ │ ├── services │ │ │ └── cache.mjs │ │ └── tools │ │ │ ├── path.mjs │ │ │ └── uri.mjs │ └── rules │ │ └── validators.mjs ├── ide │ ├── idea │ │ ├── components │ │ │ └── Init.vue │ │ ├── gateway.ts │ │ └── papi.js │ ├── plugin.html │ └── vscode │ │ ├── index.ts │ │ ├── listener.ts │ │ └── pipe.ts └── shims-vue.d.ts ├── tests ├── default │ └── idbCacheData.json ├── global │ ├── __fixtures__ │ │ ├── dataset │ │ │ └── dataset.json │ │ ├── front.json │ │ ├── jsonata │ │ │ └── driver.json │ │ └── validators.json │ ├── __mocks__ │ │ ├── dataset │ │ │ └── dataset.json │ │ ├── jsonata │ │ │ └── driver.json │ │ ├── manifest.json │ │ ├── manifest │ │ │ ├── editedData.yaml │ │ │ ├── mergeData.yaml │ │ │ ├── parseEntityData.json │ │ │ ├── secondData.yaml │ │ │ └── singleData.yaml │ │ └── uri │ │ │ └── config.json │ ├── datasets │ │ └── dataset.test.js │ ├── helpers │ │ └── crc16.test.js │ ├── jsonata │ │ └── jsonata.test.js │ ├── parser │ │ ├── documentation-parser.test.js │ │ ├── single-parser.test.js │ │ └── uri.spec.ts │ ├── rules │ │ └── validator.test.js │ └── utils │ │ ├── SingleManifestTester.js │ │ ├── areSingleManifestTesterEqual.js │ │ ├── config.js │ │ ├── deepTypeTester.js │ │ └── testers.js ├── helpers │ └── types.ts └── indexedDB │ ├── cache.spec.ts │ ├── data.spec.ts │ ├── idb.spec.ts │ └── store.spec.ts ├── tsconfig.json ├── uppml.sh ├── vue.config.js └── vue.lib.js /.browserslistrc: -------------------------------------------------------------------------------- 1 | last 2 years -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | .gitlab-ci.yml 3 | Dockerfile 4 | docker-compose*.yaml 5 | node_modules 6 | dist 7 | .github 8 | pics 9 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{json,js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | { 2 | "ignorePatterns": [ "**/libs/*.js"], 3 | "rules": { 4 | } 5 | } -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build dochub 2 | on: 3 | push: 4 | tags: 5 | - v* 6 | 7 | jobs: 8 | buildx: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | - name: Get git tag 13 | id: vars 14 | run: echo ::set-output name=tag::${GITHUB_REF#refs/*/} 15 | 16 | - id: buildx 17 | uses: docker/setup-buildx-action@v1 18 | with: 19 | config-inline: | 20 | [registry."docker.io"] 21 | mirrors = ["mirror.gcr.io"] 22 | - name: Login to ghrc.io 23 | uses: docker/login-action@v1 24 | with: 25 | registry: ghcr.io 26 | username: ${{ github.actor }} 27 | password: ${{ secrets.GITHUB_TOKEN }} 28 | - name: Build and push 29 | id: docker_build 30 | uses: docker/build-push-action@v2 31 | with: 32 | push: true 33 | target: nginx 34 | tags: "ghcr.io/rabotaru/dochub:${{ steps.vars.outputs.tag }}" 35 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /cache 4 | /dist 5 | /vscode-dist 6 | /certs 7 | /gitlab 8 | /plugins 9 | /src/hidden 10 | /cache 11 | /public/temp 12 | 13 | ./plugins.json 14 | 15 | /public/workspace/* 16 | 17 | # local env files 18 | *.env* 19 | !example.env 20 | 21 | # local bugs log 22 | bugs.bug 23 | 24 | # Log files 25 | npm-debug.log* 26 | yarn-debug.log* 27 | yarn-error.log* 28 | 29 | # Editor directories and files 30 | .idea 31 | .vscode 32 | *.suo 33 | *.ntvs* 34 | *.njsproj 35 | *.sln 36 | *.sw? 37 | 38 | # Lock files 39 | # Вызвало сбой сборки докера 40 | # пока вернем до прихода DevOps 41 | # package-lock.json* -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | Создатель @rpiontik 2 | Идеи и методология @rpiontik 3 | Кодовая база проекта @rpiontik, за исключением: 4 | * Dockerilfe @zhilyaev 5 | * docker-compose.yaml @zhilyaev -------------------------------------------------------------------------------- /CODEOWNERS.EN.md: -------------------------------------------------------------------------------- 1 | Creator @rpiontik 2 | Ideas and methodology @rpiontik 3 | Project codebase @rpiontik except for: 4 | * Dockerilfe @zhilyaev 5 | * docker-compose.yaml @zhilyaev -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contributing Guidelines 2 | 3 | The Dochub project accepts contributions via GitHub pull requests. 4 | This document outlines the process to help get your contribution accepted. 5 | 6 | 7 | ## Versioning 8 | 9 | We use [semver](https://semver.org/) with pre-release as know release candidate (rc). 10 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax = docker/dockerfile:1.3 2 | ARG NODE_VERSION=20 3 | 4 | 5 | 6 | FROM node:${NODE_VERSION}-alpine AS deps 7 | WORKDIR /var/www 8 | COPY package.json package-lock.json ./ 9 | COPY plugins ./plugins/ 10 | # RUN --mount=type=cache,target=/root/.npm npm install 11 | RUN npm install 12 | 13 | 14 | 15 | FROM node:${NODE_VERSION}-alpine AS builder 16 | WORKDIR /var/www 17 | COPY --from=deps /var/www . 18 | COPY . . 19 | COPY --from=deps /var/www/plugins ./plugins/ 20 | ENV NODE_ENV=production 21 | # RUN --mount=type=cache,target=./node_modules/.cache npm run build 22 | RUN npm run build 23 | CMD ["npm", "run", "serve"] 24 | EXPOSE 8080 25 | 26 | 27 | 28 | 29 | 30 | FROM ghcr.io/rabotaru/dochub/nginx:v0.0.3 as nginx 31 | COPY --chown=101 --from=builder /var/www/dist /usr/share/nginx/html 32 | 33 | 34 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | ========================================================================= 2 | == NOTICE file for use with the Apache License, Version 2.0 == 3 | ========================================================================= 4 | 5 | DocHub 6 | 7 | Copyright (C) 2021 owner Roman Piontik R.Piontik@mail.ru 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this product except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | In any derivative products, you must retain the information of 16 | owner of the original code and provide clear attribution to the project 17 | 18 | https://dochub.info 19 | 20 | The use of this product or its derivatives for any purpose cannot be a secret. 21 | 22 | Unless required by applicable law or agreed to in writing, software 23 | distributed under the License is distributed on an "AS IS" BASIS, 24 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 25 | See the License for the specific language governing permissions and 26 | limitations under the License. 27 | -------------------------------------------------------------------------------- /babel-jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | ['@babel/preset-typescript', { 'onlyRemoveTypeImports': true }], 4 | '@vue/cli-plugin-babel/preset', 5 | '@babel/preset-env' 6 | ], 7 | plugins: [ 8 | '@babel/plugin-proposal-class-properties', 9 | '@babel/proposal-object-rest-spread', 10 | '@babel/transform-runtime', 11 | 'babel-plugin-transform-import-meta' 12 | ] 13 | }; 14 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | ['@babel/preset-typescript', { 'onlyRemoveTypeImports': true }], 4 | '@vue/cli-plugin-babel/preset', 5 | '@babel/preset-env' 6 | ], 7 | plugins: [ 8 | '@babel/plugin-proposal-class-properties', 9 | '@babel/proposal-object-rest-spread' 10 | ] 11 | }; 12 | -------------------------------------------------------------------------------- /distrib/idea/IDEAPlugin-4.2.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocHubTeam/DocHub/1c8e993343a6be72498c19e16a21c5dfd2b1079b/distrib/idea/IDEAPlugin-4.2.0.zip -------------------------------------------------------------------------------- /distrib/idea/README.md: -------------------------------------------------------------------------------- 1 | # В этой папке находится актуальная версия плагина для IDEA -------------------------------------------------------------------------------- /distrib/vscode/README.md: -------------------------------------------------------------------------------- 1 | # В этой папке находится актуальная версия плагина для VSCode -------------------------------------------------------------------------------- /distrib/vscode/dochub-0.1.6.vsix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocHubTeam/DocHub/1c8e993343a6be72498c19e16a21c5dfd2b1079b/distrib/vscode/dochub-0.1.6.vsix -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | 3 | services: 4 | nginx: 5 | container_name: dochub 6 | image: dochub 7 | build: 8 | context: . 9 | dockerfile: Dockerfile 10 | target: nginx 11 | # Setup variables however you want 12 | # environment: 13 | # VUE_APP_PLANTUML_SERVER: localhost:8079/svg/ 14 | env_file: 15 | - .env 16 | ports: 17 | - "8080:8080" 18 | 19 | plantuml: 20 | image: seaf/plantuml-server:jetty 21 | container_name: plantuml 22 | ports: 23 | - "8079:8080" -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'testEnvironment': 'jest-environment-jsdom', 3 | setupFiles: [ 4 | 'fake-indexeddb/auto', 5 | 'dotenv/config' 6 | ], 7 | setupFilesAfterEnv: [ 8 | '/jest.setup.js' 9 | ], 10 | transform: { 11 | '^.+\\.js$': ['babel-jest', { configFile: './babel-jest.config.js' }], 12 | '^.+\\.mjs$': ['babel-jest', { configFile: './babel-jest.config.js' }], 13 | '^.+\\.ts$': 'babel-jest' 14 | }, 15 | transformIgnorePatterns: [ 16 | '/node_modules/' 17 | ], 18 | moduleDirectories: [ 19 | 'node_modules', 20 | 'src' 21 | ], 22 | moduleNameMapper: { 23 | uuid: require.resolve('uuid'), 24 | '^@front/(.*)': '/src/frontend/$1', 25 | '^@global/(.*)': '/src/global/$1', 26 | '^@back/(.*)': '/src/backend/$1' 27 | }, 28 | moduleFileExtensions: [ 29 | 'js', 30 | 'ts', 31 | 'tsx', 32 | 'vue' 33 | ], 34 | verbose: true 35 | }; 36 | -------------------------------------------------------------------------------- /jest.setup.js: -------------------------------------------------------------------------------- 1 | global.console = { 2 | ...console, 3 | log: jest.fn(), 4 | debug: jest.fn(), 5 | info: jest.fn(), 6 | warn: jest.fn(), 7 | // error: jest.fn(), 8 | }; 9 | -------------------------------------------------------------------------------- /oidc-settings.js: -------------------------------------------------------------------------------- 1 | import {Log, UserManager} from 'oidc-client-ts'; 2 | 3 | Log.setLogger(console); 4 | Log.setLevel(Log.ERROR); 5 | 6 | const url = window.location.origin; 7 | 8 | export const settings = { 9 | authority: process.env.VUE_APP_DOCHUB_AUTHORITY_SERVER, 10 | client_id: process.env.VUE_APP_DOCHUB_AUTHORITY_CLIENT_ID, 11 | redirect_uri: new URL('/login', url), 12 | post_logout_redirect_uri: new URL('/logout', url), 13 | response_type: 'code', 14 | scope: 'openid', 15 | response_mode: 'fragment', 16 | automaticSilentRenew: true 17 | }; 18 | 19 | export { 20 | Log, 21 | UserManager 22 | }; 23 | -------------------------------------------------------------------------------- /pics/decentralized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocHubTeam/DocHub/1c8e993343a6be72498c19e16a21c5dfd2b1079b/pics/decentralized.png -------------------------------------------------------------------------------- /pics/ecosystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocHubTeam/DocHub/1c8e993343a6be72498c19e16a21c5dfd2b1079b/pics/ecosystem.png -------------------------------------------------------------------------------- /pics/facade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocHubTeam/DocHub/1c8e993343a6be72498c19e16a21c5dfd2b1079b/pics/facade.png -------------------------------------------------------------------------------- /pics/gitoauth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocHubTeam/DocHub/1c8e993343a6be72498c19e16a21c5dfd2b1079b/pics/gitoauth.png -------------------------------------------------------------------------------- /pics/inc_arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocHubTeam/DocHub/1c8e993343a6be72498c19e16a21c5dfd2b1079b/pics/inc_arch.png -------------------------------------------------------------------------------- /pics/interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocHubTeam/DocHub/1c8e993343a6be72498c19e16a21c5dfd2b1079b/pics/interface.png -------------------------------------------------------------------------------- /pics/personal_token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocHubTeam/DocHub/1c8e993343a6be72498c19e16a21c5dfd2b1079b/pics/personal_token.png -------------------------------------------------------------------------------- /pics/problems.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocHubTeam/DocHub/1c8e993343a6be72498c19e16a21c5dfd2b1079b/pics/problems.png -------------------------------------------------------------------------------- /pics/validators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocHubTeam/DocHub/1c8e993343a6be72498c19e16a21c5dfd2b1079b/pics/validators.png -------------------------------------------------------------------------------- /plugins.json: -------------------------------------------------------------------------------- 1 | { 2 | "inbuilt": [ 3 | "plugins/html", 4 | "plugins/markaper", 5 | "plugins/charts", 6 | "plugins/devtool", 7 | "plugins/svg", 8 | "plugins/bpmnjs", 9 | "plugins/drawio" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /plugins/bpmnjs/components/bpmnjs/BaseMixin.js: -------------------------------------------------------------------------------- 1 | 2 | export default { 3 | props: { 4 | // Требуем обязательно передавать профайл документа 5 | profile: { 6 | type: Object, 7 | required: true 8 | }, 9 | // Требуем обязательно передавать функцию получения контента 10 | getContent: { 11 | type: Function, 12 | required: true 13 | }, 14 | // Получаем функцию сохранения контента если есть 15 | putContent: { 16 | type: Function, 17 | default: null, 18 | required: false 19 | }, 20 | // Содержимое документа 21 | value: String 22 | }, 23 | methods: { 24 | // Методы для реализации в компонентах 25 | // init() { }, 26 | // applyContent(content) { }, 27 | 28 | // Регистрация ошибки 29 | registerError(error) { 30 | this.errors.push(error); 31 | }, 32 | // Регистрация предупреждений 33 | registerWarning(warning) { 34 | this.warnings.push(warning); 35 | } 36 | }, 37 | watch: { 38 | value(value) { 39 | this.applyContent(value); 40 | } 41 | }, 42 | mounted() { 43 | this.init(); 44 | this.applyContent(this.value); 45 | }, 46 | data() { 47 | return { 48 | errors: [], 49 | warnings: [], 50 | data: null 51 | }; 52 | } 53 | }; 54 | -------------------------------------------------------------------------------- /plugins/bpmnjs/index.js: -------------------------------------------------------------------------------- 1 | import 'bpmn-js/dist/assets/diagram-js.css'; 2 | import 'bpmn-js/dist/assets/bpmn-js.css'; 3 | import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css'; 4 | 5 | import bpmnjs from './components/bpmnjs/index.vue'; 6 | 7 | DocHub.documents.register('bpmnjs', bpmnjs); 8 | -------------------------------------------------------------------------------- /plugins/bpmnjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bpmnjs", 3 | "version": "1.0.0", 4 | "description": "Редактор BPMN диаграмм", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [ 10 | "bpmnjs" 11 | ], 12 | "author": "R.Piontik", 13 | "license": "Apache-2.0", 14 | "dependencies": { 15 | "bpmn-js": "^17.6.4" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /plugins/bpmnjs/resource/empty.bpmn: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /plugins/charts/components/bar/BarChart.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 53 | -------------------------------------------------------------------------------- /plugins/charts/components/bubble/BubbleChart.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 53 | -------------------------------------------------------------------------------- /plugins/charts/components/doughnut/DoughnutChart.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 51 | -------------------------------------------------------------------------------- /plugins/charts/components/line/LineChart.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 63 | -------------------------------------------------------------------------------- /plugins/charts/components/pie/PieChart.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 51 | -------------------------------------------------------------------------------- /plugins/charts/components/polararea/PolarArea.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 59 | -------------------------------------------------------------------------------- /plugins/charts/components/radar/RadarChart.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 69 | -------------------------------------------------------------------------------- /plugins/charts/components/scatter/ScatterChart.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 64 | -------------------------------------------------------------------------------- /plugins/charts/index.js: -------------------------------------------------------------------------------- 1 | import radar from './components/radar/RadarChart.vue'; 2 | import bar from './components/bar/BarChart.vue'; 3 | import bubble from './components/bubble/BubbleChart.vue'; 4 | import doughnut from './components/doughnut/DoughnutChart.vue'; 5 | import line from './components/line/LineChart.vue'; 6 | import pie from './components/pie/PieChart.vue'; 7 | import polararea from './components/polararea/PolarArea.vue'; 8 | import scatter from './components/scatter/ScatterChart.vue'; 9 | 10 | DocHub.documents.register('chart-radar', radar); 11 | DocHub.documents.register('chart-bar', bar); 12 | DocHub.documents.register('chart-bubble', bubble); 13 | DocHub.documents.register('chart-doughnut', doughnut); 14 | DocHub.documents.register('chart-line', line); 15 | DocHub.documents.register('chart-pie', pie); 16 | DocHub.documents.register('chart-polararea', polararea); 17 | DocHub.documents.register('chart-scatter', scatter); 18 | -------------------------------------------------------------------------------- /plugins/charts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dochub-plugin-charts", 3 | "version": "1.0.0", 4 | "description": "Chart.js (vue-chartjs) for DocHub", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "V.Markin", 10 | "license": "Apache-2.0", 11 | "dependencies": { 12 | "vue-chartjs": "4.1.2", 13 | "chart.js": "3.9.1", 14 | "chartjs-color": "2.4.1" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /plugins/devtool/components/CodeComponent.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 59 | 60 | 70 | -------------------------------------------------------------------------------- /plugins/devtool/components/ResponseComponent.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 42 | 43 | 51 | -------------------------------------------------------------------------------- /plugins/devtool/index.js: -------------------------------------------------------------------------------- 1 | import devtool from './components/DevTool.vue'; 2 | 3 | DocHub.documents.register('devtool', devtool); 4 | -------------------------------------------------------------------------------- /plugins/devtool/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dochub-plugin-devtool", 3 | "version": "1.0.0", 4 | "description": "DevTool New", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "A. Trubnikov", 10 | "license": "MIT", 11 | "dependencies": { 12 | "codemirror": "5", 13 | "core-js": "^3.8.3", 14 | "vue-codemirror": "4", 15 | "vue-json-viewer": "^2.2.22" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /plugins/drawio/index.js: -------------------------------------------------------------------------------- 1 | import drawio from './components/DrawIODocument.vue'; 2 | 3 | DocHub.documents.register('drawio', drawio); 4 | -------------------------------------------------------------------------------- /plugins/drawio/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dochub-plugin-drawio", 3 | "version": "1.0.0", 4 | "description": "Drawio document with templating support", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "I.Ermolin", 10 | "license": "MIT", 11 | "dependencies": { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /plugins/html/index.js: -------------------------------------------------------------------------------- 1 | import doc from './components/HTMLDocument.vue'; 2 | 3 | DocHub.documents.register('html', doc); 4 | -------------------------------------------------------------------------------- /plugins/html/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dochub-plugin-html", 3 | "version": "1.0.0", 4 | "description": "HTML document", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "R.Piontik", 10 | "license": "MIT", 11 | "dependencies": { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /plugins/markaper/components/elements/Content.vue: -------------------------------------------------------------------------------- 1 |