├── .DS_Store
├── .gitignore
├── .python-version
├── README.md
├── lerna.json
├── nestx.code-workspace
├── package.json
└── packages
├── .DS_Store
├── clients
├── .DS_Store
├── nest-angular
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .prettierignore
│ ├── .prettierrc
│ ├── .stylelintrc
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── settings.json
│ ├── README.md
│ ├── angular.json
│ ├── asbc.json
│ ├── build.copy.ts
│ ├── e2e
│ │ ├── app.e2e-spec.ts
│ │ ├── app.po.ts
│ │ └── tsconfig.e2e.json
│ ├── karma.conf.js
│ ├── package-lock.json
│ ├── package.json
│ ├── protractor.conf.js
│ ├── proxy.conf.json
│ ├── scripts
│ │ └── color-less.js
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.module.ts
│ │ │ ├── core
│ │ │ │ ├── README.md
│ │ │ │ ├── core.module.ts
│ │ │ │ ├── i18n
│ │ │ │ │ ├── i18n.service.spec.ts
│ │ │ │ │ └── i18n.service.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── module-import-guard.ts
│ │ │ │ ├── net
│ │ │ │ │ └── default.interceptor.ts
│ │ │ │ └── startup
│ │ │ │ │ └── startup.service.ts
│ │ │ ├── custom.form.factory.ts
│ │ │ ├── delon.module.ts
│ │ │ ├── layout
│ │ │ │ ├── default
│ │ │ │ │ ├── default.component.html
│ │ │ │ │ ├── default.component.ts
│ │ │ │ │ ├── header
│ │ │ │ │ │ ├── components
│ │ │ │ │ │ │ ├── fullscreen.component.ts
│ │ │ │ │ │ │ ├── i18n.component.ts
│ │ │ │ │ │ │ ├── icon.component.ts
│ │ │ │ │ │ │ ├── notify.component.ts
│ │ │ │ │ │ │ ├── search.component.ts
│ │ │ │ │ │ │ ├── storage.component.ts
│ │ │ │ │ │ │ ├── task.component.ts
│ │ │ │ │ │ │ └── user.component.ts
│ │ │ │ │ │ ├── header.component.html
│ │ │ │ │ │ ├── header.component.ts
│ │ │ │ │ │ └── index.md
│ │ │ │ │ ├── setting-drawer
│ │ │ │ │ │ ├── setting-drawer-item.component.html
│ │ │ │ │ │ ├── setting-drawer-item.component.ts
│ │ │ │ │ │ ├── setting-drawer.component.html
│ │ │ │ │ │ └── setting-drawer.component.ts
│ │ │ │ │ └── sidebar
│ │ │ │ │ │ ├── sidebar.component.html
│ │ │ │ │ │ └── sidebar.component.ts
│ │ │ │ ├── fullscreen
│ │ │ │ │ ├── fullscreen.component.html
│ │ │ │ │ └── fullscreen.component.ts
│ │ │ │ ├── layout.module.ts
│ │ │ │ └── passport
│ │ │ │ │ ├── passport.component.html
│ │ │ │ │ ├── passport.component.less
│ │ │ │ │ └── passport.component.ts
│ │ │ ├── pages
│ │ │ │ ├── cms
│ │ │ │ │ ├── articles
│ │ │ │ │ │ ├── articles.html
│ │ │ │ │ │ └── articles.ts
│ │ │ │ │ ├── categories
│ │ │ │ │ │ ├── categories.html
│ │ │ │ │ │ └── categories.ts
│ │ │ │ │ ├── cms.module.ts
│ │ │ │ │ ├── custom
│ │ │ │ │ │ ├── custom.html
│ │ │ │ │ │ └── custom.ts
│ │ │ │ │ ├── media
│ │ │ │ │ │ ├── media.html
│ │ │ │ │ │ └── media.ts
│ │ │ │ │ ├── pages
│ │ │ │ │ │ ├── pages.html
│ │ │ │ │ │ └── pages.ts
│ │ │ │ │ └── widgets
│ │ │ │ │ │ ├── widgets.html
│ │ │ │ │ │ └── widgets.ts
│ │ │ │ ├── home
│ │ │ │ │ ├── home.component.html
│ │ │ │ │ └── home.component.ts
│ │ │ │ ├── login
│ │ │ │ │ ├── login.component.html
│ │ │ │ │ ├── login.component.less
│ │ │ │ │ └── login.component.ts
│ │ │ │ └── system
│ │ │ │ │ ├── accounts
│ │ │ │ │ ├── accounts.html
│ │ │ │ │ └── accounts.ts
│ │ │ │ │ ├── dicts
│ │ │ │ │ ├── dicts.html
│ │ │ │ │ └── dicts.ts
│ │ │ │ │ ├── logs
│ │ │ │ │ ├── logs.html
│ │ │ │ │ └── logs.ts
│ │ │ │ │ ├── menus
│ │ │ │ │ ├── menus.html
│ │ │ │ │ └── menus.ts
│ │ │ │ │ ├── permission
│ │ │ │ │ ├── permission.html
│ │ │ │ │ └── permission.ts
│ │ │ │ │ ├── roles
│ │ │ │ │ ├── roles.html
│ │ │ │ │ └── roles.ts
│ │ │ │ │ ├── settings
│ │ │ │ │ ├── settings.html
│ │ │ │ │ └── settings.ts
│ │ │ │ │ └── system.module.ts
│ │ │ ├── routes
│ │ │ │ ├── callback
│ │ │ │ │ └── callback.component.ts
│ │ │ │ ├── dashboard
│ │ │ │ │ ├── analysis
│ │ │ │ │ │ ├── analysis.component.html
│ │ │ │ │ │ ├── analysis.component.less
│ │ │ │ │ │ └── analysis.component.ts
│ │ │ │ │ └── default
│ │ │ │ │ │ ├── dashboard.component.html
│ │ │ │ │ │ └── dashboard.component.ts
│ │ │ │ ├── exception
│ │ │ │ │ ├── 403.component.ts
│ │ │ │ │ ├── 404.component.ts
│ │ │ │ │ └── 500.component.ts
│ │ │ │ ├── passport
│ │ │ │ │ ├── lock
│ │ │ │ │ │ ├── lock.component.html
│ │ │ │ │ │ ├── lock.component.spec.ts
│ │ │ │ │ │ └── lock.component.ts
│ │ │ │ │ ├── login
│ │ │ │ │ │ ├── login.component.html
│ │ │ │ │ │ ├── login.component.less
│ │ │ │ │ │ └── login.component.ts
│ │ │ │ │ ├── register-result
│ │ │ │ │ │ ├── register-result.component.html
│ │ │ │ │ │ ├── register-result.component.less
│ │ │ │ │ │ └── register-result.component.ts
│ │ │ │ │ └── register
│ │ │ │ │ │ ├── register.component.html
│ │ │ │ │ │ ├── register.component.less
│ │ │ │ │ │ └── register.component.ts
│ │ │ │ ├── routes-routing.module.ts
│ │ │ │ ├── routes.module.ts
│ │ │ │ └── widgets
│ │ │ │ │ ├── widgets-routing.module.ts
│ │ │ │ │ ├── widgets.module.ts
│ │ │ │ │ └── widgets
│ │ │ │ │ ├── widgets.component.html
│ │ │ │ │ ├── widgets.component.less
│ │ │ │ │ ├── widgets.component.spec.ts
│ │ │ │ │ └── widgets.component.ts
│ │ │ ├── services
│ │ │ │ ├── ajax.proxy.ts
│ │ │ │ ├── can.admin.provide.ts
│ │ │ │ ├── can.auth.provide.ts
│ │ │ │ ├── list.context.ts
│ │ │ │ ├── tree.service.ts
│ │ │ │ └── user.service.ts
│ │ │ └── shared
│ │ │ │ ├── README.md
│ │ │ │ ├── base
│ │ │ │ ├── base.component.ts
│ │ │ │ ├── base.detail.component.ts
│ │ │ │ ├── base.detail.html
│ │ │ │ ├── base.list.component.ts
│ │ │ │ ├── base.list.html
│ │ │ │ ├── base.selector.html
│ │ │ │ ├── base.selector.ts
│ │ │ │ ├── base.stand.component.ts
│ │ │ │ ├── base.stand.html
│ │ │ │ ├── base.tree.selector.html
│ │ │ │ ├── base.tree.selector.ts
│ │ │ │ ├── base.tree.table.html
│ │ │ │ ├── base.tree.table.ts
│ │ │ │ ├── transfer.selector.html
│ │ │ │ └── transfer.selector.ts
│ │ │ │ ├── components
│ │ │ │ └── editor
│ │ │ │ │ ├── editor.component.html
│ │ │ │ │ └── editor.component.ts
│ │ │ │ ├── json-schema
│ │ │ │ ├── index.md
│ │ │ │ ├── json-schema.module.ts
│ │ │ │ ├── util.ts
│ │ │ │ └── widgets
│ │ │ │ │ ├── avatar
│ │ │ │ │ └── avatar.widget.ts
│ │ │ │ │ ├── choices
│ │ │ │ │ ├── choices.widget.html
│ │ │ │ │ └── choices.widget.ts
│ │ │ │ │ ├── dict
│ │ │ │ │ └── dict.widget.ts
│ │ │ │ │ ├── editor
│ │ │ │ │ └── editor.widget.ts
│ │ │ │ │ ├── image
│ │ │ │ │ └── image.widget.ts
│ │ │ │ │ ├── list-box
│ │ │ │ │ └── list-box.ts
│ │ │ │ │ ├── search
│ │ │ │ │ └── search.widget.ts
│ │ │ │ │ ├── tabs
│ │ │ │ │ └── tabs.widget.ts
│ │ │ │ │ ├── textarea
│ │ │ │ │ └── textarea.widget.ts
│ │ │ │ │ ├── tinymce
│ │ │ │ │ ├── index.md
│ │ │ │ │ └── tinymce.widget.ts
│ │ │ │ │ ├── tree-select
│ │ │ │ │ └── tree-select.widget.ts
│ │ │ │ │ ├── tree
│ │ │ │ │ └── search.widget.ts
│ │ │ │ │ ├── ueditor
│ │ │ │ │ ├── index.md
│ │ │ │ │ └── ueditor.widget.ts
│ │ │ │ │ └── umeditor
│ │ │ │ │ └── umeditor.widget.ts
│ │ │ │ ├── shared.module.ts
│ │ │ │ └── utils
│ │ │ │ ├── index.ts
│ │ │ │ └── utils.ts
│ │ ├── appearances
│ │ │ └── appearance.module.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ ├── alain-default.less
│ │ │ ├── app-data.json
│ │ │ ├── demo.docx
│ │ │ ├── demo.pdf
│ │ │ ├── demo.pptx
│ │ │ ├── demo.xlsx
│ │ │ ├── i18n
│ │ │ │ ├── en.json
│ │ │ │ └── zh-CN.json
│ │ │ ├── iconsfont.json
│ │ │ ├── img
│ │ │ │ ├── 1.png
│ │ │ │ ├── 2.png
│ │ │ │ ├── 3.png
│ │ │ │ ├── 4.png
│ │ │ │ ├── 5.png
│ │ │ │ ├── 6.png
│ │ │ │ ├── avatar.jpg
│ │ │ │ ├── bg1.jpg
│ │ │ │ ├── bg10.jpg
│ │ │ │ ├── bg2.jpg
│ │ │ │ ├── bg3.jpg
│ │ │ │ ├── bg4.jpg
│ │ │ │ ├── bg5.jpg
│ │ │ │ ├── bg6.jpg
│ │ │ │ ├── bg7.jpg
│ │ │ │ ├── bg8.jpg
│ │ │ │ ├── bg9.jpg
│ │ │ │ ├── half-float-bg-1.jpg
│ │ │ │ ├── logo-color.svg
│ │ │ │ ├── logo-full--.svg
│ │ │ │ ├── logo-full.svg
│ │ │ │ ├── logo.svg
│ │ │ │ ├── typerx-color.revert.svg
│ │ │ │ ├── typerx-color.svg
│ │ │ │ ├── typerx-fullcolor.svg
│ │ │ │ ├── typerx-monochrome.svg
│ │ │ │ ├── typerx-white.svg
│ │ │ │ └── zorro.svg
│ │ │ ├── scripts
│ │ │ │ ├── appearances
│ │ │ │ │ ├── appearance.module.js
│ │ │ │ │ ├── appearance.module.js.map
│ │ │ │ │ ├── menu.appearance.js
│ │ │ │ │ └── menu.appearance.js.map
│ │ │ │ └── types
│ │ │ │ │ ├── types.js
│ │ │ │ │ └── types.js.map
│ │ │ └── umeditor
│ │ │ │ ├── dialogs
│ │ │ │ ├── emotion
│ │ │ │ │ ├── emotion.css
│ │ │ │ │ ├── emotion.js
│ │ │ │ │ └── images
│ │ │ │ │ │ ├── 0.gif
│ │ │ │ │ │ ├── bface.gif
│ │ │ │ │ │ ├── cface.gif
│ │ │ │ │ │ ├── fface.gif
│ │ │ │ │ │ ├── jxface2.gif
│ │ │ │ │ │ ├── neweditor-tab-bg.png
│ │ │ │ │ │ ├── tface.gif
│ │ │ │ │ │ ├── wface.gif
│ │ │ │ │ │ └── yface.gif
│ │ │ │ ├── formula
│ │ │ │ │ ├── formula.css
│ │ │ │ │ ├── formula.html
│ │ │ │ │ ├── formula.js
│ │ │ │ │ └── images
│ │ │ │ │ │ └── formula.png
│ │ │ │ ├── image
│ │ │ │ │ ├── image.css
│ │ │ │ │ ├── image.js
│ │ │ │ │ └── images
│ │ │ │ │ │ ├── close.png
│ │ │ │ │ │ ├── upload1.png
│ │ │ │ │ │ └── upload2.png
│ │ │ │ ├── link
│ │ │ │ │ └── link.js
│ │ │ │ ├── map
│ │ │ │ │ ├── map.html
│ │ │ │ │ └── map.js
│ │ │ │ └── video
│ │ │ │ │ ├── images
│ │ │ │ │ ├── center_focus.jpg
│ │ │ │ │ ├── left_focus.jpg
│ │ │ │ │ ├── none_focus.jpg
│ │ │ │ │ └── right_focus.jpg
│ │ │ │ │ ├── video.css
│ │ │ │ │ └── video.js
│ │ │ │ ├── index.html
│ │ │ │ ├── lang
│ │ │ │ ├── en
│ │ │ │ │ ├── en.js
│ │ │ │ │ └── images
│ │ │ │ │ │ ├── addimage.png
│ │ │ │ │ │ ├── alldeletebtnhoverskin.png
│ │ │ │ │ │ ├── alldeletebtnupskin.png
│ │ │ │ │ │ ├── background.png
│ │ │ │ │ │ ├── button.png
│ │ │ │ │ │ ├── copy.png
│ │ │ │ │ │ ├── deletedisable.png
│ │ │ │ │ │ ├── deleteenable.png
│ │ │ │ │ │ ├── imglabel.png
│ │ │ │ │ │ ├── listbackground.png
│ │ │ │ │ │ ├── localimage.png
│ │ │ │ │ │ ├── music.png
│ │ │ │ │ │ ├── rotateleftdisable.png
│ │ │ │ │ │ ├── rotateleftenable.png
│ │ │ │ │ │ ├── rotaterightdisable.png
│ │ │ │ │ │ ├── rotaterightenable.png
│ │ │ │ │ │ └── upload.png
│ │ │ │ └── zh-cn
│ │ │ │ │ ├── images
│ │ │ │ │ ├── copy.png
│ │ │ │ │ ├── imglabel.png
│ │ │ │ │ ├── localimage.png
│ │ │ │ │ ├── music.png
│ │ │ │ │ └── upload.png
│ │ │ │ │ └── zh-cn.js
│ │ │ │ ├── themes
│ │ │ │ └── default
│ │ │ │ │ ├── css
│ │ │ │ │ ├── umeditor.css
│ │ │ │ │ └── umeditor.min.css
│ │ │ │ │ └── images
│ │ │ │ │ ├── caret.png
│ │ │ │ │ ├── close.png
│ │ │ │ │ ├── icons.gif
│ │ │ │ │ ├── icons.png
│ │ │ │ │ ├── ok.gif
│ │ │ │ │ ├── pop-bg.png
│ │ │ │ │ ├── spacer.gif
│ │ │ │ │ └── videologo.gif
│ │ │ │ ├── third-party
│ │ │ │ ├── jquery.min.js
│ │ │ │ ├── mathquill
│ │ │ │ │ ├── font
│ │ │ │ │ │ ├── Symbola.eot
│ │ │ │ │ │ ├── Symbola.otf
│ │ │ │ │ │ ├── Symbola.svg
│ │ │ │ │ │ ├── Symbola.ttf
│ │ │ │ │ │ ├── Symbola.woff
│ │ │ │ │ │ └── stixgeneral-bundle
│ │ │ │ │ │ │ ├── STIXFontLicense2010.txt
│ │ │ │ │ │ │ ├── stixgeneral-webfont.eot
│ │ │ │ │ │ │ ├── stixgeneral-webfont.svg
│ │ │ │ │ │ │ ├── stixgeneral-webfont.ttf
│ │ │ │ │ │ │ ├── stixgeneral-webfont.woff
│ │ │ │ │ │ │ ├── stixgeneralbol-webfont.eot
│ │ │ │ │ │ │ ├── stixgeneralbol-webfont.svg
│ │ │ │ │ │ │ ├── stixgeneralbol-webfont.ttf
│ │ │ │ │ │ │ ├── stixgeneralbol-webfont.woff
│ │ │ │ │ │ │ ├── stixgeneralbolita-webfont.eot
│ │ │ │ │ │ │ ├── stixgeneralbolita-webfont.svg
│ │ │ │ │ │ │ ├── stixgeneralbolita-webfont.ttf
│ │ │ │ │ │ │ ├── stixgeneralbolita-webfont.woff
│ │ │ │ │ │ │ ├── stixgeneralitalic-webfont.eot
│ │ │ │ │ │ │ ├── stixgeneralitalic-webfont.svg
│ │ │ │ │ │ │ ├── stixgeneralitalic-webfont.ttf
│ │ │ │ │ │ │ └── stixgeneralitalic-webfont.woff
│ │ │ │ │ ├── mathquill.css
│ │ │ │ │ ├── mathquill.js
│ │ │ │ │ └── mathquill.min.js
│ │ │ │ └── template.min.js
│ │ │ │ ├── umeditor.config.js
│ │ │ │ ├── umeditor.js
│ │ │ │ └── umeditor.min.js
│ │ ├── environments
│ │ │ ├── environment.hmr.ts
│ │ │ ├── environment.prod.ts
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── generated
│ │ │ ├── .gitignore
│ │ │ ├── .openapi-generator-ignore
│ │ │ ├── .openapi-generator
│ │ │ │ └── VERSION
│ │ │ ├── README.md
│ │ │ ├── api.module.ts
│ │ │ ├── api
│ │ │ │ ├── api.ts
│ │ │ │ ├── app.service.ts
│ │ │ │ ├── auth.service.ts
│ │ │ │ ├── cms.service.ts
│ │ │ │ └── mock.service.ts
│ │ │ ├── configuration.ts
│ │ │ ├── encoder.ts
│ │ │ ├── git_push.sh
│ │ │ ├── index.ts
│ │ │ ├── model
│ │ │ │ ├── accessToken.ts
│ │ │ │ ├── articleRes.ts
│ │ │ │ ├── category.ts
│ │ │ │ ├── categoryRes.ts
│ │ │ │ ├── createArticleDto.ts
│ │ │ │ ├── createCategoryDto.ts
│ │ │ │ ├── createMediaDto.ts
│ │ │ │ ├── createPageReq.ts
│ │ │ │ ├── createPhotoDto.ts
│ │ │ │ ├── createWidgetDto.ts
│ │ │ │ ├── editArticleDto.ts
│ │ │ │ ├── editCategoryDto.ts
│ │ │ │ ├── editMediaDto.ts
│ │ │ │ ├── editPageReq.ts
│ │ │ │ ├── editPhotoDto.ts
│ │ │ │ ├── editWidgetDto.ts
│ │ │ │ ├── inlineResponse200.ts
│ │ │ │ ├── keyValue.ts
│ │ │ │ ├── loginReq.ts
│ │ │ │ ├── loginRes.ts
│ │ │ │ ├── media.ts
│ │ │ │ ├── mediaFile.ts
│ │ │ │ ├── mediaRes.ts
│ │ │ │ ├── models.ts
│ │ │ │ ├── pageRes.ts
│ │ │ │ ├── photo.ts
│ │ │ │ ├── photoRes.ts
│ │ │ │ ├── query.ts
│ │ │ │ ├── registerReq.ts
│ │ │ │ ├── resultListArticleRes.ts
│ │ │ │ ├── resultListCategoryRes.ts
│ │ │ │ ├── resultListMediaRes.ts
│ │ │ │ ├── resultListPageRes.ts
│ │ │ │ ├── resultListPhotoRes.ts
│ │ │ │ ├── resultListWidgetRes.ts
│ │ │ │ ├── settingsGroup.ts
│ │ │ │ ├── treeNode.ts
│ │ │ │ ├── uploadMultipleRes.ts
│ │ │ │ ├── uploadRes.ts
│ │ │ │ ├── widget.ts
│ │ │ │ └── widgetRes.ts
│ │ │ └── variables.ts
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── polyfills.ts
│ │ ├── style-icons-auto.ts
│ │ ├── style-icons.ts
│ │ ├── styles.less
│ │ ├── styles
│ │ │ ├── index.less
│ │ │ └── theme.less
│ │ ├── testing
│ │ │ └── common.spec.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.spec.json
│ │ ├── types
│ │ │ └── types.ts
│ │ └── typings.d.ts
│ ├── tsconfig.appearances.json
│ ├── tsconfig.json
│ ├── tslint.json
│ └── yarn.lock
└── nest-react
│ ├── .editorconfig
│ ├── .eslintignore
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .prettierignore
│ ├── .prettierrc
│ ├── .stylelintrc.json
│ ├── README.md
│ ├── config
│ ├── config.ts
│ ├── plugin.config.ts
│ └── router.config.ts
│ ├── jest-puppeteer.config.js
│ ├── jest.config.js
│ ├── jest.json
│ ├── jsconfig.json
│ ├── mock
│ ├── api.js
│ ├── chart.js
│ ├── geographic.js
│ ├── geographic
│ │ ├── city.json
│ │ └── province.json
│ ├── notices.js
│ ├── notices.ts
│ ├── profile.ts
│ ├── route.ts
│ ├── rule.js
│ └── user.ts
│ ├── package.json
│ ├── public
│ ├── favicon.png
│ └── icons
│ │ ├── icon-128x128.png
│ │ ├── icon-192x192.png
│ │ └── icon-512x512.png
│ ├── scripts
│ ├── generateMock.js
│ ├── getPrettierFiles.js
│ ├── lint-prettier.js
│ └── prettier.js
│ ├── src
│ ├── AppSettings.ts
│ ├── app.ts
│ ├── assets
│ │ └── logo.svg
│ ├── components
│ │ ├── ActiveChart
│ │ │ ├── index.js
│ │ │ └── index.less
│ │ ├── ArticleListContent
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ └── index.less
│ │ ├── Charts
│ │ │ ├── Bar
│ │ │ │ ├── index.d.ts
│ │ │ │ └── index.js
│ │ │ ├── ChartCard
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ └── index.less
│ │ │ ├── Field
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ └── index.less
│ │ │ ├── Gauge
│ │ │ │ ├── index.d.ts
│ │ │ │ └── index.js
│ │ │ ├── MiniArea
│ │ │ │ ├── index.d.ts
│ │ │ │ └── index.js
│ │ │ ├── MiniBar
│ │ │ │ ├── index.d.ts
│ │ │ │ └── index.js
│ │ │ ├── MiniProgress
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ └── index.less
│ │ │ ├── Pie
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ └── index.less
│ │ │ ├── Radar
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ └── index.less
│ │ │ ├── TagCloud
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ └── index.less
│ │ │ ├── TimelineChart
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ └── index.less
│ │ │ ├── WaterWave
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ └── index.less
│ │ │ ├── autoHeight.js
│ │ │ ├── bizcharts.d.ts
│ │ │ ├── bizcharts.js
│ │ │ ├── demo
│ │ │ │ ├── bar.md
│ │ │ │ ├── chart-card.md
│ │ │ │ ├── gauge.md
│ │ │ │ ├── mini-area.md
│ │ │ │ ├── mini-bar.md
│ │ │ │ ├── mini-pie.md
│ │ │ │ ├── mini-progress.md
│ │ │ │ ├── mix.md
│ │ │ │ ├── pie.md
│ │ │ │ ├── radar.md
│ │ │ │ ├── tag-cloud.md
│ │ │ │ ├── timeline-chart.md
│ │ │ │ └── waterwave.md
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ ├── index.less
│ │ │ └── index.md
│ │ ├── EditableLinkGroup
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ └── index.less
│ │ ├── GlobalHeader
│ │ │ ├── RightContent.tsx
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ │ ├── HeaderDropdown
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ │ ├── HeaderSearch
│ │ │ ├── demo
│ │ │ │ └── basic.md
│ │ │ ├── index.en-US.md
│ │ │ ├── index.less
│ │ │ ├── index.tsx
│ │ │ └── index.zh-CN.md
│ │ ├── IconFont
│ │ │ └── index.tsx
│ │ ├── NoticeIcon
│ │ │ ├── NoticeIconTab.d.ts
│ │ │ ├── NoticeList.js
│ │ │ ├── NoticeList.less
│ │ │ ├── demo
│ │ │ │ ├── basic.md
│ │ │ │ └── popover.md
│ │ │ ├── index.d.ts
│ │ │ ├── index.en-US.md
│ │ │ ├── index.js
│ │ │ ├── index.less
│ │ │ └── index.zh-CN.md
│ │ ├── PageHeader
│ │ │ ├── breadcrumb.d.ts
│ │ │ ├── breadcrumb.js
│ │ │ ├── demo
│ │ │ │ ├── image.md
│ │ │ │ ├── simple.md
│ │ │ │ ├── standard.md
│ │ │ │ └── structure.md
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ ├── index.less
│ │ │ ├── index.md
│ │ │ └── index.test.js
│ │ ├── PageHeaderWrapper
│ │ │ ├── GridContent.less
│ │ │ ├── GridContent.tsx
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ │ ├── PageLoading
│ │ │ └── index.tsx
│ │ ├── SelectLang
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ │ ├── SettingDrawer
│ │ │ ├── BlockCheckbox.tsx
│ │ │ ├── ThemeColor.less
│ │ │ ├── ThemeColor.tsx
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ │ ├── SiderMenu
│ │ │ ├── BaseMenu.tsx
│ │ │ ├── BaseMenuProps.ts
│ │ │ ├── MenuDataItem.ts
│ │ │ ├── SiderMenu.tsx
│ │ │ ├── SiderMenuProps.ts
│ │ │ ├── SiderMenuUtils.ts
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ │ ├── StandardFormRow
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ └── index.less
│ │ ├── StandardTable
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ └── index.less
│ │ ├── TopNavHeader
│ │ │ ├── index.less
│ │ │ └── index.tsx
│ │ └── _utils
│ │ │ ├── pathTools.test.ts
│ │ │ └── pathTools.ts
│ ├── defaultSettings.js
│ ├── generated
│ │ ├── .gitignore
│ │ ├── .openapi-generator-ignore
│ │ ├── .openapi-generator
│ │ │ └── VERSION
│ │ ├── api.ts
│ │ ├── base.ts
│ │ ├── configuration.ts
│ │ ├── git_push.sh
│ │ └── index.ts
│ ├── global.less
│ ├── global.tsx
│ ├── layouts
│ │ ├── BasicLayout.less
│ │ ├── BasicLayout.tsx
│ │ ├── BlankLayout.tsx
│ │ ├── Footer.tsx
│ │ ├── Header.less
│ │ ├── Header.tsx
│ │ ├── MenuContext.tsx
│ │ ├── UserLayout.less
│ │ └── UserLayout.tsx
│ ├── locales
│ │ ├── en-US.js
│ │ ├── en-US
│ │ │ ├── analysis.js
│ │ │ ├── component.js
│ │ │ ├── editor.js
│ │ │ ├── exception.js
│ │ │ ├── form.js
│ │ │ ├── globalHeader.js
│ │ │ ├── login.js
│ │ │ ├── menu.js
│ │ │ ├── monitor.js
│ │ │ ├── pwa.js
│ │ │ ├── result.js
│ │ │ ├── settingDrawer.js
│ │ │ └── settings.js
│ │ ├── pt-BR.js
│ │ ├── pt-BR
│ │ │ ├── analysis.js
│ │ │ ├── component.js
│ │ │ ├── editor.js
│ │ │ ├── exception.js
│ │ │ ├── form.js
│ │ │ ├── globalHeader.js
│ │ │ ├── login.js
│ │ │ ├── menu.js
│ │ │ ├── monitor.js
│ │ │ ├── pwa.js
│ │ │ ├── result.js
│ │ │ ├── settingDrawer.js
│ │ │ └── settings.js
│ │ ├── zh-CN.js
│ │ ├── zh-CN
│ │ │ ├── analysis.js
│ │ │ ├── component.js
│ │ │ ├── editor.js
│ │ │ ├── exception.js
│ │ │ ├── form.js
│ │ │ ├── globalHeader.js
│ │ │ ├── login.js
│ │ │ ├── menu.js
│ │ │ ├── monitor.js
│ │ │ ├── pwa.js
│ │ │ ├── result.js
│ │ │ ├── settingDrawer.js
│ │ │ └── settings.js
│ │ ├── zh-TW.js
│ │ └── zh-TW
│ │ │ ├── analysis.js
│ │ │ ├── component.js
│ │ │ ├── editor.js
│ │ │ ├── exception.js
│ │ │ ├── form.js
│ │ │ ├── globalHeader.js
│ │ │ ├── login.js
│ │ │ ├── menu.js
│ │ │ ├── monitor.js
│ │ │ ├── pwa.js
│ │ │ ├── result.js
│ │ │ ├── settingDrawer.js
│ │ │ └── settings.js
│ ├── manifest.json
│ ├── models
│ │ ├── connect.d.ts
│ │ ├── global.ts
│ │ ├── list.ts
│ │ ├── login.ts
│ │ ├── menu.ts
│ │ ├── project.ts
│ │ ├── setting.ts
│ │ └── user.ts
│ ├── pages
│ │ ├── 404.tsx
│ │ ├── Account
│ │ │ ├── Center
│ │ │ │ ├── Applications.tsx
│ │ │ │ ├── Articles.less
│ │ │ │ ├── Articles.tsx
│ │ │ │ ├── Center.less
│ │ │ │ ├── Center.tsx
│ │ │ │ └── Projects.tsx
│ │ │ └── Settings
│ │ │ │ ├── BaseView.js
│ │ │ │ ├── BaseView.less
│ │ │ │ ├── BindingView.js
│ │ │ │ ├── GeographicView.js
│ │ │ │ ├── GeographicView.less
│ │ │ │ ├── Info.js
│ │ │ │ ├── Info.less
│ │ │ │ ├── NotificationView.js
│ │ │ │ ├── PhoneView.js
│ │ │ │ ├── PhoneView.less
│ │ │ │ ├── SecurityView.js
│ │ │ │ └── models
│ │ │ │ └── geographic.js
│ │ ├── Authorized.tsx
│ │ ├── Dashboard
│ │ │ ├── Analysis.less
│ │ │ ├── Analysis.tsx
│ │ │ ├── IntroduceRow.tsx
│ │ │ ├── Monitor.less
│ │ │ ├── Monitor.tsx
│ │ │ ├── OfflineData.tsx
│ │ │ ├── ProportionSales.tsx
│ │ │ ├── SalesCard.tsx
│ │ │ ├── TopSearch.tsx
│ │ │ ├── Workplace.less
│ │ │ ├── Workplace.tsx
│ │ │ └── models
│ │ │ │ ├── activities.ts
│ │ │ │ ├── chart.ts
│ │ │ │ └── monitor.ts
│ │ ├── Exception
│ │ │ ├── 403.tsx
│ │ │ ├── 404.tsx
│ │ │ ├── 500.tsx
│ │ │ ├── TriggerException.tsx
│ │ │ ├── models
│ │ │ │ └── error.ts
│ │ │ └── style.less
│ │ ├── Forms
│ │ │ ├── AdvancedForm.tsx
│ │ │ ├── BasicForm.tsx
│ │ │ ├── StepForm
│ │ │ │ ├── Step1.tsx
│ │ │ │ ├── Step2.js
│ │ │ │ ├── Step3.js
│ │ │ │ ├── index.tsx
│ │ │ │ └── style.less
│ │ │ ├── TableForm.tsx
│ │ │ ├── models
│ │ │ │ └── form.ts
│ │ │ └── style.less
│ │ ├── List
│ │ │ ├── Applications.less
│ │ │ ├── Applications.tsx
│ │ │ ├── Articles.less
│ │ │ ├── Articles.tsx
│ │ │ ├── BasicList.less
│ │ │ ├── BasicList.tsx
│ │ │ ├── CardList.less
│ │ │ ├── CardList.tsx
│ │ │ ├── List.tsx
│ │ │ ├── Projects.less
│ │ │ ├── Projects.tsx
│ │ │ ├── TableList.less
│ │ │ ├── TableList.tsx
│ │ │ ├── UpdateForm.tsx
│ │ │ └── models
│ │ │ │ └── rule.ts
│ │ ├── Profile
│ │ │ ├── AdvancedProfile.less
│ │ │ ├── AdvancedProfile.tsx
│ │ │ ├── BasicProfile.less
│ │ │ ├── BasicProfile.tsx
│ │ │ └── models
│ │ │ │ └── profile.ts
│ │ ├── Result
│ │ │ ├── Error.tsx
│ │ │ └── Success.tsx
│ │ ├── User
│ │ │ ├── Login.less
│ │ │ ├── Login.tsx
│ │ │ ├── Register.less
│ │ │ ├── Register.tsx
│ │ │ ├── RegisterResult.less
│ │ │ ├── RegisterResult.tsx
│ │ │ └── models
│ │ │ │ └── register.ts
│ │ ├── Welcome.tsx
│ │ └── document.ejs
│ ├── service-worker.js
│ ├── services
│ │ ├── api.ts
│ │ ├── client.ts
│ │ ├── error.js
│ │ ├── geographic.js
│ │ └── user.ts
│ ├── types
│ │ └── types.d.ts
│ └── utils
│ │ ├── Authorized.ts
│ │ ├── Yuan.tsx
│ │ ├── authority.test.ts
│ │ ├── authority.ts
│ │ ├── getPageTitle.ts
│ │ ├── request.ts
│ │ ├── utils.less
│ │ ├── utils.test.ts
│ │ └── utils.tsx
│ ├── tests
│ └── run-tests.js
│ └── tsconfig.json
├── servers
├── .DS_Store
├── nest-server
│ ├── .DS_Store
│ ├── .env.example
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .prettierrc
│ ├── .vscode
│ │ ├── launch.json
│ │ └── settings.json
│ ├── LICENSE
│ ├── README.md
│ ├── data
│ │ ├── export.dict.json
│ │ ├── export.group.json
│ │ ├── export.media.json
│ │ ├── export.menu.json
│ │ ├── export.notice.json
│ │ ├── export.page.json
│ │ ├── export.role.json
│ │ ├── export.setting.json
│ │ └── export.user.json
│ ├── generated
│ │ ├── .gitignore
│ │ ├── .openapi-generator-ignore
│ │ ├── .openapi-generator
│ │ │ └── VERSION
│ │ ├── api.ts
│ │ ├── base.ts
│ │ ├── configuration.ts
│ │ ├── git_push.sh
│ │ └── index.ts
│ ├── index.js
│ ├── jest.json
│ ├── karma.conf.js
│ ├── log4js.debug.json
│ ├── log4js.json
│ ├── nest-cli.json
│ ├── nodemon-debug.json
│ ├── nodemon.json
│ ├── ormconfig.json
│ ├── package.json
│ ├── public
│ │ └── index.html
│ ├── src
│ │ ├── .DS_Store
│ │ ├── app.controller.ts
│ │ ├── app.module.ts
│ │ ├── app.service.ts
│ │ ├── appearances
│ │ │ ├── cms
│ │ │ │ ├── article.appearance.ts
│ │ │ │ ├── category.appearance.ts
│ │ │ │ ├── group.appearance.ts
│ │ │ │ ├── media.appearance.ts
│ │ │ │ ├── page.appearance.ts
│ │ │ │ └── widget.appearance.ts
│ │ │ └── core
│ │ │ │ ├── api.appearance.ts
│ │ │ │ ├── dict.appearance.ts
│ │ │ │ ├── log.appearance.ts
│ │ │ │ ├── menu.appearance.ts
│ │ │ │ ├── role.appearance.ts
│ │ │ │ ├── setting.appearance.ts
│ │ │ │ └── user.appearance.ts
│ │ ├── index.ts
│ │ ├── main.ts
│ │ ├── mock
│ │ │ ├── mock.controller.ts
│ │ │ └── mock.service.ts
│ │ ├── scripts
│ │ │ ├── access.grants.ts
│ │ │ ├── access.init.ts
│ │ │ ├── api.generate.ts
│ │ │ ├── data.export.all.ts
│ │ │ ├── data.export.ts
│ │ │ ├── data.import.ts
│ │ │ ├── data.install.ts
│ │ │ ├── database.ts
│ │ │ ├── gen.test.ts
│ │ │ └── generate.ts
│ │ ├── swagger
│ │ │ ├── constants.ts
│ │ │ ├── index.ts
│ │ │ ├── swagger.json
│ │ │ └── swagger.yaml
│ │ ├── types
│ │ │ └── types.d.ts
│ │ └── utils
│ │ │ ├── index.ts
│ │ │ ├── logger.ts
│ │ │ └── secrets.ts
│ ├── swagger.config.json
│ ├── tsconfig.build.json
│ ├── tsconfig.json
│ └── yarn.lock
├── nest-spring
│ ├── .openapi-generator-ignore
│ ├── .openapi-generator
│ │ └── VERSION
│ ├── README.md
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── org
│ │ │ └── openapitools
│ │ │ ├── OpenAPI2SpringBoot.java
│ │ │ ├── RFC3339DateFormat.java
│ │ │ ├── api
│ │ │ ├── ApiUtil.java
│ │ │ ├── ArticleApi.java
│ │ │ ├── ArticleApiController.java
│ │ │ ├── AuthApi.java
│ │ │ ├── AuthApiController.java
│ │ │ ├── CategoryApi.java
│ │ │ ├── CategoryApiController.java
│ │ │ ├── DefaultApi.java
│ │ │ ├── DefaultApiController.java
│ │ │ ├── MediaApi.java
│ │ │ ├── MediaApiController.java
│ │ │ ├── MockApi.java
│ │ │ ├── MockApiController.java
│ │ │ ├── NameApi.java
│ │ │ ├── NameApiController.java
│ │ │ ├── PageApi.java
│ │ │ ├── PageApiController.java
│ │ │ ├── PhotoApi.java
│ │ │ ├── PhotoApiController.java
│ │ │ ├── WidgetApi.java
│ │ │ └── WidgetApiController.java
│ │ │ ├── configuration
│ │ │ ├── HomeController.java
│ │ │ └── OpenAPIDocumentationConfig.java
│ │ │ └── model
│ │ │ ├── AccessToken.java
│ │ │ ├── ArticleRes.java
│ │ │ ├── Category.java
│ │ │ ├── CategoryRes.java
│ │ │ ├── CreateArticleDto.java
│ │ │ ├── CreateCategoryDto.java
│ │ │ ├── CreateMediaDto.java
│ │ │ ├── CreatePageReq.java
│ │ │ ├── CreatePhotoDto.java
│ │ │ ├── CreateWidgetDto.java
│ │ │ ├── EditArticleDto.java
│ │ │ ├── EditCategoryDto.java
│ │ │ ├── EditMediaDto.java
│ │ │ ├── EditPageReq.java
│ │ │ ├── EditPhotoDto.java
│ │ │ ├── EditWidgetDto.java
│ │ │ ├── InlineResponse200.java
│ │ │ ├── KeyValue.java
│ │ │ ├── LoginReq.java
│ │ │ ├── LoginRes.java
│ │ │ ├── Media.java
│ │ │ ├── MediaFile.java
│ │ │ ├── MediaRes.java
│ │ │ ├── PageRes.java
│ │ │ ├── Photo.java
│ │ │ ├── PhotoRes.java
│ │ │ ├── Query.java
│ │ │ ├── RegisterReq.java
│ │ │ ├── ResultListArticleRes.java
│ │ │ ├── ResultListCategoryRes.java
│ │ │ ├── ResultListMediaRes.java
│ │ │ ├── ResultListPageRes.java
│ │ │ ├── ResultListPhotoRes.java
│ │ │ ├── ResultListWidgetRes.java
│ │ │ ├── SettingsGroup.java
│ │ │ ├── TreeNode.java
│ │ │ ├── UploadMultipleRes.java
│ │ │ ├── UploadRes.java
│ │ │ ├── Widget.java
│ │ │ └── WidgetRes.java
│ │ └── resources
│ │ └── application.properties
├── nest-swagger
│ ├── .gitignore
│ ├── .npmignore
│ ├── .prettierrc
│ ├── LICENSE
│ ├── README.MD
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── cli.ts
│ │ ├── index.ts
│ │ ├── metadata
│ │ │ ├── controllerGenerator.ts
│ │ │ ├── index.ts
│ │ │ ├── metadataGenerator.ts
│ │ │ ├── methodGenerator.ts
│ │ │ ├── parameterGenerator.ts
│ │ │ └── typesResolver.ts
│ │ ├── swagger
│ │ │ ├── config.ts
│ │ │ ├── decorators.ts
│ │ │ ├── generator.ts
│ │ │ └── swagger.ts
│ │ └── utils
│ │ │ ├── decoratorUtils.ts
│ │ │ ├── jsDocUtils.ts
│ │ │ ├── pathUtils.ts
│ │ │ └── resolveUtils.ts
│ ├── swagger.api.json
│ ├── tsconfig.build.json
│ ├── tsconfig.json
│ ├── tslint.json
│ └── yarn.lock
├── nest-testing
│ ├── .DS_Store
│ ├── .vscode
│ │ └── launch.json
│ ├── generated
│ │ ├── .gitignore
│ │ ├── .openapi-generator-ignore
│ │ ├── .openapi-generator
│ │ │ └── VERSION
│ │ ├── api.ts
│ │ ├── base.ts
│ │ ├── configuration.ts
│ │ ├── git_push.sh
│ │ ├── index.ts
│ │ └── swagger.json
│ ├── jest.config.js
│ ├── package.json
│ ├── scripts
│ │ ├── client.ts
│ │ ├── generate.ts
│ │ ├── test.js
│ │ └── test.ts
│ ├── templates
│ │ └── api.hbs
│ ├── test
│ │ ├── cms
│ │ │ ├── article.spec.ts
│ │ │ ├── category.spec.ts
│ │ │ ├── media.spec.ts
│ │ │ └── page.spec.ts
│ │ ├── core
│ │ │ ├── auth.spec.ts
│ │ │ ├── dict.spec.ts
│ │ │ ├── group.spec.ts
│ │ │ ├── log.spec.ts
│ │ │ ├── menu.spec.ts
│ │ │ ├── notice.spec.ts
│ │ │ ├── role.spec.ts
│ │ │ ├── setting.spec.ts
│ │ │ └── user.spec.ts
│ │ └── utils
│ │ │ └── login.ts
│ ├── tsconfig.json
│ └── yarn.lock
├── nestx-auth
│ ├── .DS_Store
│ ├── .npmignore
│ ├── index.js
│ ├── nodemon.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── app.module.ts
│ │ ├── auth.controller.ts
│ │ ├── auth.module.ts
│ │ ├── auth.service.ts
│ │ ├── constants
│ │ │ └── index.ts
│ │ ├── dto
│ │ │ ├── Login.dto.ts
│ │ │ ├── Register.dto.ts
│ │ │ └── index.ts
│ │ ├── index.ts
│ │ ├── interfaces
│ │ │ └── index.ts
│ │ ├── jwt.strategy.ts
│ │ ├── main.ts
│ │ └── mock.user.service.ts
│ ├── tsconfig.json
│ └── yarn.lock
├── nestx-base
│ ├── .DS_Store
│ ├── .npmignore
│ ├── index.js
│ ├── nodemon.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── app.module.ts
│ │ ├── base.module.ts
│ │ ├── controllers
│ │ │ ├── access.management.ts
│ │ │ ├── appearances.controller.ts
│ │ │ ├── appearances.service.ts
│ │ │ ├── dicts.controller.ts
│ │ │ ├── dicts.service.ts
│ │ │ ├── groups.controller.ts
│ │ │ ├── groups.service.ts
│ │ │ ├── index.ts
│ │ │ ├── logger.service.ts
│ │ │ ├── logs.controller.ts
│ │ │ ├── logs.service.ts
│ │ │ ├── menus.controller.ts
│ │ │ ├── menus.service.ts
│ │ │ ├── notices.controller.ts
│ │ │ ├── notices.service.ts
│ │ │ ├── roles.controller.ts
│ │ │ ├── roles.service.ts
│ │ │ ├── settings.controller.ts
│ │ │ ├── settings.service.ts
│ │ │ ├── users.controller.ts
│ │ │ └── users.service.ts
│ │ ├── dto
│ │ │ ├── appearance.dto.ts
│ │ │ ├── auth.dto.ts
│ │ │ ├── common.dto.ts
│ │ │ ├── dict.dto.ts
│ │ │ ├── group.dto.ts
│ │ │ ├── index.ts
│ │ │ ├── menu.dto.ts
│ │ │ ├── notice.dto.ts
│ │ │ ├── role.dto.ts
│ │ │ ├── setting.dto.ts
│ │ │ └── user.dto.ts
│ │ ├── index.ts
│ │ ├── interfaces
│ │ │ ├── appearance.interface.ts
│ │ │ ├── dict.interface.ts
│ │ │ ├── group.interface.ts
│ │ │ ├── index.ts
│ │ │ ├── log.interface.ts
│ │ │ ├── menu.interface.ts
│ │ │ ├── notice.interface.ts
│ │ │ ├── profile.interface.ts
│ │ │ ├── role.interface.ts
│ │ │ ├── setting.interface.ts
│ │ │ ├── user.interface.ts
│ │ │ └── verycode.interface.ts
│ │ ├── main.ts
│ │ └── schemas
│ │ │ ├── appearance.schema.ts
│ │ │ ├── dict.schema.ts
│ │ │ ├── group.schema.ts
│ │ │ ├── index.ts
│ │ │ ├── log.schema.ts
│ │ │ ├── menu.schema.ts
│ │ │ ├── notice.schema.ts
│ │ │ ├── profile.schema.ts
│ │ │ ├── role.schema.ts
│ │ │ ├── setting.schema.ts
│ │ │ ├── user.schema.ts
│ │ │ └── verycode.schema.ts
│ ├── tsconfig.json
│ └── yarn.lock
├── nestx-cms
│ ├── .DS_Store
│ ├── .npmignore
│ ├── index.js
│ ├── nodemon.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── app.module.ts
│ │ ├── cms.module.ts
│ │ ├── controllers
│ │ │ ├── article.controller.ts
│ │ │ ├── article.service.ts
│ │ │ ├── category.controller.ts
│ │ │ ├── category.service.ts
│ │ │ ├── index.ts
│ │ │ ├── media.controller.ts
│ │ │ ├── media.service.ts
│ │ │ ├── page.controller.ts
│ │ │ ├── page.service.ts
│ │ │ ├── photo.controller.ts
│ │ │ ├── photo.service.ts
│ │ │ ├── widget.controller.ts
│ │ │ └── widget.service.ts
│ │ ├── dto
│ │ │ ├── article.dto.ts
│ │ │ ├── category.dto.ts
│ │ │ ├── comment.dto.ts
│ │ │ ├── custom.dto.ts
│ │ │ ├── index.ts
│ │ │ ├── media.dto.ts
│ │ │ ├── page.dto.ts
│ │ │ ├── photo.dto.ts
│ │ │ └── widget.dto.ts
│ │ ├── index.ts
│ │ ├── interfaces
│ │ │ ├── article.interface.ts
│ │ │ ├── category.interface.ts
│ │ │ ├── comment.interface.ts
│ │ │ ├── content.interface.ts
│ │ │ ├── custom.interface.ts
│ │ │ ├── index.ts
│ │ │ ├── media.interface.ts
│ │ │ ├── page.interface.ts
│ │ │ ├── photo.interface.ts
│ │ │ └── widget.interface.ts
│ │ ├── main.ts
│ │ ├── mock.user.service.ts
│ │ └── schemas
│ │ │ ├── article.schema.ts
│ │ │ ├── category.schema.ts
│ │ │ ├── comment.schema.ts
│ │ │ ├── content.schema.ts
│ │ │ ├── custom.schema.ts
│ │ │ ├── index.ts
│ │ │ ├── media.schema.ts
│ │ │ ├── page.schema.ts
│ │ │ ├── photo.schema.ts
│ │ │ └── widget.schema.ts
│ ├── tsconfig.json
│ └── yarn.lock
├── nestx-common
│ ├── .DS_Store
│ ├── .npmignore
│ ├── nodemon.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── constants
│ │ │ ├── cache.constant.ts
│ │ │ ├── index.ts
│ │ │ ├── meta.constant.ts
│ │ │ └── text.constant.ts
│ │ ├── decorators
│ │ │ ├── index.ts
│ │ │ ├── permission.decorator.ts
│ │ │ └── roles.decorator.ts
│ │ ├── exceptions
│ │ │ └── custom.exception.ts
│ │ ├── filters
│ │ │ └── http-exception.filter.ts
│ │ ├── guards
│ │ │ └── roles.guard.ts
│ │ ├── index.ts
│ │ ├── interceptors
│ │ │ ├── exception.interceptor.ts
│ │ │ ├── index.ts
│ │ │ ├── logging.interceptor.ts
│ │ │ ├── timeout.interceptor.ts
│ │ │ └── transform.interceptor.ts
│ │ ├── interfaces
│ │ │ ├── http.interface.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── middlewares
│ │ │ └── logger.middleware.ts
│ │ ├── pipes
│ │ │ ├── NullableParseInt.pipe.ts
│ │ │ ├── index.ts
│ │ │ └── validation.pipe.ts
│ │ ├── services
│ │ │ ├── controller.service.ts
│ │ │ ├── index.ts
│ │ │ ├── mongoose.service.ts
│ │ │ └── repository.service.ts
│ │ ├── types
│ │ │ ├── .DS_Store
│ │ │ ├── appearance.ts
│ │ │ ├── data.types.ts
│ │ │ ├── index.ts
│ │ │ └── schema.types.ts
│ │ └── utils
│ │ │ └── index.ts
│ ├── tsconfig.json
│ └── yarn.lock
└── nestx-config
│ ├── .DS_Store
│ ├── .npmignore
│ ├── nodemon.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── config.module.ts
│ ├── config.service.ts
│ ├── index.ts
│ └── interfaces
│ │ └── index.ts
│ ├── tsconfig.json
│ └── yarn.lock
└── spring
└── .project
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/.DS_Store
--------------------------------------------------------------------------------
/.python-version:
--------------------------------------------------------------------------------
1 | 2.7.15
2 |
--------------------------------------------------------------------------------
/lerna.json:
--------------------------------------------------------------------------------
1 | {
2 | "packages": [
3 | "packages/clients/*",
4 | "packages/servers/*"
5 | ],
6 | "version": "0.4.0"
7 | }
8 |
--------------------------------------------------------------------------------
/nestx.code-workspace:
--------------------------------------------------------------------------------
1 | {
2 | "folders": [
3 | {
4 | "path": "packages/servers/nestx-base"
5 | },
6 | {
7 | "path": "packages/servers/nestx-auth"
8 | },
9 | {
10 | "path": "packages/servers/nestx-cms"
11 | },
12 | {
13 | "path": "packages/servers/nest-server"
14 | },
15 | {
16 | "path": "packages/clients/nest-angular"
17 | }
18 | ],
19 | "settings": {
20 | "typescript.tsdk": "server/node_modules/typescript/lib"
21 | }
22 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "root",
3 | "private": true,
4 | "scripts": {
5 | "swagger": "cd packages/servers/nest-server && npm run swagger",
6 | "start:serve": "cd packages/servers/nest-server && npm run start",
7 | "start:angular": "cd packages/clients/nest-angular && npm run start"
8 | },
9 | "devDependencies": {
10 | "lerna": "^3.13.1"
11 | }
12 | }
--------------------------------------------------------------------------------
/packages/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/.DS_Store
--------------------------------------------------------------------------------
/packages/clients/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/.DS_Store
--------------------------------------------------------------------------------
/packages/clients/nest-angular/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.md]
12 | max_line_length = off
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/.prettierignore:
--------------------------------------------------------------------------------
1 | # add files you wish to ignore here
2 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "printWidth": 80,
4 | "editor.formatOnSave": true,
5 | "proseWrap": "always",
6 | "tabWidth": 4,
7 | "requireConfig": false,
8 | "useTabs": false,
9 | "trailingComma": "none",
10 | "bracketSpacing": true,
11 | "jsxBracketSameLine": false,
12 | "semi": true
13 | }
14 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "cipchk.ng-alain-extension-pack"
4 | ]
5 | }
--------------------------------------------------------------------------------
/packages/clients/nest-angular/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "type": "chrome",
9 | "request": "launch",
10 | "name": "Launch Chrome against localhost",
11 | "url": "http://localhost:4200",
12 | "webRoot": "${workspaceRoot}",
13 | "sourceMaps": true
14 | }
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "typescript.tsdk": "./node_modules/typescript/lib",
3 | // 保存时自动格式化,需要安装:https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode
4 | // "editor.formatOnSave": true,
5 | // Angular schematics 插件: https://marketplace.visualstudio.com/items?itemName=cyrilletuzi.angular-schematics
6 | "ngschematics.schematics": [
7 | "ng-alain"
8 | ],
9 | "editor.tabSize": 2
10 | }
11 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/asbc.json:
--------------------------------------------------------------------------------
1 | {
2 | "groups": ["5b1e89da653fef1f92c4b955"],
3 | "username": "管理员",
4 | "password": "111",
5 | "mobile": "13063090260",
6 | "isApproved": true,
7 | "roles": ["5b1e8b3e59989d1ffc06ac7e"]
8 | }
9 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/build.copy.ts:
--------------------------------------------------------------------------------
1 | import * as shell from 'shelljs';
2 |
3 | shell.cp('-R', 'dist', './../server/client');
4 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/e2e/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { AppPage } from './app.po';
2 |
3 | describe('ng-alain App', () => {
4 | let page: AppPage;
5 |
6 | beforeEach(() => {
7 | page = new AppPage();
8 | });
9 |
10 | it('should display welcome message', () => {
11 | page.navigateTo();
12 | expect(page.getParagraphText()).toEqual('Welcome to app!');
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/e2e/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get('/');
6 | }
7 |
8 | getParagraphText() {
9 | return element(by.css('app-root h1')).getText();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/e2e/tsconfig.e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/e2e",
5 | "baseUrl": "./",
6 | "module": "commonjs",
7 | "target": "es5",
8 | "types": [
9 | "jasmine",
10 | "jasminewd2",
11 | "node"
12 | ]
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/proxy.conf.json:
--------------------------------------------------------------------------------
1 | {
2 | "/api": {
3 | "target": "http://localhost:5600/",
4 | "secure": false
5 | },
6 | "/uploads": {
7 | "target": "http://localhost:5600/",
8 | "secure": false
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/core/README.md:
--------------------------------------------------------------------------------
1 | ### CoreModule
2 |
3 | **应** 仅只留 `providers` 属性。
4 |
5 | **作用:** 一些通用服务,例如:用户消息、HTTP数据访问。
6 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/core/core.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule, Optional, SkipSelf } from '@angular/core';
2 | import { throwIfAlreadyLoaded } from '@core/module-import-guard';
3 | import { I18NService } from '@core/i18n/i18n.service';
4 |
5 | @NgModule({
6 | providers: [
7 | I18NService
8 | ]
9 | })
10 | export class CoreModule {
11 | constructor( @Optional() @SkipSelf() parentModule: CoreModule) {
12 | throwIfAlreadyLoaded(parentModule, 'CoreModule');
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/core/index.ts:
--------------------------------------------------------------------------------
1 | export * from './i18n/i18n.service';
2 | export * from './module-import-guard';
3 | export * from './net/default.interceptor';
4 | export * from './startup/startup.service';
5 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/core/module-import-guard.ts:
--------------------------------------------------------------------------------
1 | // https://angular.io/guide/styleguide#style-04-12
2 | export function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {
3 | if (parentModule) {
4 | throw new Error(`${moduleName} has already been loaded. Import Core modules in the AppModule only.`);
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/layout/default/default.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/layout/default/header/header.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, ChangeDetectionStrategy } from '@angular/core';
2 | import { SettingsService } from '@delon/theme';
3 |
4 | @Component({
5 | selector: 'layout-header',
6 | templateUrl: './header.component.html',
7 | changeDetection: ChangeDetectionStrategy.OnPush
8 | })
9 | export class HeaderComponent {
10 | searchToggleStatus: boolean;
11 |
12 | constructor(public settings: SettingsService) { }
13 |
14 | toggleCollapsedSidebar() {
15 | this.settings.setLayout('collapsed', !this.settings.layout.collapsed);
16 | }
17 |
18 | searchToggleChange() {
19 | this.searchToggleStatus = !this.searchToggleStatus;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/layout/default/header/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | component: app-header
3 | title: 顶部菜单
4 | ---
5 |
6 | 顶部菜单组件允许通过 `components` 目录下的组件进行按需组装。
7 |
8 | ## 组件列表
9 |
10 | 组件名 | 说明
11 | ----|------
12 | `header-fullscreen` | 全屏切换
13 | `header-icon` | 应用图标
14 | `header-langs` | 语言切换
15 | `header-notify` | 菜单通知
16 | `header-search` | 搜索框
17 | `header-storage` | 清除 LocalStorage 缓存
18 | `header-task` | 任务通知
19 | `header-theme` | 主题切换
20 | `header-user` | 用户菜单
21 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/layout/fullscreen/fullscreen.component.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/layout/fullscreen/fullscreen.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'layout-fullscreen',
5 | templateUrl: './fullscreen.component.html'
6 | })
7 | export class LayoutFullScreenComponent {
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/layout/passport/passport.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |

6 |
演示
7 |
8 |
9 |
10 |
11 | Copyright
12 | 2018
13 | Vellengs 出品
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/layout/passport/passport.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'layout-passport',
5 | templateUrl: './passport.component.html',
6 | styleUrls: ['./passport.component.less']
7 | })
8 | export class LayoutPassportComponent {
9 | links = [
10 | {
11 | title: '帮助',
12 | href: ''
13 | },
14 | {
15 | title: '隐私',
16 | href: ''
17 | },
18 | {
19 | title: '条款',
20 | href: ''
21 | }
22 | ];
23 | }
24 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/pages/cms/articles/articles.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/pages/cms/custom/custom.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/pages/cms/media/media.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/pages/cms/pages/pages.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/pages/cms/widgets/widgets.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/pages/home/home.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/pages/home/home.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { _HttpClient } from '@delon/theme';
3 | import { BaseStandComponent } from '@shared/base/base.stand.component';
4 |
5 | @Component({
6 | selector: 'app-home-page',
7 | templateUrl: './home.component.html',
8 | })
9 | export class HomeComponent extends BaseStandComponent implements OnInit {
10 |
11 | ngOnInit() {
12 |
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/pages/system/logs/logs.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/dashboard/default/dashboard.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/dashboard/default/dashboard.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { NzMessageService } from 'ng-zorro-antd';
3 | import { _HttpClient } from '@delon/theme';
4 |
5 | @Component({
6 | selector: 'app-dashboard-page',
7 | templateUrl: './dashboard.component.html',
8 | })
9 | export class DashboardComponent implements OnInit {
10 |
11 |
12 | constructor(private http: _HttpClient, public msg: NzMessageService) { }
13 |
14 | ngOnInit() {
15 |
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/exception/403.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'exception-403',
5 | template: ``
6 | })
7 | export class Exception403Component {}
8 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/exception/404.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'exception-404',
5 | template: ``
6 | })
7 | export class Exception404Component {}
8 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/exception/500.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'exception-500',
5 | template: ``
6 | })
7 | export class Exception500Component {}
8 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/passport/lock/lock.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed, TestModuleMetadata } from '@angular/core/testing';
2 | import { setUpTestBed } from '@testing/common.spec';
3 |
4 | import { UserLockComponent } from './lock.component';
5 |
6 | describe('Pages: lock', () => {
7 | setUpTestBed({
8 | declarations: [ UserLockComponent ]
9 | });
10 |
11 | it('should create an instance', () => {
12 | const fixture = TestBed.createComponent(UserLockComponent);
13 | const comp = fixture.debugElement.componentInstance;
14 | expect(comp).toBeTruthy();
15 | });
16 | });
17 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/passport/register-result/register-result.component.html:
--------------------------------------------------------------------------------
1 |
5 |
6 | 你的账户:ng-alain@example.com 注册成功
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/passport/register-result/register-result.component.less:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/app/routes/passport/register-result/register-result.component.less
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/passport/register-result/register-result.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { NzMessageService } from 'ng-zorro-antd';
3 |
4 | @Component({
5 | selector: 'passport-register-result',
6 | templateUrl: './register-result.component.html',
7 | styleUrls: [ './register-result.component.less' ]
8 | })
9 | export class UserRegisterResultComponent {
10 | constructor(public msg: NzMessageService) {}
11 | }
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/widgets/widgets-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 |
4 | import { WidgetsComponent } from './widgets/widgets.component';
5 |
6 | const routes: Routes = [
7 | { path: '', component: WidgetsComponent }
8 | ];
9 |
10 | @NgModule({
11 | imports: [ RouterModule.forChild(routes) ],
12 | exports: [ RouterModule ]
13 | })
14 | export class WidgetsRoutingModule { }
15 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/widgets/widgets.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { SharedModule } from '@shared/shared.module';
4 |
5 | import { WidgetsRoutingModule } from './widgets-routing.module';
6 |
7 | import { WidgetsComponent } from './widgets/widgets.component';
8 |
9 | @NgModule({
10 | imports: [ SharedModule, WidgetsRoutingModule ],
11 | declarations: [
12 | WidgetsComponent
13 | ]
14 | })
15 | export class WidgetsModule { }
16 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/widgets/widgets/widgets.component.less:
--------------------------------------------------------------------------------
1 | @import '~@delon/theme/styles/default';
2 | :host ::ng-deep {
3 | .ant-carousel {
4 | .slick-dots {
5 | bottom: -10px;
6 | li.slick-active button {
7 | background: @primary-color;
8 | }
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/routes/widgets/widgets/widgets.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed, TestModuleMetadata } from '@angular/core/testing';
2 | import { setUpTestBed } from '@testing/common.spec';
3 |
4 | import { WidgetsComponent } from './widgets.component';
5 |
6 | describe('Comoponent: Widgets', () => {
7 | setUpTestBed({
8 | declarations: [ WidgetsComponent ]
9 | });
10 |
11 | it('should create an instance', () => {
12 | const fixture = TestBed.createComponent(WidgetsComponent);
13 | const comp = fixture.debugElement.componentInstance;
14 | expect(comp).toBeTruthy();
15 | });
16 | });
17 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/services/ajax.proxy.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { _HttpClient } from '@delon/theme';
3 |
4 | @Injectable()
5 | export class AjaxProxy {
6 | constructor(public proxy: _HttpClient) {
7 |
8 | }
9 |
10 | signIn(model: any) {
11 |
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/shared/README.md:
--------------------------------------------------------------------------------
1 | # ShareModule
2 |
3 | **应** 包含定义:
4 |
5 | + 应用通用自定义业务组件
6 |
7 | **应** 导出所有包含的模块。
8 |
9 | **不应** 有 `providers` 属性。
10 |
11 | ## 自定义全局组件或指令
12 |
13 | 每一个组件或指令应该有一个完整的说明文件,**建议**一个合理的目录结构应该是:
14 |
15 | ```
16 | ├── components
17 | │ ├── comp1
18 | │ │ ├── index.ts
19 | │ │ ├── README.md
20 | │ ├── comp2
21 | │ │ ├── index.ts
22 | │ │ ├── README.md
23 | ├── directives
24 | │ ├── dire1
25 | │ │ ├── index.ts
26 | │ │ ├── README.md
27 | │ ├── dire2
28 | │ │ ├── index.ts
29 | │ │ ├── README.md
30 | ```
31 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/shared/base/base.detail.html:
--------------------------------------------------------------------------------
1 |
3 |
8 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/shared/base/base.list.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, Injector } from '@angular/core';
2 | import { BaseComponent } from '@shared/base/base.component';
3 |
4 | @Component({
5 | selector: 'app-base-list',
6 | template: './base.list.html'
7 | })
8 | export class BaseListComponent extends BaseComponent {
9 |
10 | constructor(public injector: Injector) {
11 | super(injector);
12 | }
13 |
14 | query() {
15 |
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/shared/base/base.stand.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/shared/base/transfer.selector.html:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 | {{item.title}} ~ {{item.description}}
7 |
8 |
9 |
10 |
11 |
19 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/shared/components/editor/editor.component.html:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/shared/json-schema/index.md:
--------------------------------------------------------------------------------
1 | # 建议统一在 `widgets` 目录下自定义小部件
2 |
3 | > 注:@delon/form 本身提供 nz-zorro-antd 数据录入组件的全部实现,以及若干第三方组件的代码,可从[widgets-third](https://github.com/cipchk/@delon/tree/master/packages/form/widgets-third)中获取并放置 `widgets` 目录下注册即可。
4 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/shared/json-schema/widgets/ueditor/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: ueditor
3 | subtitle: Ueditor富文本
4 | type: Third Widgets
5 | ---
6 |
7 | Ueditor富文本。
8 |
9 | > 注:第三方小部件默认并未注册,细节见[自定义小部件](https://ng-alain.com/form/customize)。
10 |
11 | ## ui 属性
12 |
13 | 参数 | 说明 | 类型 | 默认值
14 | ----|------|-----|------
15 | config | 前端配置项说明,[见官网](http://fex.baidu.com/ueditor/#start-config) | `Object` | -
16 | loading | 初始化提示文本 | `string` | `加载中...`
17 | change | 编辑器内容发生改变时会触发该事件 | `(html: string) => void` | -
18 |
19 | ## Demo
20 |
21 | ```ts
22 | schema = {
23 | properties: {
24 | remark: {
25 | type: 'string',
26 | title: '描述',
27 | ui: {
28 | widget: 'ueditor'
29 | }
30 | }
31 | }
32 | }
33 | ```
34 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/shared/utils/index.ts:
--------------------------------------------------------------------------------
1 | export * from './utils';
2 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/app/shared/utils/utils.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * 转化成RMB元字符串
3 | * @param digits 当数字类型时,允许指定小数点后数字的个数,默认2位小数
4 | */
5 | // tslint:disable-next-line:no-any
6 | export function yuan(value: any, digits: number = 2): string {
7 | if (typeof value === 'number') value = value.toFixed(digits);
8 | return `¥ ${value}`;
9 | }
10 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/appearances/appearance.module.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | import { NgModule } from '@angular/core';
4 | import { RouterModule, Routes } from '@angular/router';
5 | const routes: Routes = [
6 | ];
7 |
8 | @NgModule({
9 | imports: [
10 | RouterModule.forChild(routes),
11 | ],
12 | declarations: [
13 | ],
14 | entryComponents: [
15 | ],
16 | exports: [
17 | RouterModule
18 | ]
19 | })
20 |
21 | export class AppearanceModule { }
22 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/.gitkeep
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/demo.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/demo.docx
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/demo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/demo.pdf
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/demo.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/demo.pptx
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/demo.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/demo.xlsx
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/1.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/2.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/3.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/4.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/5.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/6.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/avatar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/avatar.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/bg1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/bg1.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/bg10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/bg10.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/bg2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/bg2.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/bg3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/bg3.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/bg4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/bg4.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/bg5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/bg5.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/bg6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/bg6.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/bg7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/bg7.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/bg8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/bg8.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/bg9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/bg9.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/img/half-float-bg-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/img/half-float-bg-1.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/scripts/appearances/appearance.module.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"appearance.module.js","sourceRoot":"","sources":["../../../appearances/appearance.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;YAIM,MAAM,GAAW,EACtB,CAAC;;gBAeF;gBAAgC,CAAC;gBAApB,gBAAgB;oBAb5B,eAAQ,CAAC;wBACN,OAAO,EAAE;4BACL,qBAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;yBAChC;wBACD,YAAY,EAAE,EACb;wBACD,eAAe,EAAE,EAChB;wBACD,OAAO,EAAE;4BACL,qBAAY;yBACf;qBACJ,CAAC;mBAEW,gBAAgB,CAAI;gBAAD,uBAAC;aAAA,AAAjC;;QACA,CAAC"}
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/scripts/types/types.js:
--------------------------------------------------------------------------------
1 | System.register([], function (exports_1, context_1) {
2 | "use strict";
3 | var __moduleName = context_1 && context_1.id;
4 | var Appearance;
5 | return {
6 | setters: [],
7 | execute: function () {
8 | Appearance = /** @class */ (function () {
9 | function Appearance() {
10 | }
11 | return Appearance;
12 | }());
13 | exports_1("Appearance", Appearance);
14 | }
15 | };
16 | });
17 | //# sourceMappingURL=types.js.map
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/scripts/types/types.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../types/types.ts"],"names":[],"mappings":";;;;;;;YAGA;gBAAA;gBAGA,CAAC;gBAAD,iBAAC;YAAD,CAAC,AAHD,IAGC;;QAmCD,CAAC"}
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/0.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/0.gif
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/bface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/bface.gif
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/cface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/cface.gif
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/fface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/fface.gif
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/jxface2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/jxface2.gif
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/neweditor-tab-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/neweditor-tab-bg.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/tface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/tface.gif
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/wface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/wface.gif
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/yface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/emotion/images/yface.gif
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/formula/images/formula.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/formula/images/formula.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/image/images/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/image/images/close.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/image/images/upload1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/image/images/upload1.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/image/images/upload2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/image/images/upload2.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/video/images/center_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/video/images/center_focus.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/video/images/left_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/video/images/left_focus.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/video/images/none_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/video/images/none_focus.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/dialogs/video/images/right_focus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/dialogs/video/images/right_focus.jpg
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/addimage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/addimage.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/alldeletebtnhoverskin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/alldeletebtnhoverskin.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/alldeletebtnupskin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/alldeletebtnupskin.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/background.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/button.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/copy.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/deletedisable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/deletedisable.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/deleteenable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/deleteenable.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/imglabel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/imglabel.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/listbackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/listbackground.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/localimage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/localimage.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/music.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/rotateleftdisable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/rotateleftdisable.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/rotateleftenable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/rotateleftenable.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/rotaterightdisable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/rotaterightdisable.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/rotaterightenable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/rotaterightenable.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/en/images/upload.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/zh-cn/images/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/zh-cn/images/copy.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/zh-cn/images/imglabel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/zh-cn/images/imglabel.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/zh-cn/images/localimage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/zh-cn/images/localimage.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/zh-cn/images/music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/zh-cn/images/music.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/lang/zh-cn/images/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/lang/zh-cn/images/upload.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/caret.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/caret.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/close.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/icons.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/icons.gif
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/icons.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/ok.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/ok.gif
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/pop-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/pop-bg.png
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/spacer.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/spacer.gif
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/videologo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/themes/default/images/videologo.gif
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/Symbola.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/Symbola.eot
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/Symbola.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/Symbola.otf
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/Symbola.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/Symbola.ttf
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/Symbola.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/Symbola.woff
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.eot
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.ttf
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.woff
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.eot
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.ttf
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.woff
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.eot
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.ttf
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.woff
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.eot
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.ttf
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/assets/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.woff
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/environments/environment.hmr.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | SERVER_URL: `./`,
3 | production: false,
4 | hmr: true,
5 | useHash: true
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | SERVER_URL: `/`,
3 | production: true,
4 | hmr: false,
5 | useHash: true
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // The file contents for the current environment will overwrite these during build.
2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do
3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead.
4 | // The list of which env maps to which file can be found in `.angular-cli.json`.
5 |
6 | export const environment = {
7 | SERVER_URL: `./`,
8 | production: false,
9 | hmr: false,
10 | useHash: true
11 | };
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-angular/src/favicon.ico
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/.gitignore:
--------------------------------------------------------------------------------
1 | wwwroot/*.js
2 | node_modules
3 | typings
4 | dist
5 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/.openapi-generator/VERSION:
--------------------------------------------------------------------------------
1 | 4.2.0
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/api/api.ts:
--------------------------------------------------------------------------------
1 | export * from './app.service';
2 | import { AppService } from './app.service';
3 | export * from './auth.service';
4 | import { AuthService } from './auth.service';
5 | export * from './cms.service';
6 | import { CmsService } from './cms.service';
7 | export * from './mock.service';
8 | import { MockService } from './mock.service';
9 | export const APIS = [AppService, AuthService, CmsService, MockService];
10 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/encoder.ts:
--------------------------------------------------------------------------------
1 | import { HttpParameterCodec } from '@angular/common/http';
2 |
3 | /**
4 | * Custom HttpParameterCodec
5 | * Workaround for https://github.com/angular/angular/issues/18261
6 | */
7 | export class CustomHttpParameterCodec implements HttpParameterCodec {
8 | encodeKey(k: string): string {
9 | return encodeURIComponent(k);
10 | }
11 | encodeValue(v: string): string {
12 | return encodeURIComponent(v);
13 | }
14 | decodeKey(k: string): string {
15 | return decodeURIComponent(k);
16 | }
17 | decodeValue(v: string): string {
18 | return decodeURIComponent(v);
19 | }
20 | }
21 |
22 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/index.ts:
--------------------------------------------------------------------------------
1 | export * from './api/api';
2 | export * from './model/models';
3 | export * from './variables';
4 | export * from './configuration';
5 | export * from './api.module';
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/accessToken.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | /**
15 | *
16 | */
17 | export interface AccessToken {
18 | /**
19 | *
20 | */
21 | expiresIn: number;
22 | /**
23 | *
24 | */
25 | accessToken: string;
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/createWidgetDto.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | /**
15 | *
16 | */
17 | export interface CreateWidgetDto {
18 | /**
19 | *
20 | */
21 | name: string;
22 | /**
23 | *
24 | */
25 | title: string;
26 | /**
27 | *
28 | */
29 | params: object;
30 | /**
31 | *
32 | */
33 | type: string;
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/editWidgetDto.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | /**
15 | *
16 | */
17 | export interface EditWidgetDto {
18 | /**
19 | *
20 | */
21 | id: string;
22 | /**
23 | *
24 | */
25 | name: string;
26 | /**
27 | *
28 | */
29 | title: string;
30 | /**
31 | *
32 | */
33 | params: object;
34 | /**
35 | *
36 | */
37 | type: string;
38 | }
39 |
40 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/inlineResponse200.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | export interface InlineResponse200 {
15 | /**
16 | *
17 | */
18 | ok?: boolean;
19 | }
20 |
21 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/keyValue.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | /**
15 | *
16 | */
17 | export interface KeyValue {
18 | /**
19 | *
20 | */
21 | label: string;
22 | /**
23 | *
24 | */
25 | value: string;
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/loginReq.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | /**
15 | *
16 | */
17 | export interface LoginReq {
18 | /**
19 | *
20 | */
21 | username: string;
22 | /**
23 | *
24 | */
25 | type?: string;
26 | /**
27 | *
28 | */
29 | password: string;
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/query.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | /**
15 | *
16 | */
17 | export interface Query {
18 | /**
19 | *
20 | */
21 | size: number;
22 | /**
23 | *
24 | */
25 | page: number;
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/resultListArticleRes.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 | import { Query } from './query';
13 | import { ArticleRes } from './articleRes';
14 |
15 |
16 | /**
17 | *
18 | */
19 | export interface ResultListArticleRes {
20 | /**
21 | *
22 | */
23 | list: Array;
24 | /**
25 | *
26 | */
27 | count?: number;
28 | query?: Query;
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/resultListCategoryRes.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 | import { CategoryRes } from './categoryRes';
13 | import { Query } from './query';
14 |
15 |
16 | /**
17 | *
18 | */
19 | export interface ResultListCategoryRes {
20 | /**
21 | *
22 | */
23 | list: Array;
24 | /**
25 | *
26 | */
27 | count?: number;
28 | query?: Query;
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/resultListMediaRes.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 | import { Query } from './query';
13 | import { MediaRes } from './mediaRes';
14 |
15 |
16 | /**
17 | *
18 | */
19 | export interface ResultListMediaRes {
20 | /**
21 | *
22 | */
23 | list: Array;
24 | /**
25 | *
26 | */
27 | count?: number;
28 | query?: Query;
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/resultListPageRes.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 | import { PageRes } from './pageRes';
13 | import { Query } from './query';
14 |
15 |
16 | /**
17 | *
18 | */
19 | export interface ResultListPageRes {
20 | /**
21 | *
22 | */
23 | list: Array;
24 | /**
25 | *
26 | */
27 | count?: number;
28 | query?: Query;
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/resultListPhotoRes.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 | import { Query } from './query';
13 | import { PhotoRes } from './photoRes';
14 |
15 |
16 | /**
17 | *
18 | */
19 | export interface ResultListPhotoRes {
20 | /**
21 | *
22 | */
23 | list: Array;
24 | /**
25 | *
26 | */
27 | count?: number;
28 | query?: Query;
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/resultListWidgetRes.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 | import { Query } from './query';
13 | import { WidgetRes } from './widgetRes';
14 |
15 |
16 | /**
17 | *
18 | */
19 | export interface ResultListWidgetRes {
20 | /**
21 | *
22 | */
23 | list: Array;
24 | /**
25 | *
26 | */
27 | count?: number;
28 | query?: Query;
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/settingsGroup.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | /**
15 | *
16 | */
17 | export interface SettingsGroup {
18 | /**
19 | *
20 | */
21 | options: object;
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/treeNode.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | /**
15 | *
16 | */
17 | export interface TreeNode {
18 | /**
19 | *
20 | */
21 | id: string;
22 | /**
23 | *
24 | */
25 | icon?: string;
26 | /**
27 | *
28 | */
29 | type?: string;
30 | /**
31 | *
32 | */
33 | title: string;
34 | /**
35 | *
36 | */
37 | parent: string;
38 | }
39 |
40 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/uploadMultipleRes.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | /**
15 | *
16 | */
17 | export interface UploadMultipleRes {
18 | /**
19 | *
20 | */
21 | ok: boolean;
22 | /**
23 | *
24 | */
25 | error?: string;
26 | /**
27 | *
28 | */
29 | files?: Array;
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/uploadRes.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | /**
15 | *
16 | */
17 | export interface UploadRes {
18 | /**
19 | *
20 | */
21 | ok: boolean;
22 | /**
23 | *
24 | */
25 | error?: string;
26 | /**
27 | *
28 | */
29 | file?: string;
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/widget.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | /**
15 | *
16 | */
17 | export interface Widget {
18 | /**
19 | *
20 | */
21 | id: string;
22 | /**
23 | *
24 | */
25 | name: string;
26 | /**
27 | *
28 | */
29 | title: string;
30 | /**
31 | *
32 | */
33 | type: string;
34 | /**
35 | *
36 | */
37 | params: object;
38 | }
39 |
40 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/model/widgetRes.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * rest api interface
3 | * 项目标准接口
4 | *
5 | * The version of the OpenAPI document: 0.0.1
6 | *
7 | *
8 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9 | * https://openapi-generator.tech
10 | * Do not edit the class manually.
11 | */
12 |
13 |
14 | /**
15 | *
16 | */
17 | export interface WidgetRes {
18 | /**
19 | *
20 | */
21 | id: string;
22 | /**
23 | *
24 | */
25 | name: string;
26 | /**
27 | *
28 | */
29 | title: string;
30 | /**
31 | *
32 | */
33 | params: object;
34 | /**
35 | *
36 | */
37 | type: string;
38 | }
39 |
40 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/generated/variables.ts:
--------------------------------------------------------------------------------
1 | import { InjectionToken } from '@angular/core';
2 |
3 | export const BASE_PATH = new InjectionToken('basePath');
4 | export const COLLECTION_FORMATS = {
5 | 'csv': ',',
6 | 'tsv': ' ',
7 | 'ssv': ' ',
8 | 'pipes': '|'
9 | }
10 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/style-icons.ts:
--------------------------------------------------------------------------------
1 | // Custom icon static resources
2 |
3 | import {
4 | InfoOutline,
5 | BulbOutline,
6 | ProfileOutline,
7 | ExceptionOutline,
8 | LinkOutline,
9 | } from '@ant-design/icons-angular/icons';
10 |
11 | export const ICONS = [
12 | InfoOutline,
13 | BulbOutline,
14 | ProfileOutline,
15 | ExceptionOutline,
16 | LinkOutline,
17 | ];
18 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/styles.less:
--------------------------------------------------------------------------------
1 | // region: PLACEHOLDER, IMPORTANT: don't remove
2 | @import '~@delon/theme/styles/index';
3 | @import '~@delon/abc/index';
4 | @import '~@delon/chart/index';
5 | @import '~@delon/theme/styles/layout/default/index';
6 | @import '~@delon/theme/styles/layout/fullscreen/index';
7 |
8 | @import './styles/index';
9 | @import './styles/theme';
10 | // endregion
11 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/styles/theme.less:
--------------------------------------------------------------------------------
1 | // 可以通过 http://ng-alain.com/theme 生成相应的参数代码
2 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "baseUrl": "./",
6 | "module": "es2015",
7 | "types": [],
8 | "paths": {
9 | "@shared": ["app/shared"],
10 | "@shared/*": ["app/shared/*"],
11 | "@services": ["app/services"],
12 | "@services/*": ["app/services/*"],
13 | "@core": ["app/core/"],
14 | "@core/*": ["app/core/*"],
15 | "@testing": ["testing/"],
16 | "@testing/*": ["testing/*"],
17 | "@env": ["environments/"],
18 | "@env/*": ["environments/*"]
19 | }
20 | },
21 | "exclude": [
22 | "test.ts",
23 | "**/*.spec.ts"
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/src/typings.d.ts:
--------------------------------------------------------------------------------
1 | /* SystemJS module definition */
2 | declare var module: NodeModule;
3 | interface NodeModule {
4 | id: string;
5 | }
6 |
7 | interface WebpackRequire {
8 | (path: string): T;
9 | (paths: string[], callback: (...modules: any[]) => void): void;
10 | ensure: (paths: string[], callback: (require: (path: string) => T) => void) => void;
11 | }
12 | interface NodeRequire extends WebpackRequire {}
13 | declare var require: NodeRequire;
14 |
15 | // G2
16 | declare var G2: any;
17 | declare var Slider: any;
18 | declare var Cloud: any;
19 |
--------------------------------------------------------------------------------
/packages/clients/nest-angular/tsconfig.appearances.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "outDir": "./src/assets/scripts",
5 | "sourceMap": true,
6 | "declaration": false,
7 | "module": "system",
8 | "moduleResolution": "node",
9 | "emitDecoratorMetadata": true,
10 | "experimentalDecorators": true,
11 | "target": "es5",
12 | "typeRoots": [
13 | "node_modules/@types"
14 | ],
15 | "lib": [
16 | "es2017",
17 | "dom"
18 | ]
19 | },
20 | "include": [
21 | "src/appearances/**/*",
22 | "src/types/**/*"
23 | ]
24 | }
25 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [Makefile]
16 | indent_style = tab
17 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/.eslintignore:
--------------------------------------------------------------------------------
1 | /functions/mock/**
2 | /scripts
3 | /config
4 | *.ejs
5 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | **/node_modules
5 | # roadhog-api-doc ignore
6 | /src/utils/request-temp.js
7 | _roadhog-api-doc
8 |
9 | # production
10 | /dist
11 | /.vscode
12 |
13 | # misc
14 | .DS_Store
15 | npm-debug.log*
16 | yarn-error.log
17 |
18 | /coverage
19 | .idea
20 | yarn.lock
21 | package-lock.json
22 | *bak
23 | .vscode
24 |
25 | # visual studio code
26 | .history
27 | *.log
28 |
29 | functions/mock
30 | .temp/**
31 |
32 | # umi
33 | .umi
34 | .umi-production
35 |
36 | # screenshot
37 | screenshot
38 | .firebase
--------------------------------------------------------------------------------
/packages/clients/nest-react/.prettierignore:
--------------------------------------------------------------------------------
1 | **/*.md
2 | **/*.svg
3 | package.json
4 | .umi
5 | .umi-production
6 | **/*.ejs
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all",
4 | "printWidth": 100,
5 | "overrides": [
6 | {
7 | "files": ".prettierrc",
8 | "options": { "parser": "json" }
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/.stylelintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "stylelint-config-standard",
4 | "stylelint-config-css-modules",
5 | "stylelint-config-rational-order",
6 | "stylelint-config-prettier"
7 | ],
8 | "plugins": ["stylelint-order", "stylelint-declaration-block-no-ignored-properties"],
9 | "rules": {
10 | "no-descending-specificity": null,
11 | "plugin/declaration-block-no-ignored-properties": true
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/README.md:
--------------------------------------------------------------------------------
1 | # nestx react front end
--------------------------------------------------------------------------------
/packages/clients/nest-react/jest-puppeteer.config.js:
--------------------------------------------------------------------------------
1 | // ps https://github.com/GoogleChrome/puppeteer/issues/3120
2 | module.exports = {
3 | launch: {
4 | args: ['--disable-gpu', '--disable-dev-shm-usage', '--no-first-run', '--no-zygote'],
5 | },
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | testURL: 'http://localhost:8000',
3 | preset: 'jest-puppeteer',
4 | };
5 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/jest.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": [
3 | "ts",
4 | "tsx",
5 | "js",
6 | "json"
7 | ],
8 | "transform": {
9 | "^.+\\.tsx?$": "/node_modules/ts-jest/preprocessor.js"
10 | },
11 | "testRegex": "/src/.*\\.(test|spec).(ts|tsx|js)$",
12 | "collectCoverageFrom": ["src/**/*.{js,jsx,tsx,ts}", "!**/node_modules/**", "!**/vendor/**"],
13 | "coverageReporters": ["json", "lcov"]
14 | }
--------------------------------------------------------------------------------
/packages/clients/nest-react/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "emitDecoratorMetadata": true,
4 | "experimentalDecorators": true,
5 | "baseUrl": ".",
6 | "paths": {
7 | "@/*": ["./src/*"]
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/mock/geographic.js:
--------------------------------------------------------------------------------
1 | import city from './geographic/city.json';
2 | import province from './geographic/province.json';
3 |
4 | function getProvince(req, res) {
5 | return res.json(province);
6 | }
7 |
8 | function getCity(req, res) {
9 | return res.json(city[req.params.province]);
10 | }
11 |
12 | export default {
13 | 'GET /api/geographic/province': getProvince,
14 | 'GET /api/geographic/city/:province': getCity,
15 | };
16 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/mock/route.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '/api/auth_routes': {
3 | '/form/advanced-form': { authority: ['admin', 'user'] },
4 | },
5 | };
6 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/public/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-react/public/favicon.png
--------------------------------------------------------------------------------
/packages/clients/nest-react/public/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-react/public/icons/icon-128x128.png
--------------------------------------------------------------------------------
/packages/clients/nest-react/public/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-react/public/icons/icon-192x192.png
--------------------------------------------------------------------------------
/packages/clients/nest-react/public/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/clients/nest-react/public/icons/icon-512x512.png
--------------------------------------------------------------------------------
/packages/clients/nest-react/scripts/generateMock.js:
--------------------------------------------------------------------------------
1 | const generateMock = require('merge-umi-mock-data');
2 | const path = require('path');
3 | generateMock(path.join(__dirname, '../mock'), path.join(__dirname, '../functions/mock/index.js'));
4 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/ArticleListContent/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export interface ApplicationsProps {
4 | data: {
5 | content?: string;
6 | updatedAt?: any;
7 | avatar?: string;
8 | owner?: string;
9 | href?: string;
10 | };
11 | }
12 |
13 | export default class ArticleListContent extends React.Component {}
14 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/ArticleListContent/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import moment from 'moment';
3 | import { Avatar } from 'antd';
4 | import styles from './index.less';
5 |
6 | const ArticleListContent = ({ data: { content, updatedAt, avatar, owner, href } }) => (
7 |
8 |
{content}
9 |
10 |
11 |
{owner} 发布在
{href}
12 |
{moment(updatedAt).format('YYYY-MM-DD HH:mm')}
13 |
14 |
15 | );
16 |
17 | export default ArticleListContent;
18 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/Bar/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | export interface IBarProps {
3 | title: React.ReactNode;
4 | color?: string;
5 | padding?: [number, number, number, number];
6 | height: number;
7 | data: Array<{
8 | x: string;
9 | y: number;
10 | }>;
11 | autoLabel?: boolean;
12 | style?: React.CSSProperties;
13 | }
14 |
15 | export default class Bar extends React.Component {}
16 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/ChartCard/index.d.ts:
--------------------------------------------------------------------------------
1 | import { CardProps } from 'antd/lib/card';
2 | import React from 'react';
3 |
4 | export interface IChartCardProps extends CardProps {
5 | title: React.ReactNode;
6 | action?: React.ReactNode;
7 | total?: React.ReactNode | number | (() => React.ReactNode | number);
8 | footer?: React.ReactNode;
9 | contentHeight?: number;
10 | avatar?: React.ReactNode;
11 | style?: React.CSSProperties;
12 | }
13 |
14 | export default class ChartCard extends React.Component {}
15 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/Field/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | export interface IFieldProps {
3 | label: React.ReactNode;
4 | value: React.ReactNode;
5 | style?: React.CSSProperties;
6 | }
7 |
8 | export default class Field extends React.Component {}
9 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/Field/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import styles from './index.less';
4 |
5 | const Field = ({ label, value, ...rest }) => (
6 |
7 | {label}
8 | {value}
9 |
10 | );
11 |
12 | export default Field;
13 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/Field/index.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .field {
4 | margin: 0;
5 | overflow: hidden;
6 | white-space: nowrap;
7 | text-overflow: ellipsis;
8 | .label,
9 | .number {
10 | font-size: @font-size-base;
11 | line-height: 22px;
12 | }
13 | .number {
14 | margin-left: 8px;
15 | color: @heading-color;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/Gauge/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | export interface IGaugeProps {
3 | title: React.ReactNode;
4 | color?: string;
5 | height: number;
6 | bgColor?: number;
7 | percent: number;
8 | style?: React.CSSProperties;
9 | }
10 |
11 | export default class Gauge extends React.Component {}
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/MiniArea/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | // g2已经更新到3.0
4 | // 不带的写了
5 |
6 | export interface IAxis {
7 | title: any;
8 | line: any;
9 | gridAlign: any;
10 | labels: any;
11 | tickLine: any;
12 | grid: any;
13 | }
14 |
15 | export interface IMiniAreaProps {
16 | color?: string;
17 | height?: number;
18 | borderColor?: string;
19 | line?: boolean;
20 | animate?: boolean;
21 | xAxis?: IAxis;
22 | yAxis?: IAxis;
23 | data: Array<{
24 | x: number | string;
25 | y: number;
26 | }>;
27 | }
28 |
29 | export default class MiniArea extends React.Component {}
30 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/MiniBar/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | export interface IMiniBarProps {
3 | color?: string;
4 | height?: number;
5 | data: Array<{
6 | x: number | string;
7 | y: number;
8 | }>;
9 | style?: React.CSSProperties;
10 | }
11 |
12 | export default class MiniBar extends React.Component {}
13 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/MiniProgress/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | export interface IMiniProgressProps {
3 | target: number;
4 | targetLabel: string;
5 | color?: string;
6 | strokeWidth?: number;
7 | percent?: number;
8 | style?: React.CSSProperties;
9 | }
10 |
11 | export default class MiniProgress extends React.Component {}
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/Radar/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | export interface IRadarProps {
3 | title?: React.ReactNode;
4 | height: number;
5 | padding?: [number, number, number, number];
6 | hasLegend?: boolean;
7 | data: Array<{
8 | name: string;
9 | label: string;
10 | value: string;
11 | }>;
12 | style?: React.CSSProperties;
13 | }
14 |
15 | export default class Radar extends React.Component {}
16 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/TagCloud/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | export interface ITagCloudProps {
3 | data: Array<{
4 | name: string;
5 | value: number;
6 | }>;
7 | height: number;
8 | style?: React.CSSProperties;
9 | }
10 |
11 | export default class TagCloud extends React.Component {}
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/TagCloud/index.less:
--------------------------------------------------------------------------------
1 | .tagCloud {
2 | overflow: hidden;
3 | canvas {
4 | transform-origin: 0 0;
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/TimelineChart/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | export interface ITimelineChartProps {
3 | data: Array<{
4 | x: number;
5 | y1: number;
6 | y2?: number;
7 | }>;
8 | titleMap: { y1: string; y2?: string };
9 | padding?: [number, number, number, number];
10 | height?: number;
11 | style?: React.CSSProperties;
12 | }
13 |
14 | export default class TimelineChart extends React.Component {}
15 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/TimelineChart/index.less:
--------------------------------------------------------------------------------
1 | .timelineChart {
2 | background: #fff;
3 | }
4 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/WaterWave/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | export interface IWaterWaveProps {
3 | title: React.ReactNode;
4 | color?: string;
5 | height: number;
6 | percent: number;
7 | style?: React.CSSProperties;
8 | }
9 |
10 | export default class WaterWave extends React.Component {}
11 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/WaterWave/index.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .waterWave {
4 | position: relative;
5 | display: inline-block;
6 | transform-origin: left;
7 | .text {
8 | position: absolute;
9 | top: 32px;
10 | left: 0;
11 | width: 100%;
12 | text-align: center;
13 | span {
14 | color: @text-color-secondary;
15 | font-size: 14px;
16 | line-height: 22px;
17 | }
18 | h4 {
19 | color: @heading-color;
20 | font-size: 24px;
21 | line-height: 32px;
22 | }
23 | }
24 | .waterWaveCanvasWrapper {
25 | transform: scale(0.5);
26 | transform-origin: 0 0;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/bizcharts.d.ts:
--------------------------------------------------------------------------------
1 | import * as BizChart from 'bizcharts';
2 |
3 | export = BizChart;
4 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/bizcharts.js:
--------------------------------------------------------------------------------
1 | import * as BizChart from 'bizcharts';
2 |
3 | export default BizChart;
4 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/demo/bar.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: 4
3 | title: 柱状图
4 | ---
5 |
6 | 通过设置 `x`,`y` 属性,可以快速的构建出一个漂亮的柱状图,各种纬度的关系则是通过自定义的数据展现。
7 |
8 | ````jsx
9 | import { Bar } from 'ant-design-pro/lib/Charts';
10 |
11 | const salesData = [];
12 | for (let i = 0; i < 12; i += 1) {
13 | salesData.push({
14 | x: `${i + 1}月`,
15 | y: Math.floor(Math.random() * 1000) + 200,
16 | });
17 | }
18 |
19 | ReactDOM.render(
20 |
25 | , mountNode);
26 | ````
27 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/demo/gauge.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: 7
3 | title: 仪表盘
4 | ---
5 |
6 | 仪表盘是一种进度展示方式,可以更直观的展示当前的进展情况,通常也可表示占比。
7 |
8 | ````jsx
9 | import { Gauge } from 'ant-design-pro/lib/Charts';
10 |
11 | ReactDOM.render(
12 |
17 | , mountNode);
18 | ````
19 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/demo/mini-area.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: 2
3 | col: 2
4 | title: 迷你区域图
5 | ---
6 |
7 | ````jsx
8 | import { MiniArea } from 'ant-design-pro/lib/Charts';
9 | import moment from 'moment';
10 |
11 | const visitData = [];
12 | const beginDay = new Date().getTime();
13 | for (let i = 0; i < 20; i += 1) {
14 | visitData.push({
15 | x: moment(new Date(beginDay + (1000 * 60 * 60 * 24 * i))).format('YYYY-MM-DD'),
16 | y: Math.floor(Math.random() * 100) + 10,
17 | });
18 | }
19 |
20 | ReactDOM.render(
21 |
27 | , mountNode);
28 | ````
29 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/demo/mini-bar.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: 2
3 | col: 2
4 | title: 迷你柱状图
5 | ---
6 |
7 | 迷你柱状图更适合展示简单的区间数据,简洁的表现方式可以很好的减少大数据量的视觉展现压力。
8 |
9 | ````jsx
10 | import { MiniBar } from 'ant-design-pro/lib/Charts';
11 | import moment from 'moment';
12 |
13 | const visitData = [];
14 | const beginDay = new Date().getTime();
15 | for (let i = 0; i < 20; i += 1) {
16 | visitData.push({
17 | x: moment(new Date(beginDay + (1000 * 60 * 60 * 24 * i))).format('YYYY-MM-DD'),
18 | y: Math.floor(Math.random() * 100) + 10,
19 | });
20 | }
21 |
22 | ReactDOM.render(
23 |
27 | , mountNode);
28 | ````
29 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/demo/mini-pie.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: 6
3 | title: 迷你饼状图
4 | ---
5 |
6 | 通过简化 `Pie` 属性的设置,可以快速的实现极简的饼状图,可配合 `ChartCard` 组合展
7 | 现更多业务场景。
8 |
9 | ```jsx
10 | import { Pie } from 'ant-design-pro/lib/Charts';
11 |
12 | ReactDOM.render(
13 | ,
14 | mountNode
15 | );
16 | ```
17 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/demo/mini-progress.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: 3
3 | title: 迷你进度条
4 | ---
5 |
6 | ````jsx
7 | import { MiniProgress } from 'ant-design-pro/lib/Charts';
8 |
9 | ReactDOM.render(
10 |
11 | , mountNode);
12 | ````
13 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/demo/tag-cloud.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: 9
3 | title: 标签云
4 | ---
5 |
6 | 标签云是一套相关的标签以及与此相应的权重展示方式,一般典型的标签云有 30 至 150 个标签,而权重影响使用的字体大小或其他视觉效果。
7 |
8 | ````jsx
9 | import { TagCloud } from 'ant-design-pro/lib/Charts';
10 |
11 | const tags = [];
12 | for (let i = 0; i < 50; i += 1) {
13 | tags.push({
14 | name: `TagClout-Title-${i}`,
15 | value: Math.floor((Math.random() * 50)) + 20,
16 | });
17 | }
18 |
19 | ReactDOM.render(
20 |
24 | , mountNode);
25 | ````
26 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/demo/timeline-chart.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: 9
3 | title: 带有时间轴的图表
4 | ---
5 |
6 | 使用 `TimelineChart` 组件可以实现带有时间轴的柱状图展现,而其中的 `x` 属性,则是时间值的指向,默认最多支持同时展现两个指标,分别是 `y1` 和 `y2`。
7 |
8 | ````jsx
9 | import { TimelineChart } from 'ant-design-pro/lib/Charts';
10 |
11 | const chartData = [];
12 | for (let i = 0; i < 20; i += 1) {
13 | chartData.push({
14 | x: (new Date().getTime()) + (1000 * 60 * 30 * i),
15 | y1: Math.floor(Math.random() * 100) + 1000,
16 | y2: Math.floor(Math.random() * 100) + 10,
17 | });
18 | }
19 |
20 | ReactDOM.render(
21 |
26 | , mountNode);
27 | ````
28 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/demo/waterwave.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: 8
3 | title: 水波图
4 | ---
5 |
6 | 水波图是一种比例的展示方式,可以更直观的展示关键值的占比。
7 |
8 | ````jsx
9 | import { WaterWave } from 'ant-design-pro/lib/Charts';
10 |
11 | ReactDOM.render(
12 |
13 |
18 |
19 | , mountNode);
20 | ````
21 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/Charts/index.less:
--------------------------------------------------------------------------------
1 | .miniChart {
2 | position: relative;
3 | width: 100%;
4 | .chartContent {
5 | position: absolute;
6 | bottom: -28px;
7 | width: 100%;
8 | > div {
9 | margin: 0 -5px;
10 | overflow: hidden;
11 | }
12 | }
13 | .chartLoading {
14 | position: absolute;
15 | top: 16px;
16 | left: 50%;
17 | margin-left: -7px;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/EditableLinkGroup/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export interface EditableLinkGroupProps {
4 | links: any[];
5 | onAdd: () => void;
6 | linkElement: string;
7 | }
8 |
9 | export default class EditableLinkGroup extends React.Component {}
10 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/EditableLinkGroup/index.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .linkGroup {
4 | padding: 20px 0 8px 24px;
5 | font-size: 0;
6 | & > a {
7 | display: inline-block;
8 | width: 25%;
9 | margin-bottom: 13px;
10 | color: @text-color;
11 | font-size: @font-size-base;
12 | &:hover {
13 | color: @primary-color;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/HeaderDropdown/index.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .container > * {
4 | background-color: #fff;
5 | border-radius: 4px;
6 | box-shadow: @shadow-1-down;
7 | }
8 |
9 | @media screen and (max-width: @screen-xs) {
10 | .container {
11 | width: 100% !important;
12 | }
13 | .container > * {
14 | border-radius: 0 !important;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/HeaderDropdown/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Dropdown } from 'antd';
3 | import { DropDownProps } from 'antd/es/dropdown';
4 | import classNames from 'classnames';
5 | import styles from './index.less';
6 |
7 | export interface HeaderDropdownProps extends DropDownProps {
8 | overlayClassName?: string;
9 | }
10 |
11 | const HeaderDropdown: React.FC = ({ overlayClassName, ...restProps }) => (
12 |
13 | );
14 |
15 | export default HeaderDropdown;
16 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/HeaderSearch/index.zh-CN.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: HeaderSearch
3 | subtitle: 顶部搜索框
4 | cols: 1
5 | order: 8
6 | ---
7 |
8 | 通常作为全局搜索的入口,放置在导航工具条右侧。
9 |
10 | ## API
11 |
12 | 参数 | 说明 | 类型 | 默认值
13 | ----|------|-----|------
14 | placeholder | 占位文字 | string | -
15 | dataSource | 当前提示内容列表 | string[] | -
16 | onSearch | 搜索补全项的时候调用 | function(value) | -
17 | onChange | 选中 option,或 input 的 value 变化时,调用此函数 | function(value) | -
18 | onSelect | 被选中时调用,参数为选中项的 value 值 | function(value) | -
19 | onPressEnter | 按下回车时的回调 | function(value) | -
20 | onVisibleChange | 显示或隐藏文本框的回调 | function(value) |-
21 | defaultOpen | 输入框首次显示是否显示 | boolean | false
22 | open | 控制输入框是否显示 | boolean |false
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/IconFont/index.tsx:
--------------------------------------------------------------------------------
1 | import { Icon } from 'antd';
2 | import defaultSettings from '../../defaultSettings';
3 | const scriptUrl = defaultSettings.iconfontUrl;
4 | // 使用:
5 | // import IconFont from '@/components/IconFont';
6 | //
7 | export default Icon.createFromIconfontCN({ scriptUrl });
8 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/NoticeIcon/demo/basic.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: 1
3 | title: 通知图标
4 | ---
5 |
6 | 通常用在导航工具栏上。
7 |
8 | ````jsx
9 | import NoticeIcon from 'ant-design-pro/lib/NoticeIcon';
10 |
11 | ReactDOM.render(, mountNode);
12 | ````
13 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/NoticeIcon/index.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .popover {
4 | position: relative;
5 | width: 336px;
6 | }
7 |
8 | .noticeButton {
9 | display: inline-block;
10 | cursor: pointer;
11 | transition: all 0.3s;
12 | }
13 | .icon {
14 | padding: 4px;
15 | vertical-align: middle;
16 | }
17 |
18 | .badge {
19 | font-size: 16px;
20 | }
21 |
22 | .tabs {
23 | :global {
24 | .ant-tabs-nav-scroll {
25 | text-align: center;
26 | }
27 | .ant-tabs-bar {
28 | margin-bottom: 0;
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/PageHeader/breadcrumb.d.ts:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { PageHeaderProps } from './index';
3 |
4 | export default class BreadcrumbView extends React.Component {}
5 |
6 | export function getBreadcrumb(breadcrumbNameMap: object, url: string): object;
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/PageHeader/demo/simple.md:
--------------------------------------------------------------------------------
1 | ---
2 | order: 3
3 | title: Simple
4 | ---
5 |
6 | 简单的页头。
7 |
8 | ````jsx
9 | import PageHeader from 'ant-design-pro/lib/PageHeader';
10 |
11 | const breadcrumbList = [{
12 | title: '一级菜单',
13 | href: '/',
14 | }, {
15 | title: '二级菜单',
16 | href: '/',
17 | }, {
18 | title: '三级菜单',
19 | }];
20 |
21 | ReactDOM.render(
22 |
25 | , mountNode);
26 | ````
27 |
28 |
33 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/PageHeaderWrapper/GridContent.less:
--------------------------------------------------------------------------------
1 | .main {
2 | width: 100%;
3 | height: 100%;
4 | min-height: 100%;
5 | transition: 0.3s;
6 | &.wide {
7 | max-width: 1200px;
8 | margin: 0 auto;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/PageHeaderWrapper/GridContent.tsx:
--------------------------------------------------------------------------------
1 | import React, { PureComponent } from 'react';
2 | import { connect } from 'dva';
3 | import styles from './GridContent.less';
4 |
5 | class GridContent extends PureComponent {
6 | render() {
7 | const { contentWidth, children } = this.props;
8 | let className = `${styles.main}`;
9 | if (contentWidth === 'Fixed') {
10 | className = `${styles.main} ${styles.wide}`;
11 | }
12 | return {children}
;
13 | }
14 | }
15 |
16 | export default connect(({ setting }: any) => ({
17 | contentWidth: setting.contentWidth,
18 | }))(GridContent);
19 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/PageHeaderWrapper/index.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .content {
4 | margin: 24px 24px 0;
5 | }
6 |
7 | @media screen and (max-width: @screen-sm) {
8 | .content {
9 | margin: 24px 0 0;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/PageLoading/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Spin } from 'antd';
3 |
4 | // loading components from code split
5 | // https://umijs.org/plugin/umi-plugin-react.html#dynamicimport
6 | const PageLoading: React.FC = () => (
7 |
8 |
9 |
10 | );
11 | export default PageLoading;
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/SelectLang/index.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .menu {
4 | :global(.anticon) {
5 | margin-right: 8px;
6 | }
7 | :global(.ant-dropdown-menu-item) {
8 | min-width: 160px;
9 | }
10 | }
11 |
12 | .dropDown {
13 | line-height: @layout-header-height;
14 | vertical-align: top;
15 | cursor: pointer;
16 | > i {
17 | font-size: 16px !important;
18 | transform: none !important;
19 | svg {
20 | position: relative;
21 | top: -1px;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/SettingDrawer/ThemeColor.less:
--------------------------------------------------------------------------------
1 | .themeColor {
2 | margin-top: 24px;
3 | overflow: hidden;
4 | .title {
5 | margin-bottom: 12px;
6 | color: rgba(0, 0, 0, 0.65);
7 | font-size: 14px;
8 | line-height: 22px;
9 | }
10 | .colorBlock {
11 | float: left;
12 | width: 20px;
13 | height: 20px;
14 | margin-right: 8px;
15 | color: #fff;
16 | font-weight: bold;
17 | text-align: center;
18 | border-radius: 2px;
19 | cursor: pointer;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/SiderMenu/BaseMenuProps.ts:
--------------------------------------------------------------------------------
1 | import { MenuMode, MenuTheme } from 'antd/es/menu';
2 | import React from 'react';
3 | import { MenuDataItem } from './MenuDataItem';
4 | export interface BaseMenuProps {
5 | className?: string;
6 | collapsed?: boolean;
7 | flatMenuKeys?: any[];
8 | handleOpenChange?: (openKeys: string[]) => void;
9 | isMobile?: boolean;
10 | location?: Location;
11 | menuData?: MenuDataItem[];
12 | mode?: MenuMode;
13 | onCollapse?: (collapsed: boolean) => void;
14 | onOpenChange?: (openKeys: string[]) => void;
15 | openKeys?: string[];
16 | style?: React.CSSProperties;
17 | theme?: MenuTheme;
18 | }
19 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/SiderMenu/MenuDataItem.ts:
--------------------------------------------------------------------------------
1 | export interface MenuDataItem {
2 | authority?: string[] | string;
3 | children?: MenuDataItem[];
4 | hideChildrenInMenu?: boolean;
5 | hideInMenu?: boolean;
6 | icon?: string;
7 | locale?: string;
8 | name?: string;
9 | path: string;
10 | routes?: R extends true ? MenuDataItem[] : never;
11 | [key: string]: any;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/SiderMenu/SiderMenuProps.ts:
--------------------------------------------------------------------------------
1 | import { BaseMenuProps } from './BaseMenuProps';
2 | export interface SiderMenuProps extends BaseMenuProps {
3 | logo?: string;
4 | fixSiderbar?: boolean;
5 | }
6 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/StandardFormRow/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export interface StandardFormRowProps {
4 | title: string;
5 | last?: boolean;
6 | block?: boolean;
7 | grid?: boolean;
8 | style?: React.CSSProperties;
9 | }
10 |
11 | export default class StandardFormRow extends React.Component {}
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/StandardTable/index.d.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { PaginationConfig, SorterResult, TableCurrentDataSource } from 'antd/lib/table';
3 |
4 | export interface StandardTableProps {
5 | columns: any;
6 | onSelectRow: (row: any) => void;
7 | data: any;
8 | rowKey?: string;
9 | selectedRows: any[];
10 | onChange?: (
11 | pagination: PaginationConfig,
12 | filters: Record,
13 | sorter: SorterResult,
14 | extra?: TableCurrentDataSource,
15 | ) => void;
16 | loading?: boolean;
17 | }
18 |
19 | export default class StandardTable extends React.Component {}
20 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/StandardTable/index.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .standardTable {
4 | :global {
5 | .ant-table-pagination {
6 | margin-top: 24px;
7 | }
8 | }
9 |
10 | .tableAlert {
11 | margin-bottom: 16px;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/_utils/pathTools.test.ts:
--------------------------------------------------------------------------------
1 | import 'jest';
2 | import { urlToList } from './pathTools';
3 |
4 | describe('test urlToList', () => {
5 | it('A path', () => {
6 | expect(urlToList('/userinfo')).toEqual(['/userinfo']);
7 | });
8 | it('Secondary path', () => {
9 | expect(urlToList('/userinfo/2144')).toEqual(['/userinfo', '/userinfo/2144']);
10 | });
11 | it('Three paths', () => {
12 | expect(urlToList('/userinfo/2144/addr')).toEqual([
13 | '/userinfo',
14 | '/userinfo/2144',
15 | '/userinfo/2144/addr',
16 | ]);
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/components/_utils/pathTools.ts:
--------------------------------------------------------------------------------
1 | // /userinfo/2144/id => ['/userinfo','/useinfo/2144,'/userindo/2144/id']
2 | // eslint-disable-next-line import/prefer-default-export
3 | export function urlToList(url: string): string[] {
4 | const urllist = url.split('/').filter(i => i);
5 | return urllist.map((urlItem, index) => `/${urllist.slice(0, index + 1).join('/')}`);
6 | }
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/generated/.gitignore:
--------------------------------------------------------------------------------
1 | wwwroot/*.js
2 | node_modules
3 | typings
4 | dist
5 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/generated/.openapi-generator/VERSION:
--------------------------------------------------------------------------------
1 | 4.2.0
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/generated/index.ts:
--------------------------------------------------------------------------------
1 | // tslint:disable
2 | /**
3 | * rest api interface
4 | * 项目标准接口
5 | *
6 | * The version of the OpenAPI document: 0.0.1
7 | *
8 | *
9 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
10 | * https://openapi-generator.tech
11 | * Do not edit the class manually.
12 | */
13 |
14 |
15 | export * from "./api";
16 | export * from "./configuration";
17 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/layouts/BasicLayout.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .content {
4 | margin: 24px;
5 | padding-top: @layout-header-height;
6 | }
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/layouts/BlankLayout.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const Layout: React.FC = ({ children }) => {children}
;
4 |
5 | export default Layout;
6 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/layouts/Header.less:
--------------------------------------------------------------------------------
1 | .fixedHeader {
2 | position: fixed;
3 | top: 0;
4 | right: 0;
5 | z-index: 9;
6 | width: 100%;
7 | transition: width 0.2s;
8 | }
9 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/layouts/MenuContext.tsx:
--------------------------------------------------------------------------------
1 | import { createContext } from 'react';
2 |
3 | export default createContext({});
4 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/en-US/component.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'component.tagSelect.expand': 'Expand',
3 | 'component.tagSelect.collapse': 'Collapse',
4 | 'component.tagSelect.all': 'All',
5 | 'component.miniProgress.tooltipDefault': 'Target value',
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/en-US/editor.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'app.editor.flow.title': 'Flowchart Editor',
3 | 'app.editor.flow.description':
4 | 'The flow chart is an excellent way to represent the idea of the algorithm.',
5 | 'app.editor.koni.title': 'Koni Editor',
6 | 'app.editor.koni.description':
7 | 'The topology diagram refers to the network structure diagram composed of network node devices and communication media.',
8 | 'app.editor.mind.title': 'Mind Map Editor',
9 | 'app.editor.mind.description':
10 | 'The brain map is an effective graphical thinking tool for expressing divergent thinking. It is simple but effective and is a practical thinking tool.',
11 | };
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/en-US/exception.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'app.exception.back': 'Back to home',
3 | 'app.exception.description.403': "Sorry, you don't have access to this page",
4 | 'app.exception.description.404': 'Sorry, the page you visited does not exist',
5 | 'app.exception.description.500': 'Sorry, the server is reporting an error',
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/en-US/pwa.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'app.pwa.offline': 'You are offline now',
3 | 'app.pwa.serviceworker.updated': 'New content is available',
4 | 'app.pwa.serviceworker.updated.hint': 'Please press the "Refresh" button to reload current page',
5 | 'app.pwa.serviceworker.updated.ok': 'Refresh',
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/pt-BR/component.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'component.tagSelect.expand': 'Expandir',
3 | 'component.tagSelect.collapse': 'Diminuir',
4 | 'component.tagSelect.all': 'Todas',
5 | 'component.miniProgress.tooltipDefault': 'Valor alvo',
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/pt-BR/exception.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'app.exception.back': 'Voltar para Início',
3 | 'app.exception.description.403': 'Desculpe, você não tem acesso a esta página',
4 | 'app.exception.description.404': 'Desculpe, a página que você visitou não existe',
5 | 'app.exception.description.500': 'Desculpe, o servidor está reportando um erro',
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/pt-BR/pwa.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'app.pwa.offline': 'Você está offline agora',
3 | 'app.pwa.serviceworker.updated': 'Novo conteúdo está disponível',
4 | 'app.pwa.serviceworker.updated.hint':
5 | 'Por favor, pressione o botão "Atualizar" para recarregar a página atual',
6 | 'app.pwa.serviceworker.updated.ok': 'Atualizar',
7 | };
8 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/zh-CN/component.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'component.tagSelect.expand': '展开',
3 | 'component.tagSelect.collapse': '收起',
4 | 'component.tagSelect.all': '全部',
5 | 'component.miniProgress.tooltipDefault': '目标值',
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/zh-CN/editor.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'app.editor.flow.title': '流程图编辑器',
3 | 'app.editor.flow.description': '千言万语不如一张图,流程图是表示算法思路的好方法',
4 | 'app.editor.koni.title': '拓扑编辑器',
5 | 'app.editor.koni.description': '拓扑结构图是指由网络节点设备和通信介质构成的网络结构图',
6 | 'app.editor.mind.title': '脑图编辑器',
7 | 'app.editor.mind.description':
8 | '脑图是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。',
9 | };
10 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/zh-CN/exception.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'app.exception.back': '返回首页',
3 | 'app.exception.description.403': '抱歉,你无权访问此页面',
4 | 'app.exception.description.404': '抱歉,你访问的页面不存在',
5 | 'app.exception.description.500': '抱歉,服务器出错了',
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/zh-CN/pwa.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'app.pwa.offline': '当前处于离线状态',
3 | 'app.pwa.serviceworker.updated': '有新内容',
4 | 'app.pwa.serviceworker.updated.hint': '请点击“刷新”按钮或者手动刷新页面',
5 | 'app.pwa.serviceworker.updated.ok': '刷新',
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/zh-TW/component.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'component.tagSelect.expand': '展開',
3 | 'component.tagSelect.collapse': '收起',
4 | 'component.tagSelect.all': '全部',
5 | 'component.miniProgress.tooltipDefault': '目标值',
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/zh-TW/editor.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'app.editor.flow.title': '流程圖編輯器',
3 | 'app.editor.flow.description': '千言萬語不如一張圖,流程圖是表示算法思路的好方法',
4 | 'app.editor.koni.title': '拓撲編輯器',
5 | 'app.editor.koni.description': '拓撲結構圖是指由網絡節點設備和通信介質構成的網絡結構圖',
6 | 'app.editor.mind.title': '腦圖編輯器',
7 | 'app.editor.mind.description':
8 | '腦圖是表達發散性思維的有效圖形思維工具 ,它簡單卻又很有效,是一種實用性的思維工具',
9 | };
10 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/zh-TW/exception.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'app.exception.back': '返回首頁',
3 | 'app.exception.description.403': '抱歉,妳無權訪問此頁面',
4 | 'app.exception.description.404': '抱歉,妳訪問的頁面不存在',
5 | 'app.exception.description.500': '抱歉,服務器出錯了',
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/locales/zh-TW/pwa.js:
--------------------------------------------------------------------------------
1 | export default {
2 | 'app.pwa.offline': '當前處於離線狀態',
3 | 'app.pwa.serviceworker.updated': '有新內容',
4 | 'app.pwa.serviceworker.updated.hint': '請點擊“刷新”按鈕或者手動刷新頁面',
5 | 'app.pwa.serviceworker.updated.ok': '刷新',
6 | };
7 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ant Design Pro",
3 | "short_name": "Ant Design Pro",
4 | "display": "standalone",
5 | "start_url": "./?utm_source=homescreen",
6 | "theme_color": "#002140",
7 | "background_color": "#001529",
8 | "icons": [
9 | {
10 | "src": "icons/icon-192x192.png",
11 | "sizes": "192x192"
12 | },
13 | {
14 | "src": "icons/icon-128x128.png",
15 | "sizes": "128x128"
16 | },
17 | {
18 | "src": "icons/icon-512x512.png",
19 | "sizes": "512x512"
20 | }
21 | ]
22 | }
23 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/models/project.ts:
--------------------------------------------------------------------------------
1 | import { queryProjectNotice } from '@/services/api';
2 | import { ModelType } from './connect';
3 |
4 | const projectModel: ModelType = {
5 | namespace: 'project',
6 | state: {
7 | notice: [],
8 | },
9 |
10 | effects: {
11 | *fetchNotice(_, { call, put }) {
12 | const response = yield call(queryProjectNotice);
13 | yield put({
14 | type: 'saveNotice',
15 | payload: Array.isArray(response) ? response : [],
16 | });
17 | },
18 | },
19 |
20 | reducers: {
21 | saveNotice(state, action) {
22 | return {
23 | ...state,
24 | notice: action.payload,
25 | };
26 | },
27 | },
28 | };
29 |
30 | export default projectModel;
31 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/404.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Link from 'umi/link';
3 | import { formatMessage } from 'umi-plugin-react/locale';
4 | import { Exception } from 'ant-design-pro';
5 |
6 | export default () => (
7 |
13 | );
14 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/Account/Center/Articles.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .articleList {
4 | :global {
5 | .ant-list-item:first-child {
6 | padding-top: 0;
7 | }
8 | }
9 | }
10 | a.listItemMetaTitle {
11 | color: @heading-color;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/Account/Settings/GeographicView.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .row {
4 | .item {
5 | width: 50%;
6 | max-width: 220px;
7 | }
8 | .item:first-child {
9 | width: ~'calc(50% - 8px)';
10 | margin-right: 8px;
11 | }
12 | }
13 |
14 | @media screen and (max-width: @screen-sm) {
15 | .item:first-child {
16 | margin: 0;
17 | margin-bottom: 8px;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/Account/Settings/PhoneView.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .area_code {
4 | width: 30%;
5 | max-width: 128px;
6 | margin-right: 8px;
7 | }
8 | .phone_number {
9 | width: ~'calc(70% - 8px)';
10 | max-width: 312px;
11 | }
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/Dashboard/Monitor.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 | @import '~@/utils/utils.less';
3 |
4 | .mapChart {
5 | height: 452px;
6 | padding-top: 24px;
7 | text-align: center;
8 | img {
9 | display: inline-block;
10 | max-width: 100%;
11 | max-height: 437px;
12 | }
13 | }
14 |
15 | .pieCard :global(.pie-stat) {
16 | font-size: 24px !important;
17 | }
18 |
19 | @media screen and (max-width: @screen-lg) {
20 | .mapChart {
21 | height: auto;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/Exception/403.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { formatMessage } from 'umi-plugin-react/locale';
3 | import Link from 'umi/link';
4 | import { Exception } from 'ant-design-pro';
5 |
6 | const Exception403 = () => (
7 |
13 | );
14 |
15 | export default Exception403;
16 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/Exception/404.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { formatMessage } from 'umi-plugin-react/locale';
3 | import Link from 'umi/link';
4 | import { Exception } from 'ant-design-pro';
5 |
6 | const Exception404 = () => (
7 |
13 | );
14 |
15 | export default Exception404;
16 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/Exception/500.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { formatMessage } from 'umi-plugin-react/locale';
3 | import Link from 'umi/link';
4 | import { Exception } from 'ant-design-pro';
5 |
6 | const Exception500 = () => (
7 |
13 | );
14 |
15 | export default Exception500;
16 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/Exception/style.less:
--------------------------------------------------------------------------------
1 | .trigger {
2 | background: 'red';
3 | :global(.ant-btn) {
4 | margin-right: 8px;
5 | margin-bottom: 12px;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/List/Articles.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | a.listItemMetaTitle {
4 | color: @heading-color;
5 | }
6 | .listItemExtra {
7 | width: 272px;
8 | height: 1px;
9 | }
10 | .selfTrigger {
11 | margin-left: 12px;
12 | }
13 |
14 | @media screen and (max-width: @screen-xs) {
15 | .selfTrigger {
16 | display: block;
17 | margin-left: 0;
18 | }
19 | }
20 | @media screen and (max-width: @screen-md) {
21 | .selfTrigger {
22 | display: block;
23 | margin-left: 0;
24 | }
25 | }
26 | @media screen and (max-width: @screen-lg) {
27 | .listItemExtra {
28 | width: 0;
29 | height: 1px;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/Profile/BasicProfile.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .title {
4 | margin-bottom: 16px;
5 | color: @heading-color;
6 | font-weight: 500;
7 | font-size: 16px;
8 | }
9 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/User/Login.less:
--------------------------------------------------------------------------------
1 | @import '~antd/lib/style/themes/default.less';
2 |
3 | .main {
4 | width: 388px;
5 | margin: 0 auto;
6 | @media screen and (max-width: @screen-sm) {
7 | width: 95%;
8 | }
9 |
10 | .icon {
11 | margin-left: 16px;
12 | color: rgba(0, 0, 0, 0.2);
13 | font-size: 24px;
14 | vertical-align: middle;
15 | cursor: pointer;
16 | transition: color 0.3s;
17 |
18 | &:hover {
19 | color: @primary-color;
20 | }
21 | }
22 |
23 | .other {
24 | margin-top: 24px;
25 | line-height: 22px;
26 | text-align: left;
27 |
28 | .register {
29 | float: right;
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/User/RegisterResult.less:
--------------------------------------------------------------------------------
1 | .registerResult {
2 | :global {
3 | .anticon {
4 | font-size: 64px;
5 | }
6 | }
7 | .title {
8 | margin-top: 32px;
9 | font-size: 20px;
10 | line-height: 28px;
11 | }
12 | .actions {
13 | margin-top: 40px;
14 | a + a {
15 | margin-left: 8px;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/Welcome.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export default () => (
4 |
5 | 想要添加更多页面?请参考{' '}
6 |
7 | umi 区块
8 |
9 | 。
10 |
11 | );
12 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/pages/document.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 | Ant Design Pro
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/services/error.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request';
2 |
3 | export default async function queryError(code) {
4 | return request(`/api/${code}`);
5 | }
6 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/services/geographic.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request';
2 |
3 | export async function queryProvince() {
4 | return request('/api/geographic/province');
5 | }
6 |
7 | export async function queryCity(province) {
8 | return request(`/api/geographic/city/${province}`);
9 | }
10 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/utils/Authorized.ts:
--------------------------------------------------------------------------------
1 | import { Authorized as RenderAuthorized } from 'ant-design-pro';
2 | import { getAuthority } from './authority';
3 |
4 | let Authorized = RenderAuthorized(getAuthority()); // eslint-disable-line
5 |
6 | // Reload the rights component
7 | const reloadAuthorized = () => {
8 | Authorized = RenderAuthorized(getAuthority());
9 | };
10 |
11 | export { reloadAuthorized };
12 | export default Authorized;
13 |
--------------------------------------------------------------------------------
/packages/clients/nest-react/src/utils/authority.test.ts:
--------------------------------------------------------------------------------
1 | import 'jest';
2 | import { getAuthority } from './authority';
3 |
4 | describe('getAuthority should be strong', () => {
5 | it('empty', () => {
6 | expect(getAuthority(null!)).toEqual(['admin']); // default value
7 | });
8 | it('string', () => {
9 | expect(getAuthority('admin')).toEqual(['admin']);
10 | });
11 | it('array with double quotes', () => {
12 | expect(getAuthority('"admin"')).toEqual(['admin']);
13 | });
14 | it('array with single item', () => {
15 | expect(getAuthority('["admin"]')).toEqual(['admin']);
16 | });
17 | it('array with multiple items', () => {
18 | expect(getAuthority('["admin", "guest"]')).toEqual(['admin', 'guest']);
19 | });
20 | });
21 |
--------------------------------------------------------------------------------
/packages/servers/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/servers/.DS_Store
--------------------------------------------------------------------------------
/packages/servers/nest-server/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/servers/nest-server/.DS_Store
--------------------------------------------------------------------------------
/packages/servers/nest-server/.env.example:
--------------------------------------------------------------------------------
1 | PORT=5400
2 | NODE_ENV=test
3 | API_URL=https://localhost/
4 | MONGODB_URI_PRODUCTION=mongodb://localhost/nestx-server-pro
5 | MONGODB_URI_TEST=mongodb://localhost/nestx-server-test
6 | MONGODB_URI_DEV=mongodb://localhost/nestx-server-dev
7 | SESSION_SECRET=ADS13DI999999999999888
8 |
9 | JWT_SECRET_KEY=HSSB33333333333333333333
10 | JWT_EXPIRE_IN=1h
11 | JWT_ALGORITHM=HS512
12 | MULTER_DEST=./uploads
13 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended',
11 | 'prettier',
12 | 'prettier/@typescript-eslint',
13 | ],
14 | root: true,
15 | env: {
16 | node: true,
17 | jest: true,
18 | },
19 | rules: {
20 | '@typescript-eslint/interface-name-prefix': 'off',
21 | '@typescript-eslint/explicit-function-return-type': 'off',
22 | '@typescript-eslint/no-explicit-any': 'off',
23 | },
24 | };
25 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/.gitignore:
--------------------------------------------------------------------------------
1 | # compiled output
2 | /dist
3 | /node_modules
4 |
5 | # Logs
6 | logs
7 | *.log
8 | npm-debug.log*
9 | yarn-debug.log*
10 | yarn-error.log*
11 | lerna-debug.log*
12 |
13 | # OS
14 | .DS_Store
15 |
16 | # Tests
17 | /coverage
18 | /.nyc_output
19 |
20 | # IDEs and editors
21 | /.idea
22 | .project
23 | .classpath
24 | .c9/
25 | *.launch
26 | .settings/
27 | *.sublime-workspace
28 |
29 | # IDE - VSCode
30 | .vscode/*
31 | !.vscode/settings.json
32 | !.vscode/tasks.json
33 | !.vscode/launch.json
34 | !.vscode/extensions.json
--------------------------------------------------------------------------------
/packages/servers/nest-server/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
--------------------------------------------------------------------------------
/packages/servers/nest-server/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [{
4 | "type": "node",
5 | "request": "launch",
6 | "name": "Debug Nest Framework",
7 | "args": ["${workspaceFolder}/src/main.ts"],
8 | "runtimeArgs": ["--nolazy", "-r", "ts-node/register"],
9 | "sourceMaps": true,
10 | "cwd": "${workspaceRoot}",
11 | "protocol": "inspector",
12 | "console": "integratedTerminal"
13 | }]
14 | }
--------------------------------------------------------------------------------
/packages/servers/nest-server/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "debug.node.autoAttach": "on"
3 | }
--------------------------------------------------------------------------------
/packages/servers/nest-server/README.md:
--------------------------------------------------------------------------------
1 | # nestx server
2 | Server side for nestx
3 | ### Quick start
4 |
5 | ```bash
6 |
7 | # install the repo with npm
8 | $ npm install
9 |
10 | # start the server
11 | $ npm start
12 |
13 | ```
14 |
15 | ### Other commands
16 |
17 | ```bash
18 |
19 | # development
20 | $ npm run start
21 |
22 | # watch mode
23 | $ npm run start:dev
24 |
25 | # production mode
26 | $ npm run start:prod
27 |
28 | ```
29 |
30 | ### Test
31 |
32 | ```
33 | # unit tests
34 | $ npm run test
35 |
36 | # e2e tests
37 | $ npm run test:e2e
38 |
39 | # test coverage
40 | $ npm run test:cov
41 | ```
--------------------------------------------------------------------------------
/packages/servers/nest-server/data/export.dict.json:
--------------------------------------------------------------------------------
1 | [{"_id":"59f058a7696cf532c5172ead","category":"category","name":"category","translate":"字典分类"},{"_id":"59f058a7696cf532c5172ea1","category":"category","name":"department","translate":"部门分类"},{"_id":"59f058a7696cf532c5172ea2","category":"category","name":"product","translate":"产品分类"},{"_id":"59f058a7696cf532c5172ea3","category":"product","name":"iphone","translate":"苹果手机"}]
--------------------------------------------------------------------------------
/packages/servers/nest-server/data/export.group.json:
--------------------------------------------------------------------------------
1 | [{"_id":"5b1e89da653fef1f92c4b955","name":"总公司","paths":[],"description":"总公司分组"},{"_id":"5b2766a3177e2c274909cb6d","name":"第一分公司","parent":"5b1e89da653fef1f92c4b955","paths":[],"director":"5af409755283214fb9c2ccd0","description":"研发中心"},{"_id":"5b2766a3177e2c274909cb61","name":"第二分公司","parent":"5b1e89da653fef1f92c4b955","paths":[],"description":"市场分析"}]
--------------------------------------------------------------------------------
/packages/servers/nest-server/data/export.page.json:
--------------------------------------------------------------------------------
1 | [{
2 | "_id": "5cb9f10655654febb1fcd715",
3 | "title": "测试页面",
4 | "keyword": "test",
5 | "description": "这是一个测试页面",
6 | "content": "5cb9f10655654febb1fcd715",
7 | "publish": "2019-04-19T16:02:14.398Z",
8 | "createdAt": "2019-04-19T16:02:14.403Z",
9 | "updatedAt": "2019-04-20T03:55:46.633Z"
10 | }]
--------------------------------------------------------------------------------
/packages/servers/nest-server/data/export.setting.json:
--------------------------------------------------------------------------------
1 | [{"_id":"5b0d006899f6ac12569afb05","name":"main","key":"name","value":"Typerx"},{"_id":"5b0d00a099f6ac12569afb06","name":"main","key":"logo","value":"/uploads/6dd2eea21bdde9c69d4aabc898764d7f"},{"_id":"5b0d00a099f6ac12569afb07","name":"demo","key":"logo","value":"/uploads/6dd2eea21bdde9c69d4aabc898764d7f"},{"_id":"5b0d00a099f6ac12569afb08","name":"demo2","key":"logo","value":"/uploads/6dd2eea21bdde9c69d4aabc898764d7f"}]
--------------------------------------------------------------------------------
/packages/servers/nest-server/generated/.gitignore:
--------------------------------------------------------------------------------
1 | wwwroot/*.js
2 | node_modules
3 | typings
4 | dist
5 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/generated/.openapi-generator/VERSION:
--------------------------------------------------------------------------------
1 | 4.2.1
--------------------------------------------------------------------------------
/packages/servers/nest-server/generated/index.ts:
--------------------------------------------------------------------------------
1 | // tslint:disable
2 | /**
3 | * rest api interface
4 | * 项目标准接口
5 | *
6 | * The version of the OpenAPI document: 0.0.1
7 | *
8 | *
9 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
10 | * https://openapi-generator.tech
11 | * Do not edit the class manually.
12 | */
13 |
14 |
15 | export * from "./api";
16 | export * from "./configuration";
17 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/index.js:
--------------------------------------------------------------------------------
1 | require('ts-node/register');
2 | require('./src/main');
--------------------------------------------------------------------------------
/packages/servers/nest-server/jest.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": [
3 | "ts",
4 | "tsx",
5 | "js",
6 | "json"
7 | ],
8 | "transform": {
9 | "^.+\\.tsx?$": "/node_modules/ts-jest/preprocessor.js"
10 | },
11 | "testRegex": "/src/.*\\.(test|spec).(ts|tsx|js)$",
12 | "collectCoverageFrom" : ["src/**/*.{js,jsx,tsx,ts}", "!**/node_modules/**", "!**/vendor/**"],
13 | "coverageReporters": ["json", "lcov"]
14 | }
--------------------------------------------------------------------------------
/packages/servers/nest-server/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "collection": "@nestjs/schematics",
3 | "sourceRoot": "src"
4 | }
5 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/nodemon-debug.json:
--------------------------------------------------------------------------------
1 | {
2 | "watch": ["src"],
3 | "ext": "ts",
4 | "ignore": ["src/**/*.spec.ts"],
5 | "exec": "node --inspect-brk -r ts-node/register -r tsconfig-paths/register src/main.ts"
6 | }
7 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 | "watch": ["./src"],
3 | "ext": "ts",
4 | "ignore": ["./src/**/*.spec.ts"],
5 | "exec": "node ./index",
6 | "env": {
7 | "NODE_ENV": "test"
8 | }
9 | }
--------------------------------------------------------------------------------
/packages/servers/nest-server/ormconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "mysql",
3 | "host": "localhost",
4 | "port": 3306,
5 | "username": "root",
6 | "password": "Viking$123",
7 | "database": "typerx",
8 | "entities": ["src/**/**.entity{.ts,.js}"],
9 | "synchronize": true
10 | }
11 |
12 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/public/index.html:
--------------------------------------------------------------------------------
1 | hello world
--------------------------------------------------------------------------------
/packages/servers/nest-server/src/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/servers/nest-server/src/.DS_Store
--------------------------------------------------------------------------------
/packages/servers/nest-server/src/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@nestjs/common';
2 | import { SettingsService } from 'nestx-base';
3 |
4 | @Injectable()
5 | export class AppService {
6 | constructor(private readonly settingService: SettingsService) {}
7 |
8 | getAppSettings(name: string) {
9 | return this.settingService.getSettingsByName(name);
10 | }
11 |
12 | root(): object {
13 | return null;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/src/index.ts:
--------------------------------------------------------------------------------
1 | import { AuthModule } from 'nestx-auth/src/index';
2 | import { BaseModule } from 'nestx-base/src/index';
3 | import { CmsModule } from 'nestx-cms/src/index';
4 | import { AppModule } from './app.module';
5 | const scanModules = [AuthModule, BaseModule, CmsModule, AppModule];
6 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/src/mock/mock.controller.ts:
--------------------------------------------------------------------------------
1 | import { Controller, Get } from '@nestjs/common';
2 | import { Tags } from 'nest-swagger';
3 | import { MockService } from './mock.service';
4 |
5 | @Tags('mock')
6 | @Controller('mock')
7 | export class MockController {
8 | constructor(private readonly mockService: MockService) {}
9 |
10 | @Get('init')
11 | initData(): Promise {
12 | return this.mockService.initDatabase();
13 | }
14 |
15 | @Get('reset')
16 | reset(): Promise {
17 | return this.mockService.resetDatabase();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/src/scripts/generate.ts:
--------------------------------------------------------------------------------
1 | import { NestFactory } from '@nestjs/core';
2 | import { AppModule } from './../app.module';
3 | import { createDocument } from './../swagger';
4 | import { writeFileSync } from 'fs';
5 |
6 | async function generate() {
7 | const app = await NestFactory.create(AppModule);
8 | const document = createDocument(app);
9 | writeFileSync('swagger.api.json', JSON.stringify(document));
10 | }
11 |
12 | generate();
13 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/src/swagger/constants.ts:
--------------------------------------------------------------------------------
1 | export const SWAGGER_API_ROOT = 'docs';
2 | export const SWAGGER_API_NAME = 'nestx server';
3 | export const SWAGGER_API_DESCRIPTION = 'nestx server is a simple REST API provider.';
4 | export const SWAGGER_API_CURRENT_VERSION = '0.0.1';
5 | export const SWAGGER_API_AUTH_NAME = 'Authorization';
6 | export const SWAGGER_API_AUTH_LOCATION = 'header';
--------------------------------------------------------------------------------
/packages/servers/nest-server/src/types/types.d.ts:
--------------------------------------------------------------------------------
1 | declare module "tls" {
2 | export var checkServerIdentity: (servername: string, cert: string | Buffer | (string | Buffer)[]) => any;
3 | }
4 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/src/utils/index.ts:
--------------------------------------------------------------------------------
1 | export * from './logger';
2 | export * from './secrets';
3 |
--------------------------------------------------------------------------------
/packages/servers/nest-server/src/utils/logger.ts:
--------------------------------------------------------------------------------
1 | import * as log4js from 'log4js';
2 | import { join } from 'path';
3 | import { existsSync } from 'fs';
4 | const cwd = process.cwd();
5 | const config = join(cwd, 'log4js.json');
6 |
7 | if (existsSync(config)) {
8 | log4js.configure(config);
9 | }
10 |
11 | export const logger = log4js.getLogger('app');
--------------------------------------------------------------------------------
/packages/servers/nest-server/swagger.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "swagger": {
3 | "outputDirectory": "./src/swagger",
4 | "entryFile": "./src/index.ts",
5 | "name": "rest api interface",
6 | "description": "项目标准接口",
7 | "license": "MIT",
8 | "produces": ["application/json"],
9 | "version": "0.0.1"
10 | }
11 | }
--------------------------------------------------------------------------------
/packages/servers/nest-server/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "src/scripts", "**/*spec.ts"]
4 | }
--------------------------------------------------------------------------------
/packages/servers/nest-spring/.openapi-generator/VERSION:
--------------------------------------------------------------------------------
1 | 4.2.0
--------------------------------------------------------------------------------
/packages/servers/nest-spring/README.md:
--------------------------------------------------------------------------------
1 | # OpenAPI generated server
2 |
3 | Spring Boot Server
4 |
5 |
6 | ## Overview
7 | This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.
8 | By using the [OpenAPI-Spec](https://openapis.org), you can easily generate a server stub.
9 | This is an example of building a OpenAPI-enabled server in Java using the SpringBoot framework.
10 |
11 | The underlying library integrating OpenAPI to SpringBoot is [springfox](https://github.com/springfox/springfox)
12 |
13 | Start your server as a simple java application
14 |
15 | You can view the api documentation in swagger-ui by pointing to
16 | http://localhost:8080/
17 |
18 | Change default port value in application.properties
--------------------------------------------------------------------------------
/packages/servers/nest-spring/src/main/java/org/openapitools/RFC3339DateFormat.java:
--------------------------------------------------------------------------------
1 | package org.openapitools;
2 |
3 | import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
4 | import com.fasterxml.jackson.databind.util.ISO8601Utils;
5 |
6 | import java.text.FieldPosition;
7 | import java.util.Date;
8 |
9 |
10 | public class RFC3339DateFormat extends ISO8601DateFormat {
11 |
12 | private static final long serialVersionUID = 1L;
13 |
14 | // Same as ISO8601DateFormat but serializing milliseconds.
15 | @Override
16 | public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
17 | String value = ISO8601Utils.format(date, true);
18 | toAppendTo.append(value);
19 | return toAppendTo;
20 | }
21 |
22 | }
--------------------------------------------------------------------------------
/packages/servers/nest-spring/src/main/java/org/openapitools/configuration/HomeController.java:
--------------------------------------------------------------------------------
1 | package org.openapitools.configuration;
2 |
3 | import org.springframework.stereotype.Controller;
4 | import org.springframework.web.bind.annotation.RequestMapping;
5 |
6 |
7 | /**
8 | * Home redirection to OpenAPI api documentation
9 | */
10 | @Controller
11 | public class HomeController {
12 |
13 | @RequestMapping("/")
14 | public String index() {
15 | return "redirect:swagger-ui.html";
16 | }
17 |
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/packages/servers/nest-spring/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | springfox.documentation.swagger.v2.path=/api-docs
2 | server.port=8080
3 | spring.jackson.date-format=org.openapitools.RFC3339DateFormat
4 | spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
5 |
--------------------------------------------------------------------------------
/packages/servers/nest-swagger/.gitignore:
--------------------------------------------------------------------------------
1 | # dependencies
2 | /node_modules
3 |
4 | # IDE
5 | /.idea
6 | /.awcache
7 | /.vscode
8 |
9 | # misc
10 | npm-debug.log
11 | .DS_Store
12 |
13 | # tests
14 | /test
15 | /coverage
16 | /.nyc_output
17 |
18 | # source
19 | dist
20 | index.js
21 | index.d.ts
--------------------------------------------------------------------------------
/packages/servers/nest-swagger/.npmignore:
--------------------------------------------------------------------------------
1 | # source
2 | lib
3 | index.ts
4 | package-lock.json
5 | tslint.json
6 | tsconfig.json
7 | .prettierrc
8 | !dist/**
9 | !doc/**
10 | .travis.yml
11 | /.vscode
12 | coverage
13 | .DS_Store
14 | .nyc_output
15 | tsconfig.json
16 | test
17 | src
--------------------------------------------------------------------------------
/packages/servers/nest-swagger/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "none"
4 | }
--------------------------------------------------------------------------------
/packages/servers/nest-swagger/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './swagger/decorators';
2 |
--------------------------------------------------------------------------------
/packages/servers/nest-swagger/src/utils/pathUtils.ts:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | export function normalizePath(path?: string) {
4 | if (!path) {
5 | return path;
6 | }
7 |
8 | let parts = path.split('/');
9 | parts = parts.map(part =>
10 | part.startsWith(':') ? `{${part.slice(1)}}` : part
11 | );
12 | return parts.join('/');
13 | }
14 |
--------------------------------------------------------------------------------
/packages/servers/nest-swagger/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "src/scripts", "**/*spec.ts"]
4 | }
--------------------------------------------------------------------------------
/packages/servers/nest-swagger/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "declaration": true,
5 | "noImplicitAny": false,
6 | "removeComments": true,
7 | "noLib": false,
8 | "emitDecoratorMetadata": true,
9 | "experimentalDecorators": true,
10 | "target": "es6",
11 | "sourceMap": false,
12 | "outDir": "dist",
13 | "baseUrl": "./src",
14 | "skipLibCheck": true
15 | },
16 | "include": [
17 | "src/**/*",
18 | "test/**/*"
19 | ],
20 | "exclude": [
21 | "node_modules",
22 | "**/*.spec.ts"
23 | ]
24 | }
--------------------------------------------------------------------------------
/packages/servers/nest-testing/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/servers/nest-testing/.DS_Store
--------------------------------------------------------------------------------
/packages/servers/nest-testing/generated/.gitignore:
--------------------------------------------------------------------------------
1 | wwwroot/*.js
2 | node_modules
3 | typings
4 | dist
5 |
--------------------------------------------------------------------------------
/packages/servers/nest-testing/generated/.openapi-generator/VERSION:
--------------------------------------------------------------------------------
1 | 4.2.0
--------------------------------------------------------------------------------
/packages/servers/nest-testing/generated/index.ts:
--------------------------------------------------------------------------------
1 | // tslint:disable
2 | /**
3 | * rest api interface
4 | * 项目标准接口
5 | *
6 | * The version of the OpenAPI document: 0.0.1
7 | *
8 | *
9 | * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
10 | * https://openapi-generator.tech
11 | * Do not edit the class manually.
12 | */
13 |
14 |
15 | export * from "./api";
16 | export * from "./configuration";
17 |
--------------------------------------------------------------------------------
/packages/servers/nest-testing/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | verbose: true,
3 | globals: {
4 | 'ts-jest': {
5 | tsConfig: 'tsconfig.json'
6 | }
7 | },
8 | moduleFileExtensions: [
9 | 'ts',
10 | 'js'
11 | ],
12 | transform: {
13 | '^.+\\.(ts|tsx)$': 'ts-jest'
14 | },
15 | testMatch: [
16 | '**/test/**/*.spec.(ts|js)'
17 | ],
18 | testEnvironment: 'node'
19 | };
--------------------------------------------------------------------------------
/packages/servers/nest-testing/test/utils/login.ts:
--------------------------------------------------------------------------------
1 | import { HttpClient } from './../../scripts/client';
2 | export async function login() {
3 | const loginReq = {
4 | "username": "admin",
5 | "password": "demoPSW",
6 | "type": "account"
7 | };
8 | const res = await HttpClient.login(loginReq);
9 | return res;
10 | }
11 |
--------------------------------------------------------------------------------
/packages/servers/nestx-auth/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/servers/nestx-auth/.DS_Store
--------------------------------------------------------------------------------
/packages/servers/nestx-auth/.npmignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/servers/nestx-auth/.npmignore
--------------------------------------------------------------------------------
/packages/servers/nestx-auth/index.js:
--------------------------------------------------------------------------------
1 | require('ts-node/register');
2 | require('./src/main');
--------------------------------------------------------------------------------
/packages/servers/nestx-auth/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 | "watch": ["./src"],
3 | "ext": "ts",
4 | "ignore": ["./src/**/*.spec.ts"],
5 | "exec": "node ./index",
6 | "env": {
7 | "NODE_ENV": "test"
8 | }
9 | }
--------------------------------------------------------------------------------
/packages/servers/nestx-auth/src/app.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from "@nestjs/common";
2 | import { AuthModule } from "./auth.module";
3 | import { MockUserService } from "./mock.user.service";
4 | @Module({
5 | imports: [
6 | AuthModule.registerAsync({
7 | imports: [],
8 | providers: [
9 | {
10 | provide: "IUserService",
11 | useClass: MockUserService
12 | }
13 | ]
14 | })
15 | ]
16 | })
17 | export class AppModule {}
18 |
--------------------------------------------------------------------------------
/packages/servers/nestx-auth/src/constants/index.ts:
--------------------------------------------------------------------------------
1 | export const JWT_SECRET_KEY = "JWT_SECRET_KEY";
2 | export const JWT_ALGORITHM = "JWT_ALGORITHM";
3 | export const JWT_EXPIRE_IN = "JWT_EXPIRE_IN";
4 |
--------------------------------------------------------------------------------
/packages/servers/nestx-auth/src/dto/Register.dto.ts:
--------------------------------------------------------------------------------
1 | import {
2 | IsNotEmpty,
3 | IsString,
4 | MinLength,
5 | Length,
6 | IsEmail,
7 | IsOptional
8 | } from "class-validator";
9 |
10 | export class RegisterReq {
11 | @IsNotEmpty()
12 | @MinLength(5)
13 | @IsString()
14 | username: string;
15 |
16 | @IsNotEmpty()
17 | @MinLength(5)
18 | @IsString()
19 | password: string;
20 |
21 | @IsNotEmpty()
22 | @MinLength(11)
23 | @IsString()
24 | mobile: string;
25 |
26 | @Length(5, 50)
27 | @IsString()
28 | @IsEmail()
29 | email: string;
30 |
31 | name?: string;
32 |
33 | @Length(2, 5)
34 | @IsOptional()
35 | mobilePrefix?: string;
36 |
37 | @Length(6)
38 | @IsNotEmpty()
39 | veryCode: string;
40 | }
41 |
--------------------------------------------------------------------------------
/packages/servers/nestx-auth/src/dto/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./Login.dto";
2 | export * from "./Register.dto";
3 |
--------------------------------------------------------------------------------
/packages/servers/nestx-auth/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./dto";
2 | export * from "./interfaces";
3 | export * from "./jwt.strategy";
4 | export { AuthController } from "./auth.controller";
5 | export { AuthService } from "./auth.service";
6 | export { AuthModule } from "./auth.module";
7 |
--------------------------------------------------------------------------------
/packages/servers/nestx-auth/src/interfaces/index.ts:
--------------------------------------------------------------------------------
1 | import { RegisterReq } from "../dto";
2 |
3 | export interface JwtPayload {
4 | account: string;
5 | }
6 |
7 | export interface AccessToken {
8 | expiresIn: number;
9 | accessToken: string;
10 | }
11 |
12 | export declare class IUserService {
13 | verifyCode: (code: string, mobile: string) => Promise;
14 | register: (payload: RegisterReq) => Promise<{ username: string }>;
15 | sendVeryCode: (
16 | mobile: string
17 | ) => Promise<{
18 | ok: boolean;
19 | }>;
20 | findOne: (conditions?: { [key: string]: any }) => Promise;
21 | login: (username: string, password: string) => Promise;
22 | }
23 |
--------------------------------------------------------------------------------
/packages/servers/nestx-auth/src/main.ts:
--------------------------------------------------------------------------------
1 | import { NestFactory } from "@nestjs/core";
2 | import { ValidationPipe } from "@nestjs/common";
3 | import { AppModule } from "./app.module";
4 |
5 | async function bootstrap() {
6 | const app = await NestFactory.create(AppModule);
7 | app.setGlobalPrefix("api");
8 | app.enableCors();
9 | app.useGlobalPipes(
10 | new ValidationPipe({
11 | // disableErrorMessages: true, // TODO needs only open at dev;
12 | transform: true,
13 | whitelist: true,
14 | forbidNonWhitelisted: true
15 | })
16 | );
17 | await app.listen(5600);
18 | }
19 | bootstrap();
20 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/servers/nestx-base/.DS_Store
--------------------------------------------------------------------------------
/packages/servers/nestx-base/.npmignore:
--------------------------------------------------------------------------------
1 | src
--------------------------------------------------------------------------------
/packages/servers/nestx-base/index.js:
--------------------------------------------------------------------------------
1 | require('ts-node/register');
2 | require('./src/main');
--------------------------------------------------------------------------------
/packages/servers/nestx-base/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 | "watch": ["./src"],
3 | "ext": "ts",
4 | "ignore": ["./src/**/*.spec.ts"],
5 | "exec": "node ./index",
6 | "env": {
7 | "NODE_ENV": "test"
8 | }
9 | }
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/app.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from "@nestjs/common";
2 | import { MongooseModule } from "@nestjs/mongoose";
3 | import { BaseModule } from "./base.module";
4 | const mongodbUri = "mongodb://localhost/nestx-server-test";
5 |
6 | @Module({
7 | imports: [
8 | MongooseModule.forRoot(mongodbUri, {
9 | useCreateIndex: true,
10 | useNewUrlParser: true
11 | }),
12 | BaseModule
13 | ]
14 | })
15 | export class AppModule {}
16 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/dto/auth.dto.ts:
--------------------------------------------------------------------------------
1 | import { IsString } from 'class-validator';
2 |
3 | export class ChangePasswordReq {
4 | @IsString()
5 | readonly oldPassword: string;
6 |
7 | @IsString()
8 | newPassword: string;
9 |
10 | @IsString()
11 | readonly confirm: string;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/dto/common.dto.ts:
--------------------------------------------------------------------------------
1 | import { IsString } from "class-validator";
2 |
3 | export class KeyValueDto {
4 | @IsString()
5 | label: string;
6 | @IsString()
7 | value: string;
8 | }
9 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/dto/index.ts:
--------------------------------------------------------------------------------
1 | export * from './auth.dto';
2 | export * from './common.dto';
3 | export * from './dict.dto';
4 | export * from './group.dto';
5 | export * from './menu.dto';
6 | export * from './user.dto';
7 | export * from './notice.dto';
8 | export * from './setting.dto';
9 | export * from './role.dto';
10 | export * from './appearance.dto';
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/dto/role.dto.ts:
--------------------------------------------------------------------------------
1 | import { IsString, IsJSON } from 'class-validator';
2 |
3 | export class CreateRoleReq {
4 | @IsString()
5 | name: string;
6 | @IsString()
7 | description: string;
8 |
9 | @IsString({ each: true })
10 | permissions: string[];
11 | }
12 |
13 | export class EditRoleReq {
14 | @IsString()
15 | id: string;
16 | @IsString()
17 | name: string;
18 | @IsString()
19 | description: string;
20 | @IsString({ each: true })
21 | permissions: string[];
22 | }
23 |
24 | export class RoleRes {
25 | id: string;
26 | name: string;
27 | description: string;
28 | permissions: string[];
29 | }
30 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./dto";
2 | export * from "./interfaces";
3 | export * from "./schemas";
4 | export * from "./base.module";
5 | export * from "./controllers";
6 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/interfaces/appearance.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Appearance {
4 | name: string;
5 | options: any;
6 | data: any;
7 | }
8 |
9 | export type AppearanceModel = Appearance & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/interfaces/dict.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Dict {
4 | id: string;
5 | name: string;
6 | category: string;
7 | translate: string;
8 | expand: any;
9 | }
10 |
11 | export type DictModel = Dict & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/interfaces/group.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Group {
4 | id: string; // 编号
5 | outid: number; // 外部编号
6 | name: string; // 名称
7 | icon: string; // 图标
8 | parent: string; // 父级分组编号
9 | paths: any[]; // 路径
10 | director: string // 分组 leader
11 | order: number; // 排序
12 | isRegion: boolean; // 是否大区
13 | description: string; // 描述
14 | }
15 |
16 | export type GroupModel = Group & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/interfaces/index.ts:
--------------------------------------------------------------------------------
1 | export * from './dict.interface';
2 | export * from './menu.interface';
3 | export * from './role.interface';
4 | export * from './setting.interface';
5 | export * from './log.interface';
6 | export * from './user.interface';
7 | export * from './group.interface';
8 | export * from './notice.interface';
9 | export * from './verycode.interface';
10 | export * from './setting.interface';
11 | export * from './appearance.interface';
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/interfaces/log.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Log {
4 | id: string;
5 | name: string; // 日志名称
6 | operator: string; // 操作人id
7 | operatorName: string; // 操作人
8 | ip: string; // 操作人 IP
9 | operation: string; // 操作事件;
10 | result: number; // 操作结果
11 | elapsed: number; // 耗时
12 | comment?: string; // 备注
13 | createdAt?: Date; // 创建日期
14 | }
15 |
16 | export type LogModel = Log & Document;
17 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/interfaces/notice.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Notice {
4 | id: string;
5 | title: string;
6 | description: Date;
7 | type: string;
8 | extra: string;
9 | read: boolean;
10 | }
11 |
12 | export type NoticeModel = Notice & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/interfaces/profile.interface.ts:
--------------------------------------------------------------------------------
1 |
2 | import { Document } from 'mongoose';
3 |
4 | export interface Profile {
5 | id: string;
6 | company: string; // 公司名称
7 | siteUrl: string; // 站点URL
8 | address: any; // 地址
9 | }
10 | export type ProfileModel = Profile & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/interfaces/role.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Role {
4 | id: string;
5 | name: string;
6 | role: string;
7 | description: string;
8 | permissions: string[];
9 | }
10 |
11 | export type RoleModel = Role & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/interfaces/setting.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Setting {
4 | id: string;
5 | name: string; // 设置项目组
6 | key: string; // 设置项键名
7 | value: any; // 设置值
8 | description: string; // 设置描述
9 | }
10 |
11 | export type SettingModel = Setting & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/interfaces/user.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface User {
4 | id: string;
5 | username: string;
6 | password?: string;
7 | name: string; // 姓名
8 | keyword?: string;
9 | avatar: string; // 照片
10 | type: string; // 类型
11 | groups: string[];
12 | roles: string[];
13 | email: string; // 邮箱
14 | mobile: string; // 手机号码
15 | profile?: any;
16 | isDisable: boolean; // 是否禁用
17 | isAdmin: boolean; // 是否管理员
18 | isApproved: boolean; // 是否审核
19 | secret: string; // 密保
20 | expired: number; // use timestamp
21 | comparePassword: (password: string, cb: any) => void;
22 | }
23 |
24 | export type UserModel = User & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/interfaces/verycode.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface VeryCode {
4 | id: string;
5 | lastSent: number;
6 | mobile: string;
7 | code: string;
8 | }
9 |
10 | export type VeryCodeModel = VeryCode & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/main.ts:
--------------------------------------------------------------------------------
1 | import { NestFactory } from '@nestjs/core';
2 | import { ValidationPipe } from '@nestjs/common';
3 | import { AppModule } from './app.module';
4 |
5 | async function bootstrap() {
6 | const app = await NestFactory.create(AppModule);
7 | app.setGlobalPrefix('api');
8 | app.enableCors();
9 | app.useGlobalPipes(
10 | new ValidationPipe({
11 | // disableErrorMessages: true, // TODO needs only open at dev;
12 | transform: true,
13 | whitelist: true,
14 | forbidNonWhitelisted: true,
15 | }),
16 | );
17 | await app.listen(5600);
18 | }
19 | bootstrap();
20 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/schemas/appearance.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t } from "mongoose";
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 |
5 | export const AppearanceSchema = new Schema(
6 | {
7 | name: { type: t.String },
8 | options: { type: t.Mixed },
9 | data: { type: t.Mixed }
10 | },
11 | {
12 | timestamps: true,
13 | usePushEach: true
14 | }
15 | );
16 |
17 | AppearanceSchema.set("toJSON", {
18 | transform
19 | });
20 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/schemas/dict.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t } from "mongoose";
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 | export const DictSchema = new Schema(
5 | {
6 | category: { type: t.String },
7 | name: { type: t.String },
8 | translate: { type: t.String },
9 | expand: { type: t.Mixed }
10 | },
11 | {
12 | timestamps: true,
13 | usePushEach: true
14 | }
15 | );
16 |
17 | DictSchema.set("toJSON", {
18 | transform
19 | });
20 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/schemas/group.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t } from "mongoose";
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 |
5 | export const GroupSchema = new Schema(
6 | {
7 | outid: { type: t.Number },
8 | name: { type: t.String },
9 | icon: { type: t.String },
10 | isRegion: { type: t.Boolean },
11 | order: { type: t.Number },
12 | parent: { type: t.ObjectId, ref: "Group" },
13 | paths: [{ type: t.ObjectId, ref: "Group" }],
14 | director: { type: t.ObjectId, ref: "User" },
15 | description: { type: t.String }
16 | },
17 | { timestamps: true }
18 | );
19 |
20 | GroupSchema.set("toJSON", {
21 | transform
22 | });
23 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/schemas/index.ts:
--------------------------------------------------------------------------------
1 |
2 | export { RoleSchema } from './role.schema';
3 | export { LogSchema } from './log.schema';
4 | export { SettingSchema } from './setting.schema';
5 | export { DictSchema } from './dict.schema';
6 | export { MenuSchema } from './menu.schema';
7 | export { GroupSchema } from './group.schema';
8 | export { UserSchema } from './user.schema';
9 | export { NoticeSchema } from './notice.schema';
10 | export { VeryCodeSchema } from './verycode.schema';
11 | export { ProfileSchema } from './profile.schema';
12 | export { AppearanceSchema } from './appearance.schema';
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/schemas/notice.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t, SchemaOptions } from "mongoose";
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 |
5 | const option: SchemaOptions = {};
6 | option.timestamps = true;
7 |
8 | export const NoticeSchema = new Schema(
9 | {
10 | title: { type: t.String },
11 | type: { type: t.String },
12 | extra: { type: t.String },
13 | status: { type: t.String },
14 | read: { type: t.Boolean }
15 | },
16 | option
17 | );
18 |
19 | NoticeSchema.set("toJSON", {
20 | transform
21 | });
22 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/schemas/profile.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t, SchemaOptions, model } from "mongoose";
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 |
5 | export const ProfileSchema = new Schema(
6 | {
7 | company: { type: t.String },
8 | siteUrl: { type: t.String },
9 | address: { type: t.String }
10 | },
11 | { timestamps: true }
12 | );
13 |
14 | ProfileSchema.set("toJSON", {
15 | transform
16 | });
17 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/schemas/role.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t, SchemaOptions } from "mongoose";
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 |
5 | const option: SchemaOptions = {};
6 | option.timestamps = true;
7 |
8 | export const RoleSchema = new Schema(
9 | {
10 | name: { type: t.String },
11 | description: { type: t.String },
12 | permissions: [{ type: t.ObjectId, ref: "Menu" }]
13 | },
14 | option
15 | );
16 |
17 | RoleSchema.set("toJSON", {
18 | transform
19 | });
20 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/schemas/setting.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t } from 'mongoose';
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 |
5 | export const SettingSchema = new Schema(
6 | {
7 | id: {
8 | type: t.String,
9 | },
10 | name: {
11 | type: t.String,
12 | },
13 | key: {
14 | type: t.String,
15 | },
16 | value: {
17 | type: t.Mixed,
18 | },
19 | description: {
20 | type: t.String,
21 | },
22 | },
23 | {
24 | timestamps: true,
25 | usePushEach: true,
26 | },
27 | );
28 |
29 | SettingSchema.set('toJSON', {
30 | transform,
31 | });
32 |
--------------------------------------------------------------------------------
/packages/servers/nestx-base/src/schemas/verycode.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t } from "mongoose";
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 |
5 | export const VeryCodeSchema = new Schema(
6 | {
7 | mobile: {
8 | type: t.String
9 | },
10 | lastSent: {
11 | type: t.Decimal128,
12 | default: Date.now
13 | },
14 | code: {
15 | type: t.String
16 | }
17 | },
18 | {
19 | timestamps: true,
20 | usePushEach: true
21 | }
22 | );
23 |
24 | VeryCodeSchema.set("toJSON", {
25 | transform
26 | });
27 |
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/servers/nestx-cms/.DS_Store
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/.npmignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/servers/nestx-cms/.npmignore
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/index.js:
--------------------------------------------------------------------------------
1 | require('ts-node/register');
2 | require('./src/main');
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 | "watch": ["./src"],
3 | "ext": "ts",
4 | "ignore": ["./src/**/*.spec.ts"],
5 | "exec": "node ./index",
6 | "env": {
7 | "NODE_ENV": "test"
8 | }
9 | }
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/app.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from "@nestjs/common";
2 | import { AuthModule } from "nestx-auth";
3 | import { MockUserService } from "./mock.user.service";
4 | @Module({
5 | imports: [
6 | AuthModule.registerAsync({
7 | providers: [
8 | {
9 | provide: "IUserService",
10 | useClass: MockUserService
11 | }
12 | ]
13 | })
14 | ]
15 | })
16 | export class AppModule {}
17 |
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/dto/comment.dto.ts:
--------------------------------------------------------------------------------
1 | export class CreateCommentDto {
2 |
3 | }
4 |
5 | export class EditCommentDto {
6 | id: string;
7 | }
8 |
9 | export class CommentResponse {
10 |
11 | }
12 |
13 | export declare interface PaginateComment {
14 | error?: Error;
15 | list: CommentResponse[];
16 | total: number;
17 | }
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/dto/index.ts:
--------------------------------------------------------------------------------
1 | export * from './article.dto';
2 | export * from './category.dto';
3 | export * from './comment.dto';
4 | export * from './custom.dto';
5 | export * from './media.dto';
6 | export * from './page.dto';
7 | export * from './photo.dto';
8 | export * from './widget.dto';
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/dto/photo.dto.ts:
--------------------------------------------------------------------------------
1 | export class CreatePhotoDto {
2 | name: string;
3 | caption: string;
4 | description: string;
5 | ext: string;
6 | url: string;
7 | uri: string;
8 | }
9 |
10 | export class EditPhotoDto {
11 | id: string;
12 | name: string;
13 | caption: string;
14 | description: string;
15 | ext: string;
16 | url: string;
17 | uri: string;
18 | }
19 |
20 | export class PhotoRes {
21 | id: string;
22 | name: string;
23 | caption: string;
24 | description: string;
25 | ext: string;
26 | url: string;
27 | uri: string;
28 | }
29 |
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/dto/widget.dto.ts:
--------------------------------------------------------------------------------
1 | export class CreateWidgetDto {
2 | name: string;
3 | title: string;
4 | params: any;
5 | type: string;
6 | }
7 |
8 | export class EditWidgetDto {
9 | id: string;
10 | name: string;
11 | title: string;
12 | params: any;
13 | type: string;
14 | }
15 |
16 | export class WidgetRes {
17 | id: string;
18 | name: string;
19 | title: string;
20 | params: any;
21 | type: string;
22 | }
23 |
24 | export const WidgetResponseFields = [
25 | 'id',
26 | 'name',
27 | 'title',
28 | 'params',
29 | 'type',
30 | ];
31 |
32 | export declare interface PaginateWidget {
33 | error?: Error;
34 | list: WidgetRes[];
35 | total: number;
36 | }
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./cms.module";
2 | export * from "./controllers";
3 | export * from "./interfaces";
4 | export * from "./dto";
5 | export * from "./schemas";
6 |
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/interfaces/article.interface.ts:
--------------------------------------------------------------------------------
1 |
2 | import { Document } from 'mongoose';
3 |
4 | export interface Article {
5 | id: string;
6 | name: string;
7 | title: string;
8 | picture: string;
9 | keyword: string;
10 | category: string;
11 | description: string;
12 | author: string;
13 | sort: number;
14 | disable: boolean;
15 | meta: string;
16 | content: string;
17 | template: string;
18 | }
19 |
20 | export type ArticleModel = Article & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/interfaces/category.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Category {
4 | id: string;
5 | name: string,
6 | slug: string,
7 | order: number,
8 | parent: string,
9 | paths: string[],
10 | description: string
11 | }
12 |
13 | export type CategoryModel = Category & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/interfaces/comment.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Comment {
4 | name: string;
5 | article: string;
6 | text: string;
7 | }
8 |
9 | export type CommentModel = Comment & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/interfaces/content.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Content {
4 | text: string;
5 | }
6 |
7 | export type ContentModel = Content & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/interfaces/custom.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Custom {
4 | id: string;
5 | name: string;
6 | title: string;
7 | keyword: string;
8 | category: string;
9 | description: string;
10 | author: string;
11 | sort: number;
12 | disable: boolean;
13 | meta: string;
14 | content: string;
15 | template: string;
16 | type: string;
17 | [key: string]: any;
18 | }
19 |
20 | export type CustomModel = Custom & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/interfaces/index.ts:
--------------------------------------------------------------------------------
1 | export * from './article.interface';
2 | export * from './category.interface';
3 | export * from './comment.interface';
4 | export * from './content.interface';
5 | export * from './custom.interface';
6 | export * from './media.interface';
7 | export * from './page.interface';
8 | export * from './photo.interface';
9 | export * from './widget.interface';
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/interfaces/media.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Media {
4 | id: string;
5 | name: string; // 名称
6 | caption: string; // 标题
7 | description: string; // 详细描述
8 | ext: any; // 扩展信息 如: 文件格式, 大小等
9 | url: string; // 外部访问地址
10 | uri: string; // 物理存储地址
11 | }
12 |
13 | export type MediaModel = Media & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/interfaces/page.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Page {
4 | id: string;
5 | name: string; // 页面名称
6 | title: string; // 页面标题
7 | keyword: string; // 关键词
8 | description: string; // 描述
9 | sort: number; // 排序
10 | disable: boolean; // 是否禁用
11 | meta: string; // 扩展元信息
12 | publish: string; // 发布时间
13 | content: string; // 页面内容
14 | template: string; // 页面模版
15 | }
16 |
17 | export type PageModel = Page & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/interfaces/photo.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Photo {
4 | id: string;
5 | name: string;
6 | caption: string;
7 | description: string;
8 | ext: any;
9 | url: string;
10 | uri: string;
11 | }
12 |
13 | export type PhotoModel = Photo & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/interfaces/widget.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Widget {
4 | id: string;
5 | name: string;
6 | title: string;
7 | type: string;
8 | params: any;
9 | }
10 |
11 | export type WidgetModel = Widget & Document;
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/main.ts:
--------------------------------------------------------------------------------
1 | import { NestFactory } from '@nestjs/core';
2 | import { ValidationPipe } from '@nestjs/common';
3 | import { AppModule } from './app.module';
4 |
5 | async function bootstrap() {
6 | const app = await NestFactory.create(AppModule);
7 | app.setGlobalPrefix('api');
8 | app.enableCors();
9 | app.useGlobalPipes(
10 | new ValidationPipe({
11 | // disableErrorMessages: true, // TODO needs only open at dev;
12 | transform: true,
13 | whitelist: true,
14 | forbidNonWhitelisted: true,
15 | }),
16 | );
17 | await app.listen(5600);
18 | }
19 | bootstrap();
20 |
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/mock.user.service.ts:
--------------------------------------------------------------------------------
1 | import { IUserService, RegisterReq } from "nestx-auth";
2 | import { Result } from "nestx-common";
3 |
4 | export class MockUserService implements IUserService {
5 | async verifyCode(code: string, mobile: string): Promise {
6 | return true;
7 | }
8 |
9 | async register(payload: RegisterReq) {
10 | return { username: "string" };
11 | }
12 |
13 | async sendVeryCode(mobile: string): Promise {
14 | return {
15 | ok: true
16 | };
17 | }
18 |
19 | async findOne(conditions?: { [key: string]: any }) {
20 | return true;
21 | }
22 |
23 | async login() {
24 | return {
25 | username: "hi"
26 | };
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/schemas/category.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t, SchemaOptions } from "mongoose";
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 |
5 | const option: SchemaOptions = {};
6 | option.timestamps = true;
7 |
8 | export const CategorySchema = new Schema(
9 | {
10 | name: { type: t.String },
11 | slug: { type: t.String },
12 | order: { type: t.Number, default: 100 },
13 | parent: { type: t.ObjectId, ref: "Category" },
14 | paths: [{ type: t.ObjectId, ref: "Category" }],
15 | description: { type: t.String }
16 | },
17 | option
18 | );
19 |
20 | CategorySchema.set("toJSON", {
21 | transform
22 | });
23 |
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/schemas/comment.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t, SchemaOptions } from "mongoose";
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 |
5 | const option: SchemaOptions = {};
6 | option.timestamps = true;
7 |
8 | export const CommentSchema = new Schema(
9 | {
10 | name: t.String,
11 | article: { ref: "Article", type: t.ObjectId },
12 | text: t.String
13 | },
14 | option
15 | );
16 |
17 | CommentSchema.set("toJSON", {
18 | transform
19 | });
20 |
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/schemas/content.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t, SchemaOptions, model } from 'mongoose';
2 |
3 | export const ContentSchema = new Schema(
4 | {
5 | text: t.String,
6 | },
7 | { timestamps: true },
8 | );
9 |
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/schemas/index.ts:
--------------------------------------------------------------------------------
1 | export * from './article.schema';
2 | export * from './category.schema';
3 | export * from './comment.schema';
4 | export * from './media.schema';
5 | export * from './page.schema';
6 | export * from './photo.schema';
7 | export * from './content.schema';
8 | export * from './custom.schema';
9 |
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/schemas/media.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t, SchemaOptions } from "mongoose";
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 |
5 | const option: SchemaOptions = {};
6 | option.timestamps = true;
7 |
8 | export const MediaSchema = new Schema(
9 | {
10 | name: t.String,
11 | caption: t.String,
12 | description: t.String,
13 | ext: t.Mixed,
14 | url: t.String,
15 | uri: t.String
16 | },
17 | option
18 | );
19 |
20 | MediaSchema.set("toJSON", {
21 | transform
22 | });
23 |
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/schemas/photo.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t, SchemaOptions } from "mongoose";
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 |
5 | const option: SchemaOptions = {};
6 | option.timestamps = true;
7 |
8 | export const PhotoSchema = new Schema(
9 | {
10 | name: {
11 | type: t.String
12 | }
13 | },
14 | option
15 | );
16 | PhotoSchema.set("toJSON", {
17 | transform
18 | });
19 |
--------------------------------------------------------------------------------
/packages/servers/nestx-cms/src/schemas/widget.schema.ts:
--------------------------------------------------------------------------------
1 | import { Schema, SchemaTypes as t, SchemaOptions } from "mongoose";
2 | import { utils } from "nestx-common";
3 | const { transform } = utils;
4 |
5 | const option: SchemaOptions = {};
6 | option.timestamps = true;
7 |
8 | export const WidgetSchema = new Schema(
9 | {
10 | name: {
11 | type: t.String
12 | }
13 | },
14 | option
15 | );
16 | WidgetSchema.set("toJSON", {
17 | transform
18 | });
19 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/servers/nestx-common/.DS_Store
--------------------------------------------------------------------------------
/packages/servers/nestx-common/.npmignore:
--------------------------------------------------------------------------------
1 | src
--------------------------------------------------------------------------------
/packages/servers/nestx-common/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 | "watch": ["./src"],
3 | "ext": "ts",
4 | "ignore": ["./src/**/*.spec.ts"],
5 | "exec": "node ./index",
6 | "env": {
7 | "NODE_ENV": "test"
8 | }
9 | }
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/constants/cache.constant.ts:
--------------------------------------------------------------------------------
1 | export const CACHE = {
2 | CACHE_PREFIX: '__nestx_cache_',
3 | };
4 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/constants/index.ts:
--------------------------------------------------------------------------------
1 | export * from './cache.constant';
2 | export * from './text.constant';
3 | export * from './meta.constant';
4 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/constants/meta.constant.ts:
--------------------------------------------------------------------------------
1 | import * as constants from '@nestjs/common/constants';
2 | import { CACHE_KEY_METADATA } from '@nestjs/common/cache/cache.constants';
3 |
4 | export const META = {
5 | HTTP_ERROR_CODE: '__customHttpErrorCode__',
6 | HTTP_SUCCESS_CODE: constants.HTTP_CODE_METADATA,
7 | HTTP_MESSAGE: '__customHttpMessage__',
8 | HTTP_ERROR_MESSAGE: '__customHttpErrorMessage__',
9 | HTTP_SUCCESS_MESSAGE: '__customHttpSuccessMessage__',
10 | HTTP_RES_TRANSFORM_PAGINATE: '__customHttpResTransformPaginate__',
11 | HTTP_CACHE_KEY_METADATA: CACHE_KEY_METADATA,
12 | HTTP_CACHE_TTL_METADATA: '__customHttpCacheTTL__',
13 | };
14 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/decorators/index.ts:
--------------------------------------------------------------------------------
1 | export * from './permission.decorator';
2 | export * from './roles.decorator';
3 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/decorators/permission.decorator.ts:
--------------------------------------------------------------------------------
1 | import { SetMetadata } from '@nestjs/common';
2 |
3 | export interface Options {
4 | resource?: string;
5 | action?: 'create' | 'read' | 'update' | 'delete';
6 | possession?: 'own' | 'any';
7 | }
8 |
9 | export const Permission = (...items: Options[]) =>
10 | SetMetadata('permissions', items);
11 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/decorators/roles.decorator.ts:
--------------------------------------------------------------------------------
1 | import { SetMetadata } from '@nestjs/common';
2 |
3 | export const Roles = (...roles: string[]) => SetMetadata('roles', roles);
4 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/exceptions/custom.exception.ts:
--------------------------------------------------------------------------------
1 | import { HttpException, HttpStatus } from '@nestjs/common';
2 |
3 | type Options =
4 | | {
5 | message: string;
6 | error?: any;
7 | }
8 | | string;
9 | export class CustomException extends HttpException {
10 | constructor(options: Options, statusCode?: HttpStatus) {
11 | super(options, statusCode || HttpStatus.INTERNAL_SERVER_ERROR);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./decorators";
2 | export * from "./filters/http-exception.filter";
3 | export * from "./guards/roles.guard";
4 | export * from "./interceptors";
5 | export * from "./interfaces";
6 | export * from "./middlewares/logger.middleware";
7 | export * from "./pipes";
8 | export * from "./services";
9 | export * from "./types";
10 | export * from "./exceptions/custom.exception";
11 | export * from "./utils";
12 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/interceptors/index.ts:
--------------------------------------------------------------------------------
1 | export * from './exception.interceptor';
2 | export * from './logging.interceptor';
3 | export * from './timeout.interceptor';
4 | export * from './transform.interceptor';
5 |
6 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/interceptors/timeout.interceptor.ts:
--------------------------------------------------------------------------------
1 | import {
2 | Injectable,
3 | NestInterceptor,
4 | ExecutionContext,
5 | CallHandler
6 | } from "@nestjs/common";
7 | import { timeout } from "rxjs/operators";
8 | import { Observable } from "rxjs";
9 |
10 | @Injectable()
11 | export class TimeoutInterceptor implements NestInterceptor {
12 | intercept(context: ExecutionContext, next: CallHandler): Observable {
13 | return next.handle().pipe(timeout(5000));
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/interceptors/transform.interceptor.ts:
--------------------------------------------------------------------------------
1 | import {
2 | Injectable,
3 | NestInterceptor,
4 | ExecutionContext,
5 | CallHandler
6 | } from "@nestjs/common";
7 | import { map } from "rxjs/operators";
8 | import { Observable } from "rxjs";
9 |
10 | export interface Response {
11 | data: T;
12 | }
13 |
14 | @Injectable()
15 | export class TransformInterceptor
16 | implements NestInterceptor> {
17 | intercept(context: ExecutionContext, next: CallHandler): Observable {
18 | return next.handle().pipe(map(data => ({ data })));
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/interfaces/http.interface.ts:
--------------------------------------------------------------------------------
1 | export enum HttpStatusTypes {
2 | Error = 'error',
3 | Success = 'success',
4 | }
5 |
6 | export type ErrorMessage = string;
7 | export type TExceptionOption =
8 | | ErrorMessage
9 | | {
10 | message: ErrorMessage;
11 | error?: any;
12 | };
13 |
14 | export interface IHttpResponseBase {
15 | status: HttpStatusTypes;
16 | message: ErrorMessage;
17 | }
18 |
19 | export type THttpErrorResponse = IHttpResponseBase & {
20 | error: any;
21 | debug?: string;
22 | };
23 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/interfaces/index.ts:
--------------------------------------------------------------------------------
1 | export * from './types';
2 | export * from './http.interface';
3 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/middlewares/logger.middleware.ts:
--------------------------------------------------------------------------------
1 |
2 | import { Injectable, NestMiddleware } from '@nestjs/common';
3 |
4 | @Injectable()
5 | export class LoggerMiddleware implements NestMiddleware {
6 | use(req: any, res: any, next: () => void) {
7 | // console.log(`[${context}] Request...`);
8 | next();
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/pipes/index.ts:
--------------------------------------------------------------------------------
1 | export * from './NullableParseInt.pipe';
2 | export * from './validation.pipe';
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/services/index.ts:
--------------------------------------------------------------------------------
1 | export * from './controller.service';
2 | export * from './repository.service';
3 | export * from './mongoose.service';
4 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/types/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/servers/nestx-common/src/types/.DS_Store
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/types/data.types.ts:
--------------------------------------------------------------------------------
1 | export interface KeyValue {
2 | label: string;
3 | value: string;
4 | }
5 | export class SelectorItem {
6 | id: string;
7 | name: string;
8 | desc: string;
9 | }
10 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/types/index.ts:
--------------------------------------------------------------------------------
1 | export * from './appearance';
2 | export * from './data.types';
3 | export * from './schema.types';
4 |
--------------------------------------------------------------------------------
/packages/servers/nestx-common/src/utils/index.ts:
--------------------------------------------------------------------------------
1 | import { ObjectID } from "typeorm";
2 |
3 | function transform(
4 | _doc: any,
5 | ret: {
6 | [key: string]: any;
7 | _id: ObjectID;
8 | __v: string;
9 | },
10 | _options: any
11 | ) {
12 | ret.id = ret._id;
13 | delete ret._id;
14 | delete ret.__v;
15 | }
16 |
17 | function strip(obj: { [k: string]: any }) {
18 | Object.keys(obj).forEach(key =>
19 | obj[key] === undefined ? delete obj[key] : ""
20 | );
21 | return Object.assign({}, obj);
22 | }
23 |
24 | export const utils = {
25 | transform,
26 | strip
27 | };
28 |
--------------------------------------------------------------------------------
/packages/servers/nestx-config/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vellengs/nestx/a2a779e251571ac5233aee0d1dd2f52d227b8380/packages/servers/nestx-config/.DS_Store
--------------------------------------------------------------------------------
/packages/servers/nestx-config/.npmignore:
--------------------------------------------------------------------------------
1 | src
--------------------------------------------------------------------------------
/packages/servers/nestx-config/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 | "watch": ["./src"],
3 | "ext": "ts",
4 | "ignore": ["./src/**/*.spec.ts"],
5 | "exec": "node ./index",
6 | "env": {
7 | "NODE_ENV": "test"
8 | }
9 | }
--------------------------------------------------------------------------------
/packages/servers/nestx-config/src/config.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from '@nestjs/common';
2 | import { ConfigService } from './config.service';
3 |
4 | @Module({
5 | providers: [
6 | {
7 | provide: ConfigService,
8 | useValue: new ConfigService('.env'),
9 | },
10 | ],
11 | exports: [ConfigService],
12 | })
13 | export class ConfigModule {}
--------------------------------------------------------------------------------
/packages/servers/nestx-config/src/config.service.ts:
--------------------------------------------------------------------------------
1 | import * as dotenv from 'dotenv';
2 | import * as fs from 'fs';
3 |
4 | export class ConfigService {
5 | private readonly envConfig: { [key: string]: string };
6 |
7 | constructor(filePath: string) {
8 | this.envConfig = dotenv.parse(fs.readFileSync(filePath));
9 | }
10 |
11 | get(key: string): string {
12 | return this.envConfig[key];
13 | }
14 | }
--------------------------------------------------------------------------------
/packages/servers/nestx-config/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./config.module";
2 | export * from "./config.service";
3 | export * from "./interfaces";
4 |
--------------------------------------------------------------------------------
/packages/servers/nestx-config/src/interfaces/index.ts:
--------------------------------------------------------------------------------
1 | export class KeyValue {
2 | label: string;
3 | value: string;
4 | }
5 |
6 | export class Result {
7 | ok: boolean;
8 | message?: string;
9 | }
10 |
--------------------------------------------------------------------------------
/packages/spring/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | openapi-spring
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.m2e.core.maven2Builder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.m2e.core.maven2Nature
16 |
17 |
18 |
--------------------------------------------------------------------------------