├── .clang-format ├── .eslintrc.js ├── .github ├── CODEOWNERS └── workflows │ ├── bump-major-version.yml │ ├── bump-minor-version.yml │ ├── release-new-version.yml │ └── release-verify.yml ├── .gitignore ├── .npmignore ├── .prebuild.js ├── .prettierrc.js ├── LICENSE ├── README.md ├── artifact └── package.json ├── checks.json ├── developer ├── sdk │ ├── .npmignore │ ├── .prettierignore │ ├── README.md │ ├── lib │ │ ├── dev │ │ │ └── run.js │ │ └── webpack │ │ │ ├── build.js │ │ │ └── webpack.config.js │ ├── package.json │ ├── src │ │ ├── .gitattributes │ │ ├── commands │ │ │ ├── broker.js │ │ │ ├── broker │ │ │ │ ├── build.js │ │ │ │ ├── clean.js │ │ │ │ └── package.js │ │ │ ├── craft.js │ │ │ ├── craft │ │ │ │ ├── build.js │ │ │ │ ├── clean.js │ │ │ │ ├── cli.js │ │ │ │ ├── dev.js │ │ │ │ ├── package.js │ │ │ │ └── upgrade.js │ │ │ ├── extension.js │ │ │ ├── extension │ │ │ │ ├── build.js │ │ │ │ ├── clean.js │ │ │ │ ├── compile.js │ │ │ │ ├── configure.js │ │ │ │ ├── format.js │ │ │ │ ├── install.js │ │ │ │ └── list.js │ │ │ ├── project.js │ │ │ ├── project │ │ │ │ ├── configure.js │ │ │ │ ├── install.js │ │ │ │ └── package.js │ │ │ ├── strategy.js │ │ │ └── strategy │ │ │ │ ├── build.js │ │ │ │ ├── clean.js │ │ │ │ └── package.js │ │ ├── index.js │ │ ├── kfs.js │ │ ├── lib │ │ │ ├── craft.js │ │ │ ├── extension.js │ │ │ ├── index.js │ │ │ └── project.js │ │ └── utils │ │ │ └── index.js │ └── templates │ │ ├── cmake │ │ ├── CMakeLists.txt │ │ └── kungfu.cmake │ │ └── github │ │ ├── CODEOWNERS │ │ └── workflows │ │ ├── bump-major-version.yml │ │ ├── bump-minor-version.yml │ │ ├── release-new-version.yml │ │ └── release-verify.yml └── toolchain │ └── package.json ├── examples ├── assemble-python │ ├── package.json │ └── src │ │ └── json │ │ ├── read_all_Location.json │ │ ├── read_bytes_10026.json │ │ ├── read_header_data_Location.json │ │ └── read_headers_10026.json ├── operator-python-101 │ └── pyproject.toml ├── strategy-cpp-101 │ ├── CMakeLists.txt │ ├── package.json │ └── src │ │ └── cpp │ │ └── strategy.cpp ├── strategy-cpp-exe │ ├── CMakeLists.txt │ ├── package.json │ └── src │ │ └── cpp │ │ └── strategy.cpp ├── strategy-python-101 │ ├── .gitignore │ ├── package.json │ ├── pdm.lock │ ├── pyproject.toml │ └── src │ │ └── python │ │ └── KungfuStrategy101Python │ │ └── __init__.py └── strategy-python-simple │ ├── coroutine_trade.py │ ├── simple_trade_ctp.py │ ├── simple_trade_sim.py │ └── simple_trade_xtp.py ├── extensions ├── sim │ ├── .gitignore │ ├── package.json │ ├── pdm.lock │ └── src │ │ └── python │ │ └── sim │ │ ├── __init__.py │ │ ├── marketdata.py │ │ ├── mdmaker │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __init__.py │ │ └── src │ │ │ ├── __init__.py │ │ │ ├── merge.py │ │ │ └── stock.py │ │ └── trader.py └── xtp │ ├── .gitignore │ ├── CMakeLists.txt │ ├── package.json │ └── src │ └── cpp │ ├── exports.cpp │ ├── marketdata_xtp.cpp │ ├── marketdata_xtp.h │ ├── serialize_xtp.h │ ├── trader_xtp.cpp │ ├── trader_xtp.h │ └── type_convert.h ├── framework ├── api │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierignore │ ├── babel.config.js │ ├── cypress.json │ ├── lib │ │ ├── index.js │ │ └── webpack │ │ │ ├── build.js │ │ │ └── webpack.api.config.js │ ├── package.json │ ├── src │ │ ├── actions │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── tradingTask.ts │ │ ├── config │ │ │ ├── brand.ts │ │ │ ├── exports.ts │ │ │ ├── globalSettings.ts │ │ │ ├── homePathConfig.ts │ │ │ ├── index.ts │ │ │ ├── pathConfig.ts │ │ │ ├── systemConfig.ts │ │ │ └── tradingConfig.ts │ │ ├── hooks │ │ │ ├── baseHook.ts │ │ │ ├── dealBoardsMapHook.ts │ │ │ ├── dealTradingDataHook.ts │ │ │ ├── dealTradingTableHook.ts │ │ │ ├── index.ts │ │ │ ├── preStartProcessHook.ts │ │ │ ├── prefixHooks.ts │ │ │ ├── resolveExtConfigHook.ts │ │ │ └── resolveStartProcessOptionsHook.ts │ │ ├── index.ts │ │ ├── kungfu │ │ │ ├── commission.ts │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── riskSetting.ts │ │ │ ├── store.ts │ │ │ ├── strategy.ts │ │ │ ├── tradingData.ts │ │ │ └── watcher.ts │ │ ├── language │ │ │ ├── en-US.ts │ │ │ ├── index.ts │ │ │ └── zh-CN.ts │ │ ├── setGlobalEnv.ts │ │ ├── typings │ │ │ ├── enums.ts │ │ │ ├── global.d.ts │ │ │ └── index.d.ts │ │ └── utils │ │ │ ├── accounting.ts │ │ │ ├── busiUtils.ts │ │ │ ├── commonUtils.ts │ │ │ ├── exports.ts │ │ │ ├── fileUtils.ts │ │ │ ├── globalBus.ts │ │ │ ├── globalStorage.ts │ │ │ ├── osUtils.ts │ │ │ ├── pm2Custom.ts │ │ │ └── processUtils.ts │ ├── toolkit │ │ ├── index.js │ │ ├── shell.js │ │ ├── utils.js │ │ └── webpack.js │ └── tsconfig.json ├── app │ ├── .browserslistrc │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierignore │ ├── babel.config.js │ ├── cypress.json │ ├── lib │ │ ├── dev │ │ │ └── run.js │ │ ├── electron │ │ │ ├── build.js │ │ │ ├── config.js │ │ │ └── package.merge.json │ │ ├── index.js │ │ └── webpack │ │ │ ├── build.js │ │ │ ├── webpack.main.config.js │ │ │ └── webpack.renderer.config.js │ ├── package.json │ ├── public │ │ ├── config │ │ │ ├── defaultInstruments.json │ │ │ └── kfConfig.json │ │ ├── devtools │ │ │ └── vue-devtool │ │ │ │ ├── build │ │ │ │ ├── 1569.js │ │ │ │ ├── 1585.js │ │ │ │ ├── 1593.js │ │ │ │ ├── 1594.js │ │ │ │ ├── 1649.js │ │ │ │ ├── 1941.js │ │ │ │ ├── 2014.js │ │ │ │ ├── 2271.js │ │ │ │ ├── 2287.js │ │ │ │ ├── 2388.js │ │ │ │ ├── 2501.js │ │ │ │ ├── 2583.js │ │ │ │ ├── 2862.js │ │ │ │ ├── 2906.js │ │ │ │ ├── 2906.js.LICENSE.txt │ │ │ │ ├── 300.js │ │ │ │ ├── 3008.js │ │ │ │ ├── 3315.js │ │ │ │ ├── 3399.js │ │ │ │ ├── 3504.js │ │ │ │ ├── 3553.js │ │ │ │ ├── 3673.js │ │ │ │ ├── 3855.js │ │ │ │ ├── 4035.js │ │ │ │ ├── 4073.js │ │ │ │ ├── 4454.js │ │ │ │ ├── 4511.js │ │ │ │ ├── 4558.js │ │ │ │ ├── 4610.js │ │ │ │ ├── 471.js │ │ │ │ ├── 4858.js │ │ │ │ ├── 4896.js │ │ │ │ ├── 491.js │ │ │ │ ├── 5257.js │ │ │ │ ├── 542.js │ │ │ │ ├── 5454.js │ │ │ │ ├── 5524.js │ │ │ │ ├── 5669.js │ │ │ │ ├── 5881.js │ │ │ │ ├── 5900.js │ │ │ │ ├── 5924.js │ │ │ │ ├── 5925.js │ │ │ │ ├── 5972.js │ │ │ │ ├── 5974.js │ │ │ │ ├── 6022.js │ │ │ │ ├── 6162.js │ │ │ │ ├── 6175.js │ │ │ │ ├── 622.js │ │ │ │ ├── 6223.js │ │ │ │ ├── 6330.js │ │ │ │ ├── 6331.js │ │ │ │ ├── 6354.js │ │ │ │ ├── 6373.js │ │ │ │ ├── 6751.js │ │ │ │ ├── 6792.js │ │ │ │ ├── 6844.js │ │ │ │ ├── 7125.js │ │ │ │ ├── 7127.js │ │ │ │ ├── 7135.js │ │ │ │ ├── 7148.js │ │ │ │ ├── 7447.js │ │ │ │ ├── 7453.js │ │ │ │ ├── 7483.js │ │ │ │ ├── 7971.js │ │ │ │ ├── 8147.js │ │ │ │ ├── 8308.js │ │ │ │ ├── 8309.js │ │ │ │ ├── 8327.js │ │ │ │ ├── 849.js │ │ │ │ ├── 8654.js │ │ │ │ ├── 8677.js │ │ │ │ ├── 868.js │ │ │ │ ├── 8947.js │ │ │ │ ├── 9342.js │ │ │ │ ├── 9491.js │ │ │ │ ├── 9741.js │ │ │ │ ├── 9953.js │ │ │ │ ├── CodeEditor.js │ │ │ │ ├── backend.js │ │ │ │ ├── background.js │ │ │ │ ├── detector.js │ │ │ │ ├── devtools-background.js │ │ │ │ ├── devtools.js │ │ │ │ ├── devtools.js.LICENSE.txt │ │ │ │ ├── editor.worker.js │ │ │ │ ├── hook.js │ │ │ │ └── proxy.js │ │ │ │ ├── devtools-background.html │ │ │ │ ├── devtools.html │ │ │ │ ├── icons │ │ │ │ ├── 128-beta.png │ │ │ │ ├── 128-gray.png │ │ │ │ ├── 128.nuxt.png │ │ │ │ ├── 128.png │ │ │ │ ├── 16-beta.png │ │ │ │ ├── 16-gray.png │ │ │ │ ├── 16.nuxt.png │ │ │ │ ├── 16.png │ │ │ │ ├── 48-beta.png │ │ │ │ ├── 48-gray.png │ │ │ │ ├── 48.nuxt.png │ │ │ │ └── 48.png │ │ │ │ ├── manifest.json │ │ │ │ ├── package.json │ │ │ │ └── popups │ │ │ │ ├── devtools-screenshot.png │ │ │ │ ├── disabled.html │ │ │ │ ├── disabled.nuxt.html │ │ │ │ ├── enabled.html │ │ │ │ ├── enabled.nuxt.html │ │ │ │ ├── not-found.html │ │ │ │ └── popup.css │ │ ├── file-icons │ │ │ ├── 3d.svg │ │ │ ├── actionscript.svg │ │ │ ├── addFile.svg │ │ │ ├── addFolder.svg │ │ │ ├── android.svg │ │ │ ├── angular-component.svg │ │ │ ├── angular-directive.svg │ │ │ ├── angular-guard.svg │ │ │ ├── angular-pipe.svg │ │ │ ├── angular-resolver.svg │ │ │ ├── angular-service.svg │ │ │ ├── angular.svg │ │ │ ├── apiblueprint.svg │ │ │ ├── applescript.svg │ │ │ ├── appveyor.svg │ │ │ ├── arduino.svg │ │ │ ├── asciidoc.svg │ │ │ ├── assembly.svg │ │ │ ├── audio.svg │ │ │ ├── aurelia.svg │ │ │ ├── authors.svg │ │ │ ├── autohotkey.svg │ │ │ ├── autoit.svg │ │ │ ├── azure-pipelines.svg │ │ │ ├── azure.svg │ │ │ ├── babel.svg │ │ │ ├── ballerina.svg │ │ │ ├── bazel.svg │ │ │ ├── bitbucket.svg │ │ │ ├── bithound.svg │ │ │ ├── blink.svg │ │ │ ├── blink_light.svg │ │ │ ├── bower.svg │ │ │ ├── browserlist.svg │ │ │ ├── browserlist_light.svg │ │ │ ├── bucklescript.svg │ │ │ ├── buildkite.svg │ │ │ ├── c.svg │ │ │ ├── cabal.svg │ │ │ ├── cake.svg │ │ │ ├── certificate.svg │ │ │ ├── changelog.svg │ │ │ ├── circleci.svg │ │ │ ├── circleci_light.svg │ │ │ ├── clojure.svg │ │ │ ├── cloudfoundry.svg │ │ │ ├── cmake.svg │ │ │ ├── code-climate.svg │ │ │ ├── code-climate_light.svg │ │ │ ├── coffee.svg │ │ │ ├── coldfusion.svg │ │ │ ├── conduct.svg │ │ │ ├── console.svg │ │ │ ├── contributing.svg │ │ │ ├── cpp.svg │ │ │ ├── credits.svg │ │ │ ├── crystal.svg │ │ │ ├── crystal_light.svg │ │ │ ├── csharp.svg │ │ │ ├── css-map.svg │ │ │ ├── css.svg │ │ │ ├── cucumber.svg │ │ │ ├── cuda.svg │ │ │ ├── d.svg │ │ │ ├── dart.svg │ │ │ ├── database.svg │ │ │ ├── delate.svg │ │ │ ├── diff.svg │ │ │ ├── django.svg │ │ │ ├── docker.svg │ │ │ ├── document.svg │ │ │ ├── dotjs.svg │ │ │ ├── drone.svg │ │ │ ├── drone_light.svg │ │ │ ├── edge.svg │ │ │ ├── edit.svg │ │ │ ├── editorconfig.svg │ │ │ ├── ejs.svg │ │ │ ├── elixir.svg │ │ │ ├── elm.svg │ │ │ ├── email.svg │ │ │ ├── erlang.svg │ │ │ ├── eslint.svg │ │ │ ├── exe.svg │ │ │ ├── fastlane.svg │ │ │ ├── favicon.svg │ │ │ ├── file.svg │ │ │ ├── firebase.svg │ │ │ ├── flash.svg │ │ │ ├── flow.svg │ │ │ ├── folder-android-open.svg │ │ │ ├── folder-android.svg │ │ │ ├── folder-animation-open.svg │ │ │ ├── folder-animation.svg │ │ │ ├── folder-ansible-open.svg │ │ │ ├── folder-ansible.svg │ │ │ ├── folder-api-open.svg │ │ │ ├── folder-api.svg │ │ │ ├── folder-app-open.svg │ │ │ ├── folder-app.svg │ │ │ ├── folder-archive-open.svg │ │ │ ├── folder-archive.svg │ │ │ ├── folder-audio-open.svg │ │ │ ├── folder-audio.svg │ │ │ ├── folder-aurelia-open.svg │ │ │ ├── folder-aurelia.svg │ │ │ ├── folder-aws-open.svg │ │ │ ├── folder-aws.svg │ │ │ ├── folder-batch-open.svg │ │ │ ├── folder-batch.svg │ │ │ ├── folder-benchmark-open.svg │ │ │ ├── folder-benchmark.svg │ │ │ ├── folder-bower-open.svg │ │ │ ├── folder-bower.svg │ │ │ ├── folder-ci-open.svg │ │ │ ├── folder-ci.svg │ │ │ ├── folder-circleci-open.svg │ │ │ ├── folder-circleci.svg │ │ │ ├── folder-class-open.svg │ │ │ ├── folder-class.svg │ │ │ ├── folder-client-open.svg │ │ │ ├── folder-client.svg │ │ │ ├── folder-cluster-open.svg │ │ │ ├── folder-cluster.svg │ │ │ ├── folder-command-open.svg │ │ │ ├── folder-command.svg │ │ │ ├── folder-components-open.svg │ │ │ ├── folder-components.svg │ │ │ ├── folder-config-open.svg │ │ │ ├── folder-config.svg │ │ │ ├── folder-constant-open.svg │ │ │ ├── folder-constant.svg │ │ │ ├── folder-container-open.svg │ │ │ ├── folder-container.svg │ │ │ ├── folder-content-open.svg │ │ │ ├── folder-content.svg │ │ │ ├── folder-controller-open.svg │ │ │ ├── folder-controller.svg │ │ │ ├── folder-core-open.svg │ │ │ ├── folder-core.svg │ │ │ ├── folder-coverage-open.svg │ │ │ ├── folder-coverage.svg │ │ │ ├── folder-css-open.svg │ │ │ ├── folder-css.svg │ │ │ ├── folder-custom-open.svg │ │ │ ├── folder-custom.svg │ │ │ ├── folder-database-open.svg │ │ │ ├── folder-database.svg │ │ │ ├── folder-debug-open.svg │ │ │ ├── folder-debug.svg │ │ │ ├── folder-delta-open.svg │ │ │ ├── folder-delta.svg │ │ │ ├── folder-dist-open.svg │ │ │ ├── folder-dist.svg │ │ │ ├── folder-docker-open.svg │ │ │ ├── folder-docker.svg │ │ │ ├── folder-docs-open.svg │ │ │ ├── folder-docs.svg │ │ │ ├── folder-download-open.svg │ │ │ ├── folder-download.svg │ │ │ ├── folder-dump-open.svg │ │ │ ├── folder-dump.svg │ │ │ ├── folder-environment-open.svg │ │ │ ├── folder-environment.svg │ │ │ ├── folder-examples-open.svg │ │ │ ├── folder-examples.svg │ │ │ ├── folder-expo-open.svg │ │ │ ├── folder-expo.svg │ │ │ ├── folder-export-open.svg │ │ │ ├── folder-export.svg │ │ │ ├── folder-fastlane-open.svg │ │ │ ├── folder-fastlane.svg │ │ │ ├── folder-flow-open.svg │ │ │ ├── folder-flow.svg │ │ │ ├── folder-font-open.svg │ │ │ ├── folder-font.svg │ │ │ ├── folder-functions-open.svg │ │ │ ├── folder-functions.svg │ │ │ ├── folder-generator-open.svg │ │ │ ├── folder-generator.svg │ │ │ ├── folder-git-open.svg │ │ │ ├── folder-git.svg │ │ │ ├── folder-github-open.svg │ │ │ ├── folder-github.svg │ │ │ ├── folder-gitlab-open.svg │ │ │ ├── folder-gitlab.svg │ │ │ ├── folder-global-open.svg │ │ │ ├── folder-global.svg │ │ │ ├── folder-gradle-open.svg │ │ │ ├── folder-gradle.svg │ │ │ ├── folder-graphql-open.svg │ │ │ ├── folder-graphql.svg │ │ │ ├── folder-guard-open.svg │ │ │ ├── folder-guard.svg │ │ │ ├── folder-helper-open.svg │ │ │ ├── folder-helper.svg │ │ │ ├── folder-hook-open.svg │ │ │ ├── folder-hook.svg │ │ │ ├── folder-i18n-open.svg │ │ │ ├── folder-i18n.svg │ │ │ ├── folder-images-open.svg │ │ │ ├── folder-images.svg │ │ │ ├── folder-import-open.svg │ │ │ ├── folder-import.svg │ │ │ ├── folder-include-open.svg │ │ │ ├── folder-include.svg │ │ │ ├── folder-ios-open.svg │ │ │ ├── folder-ios.svg │ │ │ ├── folder-javascript-open.svg │ │ │ ├── folder-javascript.svg │ │ │ ├── folder-jinja-open.svg │ │ │ ├── folder-jinja-open_light.svg │ │ │ ├── folder-jinja.svg │ │ │ ├── folder-jinja_light.svg │ │ │ ├── folder-job-open.svg │ │ │ ├── folder-job.svg │ │ │ ├── folder-keys-open.svg │ │ │ ├── folder-keys.svg │ │ │ ├── folder-kubernetes-open.svg │ │ │ ├── folder-kubernetes.svg │ │ │ ├── folder-layout-open.svg │ │ │ ├── folder-layout.svg │ │ │ ├── folder-less-open.svg │ │ │ ├── folder-less.svg │ │ │ ├── folder-lib-open.svg │ │ │ ├── folder-lib.svg │ │ │ ├── folder-log-open.svg │ │ │ ├── folder-log.svg │ │ │ ├── folder-mail-open.svg │ │ │ ├── folder-mail.svg │ │ │ ├── folder-mappings-open.svg │ │ │ ├── folder-mappings.svg │ │ │ ├── folder-markdown-open.svg │ │ │ ├── folder-markdown.svg │ │ │ ├── folder-messages-open.svg │ │ │ ├── folder-messages.svg │ │ │ ├── folder-meta-open.svg │ │ │ ├── folder-meta.svg │ │ │ ├── folder-middleware-open.svg │ │ │ ├── folder-middleware.svg │ │ │ ├── folder-mock-open.svg │ │ │ ├── folder-mock.svg │ │ │ ├── folder-ngrx-actions-open.svg │ │ │ ├── folder-ngrx-actions.svg │ │ │ ├── folder-ngrx-effects-open.svg │ │ │ ├── folder-ngrx-effects.svg │ │ │ ├── folder-ngrx-entities-open.svg │ │ │ ├── folder-ngrx-entities.svg │ │ │ ├── folder-ngrx-reducer-open.svg │ │ │ ├── folder-ngrx-reducer.svg │ │ │ ├── folder-ngrx-state-open.svg │ │ │ ├── folder-ngrx-state.svg │ │ │ ├── folder-ngrx-store-open.svg │ │ │ ├── folder-ngrx-store.svg │ │ │ ├── folder-node-open.svg │ │ │ ├── folder-node.svg │ │ │ ├── folder-open.svg │ │ │ ├── folder-other-open.svg │ │ │ ├── folder-other.svg │ │ │ ├── folder-packages-open.svg │ │ │ ├── folder-packages.svg │ │ │ ├── folder-php-open.svg │ │ │ ├── folder-php.svg │ │ │ ├── folder-phpmailer-open.svg │ │ │ ├── folder-phpmailer.svg │ │ │ ├── folder-plugin-open.svg │ │ │ ├── folder-plugin.svg │ │ │ ├── folder-prisma-open.svg │ │ │ ├── folder-prisma.svg │ │ │ ├── folder-private-open.svg │ │ │ ├── folder-private.svg │ │ │ ├── folder-public-open.svg │ │ │ ├── folder-public.svg │ │ │ ├── folder-python-open.svg │ │ │ ├── folder-python.svg │ │ │ ├── folder-react-components-open.svg │ │ │ ├── folder-react-components.svg │ │ │ ├── folder-redux-actions-open.svg │ │ │ ├── folder-redux-actions.svg │ │ │ ├── folder-redux-reducer-open.svg │ │ │ ├── folder-redux-reducer.svg │ │ │ ├── folder-redux-store-open.svg │ │ │ ├── folder-redux-store.svg │ │ │ ├── folder-resource-open.svg │ │ │ ├── folder-resource.svg │ │ │ ├── folder-review-open.svg │ │ │ ├── folder-review.svg │ │ │ ├── folder-root-open.svg │ │ │ ├── folder-root.svg │ │ │ ├── folder-routes-open.svg │ │ │ ├── folder-routes.svg │ │ │ ├── folder-rules-open.svg │ │ │ ├── folder-rules.svg │ │ │ ├── folder-sass-open.svg │ │ │ ├── folder-sass.svg │ │ │ ├── folder-scripts-open.svg │ │ │ ├── folder-scripts.svg │ │ │ ├── folder-secure-open.svg │ │ │ ├── folder-secure.svg │ │ │ ├── folder-server-open.svg │ │ │ ├── folder-server.svg │ │ │ ├── folder-serverless-open.svg │ │ │ ├── folder-serverless.svg │ │ │ ├── folder-shared-open.svg │ │ │ ├── folder-shared.svg │ │ │ ├── folder-src-open.svg │ │ │ ├── folder-src.svg │ │ │ ├── folder-stack-open.svg │ │ │ ├── folder-stack.svg │ │ │ ├── folder-stylus-open.svg │ │ │ ├── folder-stylus.svg │ │ │ ├── folder-sublime-open.svg │ │ │ ├── folder-sublime.svg │ │ │ ├── folder-syntax-open.svg │ │ │ ├── folder-syntax.svg │ │ │ ├── folder-tasks-open.svg │ │ │ ├── folder-tasks.svg │ │ │ ├── folder-temp-open.svg │ │ │ ├── folder-temp.svg │ │ │ ├── folder-template-open.svg │ │ │ ├── folder-template.svg │ │ │ ├── folder-test-open.svg │ │ │ ├── folder-test.svg │ │ │ ├── folder-theme-open.svg │ │ │ ├── folder-theme.svg │ │ │ ├── folder-tools-open.svg │ │ │ ├── folder-tools.svg │ │ │ ├── folder-typescript-open.svg │ │ │ ├── folder-typescript.svg │ │ │ ├── folder-upload-open.svg │ │ │ ├── folder-upload.svg │ │ │ ├── folder-utils-open.svg │ │ │ ├── folder-utils.svg │ │ │ ├── folder-video-open.svg │ │ │ ├── folder-video.svg │ │ │ ├── folder-views-open.svg │ │ │ ├── folder-views.svg │ │ │ ├── folder-vm-open.svg │ │ │ ├── folder-vm.svg │ │ │ ├── folder-vscode-open.svg │ │ │ ├── folder-vscode.svg │ │ │ ├── folder-vue-open.svg │ │ │ ├── folder-vue.svg │ │ │ ├── folder-wakatime-open.svg │ │ │ ├── folder-wakatime.svg │ │ │ ├── folder-webpack-open.svg │ │ │ ├── folder-webpack.svg │ │ │ ├── folder-wordpress-open.svg │ │ │ ├── folder-wordpress.svg │ │ │ ├── folder.svg │ │ │ ├── font.svg │ │ │ ├── foxpro.svg │ │ │ ├── fsharp.svg │ │ │ ├── fusebox.svg │ │ │ ├── gatsby.svg │ │ │ ├── gemfile.svg │ │ │ ├── git.svg │ │ │ ├── gitlab.svg │ │ │ ├── go.svg │ │ │ ├── go_gopher.svg │ │ │ ├── godot-assets.svg │ │ │ ├── godot.svg │ │ │ ├── gradle.svg │ │ │ ├── graphcool.svg │ │ │ ├── graphql.svg │ │ │ ├── groovy.svg │ │ │ ├── grunt.svg │ │ │ ├── gulp.svg │ │ │ ├── h.svg │ │ │ ├── hack.svg │ │ │ ├── haml.svg │ │ │ ├── handlebars.svg │ │ │ ├── haskell.svg │ │ │ ├── haxe.svg │ │ │ ├── hcl.svg │ │ │ ├── hcl_light.svg │ │ │ ├── helm.svg │ │ │ ├── heroku.svg │ │ │ ├── hpp.svg │ │ │ ├── html.svg │ │ │ ├── http.svg │ │ │ ├── i18n.svg │ │ │ ├── image.svg │ │ │ ├── ionic.svg │ │ │ ├── istanbul.svg │ │ │ ├── java.svg │ │ │ ├── javascript-map.svg │ │ │ ├── javascript.svg │ │ │ ├── jenkins.svg │ │ │ ├── jest.svg │ │ │ ├── jinja.svg │ │ │ ├── jinja_light.svg │ │ │ ├── json.svg │ │ │ ├── julia.svg │ │ │ ├── jupyter.svg │ │ │ ├── karma.svg │ │ │ ├── key.svg │ │ │ ├── kivy.svg │ │ │ ├── kl.svg │ │ │ ├── kotlin.svg │ │ │ ├── laravel.svg │ │ │ ├── less.svg │ │ │ ├── lib.svg │ │ │ ├── livescript.svg │ │ │ ├── lock.svg │ │ │ ├── log.svg │ │ │ ├── lua.svg │ │ │ ├── makefile.svg │ │ │ ├── markdown.svg │ │ │ ├── markojs.svg │ │ │ ├── mathematica.svg │ │ │ ├── matlab.svg │ │ │ ├── mdx.svg │ │ │ ├── merlin.svg │ │ │ ├── mint.svg │ │ │ ├── mjml.svg │ │ │ ├── mocha.svg │ │ │ ├── mxml.svg │ │ │ ├── ngrx-actions.svg │ │ │ ├── ngrx-effects.svg │ │ │ ├── ngrx-entity.svg │ │ │ ├── ngrx-reducer.svg │ │ │ ├── ngrx-state.svg │ │ │ ├── nim.svg │ │ │ ├── nix.svg │ │ │ ├── nodejs.svg │ │ │ ├── nodejs_alt.svg │ │ │ ├── nodemon.svg │ │ │ ├── npm.svg │ │ │ ├── nunjucks.svg │ │ │ ├── ocaml.svg │ │ │ ├── pdf.svg │ │ │ ├── perl.svg │ │ │ ├── php.svg │ │ │ ├── php_elephant.svg │ │ │ ├── postcss.svg │ │ │ ├── powerpoint.svg │ │ │ ├── powershell.svg │ │ │ ├── prettier.svg │ │ │ ├── prisma.svg │ │ │ ├── processing.svg │ │ │ ├── processing_light.svg │ │ │ ├── protractor.svg │ │ │ ├── pug.svg │ │ │ ├── puppet.svg │ │ │ ├── purescript.svg │ │ │ ├── python-misc.svg │ │ │ ├── python.svg │ │ │ ├── r.svg │ │ │ ├── racket.svg │ │ │ ├── raml.svg │ │ │ ├── razor.svg │ │ │ ├── react.svg │ │ │ ├── react_ts.svg │ │ │ ├── readme.svg │ │ │ ├── reason.svg │ │ │ ├── red.svg │ │ │ ├── redux-action.svg │ │ │ ├── redux-reducer.svg │ │ │ ├── redux-store.svg │ │ │ ├── restql.svg │ │ │ ├── riot.svg │ │ │ ├── robot.svg │ │ │ ├── rollup.svg │ │ │ ├── routing.svg │ │ │ ├── ruby.svg │ │ │ ├── rust.svg │ │ │ ├── san.svg │ │ │ ├── sass.svg │ │ │ ├── sbt.svg │ │ │ ├── scala.svg │ │ │ ├── scheme.svg │ │ │ ├── semantic-release.svg │ │ │ ├── semantic-release_light.svg │ │ │ ├── sequelize.svg │ │ │ ├── settings.svg │ │ │ ├── shaderlab.svg │ │ │ ├── slim.svg │ │ │ ├── smarty.svg │ │ │ ├── snyk.svg │ │ │ ├── solidity.svg │ │ │ ├── stencil.svg │ │ │ ├── stencil_light.svg │ │ │ ├── storybook.svg │ │ │ ├── stylelint.svg │ │ │ ├── stylelint_light.svg │ │ │ ├── stylus.svg │ │ │ ├── sublime.svg │ │ │ ├── swc.svg │ │ │ ├── swift.svg │ │ │ ├── table.svg │ │ │ ├── tailwindcss.svg │ │ │ ├── terraform.svg │ │ │ ├── test-js.svg │ │ │ ├── test-jsx.svg │ │ │ ├── test-ts.svg │ │ │ ├── tex.svg │ │ │ ├── todo.svg │ │ │ ├── travis.svg │ │ │ ├── tune.svg │ │ │ ├── twig.svg │ │ │ ├── typescript-def.svg │ │ │ ├── typescript.svg │ │ │ ├── url.svg │ │ │ ├── vagrant.svg │ │ │ ├── velocity.svg │ │ │ ├── verilog.svg │ │ │ ├── vfl.svg │ │ │ ├── video.svg │ │ │ ├── virtual.svg │ │ │ ├── visualstudio.svg │ │ │ ├── vscode.svg │ │ │ ├── vue-config.svg │ │ │ ├── vue.svg │ │ │ ├── wakatime.svg │ │ │ ├── wakatime_light.svg │ │ │ ├── wallaby.svg │ │ │ ├── watchman.svg │ │ │ ├── webassembly.svg │ │ │ ├── webhint.svg │ │ │ ├── webpack.svg │ │ │ ├── wepy.svg │ │ │ ├── wolframlanguage.svg │ │ │ ├── word.svg │ │ │ ├── xaml.svg │ │ │ ├── xml.svg │ │ │ ├── yaml.svg │ │ │ ├── yang.svg │ │ │ ├── yarn.svg │ │ │ └── zip.svg │ │ ├── fonts │ │ │ ├── Source_Han_Sans_SC.otf │ │ │ └── sarasa-term-sc-nerd.ttf │ │ ├── index.ejs │ │ ├── keywords │ │ │ ├── kungfuFunctions │ │ │ ├── kungfuKeywords │ │ │ ├── kungfuProperties │ │ │ ├── pythonKeywords │ │ │ └── resolveAPIMd.ts │ │ ├── logo │ │ │ ├── 128x128.png │ │ │ ├── dialog-logo.png │ │ │ ├── icon.icns │ │ │ ├── icon.ico │ │ │ └── icon.png │ │ ├── music │ │ │ ├── ding.mp3 │ │ │ └── warn.mp3 │ │ └── vsDeps │ │ │ ├── msvcp100.dll │ │ │ ├── msvcp110.dll │ │ │ ├── msvcp120.dll │ │ │ ├── msvcp140_1.dll │ │ │ ├── msvcp140_2.dll │ │ │ ├── msvcr100.dll │ │ │ ├── msvcr110.dll │ │ │ ├── msvcr120.dll │ │ │ ├── vcomp100.dll │ │ │ ├── vcomp110.dll │ │ │ ├── vcomp120.dll │ │ │ ├── vcomp140.dll │ │ │ └── vcruntime140_1.dll │ ├── src │ │ ├── components │ │ │ └── modules │ │ │ │ ├── blockTrade │ │ │ │ ├── BlockTrade.vue │ │ │ │ ├── config.ts │ │ │ │ └── utils.ts │ │ │ │ ├── futureArbitrage │ │ │ │ ├── FutureArbitrage.vue │ │ │ │ └── config.ts │ │ │ │ ├── makeOrder │ │ │ │ ├── MakeOrder.vue │ │ │ │ ├── OrderConfirmModal.vue │ │ │ │ ├── config.ts │ │ │ │ └── utils.ts │ │ │ │ ├── marketData │ │ │ │ ├── MarketData.vue │ │ │ │ └── config.ts │ │ │ │ ├── md │ │ │ │ ├── Md.vue │ │ │ │ └── config.ts │ │ │ │ ├── order │ │ │ │ ├── Order.vue │ │ │ │ ├── OrderStatisticModal.vue │ │ │ │ └── config.ts │ │ │ │ ├── orderBook │ │ │ │ └── OrderBook.vue │ │ │ │ ├── pos │ │ │ │ ├── Pos.vue │ │ │ │ ├── config.ts │ │ │ │ └── utils.ts │ │ │ │ ├── posGlobal │ │ │ │ ├── PosGlobal.vue │ │ │ │ └── config.ts │ │ │ │ ├── strategy │ │ │ │ ├── Strategy.vue │ │ │ │ └── config.ts │ │ │ │ ├── td │ │ │ │ ├── FundTransModal.vue │ │ │ │ ├── SetTdGroupModal.vue │ │ │ │ ├── Td.vue │ │ │ │ └── config.ts │ │ │ │ ├── trade │ │ │ │ ├── Trade.vue │ │ │ │ ├── TradeStatisticModal.vue │ │ │ │ └── config.ts │ │ │ │ ├── tradingTask │ │ │ │ ├── TradingTask.vue │ │ │ │ ├── config.ts │ │ │ │ └── utils.ts │ │ │ │ └── transferRecord │ │ │ │ ├── TransferRecord.vue │ │ │ │ └── config.ts │ │ ├── main │ │ │ ├── autoUpdater.ts │ │ │ ├── events.ts │ │ │ ├── index.dev.ts │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ ├── renderer │ │ │ ├── assets │ │ │ │ ├── configs │ │ │ │ │ ├── index.ts │ │ │ │ │ └── symbols.ts │ │ │ │ ├── imgs │ │ │ │ │ ├── headerLogo.jpg │ │ │ │ │ └── logo.png │ │ │ │ ├── less │ │ │ │ │ ├── base.less │ │ │ │ │ ├── coverAnt.less │ │ │ │ │ ├── public.less │ │ │ │ │ └── variables.less │ │ │ │ ├── methods │ │ │ │ │ ├── actionsUtils.ts │ │ │ │ │ ├── codeUtils.ts │ │ │ │ │ ├── logUtils.ts │ │ │ │ │ └── uiUtils.ts │ │ │ │ ├── svg │ │ │ │ │ ├── LOGO.svg │ │ │ │ │ └── file-icons │ │ │ │ │ │ ├── 3d.svg │ │ │ │ │ │ ├── actionscript.svg │ │ │ │ │ │ ├── addFile.svg │ │ │ │ │ │ ├── addFolder.svg │ │ │ │ │ │ ├── android.svg │ │ │ │ │ │ ├── angular-component.svg │ │ │ │ │ │ ├── angular-directive.svg │ │ │ │ │ │ ├── angular-guard.svg │ │ │ │ │ │ ├── angular-pipe.svg │ │ │ │ │ │ ├── angular-resolver.svg │ │ │ │ │ │ ├── angular-service.svg │ │ │ │ │ │ ├── angular.svg │ │ │ │ │ │ ├── apiblueprint.svg │ │ │ │ │ │ ├── applescript.svg │ │ │ │ │ │ ├── appveyor.svg │ │ │ │ │ │ ├── arduino.svg │ │ │ │ │ │ ├── asciidoc.svg │ │ │ │ │ │ ├── assembly.svg │ │ │ │ │ │ ├── audio.svg │ │ │ │ │ │ ├── aurelia.svg │ │ │ │ │ │ ├── authors.svg │ │ │ │ │ │ ├── autohotkey.svg │ │ │ │ │ │ ├── autoit.svg │ │ │ │ │ │ ├── azure-pipelines.svg │ │ │ │ │ │ ├── azure.svg │ │ │ │ │ │ ├── babel.svg │ │ │ │ │ │ ├── ballerina.svg │ │ │ │ │ │ ├── bazel.svg │ │ │ │ │ │ ├── bitbucket.svg │ │ │ │ │ │ ├── bithound.svg │ │ │ │ │ │ ├── blink.svg │ │ │ │ │ │ ├── blink_light.svg │ │ │ │ │ │ ├── bower.svg │ │ │ │ │ │ ├── browserlist.svg │ │ │ │ │ │ ├── browserlist_light.svg │ │ │ │ │ │ ├── bucklescript.svg │ │ │ │ │ │ ├── buildkite.svg │ │ │ │ │ │ ├── c.svg │ │ │ │ │ │ ├── cabal.svg │ │ │ │ │ │ ├── cake.svg │ │ │ │ │ │ ├── certificate.svg │ │ │ │ │ │ ├── changelog.svg │ │ │ │ │ │ ├── circleci.svg │ │ │ │ │ │ ├── circleci_light.svg │ │ │ │ │ │ ├── clojure.svg │ │ │ │ │ │ ├── cloudfoundry.svg │ │ │ │ │ │ ├── cmake.svg │ │ │ │ │ │ ├── code-climate.svg │ │ │ │ │ │ ├── code-climate_light.svg │ │ │ │ │ │ ├── coffee.svg │ │ │ │ │ │ ├── coldfusion.svg │ │ │ │ │ │ ├── conduct.svg │ │ │ │ │ │ ├── console.svg │ │ │ │ │ │ ├── contributing.svg │ │ │ │ │ │ ├── cpp.svg │ │ │ │ │ │ ├── credits.svg │ │ │ │ │ │ ├── crystal.svg │ │ │ │ │ │ ├── crystal_light.svg │ │ │ │ │ │ ├── csharp.svg │ │ │ │ │ │ ├── css-map.svg │ │ │ │ │ │ ├── css.svg │ │ │ │ │ │ ├── cucumber.svg │ │ │ │ │ │ ├── cuda.svg │ │ │ │ │ │ ├── d.svg │ │ │ │ │ │ ├── dart.svg │ │ │ │ │ │ ├── database.svg │ │ │ │ │ │ ├── delate.svg │ │ │ │ │ │ ├── diff.svg │ │ │ │ │ │ ├── django.svg │ │ │ │ │ │ ├── docker.svg │ │ │ │ │ │ ├── document.svg │ │ │ │ │ │ ├── dotjs.svg │ │ │ │ │ │ ├── drone.svg │ │ │ │ │ │ ├── drone_light.svg │ │ │ │ │ │ ├── edge.svg │ │ │ │ │ │ ├── edit.svg │ │ │ │ │ │ ├── editorconfig.svg │ │ │ │ │ │ ├── ejs.svg │ │ │ │ │ │ ├── elixir.svg │ │ │ │ │ │ ├── elm.svg │ │ │ │ │ │ ├── email.svg │ │ │ │ │ │ ├── erlang.svg │ │ │ │ │ │ ├── eslint.svg │ │ │ │ │ │ ├── exe.svg │ │ │ │ │ │ ├── fastlane.svg │ │ │ │ │ │ ├── favicon.svg │ │ │ │ │ │ ├── file.svg │ │ │ │ │ │ ├── firebase.svg │ │ │ │ │ │ ├── flash.svg │ │ │ │ │ │ ├── flow.svg │ │ │ │ │ │ ├── folder-android-open.svg │ │ │ │ │ │ ├── folder-android.svg │ │ │ │ │ │ ├── folder-animation-open.svg │ │ │ │ │ │ ├── folder-animation.svg │ │ │ │ │ │ ├── folder-ansible-open.svg │ │ │ │ │ │ ├── folder-ansible.svg │ │ │ │ │ │ ├── folder-api-open.svg │ │ │ │ │ │ ├── folder-api.svg │ │ │ │ │ │ ├── folder-app-open.svg │ │ │ │ │ │ ├── folder-app.svg │ │ │ │ │ │ ├── folder-archive-open.svg │ │ │ │ │ │ ├── folder-archive.svg │ │ │ │ │ │ ├── folder-audio-open.svg │ │ │ │ │ │ ├── folder-audio.svg │ │ │ │ │ │ ├── folder-aurelia-open.svg │ │ │ │ │ │ ├── folder-aurelia.svg │ │ │ │ │ │ ├── folder-aws-open.svg │ │ │ │ │ │ ├── folder-aws.svg │ │ │ │ │ │ ├── folder-batch-open.svg │ │ │ │ │ │ ├── folder-batch.svg │ │ │ │ │ │ ├── folder-benchmark-open.svg │ │ │ │ │ │ ├── folder-benchmark.svg │ │ │ │ │ │ ├── folder-bower-open.svg │ │ │ │ │ │ ├── folder-bower.svg │ │ │ │ │ │ ├── folder-ci-open.svg │ │ │ │ │ │ ├── folder-ci.svg │ │ │ │ │ │ ├── folder-circleci-open.svg │ │ │ │ │ │ ├── folder-circleci.svg │ │ │ │ │ │ ├── folder-class-open.svg │ │ │ │ │ │ ├── folder-class.svg │ │ │ │ │ │ ├── folder-client-open.svg │ │ │ │ │ │ ├── folder-client.svg │ │ │ │ │ │ ├── folder-cluster-open.svg │ │ │ │ │ │ ├── folder-cluster.svg │ │ │ │ │ │ ├── folder-command-open.svg │ │ │ │ │ │ ├── folder-command.svg │ │ │ │ │ │ ├── folder-components-open.svg │ │ │ │ │ │ ├── folder-components.svg │ │ │ │ │ │ ├── folder-config-open.svg │ │ │ │ │ │ ├── folder-config.svg │ │ │ │ │ │ ├── folder-constant-open.svg │ │ │ │ │ │ ├── folder-constant.svg │ │ │ │ │ │ ├── folder-container-open.svg │ │ │ │ │ │ ├── folder-container.svg │ │ │ │ │ │ ├── folder-content-open.svg │ │ │ │ │ │ ├── folder-content.svg │ │ │ │ │ │ ├── folder-controller-open.svg │ │ │ │ │ │ ├── folder-controller.svg │ │ │ │ │ │ ├── folder-core-open.svg │ │ │ │ │ │ ├── folder-core.svg │ │ │ │ │ │ ├── folder-coverage-open.svg │ │ │ │ │ │ ├── folder-coverage.svg │ │ │ │ │ │ ├── folder-css-open.svg │ │ │ │ │ │ ├── folder-css.svg │ │ │ │ │ │ ├── folder-custom-open.svg │ │ │ │ │ │ ├── folder-custom.svg │ │ │ │ │ │ ├── folder-database-open.svg │ │ │ │ │ │ ├── folder-database.svg │ │ │ │ │ │ ├── folder-debug-open.svg │ │ │ │ │ │ ├── folder-debug.svg │ │ │ │ │ │ ├── folder-delta-open.svg │ │ │ │ │ │ ├── folder-delta.svg │ │ │ │ │ │ ├── folder-dist-open.svg │ │ │ │ │ │ ├── folder-dist.svg │ │ │ │ │ │ ├── folder-docker-open.svg │ │ │ │ │ │ ├── folder-docker.svg │ │ │ │ │ │ ├── folder-docs-open.svg │ │ │ │ │ │ ├── folder-docs.svg │ │ │ │ │ │ ├── folder-download-open.svg │ │ │ │ │ │ ├── folder-download.svg │ │ │ │ │ │ ├── folder-dump-open.svg │ │ │ │ │ │ ├── folder-dump.svg │ │ │ │ │ │ ├── folder-environment-open.svg │ │ │ │ │ │ ├── folder-environment.svg │ │ │ │ │ │ ├── folder-examples-open.svg │ │ │ │ │ │ ├── folder-examples.svg │ │ │ │ │ │ ├── folder-expo-open.svg │ │ │ │ │ │ ├── folder-expo.svg │ │ │ │ │ │ ├── folder-export-open.svg │ │ │ │ │ │ ├── folder-export.svg │ │ │ │ │ │ ├── folder-fastlane-open.svg │ │ │ │ │ │ ├── folder-fastlane.svg │ │ │ │ │ │ ├── folder-flow-open.svg │ │ │ │ │ │ ├── folder-flow.svg │ │ │ │ │ │ ├── folder-font-open.svg │ │ │ │ │ │ ├── folder-font.svg │ │ │ │ │ │ ├── folder-functions-open.svg │ │ │ │ │ │ ├── folder-functions.svg │ │ │ │ │ │ ├── folder-generator-open.svg │ │ │ │ │ │ ├── folder-generator.svg │ │ │ │ │ │ ├── folder-git-open.svg │ │ │ │ │ │ ├── folder-git.svg │ │ │ │ │ │ ├── folder-github-open.svg │ │ │ │ │ │ ├── folder-github.svg │ │ │ │ │ │ ├── folder-gitlab-open.svg │ │ │ │ │ │ ├── folder-gitlab.svg │ │ │ │ │ │ ├── folder-global-open.svg │ │ │ │ │ │ ├── folder-global.svg │ │ │ │ │ │ ├── folder-gradle-open.svg │ │ │ │ │ │ ├── folder-gradle.svg │ │ │ │ │ │ ├── folder-graphql-open.svg │ │ │ │ │ │ ├── folder-graphql.svg │ │ │ │ │ │ ├── folder-guard-open.svg │ │ │ │ │ │ ├── folder-guard.svg │ │ │ │ │ │ ├── folder-helper-open.svg │ │ │ │ │ │ ├── folder-helper.svg │ │ │ │ │ │ ├── folder-hook-open.svg │ │ │ │ │ │ ├── folder-hook.svg │ │ │ │ │ │ ├── folder-i18n-open.svg │ │ │ │ │ │ ├── folder-i18n.svg │ │ │ │ │ │ ├── folder-images-open.svg │ │ │ │ │ │ ├── folder-images.svg │ │ │ │ │ │ ├── folder-import-open.svg │ │ │ │ │ │ ├── folder-import.svg │ │ │ │ │ │ ├── folder-include-open.svg │ │ │ │ │ │ ├── folder-include.svg │ │ │ │ │ │ ├── folder-ios-open.svg │ │ │ │ │ │ ├── folder-ios.svg │ │ │ │ │ │ ├── folder-javascript-open.svg │ │ │ │ │ │ ├── folder-javascript.svg │ │ │ │ │ │ ├── folder-jinja-open.svg │ │ │ │ │ │ ├── folder-jinja-open_light.svg │ │ │ │ │ │ ├── folder-jinja.svg │ │ │ │ │ │ ├── folder-jinja_light.svg │ │ │ │ │ │ ├── folder-job-open.svg │ │ │ │ │ │ ├── folder-job.svg │ │ │ │ │ │ ├── folder-keys-open.svg │ │ │ │ │ │ ├── folder-keys.svg │ │ │ │ │ │ ├── folder-kubernetes-open.svg │ │ │ │ │ │ ├── folder-kubernetes.svg │ │ │ │ │ │ ├── folder-layout-open.svg │ │ │ │ │ │ ├── folder-layout.svg │ │ │ │ │ │ ├── folder-less-open.svg │ │ │ │ │ │ ├── folder-less.svg │ │ │ │ │ │ ├── folder-lib-open.svg │ │ │ │ │ │ ├── folder-lib.svg │ │ │ │ │ │ ├── folder-log-open.svg │ │ │ │ │ │ ├── folder-log.svg │ │ │ │ │ │ ├── folder-mail-open.svg │ │ │ │ │ │ ├── folder-mail.svg │ │ │ │ │ │ ├── folder-mappings-open.svg │ │ │ │ │ │ ├── folder-mappings.svg │ │ │ │ │ │ ├── folder-markdown-open.svg │ │ │ │ │ │ ├── folder-markdown.svg │ │ │ │ │ │ ├── folder-messages-open.svg │ │ │ │ │ │ ├── folder-messages.svg │ │ │ │ │ │ ├── folder-meta-open.svg │ │ │ │ │ │ ├── folder-meta.svg │ │ │ │ │ │ ├── folder-middleware-open.svg │ │ │ │ │ │ ├── folder-middleware.svg │ │ │ │ │ │ ├── folder-mock-open.svg │ │ │ │ │ │ ├── folder-mock.svg │ │ │ │ │ │ ├── folder-ngrx-actions-open.svg │ │ │ │ │ │ ├── folder-ngrx-actions.svg │ │ │ │ │ │ ├── folder-ngrx-effects-open.svg │ │ │ │ │ │ ├── folder-ngrx-effects.svg │ │ │ │ │ │ ├── folder-ngrx-entities-open.svg │ │ │ │ │ │ ├── folder-ngrx-entities.svg │ │ │ │ │ │ ├── folder-ngrx-reducer-open.svg │ │ │ │ │ │ ├── folder-ngrx-reducer.svg │ │ │ │ │ │ ├── folder-ngrx-state-open.svg │ │ │ │ │ │ ├── folder-ngrx-state.svg │ │ │ │ │ │ ├── folder-ngrx-store-open.svg │ │ │ │ │ │ ├── folder-ngrx-store.svg │ │ │ │ │ │ ├── folder-node-open.svg │ │ │ │ │ │ ├── folder-node.svg │ │ │ │ │ │ ├── folder-open.svg │ │ │ │ │ │ ├── folder-other-open.svg │ │ │ │ │ │ ├── folder-other.svg │ │ │ │ │ │ ├── folder-packages-open.svg │ │ │ │ │ │ ├── folder-packages.svg │ │ │ │ │ │ ├── folder-php-open.svg │ │ │ │ │ │ ├── folder-php.svg │ │ │ │ │ │ ├── folder-phpmailer-open.svg │ │ │ │ │ │ ├── folder-phpmailer.svg │ │ │ │ │ │ ├── folder-plugin-open.svg │ │ │ │ │ │ ├── folder-plugin.svg │ │ │ │ │ │ ├── folder-prisma-open.svg │ │ │ │ │ │ ├── folder-prisma.svg │ │ │ │ │ │ ├── folder-private-open.svg │ │ │ │ │ │ ├── folder-private.svg │ │ │ │ │ │ ├── folder-public-open.svg │ │ │ │ │ │ ├── folder-public.svg │ │ │ │ │ │ ├── folder-python-open.svg │ │ │ │ │ │ ├── folder-python.svg │ │ │ │ │ │ ├── folder-react-components-open.svg │ │ │ │ │ │ ├── folder-react-components.svg │ │ │ │ │ │ ├── folder-redux-actions-open.svg │ │ │ │ │ │ ├── folder-redux-actions.svg │ │ │ │ │ │ ├── folder-redux-reducer-open.svg │ │ │ │ │ │ ├── folder-redux-reducer.svg │ │ │ │ │ │ ├── folder-redux-store-open.svg │ │ │ │ │ │ ├── folder-redux-store.svg │ │ │ │ │ │ ├── folder-resource-open.svg │ │ │ │ │ │ ├── folder-resource.svg │ │ │ │ │ │ ├── folder-review-open.svg │ │ │ │ │ │ ├── folder-review.svg │ │ │ │ │ │ ├── folder-root-open.svg │ │ │ │ │ │ ├── folder-root.svg │ │ │ │ │ │ ├── folder-routes-open.svg │ │ │ │ │ │ ├── folder-routes.svg │ │ │ │ │ │ ├── folder-rules-open.svg │ │ │ │ │ │ ├── folder-rules.svg │ │ │ │ │ │ ├── folder-sass-open.svg │ │ │ │ │ │ ├── folder-sass.svg │ │ │ │ │ │ ├── folder-scripts-open.svg │ │ │ │ │ │ ├── folder-scripts.svg │ │ │ │ │ │ ├── folder-secure-open.svg │ │ │ │ │ │ ├── folder-secure.svg │ │ │ │ │ │ ├── folder-server-open.svg │ │ │ │ │ │ ├── folder-server.svg │ │ │ │ │ │ ├── folder-serverless-open.svg │ │ │ │ │ │ ├── folder-serverless.svg │ │ │ │ │ │ ├── folder-shared-open.svg │ │ │ │ │ │ ├── folder-shared.svg │ │ │ │ │ │ ├── folder-src-open.svg │ │ │ │ │ │ ├── folder-src.svg │ │ │ │ │ │ ├── folder-stack-open.svg │ │ │ │ │ │ ├── folder-stack.svg │ │ │ │ │ │ ├── folder-stylus-open.svg │ │ │ │ │ │ ├── folder-stylus.svg │ │ │ │ │ │ ├── folder-sublime-open.svg │ │ │ │ │ │ ├── folder-sublime.svg │ │ │ │ │ │ ├── folder-syntax-open.svg │ │ │ │ │ │ ├── folder-syntax.svg │ │ │ │ │ │ ├── folder-tasks-open.svg │ │ │ │ │ │ ├── folder-tasks.svg │ │ │ │ │ │ ├── folder-temp-open.svg │ │ │ │ │ │ ├── folder-temp.svg │ │ │ │ │ │ ├── folder-template-open.svg │ │ │ │ │ │ ├── folder-template.svg │ │ │ │ │ │ ├── folder-test-open.svg │ │ │ │ │ │ ├── folder-test.svg │ │ │ │ │ │ ├── folder-theme-open.svg │ │ │ │ │ │ ├── folder-theme.svg │ │ │ │ │ │ ├── folder-tools-open.svg │ │ │ │ │ │ ├── folder-tools.svg │ │ │ │ │ │ ├── folder-typescript-open.svg │ │ │ │ │ │ ├── folder-typescript.svg │ │ │ │ │ │ ├── folder-upload-open.svg │ │ │ │ │ │ ├── folder-upload.svg │ │ │ │ │ │ ├── folder-utils-open.svg │ │ │ │ │ │ ├── folder-utils.svg │ │ │ │ │ │ ├── folder-video-open.svg │ │ │ │ │ │ ├── folder-video.svg │ │ │ │ │ │ ├── folder-views-open.svg │ │ │ │ │ │ ├── folder-views.svg │ │ │ │ │ │ ├── folder-vm-open.svg │ │ │ │ │ │ ├── folder-vm.svg │ │ │ │ │ │ ├── folder-vscode-open.svg │ │ │ │ │ │ ├── folder-vscode.svg │ │ │ │ │ │ ├── folder-vue-open.svg │ │ │ │ │ │ ├── folder-vue.svg │ │ │ │ │ │ ├── folder-wakatime-open.svg │ │ │ │ │ │ ├── folder-wakatime.svg │ │ │ │ │ │ ├── folder-webpack-open.svg │ │ │ │ │ │ ├── folder-webpack.svg │ │ │ │ │ │ ├── folder-wordpress-open.svg │ │ │ │ │ │ ├── folder-wordpress.svg │ │ │ │ │ │ ├── folder.svg │ │ │ │ │ │ ├── font.svg │ │ │ │ │ │ ├── foxpro.svg │ │ │ │ │ │ ├── fsharp.svg │ │ │ │ │ │ ├── fusebox.svg │ │ │ │ │ │ ├── gatsby.svg │ │ │ │ │ │ ├── gemfile.svg │ │ │ │ │ │ ├── git.svg │ │ │ │ │ │ ├── gitlab.svg │ │ │ │ │ │ ├── go.svg │ │ │ │ │ │ ├── go_gopher.svg │ │ │ │ │ │ ├── godot-assets.svg │ │ │ │ │ │ ├── godot.svg │ │ │ │ │ │ ├── gradle.svg │ │ │ │ │ │ ├── graphcool.svg │ │ │ │ │ │ ├── graphql.svg │ │ │ │ │ │ ├── groovy.svg │ │ │ │ │ │ ├── grunt.svg │ │ │ │ │ │ ├── gulp.svg │ │ │ │ │ │ ├── h.svg │ │ │ │ │ │ ├── hack.svg │ │ │ │ │ │ ├── haml.svg │ │ │ │ │ │ ├── handlebars.svg │ │ │ │ │ │ ├── haskell.svg │ │ │ │ │ │ ├── haxe.svg │ │ │ │ │ │ ├── hcl.svg │ │ │ │ │ │ ├── hcl_light.svg │ │ │ │ │ │ ├── helm.svg │ │ │ │ │ │ ├── heroku.svg │ │ │ │ │ │ ├── hpp.svg │ │ │ │ │ │ ├── html.svg │ │ │ │ │ │ ├── http.svg │ │ │ │ │ │ ├── i18n.svg │ │ │ │ │ │ ├── image.svg │ │ │ │ │ │ ├── ionic.svg │ │ │ │ │ │ ├── istanbul.svg │ │ │ │ │ │ ├── java.svg │ │ │ │ │ │ ├── javascript-map.svg │ │ │ │ │ │ ├── javascript.svg │ │ │ │ │ │ ├── jenkins.svg │ │ │ │ │ │ ├── jest.svg │ │ │ │ │ │ ├── jinja.svg │ │ │ │ │ │ ├── jinja_light.svg │ │ │ │ │ │ ├── json.svg │ │ │ │ │ │ ├── julia.svg │ │ │ │ │ │ ├── jupyter.svg │ │ │ │ │ │ ├── karma.svg │ │ │ │ │ │ ├── key.svg │ │ │ │ │ │ ├── kivy.svg │ │ │ │ │ │ ├── kl.svg │ │ │ │ │ │ ├── kotlin.svg │ │ │ │ │ │ ├── laravel.svg │ │ │ │ │ │ ├── less.svg │ │ │ │ │ │ ├── lib.svg │ │ │ │ │ │ ├── livescript.svg │ │ │ │ │ │ ├── lock.svg │ │ │ │ │ │ ├── log.svg │ │ │ │ │ │ ├── lua.svg │ │ │ │ │ │ ├── makefile.svg │ │ │ │ │ │ ├── markdown.svg │ │ │ │ │ │ ├── markojs.svg │ │ │ │ │ │ ├── mathematica.svg │ │ │ │ │ │ ├── matlab.svg │ │ │ │ │ │ ├── mdx.svg │ │ │ │ │ │ ├── merlin.svg │ │ │ │ │ │ ├── mint.svg │ │ │ │ │ │ ├── mjml.svg │ │ │ │ │ │ ├── mocha.svg │ │ │ │ │ │ ├── mxml.svg │ │ │ │ │ │ ├── ngrx-actions.svg │ │ │ │ │ │ ├── ngrx-effects.svg │ │ │ │ │ │ ├── ngrx-entity.svg │ │ │ │ │ │ ├── ngrx-reducer.svg │ │ │ │ │ │ ├── ngrx-state.svg │ │ │ │ │ │ ├── nim.svg │ │ │ │ │ │ ├── nix.svg │ │ │ │ │ │ ├── nodejs.svg │ │ │ │ │ │ ├── nodejs_alt.svg │ │ │ │ │ │ ├── nodemon.svg │ │ │ │ │ │ ├── npm.svg │ │ │ │ │ │ ├── nunjucks.svg │ │ │ │ │ │ ├── ocaml.svg │ │ │ │ │ │ ├── pdf.svg │ │ │ │ │ │ ├── perl.svg │ │ │ │ │ │ ├── php.svg │ │ │ │ │ │ ├── php_elephant.svg │ │ │ │ │ │ ├── postcss.svg │ │ │ │ │ │ ├── powerpoint.svg │ │ │ │ │ │ ├── powershell.svg │ │ │ │ │ │ ├── prettier.svg │ │ │ │ │ │ ├── prisma.svg │ │ │ │ │ │ ├── processing.svg │ │ │ │ │ │ ├── processing_light.svg │ │ │ │ │ │ ├── protractor.svg │ │ │ │ │ │ ├── pug.svg │ │ │ │ │ │ ├── puppet.svg │ │ │ │ │ │ ├── purescript.svg │ │ │ │ │ │ ├── python-misc.svg │ │ │ │ │ │ ├── python.svg │ │ │ │ │ │ ├── r.svg │ │ │ │ │ │ ├── racket.svg │ │ │ │ │ │ ├── raml.svg │ │ │ │ │ │ ├── razor.svg │ │ │ │ │ │ ├── react.svg │ │ │ │ │ │ ├── react_ts.svg │ │ │ │ │ │ ├── readme.svg │ │ │ │ │ │ ├── reason.svg │ │ │ │ │ │ ├── red.svg │ │ │ │ │ │ ├── redux-action.svg │ │ │ │ │ │ ├── redux-reducer.svg │ │ │ │ │ │ ├── redux-store.svg │ │ │ │ │ │ ├── restql.svg │ │ │ │ │ │ ├── riot.svg │ │ │ │ │ │ ├── robot.svg │ │ │ │ │ │ ├── rollup.svg │ │ │ │ │ │ ├── routing.svg │ │ │ │ │ │ ├── ruby.svg │ │ │ │ │ │ ├── rust.svg │ │ │ │ │ │ ├── san.svg │ │ │ │ │ │ ├── sass.svg │ │ │ │ │ │ ├── sbt.svg │ │ │ │ │ │ ├── scala.svg │ │ │ │ │ │ ├── scheme.svg │ │ │ │ │ │ ├── semantic-release.svg │ │ │ │ │ │ ├── semantic-release_light.svg │ │ │ │ │ │ ├── sequelize.svg │ │ │ │ │ │ ├── settings.svg │ │ │ │ │ │ ├── shaderlab.svg │ │ │ │ │ │ ├── slim.svg │ │ │ │ │ │ ├── smarty.svg │ │ │ │ │ │ ├── snyk.svg │ │ │ │ │ │ ├── solidity.svg │ │ │ │ │ │ ├── stencil.svg │ │ │ │ │ │ ├── stencil_light.svg │ │ │ │ │ │ ├── storybook.svg │ │ │ │ │ │ ├── stylelint.svg │ │ │ │ │ │ ├── stylelint_light.svg │ │ │ │ │ │ ├── stylus.svg │ │ │ │ │ │ ├── sublime.svg │ │ │ │ │ │ ├── swc.svg │ │ │ │ │ │ ├── swift.svg │ │ │ │ │ │ ├── table.svg │ │ │ │ │ │ ├── tailwindcss.svg │ │ │ │ │ │ ├── terraform.svg │ │ │ │ │ │ ├── test-js.svg │ │ │ │ │ │ ├── test-jsx.svg │ │ │ │ │ │ ├── test-ts.svg │ │ │ │ │ │ ├── tex.svg │ │ │ │ │ │ ├── todo.svg │ │ │ │ │ │ ├── travis.svg │ │ │ │ │ │ ├── tune.svg │ │ │ │ │ │ ├── twig.svg │ │ │ │ │ │ ├── typescript-def.svg │ │ │ │ │ │ ├── typescript.svg │ │ │ │ │ │ ├── url.svg │ │ │ │ │ │ ├── vagrant.svg │ │ │ │ │ │ ├── velocity.svg │ │ │ │ │ │ ├── verilog.svg │ │ │ │ │ │ ├── vfl.svg │ │ │ │ │ │ ├── video.svg │ │ │ │ │ │ ├── virtual.svg │ │ │ │ │ │ ├── visualstudio.svg │ │ │ │ │ │ ├── vscode.svg │ │ │ │ │ │ ├── vue-config.svg │ │ │ │ │ │ ├── vue.svg │ │ │ │ │ │ ├── wakatime.svg │ │ │ │ │ │ ├── wakatime_light.svg │ │ │ │ │ │ ├── wallaby.svg │ │ │ │ │ │ ├── watchman.svg │ │ │ │ │ │ ├── webassembly.svg │ │ │ │ │ │ ├── webhint.svg │ │ │ │ │ │ ├── webpack.svg │ │ │ │ │ │ ├── wepy.svg │ │ │ │ │ │ ├── wolframlanguage.svg │ │ │ │ │ │ ├── word.svg │ │ │ │ │ │ ├── xaml.svg │ │ │ │ │ │ ├── xml.svg │ │ │ │ │ │ ├── yaml.svg │ │ │ │ │ │ ├── yang.svg │ │ │ │ │ │ ├── yarn.svg │ │ │ │ │ │ └── zip.svg │ │ │ │ └── workers │ │ │ │ │ ├── dealInstruments.ts │ │ │ │ │ └── index.ts │ │ │ ├── components │ │ │ │ ├── layout │ │ │ │ │ ├── KfDragCol.vue │ │ │ │ │ ├── KfDragRow.vue │ │ │ │ │ ├── KfHistoryDateModal.vue │ │ │ │ │ ├── KfLayout.vue │ │ │ │ │ ├── KfProcessStatusController.vue │ │ │ │ │ ├── KfRowColIter.vue │ │ │ │ │ └── KfUpdateController.vue │ │ │ │ └── public │ │ │ │ │ ├── KfAddBoardModal.vue │ │ │ │ │ ├── KfBlinkNum.vue │ │ │ │ │ ├── KfConfigSettingsForm.vue │ │ │ │ │ ├── KfDashboard.vue │ │ │ │ │ ├── KfDashboardItem.vue │ │ │ │ │ ├── KfGlobalSettingModal.vue │ │ │ │ │ ├── KfNoData.vue │ │ │ │ │ ├── KfProcessStatus.vue │ │ │ │ │ ├── KfSetByConfigModal.vue │ │ │ │ │ ├── KfSetExtensionModal.vue │ │ │ │ │ ├── KfSystemPrepareModal.vue │ │ │ │ │ └── KfTradingDataTable.vue │ │ │ ├── ipcMsg │ │ │ │ ├── emitter.ts │ │ │ │ └── ipcListener.ts │ │ │ └── pages │ │ │ │ ├── code │ │ │ │ ├── App.vue │ │ │ │ ├── components │ │ │ │ │ ├── FileNode.vue │ │ │ │ │ ├── FileTree.vue │ │ │ │ │ ├── MainContent.vue │ │ │ │ │ └── MonacoEditor.vue │ │ │ │ ├── config │ │ │ │ │ ├── Monocai.json │ │ │ │ │ ├── iconFileConfig.json │ │ │ │ │ └── iconFolderConfig.json │ │ │ │ ├── hint │ │ │ │ │ └── monaco.python.hint.ts │ │ │ │ ├── main.ts │ │ │ │ ├── setEnv.ts │ │ │ │ └── store │ │ │ │ │ ├── codeStore.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index │ │ │ │ ├── App.vue │ │ │ │ ├── injectGlobal.ts │ │ │ │ ├── injectWindow.ts │ │ │ │ ├── main.ts │ │ │ │ ├── router │ │ │ │ │ └── index.ts │ │ │ │ ├── setEnv.ts │ │ │ │ ├── shims-vue.d.ts │ │ │ │ ├── store │ │ │ │ │ ├── global.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── useComponents.ts │ │ │ │ └── views │ │ │ │ │ └── Index.vue │ │ │ │ └── logview │ │ │ │ ├── App.vue │ │ │ │ ├── main.ts │ │ │ │ ├── setEnv.ts │ │ │ │ └── shims-vue.d.ts │ │ └── typings │ │ │ ├── enums.ts │ │ │ ├── global.d.ts │ │ │ ├── index.d.ts │ │ │ └── less.d.ts │ └── tsconfig.json ├── cli │ ├── .gitignore │ ├── .prettierignore │ ├── babel.config.js │ ├── cypress.json │ ├── lib │ │ ├── dev │ │ │ ├── cli.dev.js │ │ │ └── run.js │ │ ├── index.js │ │ └── webpack │ │ │ ├── build.js │ │ │ ├── webpack.cli.config.js │ │ │ └── webpack.dzxy.config.js │ ├── package.json │ ├── src │ │ ├── assets │ │ │ ├── actions │ │ │ │ ├── busEvent.ts │ │ │ │ ├── globalState.ts │ │ │ │ ├── log.ts │ │ │ │ ├── processList.ts │ │ │ │ └── tradingData.ts │ │ │ ├── components │ │ │ │ ├── Dashboard.ts │ │ │ │ ├── JsonTree.ts │ │ │ │ ├── Loading.ts │ │ │ │ ├── MessageBox.ts │ │ │ │ ├── OrderTable.ts │ │ │ │ ├── PosTable.ts │ │ │ │ ├── Table.ts │ │ │ │ └── TradeTable.ts │ │ │ ├── config │ │ │ │ └── index.ts │ │ │ └── methods │ │ │ │ └── utils.ts │ │ ├── commanders │ │ │ ├── add.ts │ │ │ ├── config.ts │ │ │ ├── export.ts │ │ │ ├── list.ts │ │ │ ├── monit.ts │ │ │ ├── remove.ts │ │ │ ├── shutdown.ts │ │ │ └── update.ts │ │ ├── components │ │ │ ├── monitor.ts │ │ │ └── tradingDataMonitor.ts │ │ ├── dzxy.ts │ │ ├── index.ts │ │ ├── injectGlobal.ts │ │ ├── preInit.ts │ │ ├── setCliEnv.ts │ │ ├── setDzxyEnv.ts │ │ └── typings │ │ │ └── index.d.ts │ └── tsconfig.json └── core │ ├── .cmake │ ├── compiler.cmake │ ├── editor.cmake │ └── libnode.cmake │ ├── .deps │ ├── hana-1.80.0 │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── RELEASE_NOTES.md │ │ └── include │ │ │ └── boost │ │ │ ├── hana.hpp │ │ │ └── hana │ │ │ ├── accessors.hpp │ │ │ ├── adapt_adt.hpp │ │ │ ├── adapt_struct.hpp │ │ │ ├── adjust.hpp │ │ │ ├── adjust_if.hpp │ │ │ ├── all.hpp │ │ │ ├── all_of.hpp │ │ │ ├── and.hpp │ │ │ ├── any.hpp │ │ │ ├── any_of.hpp │ │ │ ├── ap.hpp │ │ │ ├── append.hpp │ │ │ ├── assert.hpp │ │ │ ├── at.hpp │ │ │ ├── at_key.hpp │ │ │ ├── back.hpp │ │ │ ├── basic_tuple.hpp │ │ │ ├── bool.hpp │ │ │ ├── cartesian_product.hpp │ │ │ ├── chain.hpp │ │ │ ├── comparing.hpp │ │ │ ├── concat.hpp │ │ │ ├── concept.hpp │ │ │ ├── concept │ │ │ ├── applicative.hpp │ │ │ ├── comonad.hpp │ │ │ ├── comparable.hpp │ │ │ ├── constant.hpp │ │ │ ├── euclidean_ring.hpp │ │ │ ├── foldable.hpp │ │ │ ├── functor.hpp │ │ │ ├── group.hpp │ │ │ ├── hashable.hpp │ │ │ ├── integral_constant.hpp │ │ │ ├── iterable.hpp │ │ │ ├── logical.hpp │ │ │ ├── metafunction.hpp │ │ │ ├── monad.hpp │ │ │ ├── monad_plus.hpp │ │ │ ├── monoid.hpp │ │ │ ├── orderable.hpp │ │ │ ├── product.hpp │ │ │ ├── ring.hpp │ │ │ ├── searchable.hpp │ │ │ ├── sequence.hpp │ │ │ └── struct.hpp │ │ │ ├── config.hpp │ │ │ ├── contains.hpp │ │ │ ├── core.hpp │ │ │ ├── core │ │ │ ├── common.hpp │ │ │ ├── default.hpp │ │ │ ├── dispatch.hpp │ │ │ ├── is_a.hpp │ │ │ ├── make.hpp │ │ │ ├── tag_of.hpp │ │ │ ├── to.hpp │ │ │ └── when.hpp │ │ │ ├── count.hpp │ │ │ ├── count_if.hpp │ │ │ ├── cycle.hpp │ │ │ ├── define_struct.hpp │ │ │ ├── detail │ │ │ ├── algorithm.hpp │ │ │ ├── any_of.hpp │ │ │ ├── array.hpp │ │ │ ├── canonical_constant.hpp │ │ │ ├── concepts.hpp │ │ │ ├── create.hpp │ │ │ ├── decay.hpp │ │ │ ├── dispatch_if.hpp │ │ │ ├── ebo.hpp │ │ │ ├── fast_and.hpp │ │ │ ├── first_unsatisfied_index.hpp │ │ │ ├── has_common_embedding.hpp │ │ │ ├── has_duplicates.hpp │ │ │ ├── hash_table.hpp │ │ │ ├── index_if.hpp │ │ │ ├── integral_constant.hpp │ │ │ ├── intrinsics.hpp │ │ │ ├── nested_by.hpp │ │ │ ├── nested_by_fwd.hpp │ │ │ ├── nested_than.hpp │ │ │ ├── nested_than_fwd.hpp │ │ │ ├── nested_to.hpp │ │ │ ├── nested_to_fwd.hpp │ │ │ ├── operators │ │ │ │ ├── adl.hpp │ │ │ │ ├── arithmetic.hpp │ │ │ │ ├── comparable.hpp │ │ │ │ ├── iterable.hpp │ │ │ │ ├── logical.hpp │ │ │ │ ├── monad.hpp │ │ │ │ ├── orderable.hpp │ │ │ │ └── searchable.hpp │ │ │ ├── preprocessor.hpp │ │ │ ├── std_common_type.hpp │ │ │ ├── struct_macros.hpp │ │ │ ├── struct_macros.hpp.erb │ │ │ ├── type_at.hpp │ │ │ ├── type_foldl1.hpp │ │ │ ├── type_foldr1.hpp │ │ │ ├── unpack_flatten.hpp │ │ │ ├── variadic │ │ │ │ ├── at.hpp │ │ │ │ ├── drop_into.hpp │ │ │ │ ├── foldl1.hpp │ │ │ │ ├── foldr1.hpp │ │ │ │ ├── reverse_apply.hpp │ │ │ │ ├── reverse_apply │ │ │ │ │ ├── flat.hpp │ │ │ │ │ └── unrolled.hpp │ │ │ │ ├── split_at.hpp │ │ │ │ └── take.hpp │ │ │ ├── void_t.hpp │ │ │ └── wrong.hpp │ │ │ ├── difference.hpp │ │ │ ├── div.hpp │ │ │ ├── drop_back.hpp │ │ │ ├── drop_front.hpp │ │ │ ├── drop_front_exactly.hpp │ │ │ ├── drop_while.hpp │ │ │ ├── duplicate.hpp │ │ │ ├── empty.hpp │ │ │ ├── equal.hpp │ │ │ ├── erase_key.hpp │ │ │ ├── eval.hpp │ │ │ ├── eval_if.hpp │ │ │ ├── experimental │ │ │ ├── printable.hpp │ │ │ ├── type_name.hpp │ │ │ ├── types.hpp │ │ │ └── view.hpp │ │ │ ├── ext │ │ │ ├── boost.hpp │ │ │ ├── boost │ │ │ │ ├── fusion.hpp │ │ │ │ ├── fusion │ │ │ │ │ ├── deque.hpp │ │ │ │ │ ├── detail │ │ │ │ │ │ └── common.hpp │ │ │ │ │ ├── list.hpp │ │ │ │ │ ├── tuple.hpp │ │ │ │ │ └── vector.hpp │ │ │ │ ├── mpl.hpp │ │ │ │ ├── mpl │ │ │ │ │ ├── integral_c.hpp │ │ │ │ │ ├── list.hpp │ │ │ │ │ └── vector.hpp │ │ │ │ └── tuple.hpp │ │ │ ├── std.hpp │ │ │ └── std │ │ │ │ ├── array.hpp │ │ │ │ ├── integer_sequence.hpp │ │ │ │ ├── integral_constant.hpp │ │ │ │ ├── pair.hpp │ │ │ │ ├── ratio.hpp │ │ │ │ ├── tuple.hpp │ │ │ │ └── vector.hpp │ │ │ ├── extend.hpp │ │ │ ├── extract.hpp │ │ │ ├── fill.hpp │ │ │ ├── filter.hpp │ │ │ ├── find.hpp │ │ │ ├── find_if.hpp │ │ │ ├── first.hpp │ │ │ ├── flatten.hpp │ │ │ ├── fold.hpp │ │ │ ├── fold_left.hpp │ │ │ ├── fold_right.hpp │ │ │ ├── for_each.hpp │ │ │ ├── front.hpp │ │ │ ├── functional.hpp │ │ │ ├── functional │ │ │ ├── always.hpp │ │ │ ├── apply.hpp │ │ │ ├── arg.hpp │ │ │ ├── capture.hpp │ │ │ ├── compose.hpp │ │ │ ├── curry.hpp │ │ │ ├── demux.hpp │ │ │ ├── fix.hpp │ │ │ ├── flip.hpp │ │ │ ├── id.hpp │ │ │ ├── infix.hpp │ │ │ ├── iterate.hpp │ │ │ ├── lockstep.hpp │ │ │ ├── on.hpp │ │ │ ├── overload.hpp │ │ │ ├── overload_linearly.hpp │ │ │ ├── partial.hpp │ │ │ ├── placeholder.hpp │ │ │ └── reverse_partial.hpp │ │ │ ├── fuse.hpp │ │ │ ├── fwd │ │ │ ├── accessors.hpp │ │ │ ├── adapt_adt.hpp │ │ │ ├── adapt_struct.hpp │ │ │ ├── adjust.hpp │ │ │ ├── adjust_if.hpp │ │ │ ├── all.hpp │ │ │ ├── all_of.hpp │ │ │ ├── and.hpp │ │ │ ├── any.hpp │ │ │ ├── any_of.hpp │ │ │ ├── ap.hpp │ │ │ ├── append.hpp │ │ │ ├── at.hpp │ │ │ ├── at_key.hpp │ │ │ ├── back.hpp │ │ │ ├── basic_tuple.hpp │ │ │ ├── bool.hpp │ │ │ ├── cartesian_product.hpp │ │ │ ├── chain.hpp │ │ │ ├── comparing.hpp │ │ │ ├── concat.hpp │ │ │ ├── concept │ │ │ │ ├── applicative.hpp │ │ │ │ ├── comonad.hpp │ │ │ │ ├── comparable.hpp │ │ │ │ ├── constant.hpp │ │ │ │ ├── euclidean_ring.hpp │ │ │ │ ├── foldable.hpp │ │ │ │ ├── functor.hpp │ │ │ │ ├── group.hpp │ │ │ │ ├── hashable.hpp │ │ │ │ ├── integral_constant.hpp │ │ │ │ ├── iterable.hpp │ │ │ │ ├── logical.hpp │ │ │ │ ├── metafunction.hpp │ │ │ │ ├── monad.hpp │ │ │ │ ├── monad_plus.hpp │ │ │ │ ├── monoid.hpp │ │ │ │ ├── orderable.hpp │ │ │ │ ├── product.hpp │ │ │ │ ├── ring.hpp │ │ │ │ ├── searchable.hpp │ │ │ │ ├── sequence.hpp │ │ │ │ └── struct.hpp │ │ │ ├── contains.hpp │ │ │ ├── core.hpp │ │ │ ├── core │ │ │ │ ├── common.hpp │ │ │ │ ├── default.hpp │ │ │ │ ├── is_a.hpp │ │ │ │ ├── make.hpp │ │ │ │ ├── tag_of.hpp │ │ │ │ ├── to.hpp │ │ │ │ └── when.hpp │ │ │ ├── count.hpp │ │ │ ├── count_if.hpp │ │ │ ├── cycle.hpp │ │ │ ├── define_struct.hpp │ │ │ ├── difference.hpp │ │ │ ├── div.hpp │ │ │ ├── drop_back.hpp │ │ │ ├── drop_front.hpp │ │ │ ├── drop_front_exactly.hpp │ │ │ ├── drop_while.hpp │ │ │ ├── duplicate.hpp │ │ │ ├── empty.hpp │ │ │ ├── equal.hpp │ │ │ ├── erase_key.hpp │ │ │ ├── eval.hpp │ │ │ ├── eval_if.hpp │ │ │ ├── extend.hpp │ │ │ ├── extract.hpp │ │ │ ├── fill.hpp │ │ │ ├── filter.hpp │ │ │ ├── find.hpp │ │ │ ├── find_if.hpp │ │ │ ├── first.hpp │ │ │ ├── flatten.hpp │ │ │ ├── fold.hpp │ │ │ ├── fold_left.hpp │ │ │ ├── fold_right.hpp │ │ │ ├── for_each.hpp │ │ │ ├── front.hpp │ │ │ ├── fuse.hpp │ │ │ ├── greater.hpp │ │ │ ├── greater_equal.hpp │ │ │ ├── group.hpp │ │ │ ├── hash.hpp │ │ │ ├── if.hpp │ │ │ ├── index_if.hpp │ │ │ ├── insert.hpp │ │ │ ├── insert_range.hpp │ │ │ ├── integral_constant.hpp │ │ │ ├── intersection.hpp │ │ │ ├── intersperse.hpp │ │ │ ├── is_disjoint.hpp │ │ │ ├── is_empty.hpp │ │ │ ├── is_subset.hpp │ │ │ ├── keys.hpp │ │ │ ├── lazy.hpp │ │ │ ├── length.hpp │ │ │ ├── less.hpp │ │ │ ├── less_equal.hpp │ │ │ ├── lexicographical_compare.hpp │ │ │ ├── lift.hpp │ │ │ ├── map.hpp │ │ │ ├── max.hpp │ │ │ ├── maximum.hpp │ │ │ ├── members.hpp │ │ │ ├── min.hpp │ │ │ ├── minimum.hpp │ │ │ ├── minus.hpp │ │ │ ├── mod.hpp │ │ │ ├── monadic_compose.hpp │ │ │ ├── monadic_fold_left.hpp │ │ │ ├── monadic_fold_right.hpp │ │ │ ├── mult.hpp │ │ │ ├── negate.hpp │ │ │ ├── none.hpp │ │ │ ├── none_of.hpp │ │ │ ├── not.hpp │ │ │ ├── not_equal.hpp │ │ │ ├── one.hpp │ │ │ ├── optional.hpp │ │ │ ├── or.hpp │ │ │ ├── ordering.hpp │ │ │ ├── pair.hpp │ │ │ ├── partition.hpp │ │ │ ├── permutations.hpp │ │ │ ├── plus.hpp │ │ │ ├── power.hpp │ │ │ ├── prefix.hpp │ │ │ ├── prepend.hpp │ │ │ ├── product.hpp │ │ │ ├── range.hpp │ │ │ ├── remove.hpp │ │ │ ├── remove_at.hpp │ │ │ ├── remove_if.hpp │ │ │ ├── remove_range.hpp │ │ │ ├── repeat.hpp │ │ │ ├── replace.hpp │ │ │ ├── replace_if.hpp │ │ │ ├── replicate.hpp │ │ │ ├── reverse.hpp │ │ │ ├── reverse_fold.hpp │ │ │ ├── scan_left.hpp │ │ │ ├── scan_right.hpp │ │ │ ├── second.hpp │ │ │ ├── set.hpp │ │ │ ├── size.hpp │ │ │ ├── slice.hpp │ │ │ ├── sort.hpp │ │ │ ├── span.hpp │ │ │ ├── string.hpp │ │ │ ├── suffix.hpp │ │ │ ├── sum.hpp │ │ │ ├── symmetric_difference.hpp │ │ │ ├── take_back.hpp │ │ │ ├── take_front.hpp │ │ │ ├── take_while.hpp │ │ │ ├── tap.hpp │ │ │ ├── then.hpp │ │ │ ├── transform.hpp │ │ │ ├── tuple.hpp │ │ │ ├── type.hpp │ │ │ ├── unfold_left.hpp │ │ │ ├── unfold_right.hpp │ │ │ ├── union.hpp │ │ │ ├── unique.hpp │ │ │ ├── unpack.hpp │ │ │ ├── value.hpp │ │ │ ├── while.hpp │ │ │ ├── zero.hpp │ │ │ ├── zip.hpp │ │ │ ├── zip_shortest.hpp │ │ │ ├── zip_shortest_with.hpp │ │ │ └── zip_with.hpp │ │ │ ├── greater.hpp │ │ │ ├── greater_equal.hpp │ │ │ ├── group.hpp │ │ │ ├── hash.hpp │ │ │ ├── if.hpp │ │ │ ├── index_if.hpp │ │ │ ├── insert.hpp │ │ │ ├── insert_range.hpp │ │ │ ├── integral_constant.hpp │ │ │ ├── intersection.hpp │ │ │ ├── intersperse.hpp │ │ │ ├── is_disjoint.hpp │ │ │ ├── is_empty.hpp │ │ │ ├── is_subset.hpp │ │ │ ├── keys.hpp │ │ │ ├── lazy.hpp │ │ │ ├── length.hpp │ │ │ ├── less.hpp │ │ │ ├── less_equal.hpp │ │ │ ├── lexicographical_compare.hpp │ │ │ ├── lift.hpp │ │ │ ├── map.hpp │ │ │ ├── max.hpp │ │ │ ├── maximum.hpp │ │ │ ├── members.hpp │ │ │ ├── min.hpp │ │ │ ├── minimum.hpp │ │ │ ├── minus.hpp │ │ │ ├── mod.hpp │ │ │ ├── monadic_compose.hpp │ │ │ ├── monadic_fold_left.hpp │ │ │ ├── monadic_fold_right.hpp │ │ │ ├── mult.hpp │ │ │ ├── negate.hpp │ │ │ ├── none.hpp │ │ │ ├── none_of.hpp │ │ │ ├── not.hpp │ │ │ ├── not_equal.hpp │ │ │ ├── one.hpp │ │ │ ├── optional.hpp │ │ │ ├── or.hpp │ │ │ ├── ordering.hpp │ │ │ ├── pair.hpp │ │ │ ├── partition.hpp │ │ │ ├── permutations.hpp │ │ │ ├── plus.hpp │ │ │ ├── power.hpp │ │ │ ├── prefix.hpp │ │ │ ├── prepend.hpp │ │ │ ├── product.hpp │ │ │ ├── range.hpp │ │ │ ├── remove.hpp │ │ │ ├── remove_at.hpp │ │ │ ├── remove_if.hpp │ │ │ ├── remove_range.hpp │ │ │ ├── repeat.hpp │ │ │ ├── replace.hpp │ │ │ ├── replace_if.hpp │ │ │ ├── replicate.hpp │ │ │ ├── reverse.hpp │ │ │ ├── reverse_fold.hpp │ │ │ ├── scan_left.hpp │ │ │ ├── scan_right.hpp │ │ │ ├── second.hpp │ │ │ ├── set.hpp │ │ │ ├── size.hpp │ │ │ ├── slice.hpp │ │ │ ├── sort.hpp │ │ │ ├── span.hpp │ │ │ ├── string.hpp │ │ │ ├── suffix.hpp │ │ │ ├── sum.hpp │ │ │ ├── symmetric_difference.hpp │ │ │ ├── take_back.hpp │ │ │ ├── take_front.hpp │ │ │ ├── take_while.hpp │ │ │ ├── tap.hpp │ │ │ ├── then.hpp │ │ │ ├── traits.hpp │ │ │ ├── transform.hpp │ │ │ ├── tuple.hpp │ │ │ ├── type.hpp │ │ │ ├── unfold_left.hpp │ │ │ ├── unfold_right.hpp │ │ │ ├── union.hpp │ │ │ ├── unique.hpp │ │ │ ├── unpack.hpp │ │ │ ├── value.hpp │ │ │ ├── version.hpp │ │ │ ├── while.hpp │ │ │ ├── zero.hpp │ │ │ ├── zip.hpp │ │ │ ├── zip_shortest.hpp │ │ │ ├── zip_shortest_with.hpp │ │ │ └── zip_with.hpp │ ├── pybind11-2.9.0 │ │ ├── CMakeLists.txt │ │ ├── LICENSE │ │ ├── MANIFEST.in │ │ ├── README.rst │ │ ├── include │ │ │ └── pybind11 │ │ │ │ ├── attr.h │ │ │ │ ├── buffer_info.h │ │ │ │ ├── cast.h │ │ │ │ ├── chrono.h │ │ │ │ ├── common.h │ │ │ │ ├── complex.h │ │ │ │ ├── detail │ │ │ │ ├── class.h │ │ │ │ ├── common.h │ │ │ │ ├── descr.h │ │ │ │ ├── init.h │ │ │ │ ├── internals.h │ │ │ │ ├── type_caster_base.h │ │ │ │ └── typeid.h │ │ │ │ ├── eigen.h │ │ │ │ ├── embed.h │ │ │ │ ├── eval.h │ │ │ │ ├── functional.h │ │ │ │ ├── gil.h │ │ │ │ ├── iostream.h │ │ │ │ ├── numpy.h │ │ │ │ ├── operators.h │ │ │ │ ├── options.h │ │ │ │ ├── pybind11.h │ │ │ │ ├── pytypes.h │ │ │ │ ├── stl.h │ │ │ │ ├── stl │ │ │ │ └── filesystem.h │ │ │ │ └── stl_bind.h │ │ ├── noxfile.py │ │ ├── pybind11 │ │ │ ├── __init__.py │ │ │ ├── __main__.py │ │ │ ├── _version.py │ │ │ ├── _version.pyi │ │ │ ├── commands.py │ │ │ ├── py.typed │ │ │ ├── setup_helpers.py │ │ │ └── setup_helpers.pyi │ │ ├── pyproject.toml │ │ ├── setup.cfg │ │ ├── setup.py │ │ └── tools │ │ │ ├── FindCatch.cmake │ │ │ ├── FindEigen3.cmake │ │ │ ├── FindPythonLibsNew.cmake │ │ │ ├── check-style.sh │ │ │ ├── cmake_uninstall.cmake.in │ │ │ ├── libsize.py │ │ │ ├── make_changelog.py │ │ │ ├── pybind11Common.cmake │ │ │ ├── pybind11Config.cmake.in │ │ │ ├── pybind11NewTools.cmake │ │ │ ├── pybind11Tools.cmake │ │ │ ├── pyproject.toml │ │ │ ├── setup_global.py.in │ │ │ └── setup_main.py.in │ └── sqlite_orm-1.7.1 │ │ ├── CHANGEDIFF.TXT │ │ ├── COMM-LICENSE │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── README.md │ │ └── include │ │ └── sqlite_orm │ │ └── sqlite_orm.h │ ├── .devtools │ ├── env.py │ ├── kfc.py │ └── kfs.py │ ├── .gyp │ ├── electron-version.js │ ├── gyp_action_lib.py │ ├── gyp_action_pipenv.py │ ├── gyp_action_poetry.py │ ├── gyp_action_yarn.py │ ├── run-build.js │ ├── run-conan.js │ ├── run-format-all.js │ ├── run-format-cpp.js │ ├── run-format-js.js │ ├── run-format-python.js │ ├── run-link-node.js │ ├── run-pipenv.js │ ├── run-poetry.js │ └── run-wheel.js │ ├── .npmignore │ ├── .prettierrc.js │ ├── CMakeLists.txt │ ├── Pipfile │ ├── Pipfile.lock │ ├── binding.gyp │ ├── checks.json │ ├── conanfile.py │ ├── lib │ ├── .gitattributes │ ├── executable.js │ ├── index.js │ ├── kfc.js │ ├── kfs.js │ ├── kungfu.js │ ├── prebuilt.js │ ├── shell.js │ └── sywac.js │ ├── package.json │ ├── poetry.lock │ ├── poetry.toml │ ├── pyproject.toml │ └── src │ ├── bindings │ ├── node │ │ ├── CMakeLists.txt │ │ ├── binding │ │ │ ├── basket_instrument_store.cpp │ │ │ ├── basket_instrument_store.h │ │ │ ├── basket_store.cpp │ │ │ ├── basket_store.h │ │ │ ├── commission_store.cpp │ │ │ ├── commission_store.h │ │ │ ├── common.h │ │ │ ├── config_store.cpp │ │ │ ├── config_store.h │ │ │ ├── data_table.cpp │ │ │ ├── data_table.h │ │ │ ├── history.cpp │ │ │ ├── history.h │ │ │ ├── io.cpp │ │ │ ├── io.h │ │ │ ├── journal.cpp │ │ │ ├── journal.h │ │ │ ├── kungfu_node.cpp │ │ │ ├── longfist.cpp │ │ │ ├── longfist.h │ │ │ ├── op_publish_state.cpp │ │ │ ├── op_reset_cache.cpp │ │ │ ├── op_restore_state.cpp │ │ │ ├── operators.cpp │ │ │ ├── operators.h │ │ │ ├── risk_setting_store.cpp │ │ │ ├── risk_setting_store.h │ │ │ ├── watcher.cpp │ │ │ └── watcher.h │ │ └── drone │ │ │ └── module.cpp │ └── python │ │ ├── CMakeLists.txt │ │ └── binding │ │ ├── py-libnode.cpp │ │ ├── py-libnode.h │ │ ├── py-longfist-enums.cpp │ │ ├── py-longfist-types.cpp │ │ ├── py-longfist.cpp │ │ ├── py-longfist.h │ │ ├── py-wingchun-basketorder.cpp │ │ ├── py-wingchun-book.cpp │ │ ├── py-wingchun-broker.cpp │ │ ├── py-wingchun-service.cpp │ │ ├── py-wingchun-strategy.cpp │ │ ├── py-wingchun-utils.cpp │ │ ├── py-wingchun.cpp │ │ ├── py-wingchun.h │ │ ├── py-yijinjing.cpp │ │ ├── py-yijinjing.h │ │ └── pykungfu.cpp │ ├── include │ └── kungfu │ │ ├── common.h │ │ ├── longfist │ │ ├── enums.h │ │ ├── longfist.h │ │ └── types.h │ │ ├── wingchun │ │ ├── basketorder │ │ │ ├── basketorder.h │ │ │ └── basketorderengine.h │ │ ├── book │ │ │ ├── accounting.h │ │ │ ├── book.h │ │ │ └── bookkeeper.h │ │ ├── broker │ │ │ ├── broker.h │ │ │ ├── client.h │ │ │ ├── marketdata.h │ │ │ └── trader.h │ │ ├── common.h │ │ ├── encoding.h │ │ ├── extension.h │ │ ├── service │ │ │ ├── bar.h │ │ │ └── ledger.h │ │ ├── strategy │ │ │ ├── backtest.h │ │ │ ├── context.h │ │ │ ├── runner.h │ │ │ ├── runtime.h │ │ │ └── strategy.h │ │ └── timezone.h │ │ └── yijinjing │ │ ├── cache │ │ ├── backend.h │ │ ├── cached.h │ │ ├── ringqueue.h │ │ ├── runtime.h │ │ └── sqlite_orm_ext.h │ │ ├── common.h │ │ ├── index │ │ └── session.h │ │ ├── io.h │ │ ├── journal │ │ ├── assemble.h │ │ ├── common.h │ │ ├── frame.h │ │ ├── journal.h │ │ └── page.h │ │ ├── log.h │ │ ├── nanomsg │ │ └── socket.h │ │ ├── practice │ │ ├── apprentice.h │ │ ├── hero.h │ │ ├── master.h │ │ └── profile.h │ │ ├── socket │ │ ├── os.h │ │ ├── poller.h │ │ ├── poller_epoll.h │ │ ├── poller_kqueue.h │ │ └── socket.h │ │ ├── time.h │ │ └── util │ │ ├── os.h │ │ ├── stacktrace.h │ │ └── util.h │ ├── libkungfu │ ├── CMakeLists.txt │ ├── wingchun │ │ ├── basketorder │ │ │ ├── basketorder.cpp │ │ │ └── basketorderengine.cpp │ │ ├── book │ │ │ ├── accounting.cpp │ │ │ ├── accounting │ │ │ │ ├── bond.hpp │ │ │ │ ├── crypto.hpp │ │ │ │ ├── future.hpp │ │ │ │ ├── repo.hpp │ │ │ │ └── stock.hpp │ │ │ ├── book.cpp │ │ │ └── bookkeeper.cpp │ │ ├── broker │ │ │ ├── broker.cpp │ │ │ ├── client.cpp │ │ │ ├── marketdata.cpp │ │ │ └── trader.cpp │ │ ├── service │ │ │ ├── bar.cpp │ │ │ └── ledger.cpp │ │ ├── strategy │ │ │ ├── backtest.cpp │ │ │ ├── context.cpp │ │ │ ├── runner.cpp │ │ │ └── runtime.cpp │ │ └── util │ │ │ ├── encoding.cpp │ │ │ └── timezone.cpp │ └── yijinjing │ │ ├── cache │ │ ├── backend.cpp │ │ └── cached.cpp │ │ ├── index │ │ └── session.cpp │ │ ├── io │ │ ├── io.cpp │ │ ├── locator.cpp │ │ ├── sqlite.cpp │ │ └── trace.cpp │ │ ├── journal │ │ ├── assemble.cpp │ │ ├── journal.cpp │ │ ├── page.cpp │ │ ├── reader.cpp │ │ └── writer.cpp │ │ ├── practice │ │ ├── apprentice.cpp │ │ ├── hero.cpp │ │ ├── master.cpp │ │ └── profile.cpp │ │ └── util │ │ ├── MurmurHash3.cpp │ │ ├── MurmurHash3.h │ │ ├── StackWalker.cpp │ │ ├── StackWalker.h │ │ ├── hash.cpp │ │ ├── log.cpp │ │ ├── mmap.cpp │ │ ├── nanomsg.cpp │ │ ├── signal.cpp │ │ ├── stacktrace.cpp │ │ ├── terminal.cpp │ │ └── time.cpp │ └── python │ ├── kfc.py │ ├── kfc.spec │ ├── kfs.py │ ├── kungfu │ ├── __init__.py │ ├── __main__.py │ ├── __tool__.py │ ├── console │ │ ├── __init__.py │ │ ├── bridging │ │ │ ├── __init__.py │ │ │ ├── __registry__.py │ │ │ ├── black │ │ │ │ ├── __init__.py │ │ │ │ └── __main__.py │ │ │ ├── nuitka │ │ │ │ ├── __init__.py │ │ │ │ └── __main__.py │ │ │ ├── pdm │ │ │ │ ├── __init__.py │ │ │ │ └── __main__.py │ │ │ └── scons │ │ │ │ ├── __init__.py │ │ │ │ └── __main__.py │ │ ├── commands │ │ │ ├── __init__.py │ │ │ ├── __registry__.py │ │ │ ├── assemble.py │ │ │ ├── cli.py │ │ │ ├── engage.py │ │ │ ├── journal.py │ │ │ └── run.py │ │ ├── site.py │ │ └── variants │ │ │ ├── __init__.py │ │ │ ├── __registry__.py │ │ │ ├── node.py │ │ │ └── python.py │ ├── wingchun │ │ ├── __init__.py │ │ ├── calendar.py │ │ ├── constants.py │ │ ├── msg.py │ │ ├── replay.py │ │ ├── strategy.py │ │ └── utils.py │ └── yijinjing │ │ ├── __init__.py │ │ ├── data │ │ ├── __init__.py │ │ └── adapter.py │ │ ├── journal.py │ │ ├── locator.py │ │ ├── log.py │ │ ├── practice │ │ ├── __init__.py │ │ ├── apprentice.py │ │ ├── coloop.py │ │ ├── executor.py │ │ └── master.py │ │ ├── sinks │ │ ├── __init__.py │ │ ├── archive.py │ │ └── csv.py │ │ ├── time.py │ │ └── utils.py │ ├── pyi-hooks │ ├── __init__.py │ ├── hook-blib2to3.py │ ├── hook-nuitka.py │ ├── hook-pdm.py │ ├── hook-pep517.py │ ├── hook-pip.py │ ├── pre_find_module_path │ │ ├── __init__.py │ │ └── hook-nuitka.py │ └── pre_safe_import_module │ │ ├── __init__.py │ │ └── hook-nuitka.py │ └── setup.py ├── lerna.json ├── package.json ├── patches └── pm2+5.2.2.patch └── yarn.lock /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @kungfu-trader/kungfu-qa -------------------------------------------------------------------------------- /.github/workflows/bump-major-version.yml: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | name: Admin - Bump Major Version 4 | on: 5 | workflow_dispatch: 6 | inputs: 7 | confirm: 8 | description: 'Type confirm to bump major version' 9 | required: true 10 | default: 'cancel' 11 | 12 | jobs: 13 | bump: 14 | uses: kungfu-trader/workflows/.github/workflows/.bump-major-version.yml@v1 15 | secrets: 16 | GITHUB_PUSH_TOKEN: ${{ secrets.KUNGFU_GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.github/workflows/bump-minor-version.yml: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | name: Admin - Bump Minor Version 4 | on: 5 | pull_request: 6 | types: [closed] 7 | branches: 8 | - main 9 | - release/*/lts 10 | 11 | jobs: 12 | bump: 13 | uses: kungfu-trader/workflows/.github/workflows/.bump-minor-version.yml@v1 14 | secrets: 15 | GITHUB_PUSH_TOKEN: ${{ secrets.KUNGFU_GITHUB_TOKEN }} 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS files 2 | .DS_Store 3 | 4 | # IDE related 5 | .idea/ 6 | .vs/ 7 | .vscode/ 8 | .arcconfig 9 | .project 10 | *.VC.* 11 | *.sln 12 | *.vcxproj* 13 | *.flow 14 | *.log 15 | 16 | # Node related 17 | node_modules/ 18 | 19 | # Python related 20 | __pycache__/ 21 | __pypackages__/ 22 | .pdm.toml 23 | *.pyc 24 | *.egg-info/ 25 | *.egg 26 | 27 | # Kungfu related 28 | __kungfulibs__/ 29 | 30 | # Build related 31 | build/ 32 | build-*/ 33 | cmake-build-debug/ 34 | dist/ 35 | 36 | # assemble demo result 37 | *.csv 38 | *.xls 39 | *.xlsx -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | build 2 | cmake-build-debug 3 | node_modules 4 | 5 | **/build 6 | **/cmake-build-debug 7 | **/node_modules 8 | -------------------------------------------------------------------------------- /.prebuild.js: -------------------------------------------------------------------------------- 1 | if (!process.env.CI) { 2 | const { shell } = require('./framework/core'); 3 | const opts = { silent: true }; 4 | shell.run('yarn', ['-s', 'sync'], true, opts); 5 | shell.run('yarn', ['-s', 'format'], true, opts); 6 | } 7 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./framework/core/.prettierrc.js'); 2 | -------------------------------------------------------------------------------- /checks.json: -------------------------------------------------------------------------------- 1 | {"enabled":true,"categories":{}} -------------------------------------------------------------------------------- /developer/sdk/.npmignore: -------------------------------------------------------------------------------- 1 | cmake-build-debug 2 | build 3 | node_modules 4 | -------------------------------------------------------------------------------- /developer/sdk/.prettierignore: -------------------------------------------------------------------------------- 1 | build 2 | dist -------------------------------------------------------------------------------- /developer/sdk/README.md: -------------------------------------------------------------------------------- 1 | Kungfu SDK 2 | -------------------------------------------------------------------------------- /developer/sdk/src/.gitattributes: -------------------------------------------------------------------------------- 1 | kfs.js text eol=lf 2 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/broker/build.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'build', 5 | desc: 'Build kungfu broker', 6 | run: async () => { 7 | await sdk.lib.extension.installBatch(); 8 | sdk.lib.extension.configure(); 9 | sdk.lib.extension.compile(); 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/broker/clean.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'clean', 5 | desc: 'Clean build files', 6 | run: () => { 7 | sdk.lib.extension.clean(); 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/broker/package.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'package', 5 | desc: 'Package kungfu broker', 6 | run: () => { 7 | sdk.lib.extension.package(); 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/craft/build.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'build', 5 | desc: 'Build kungfu artifact', 6 | run: () => { 7 | sdk.lib.craft.build(); 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/craft/clean.js: -------------------------------------------------------------------------------- 1 | const fse = require('fs-extra'); 2 | const path = require('path'); 3 | 4 | module.exports = { 5 | flags: 'clean', 6 | desc: 'Clean kungfu craft', 7 | run: () => { 8 | fse.removeSync(path.join(process.cwd().toString(), 'build')); 9 | fse.removeSync(path.join(process.cwd().toString(), 'dist')); 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/craft/cli.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'cli', 5 | desc: 'Run kungfu artifact in cli mode', 6 | setup: (cli) => { 7 | cli.strict(false); 8 | }, 9 | run: (argv) => { 10 | sdk.lib.craft.cli(argv); 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/craft/dev.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'dev', 5 | desc: 'Run kungfu artifact in development mode', 6 | setup: (cli) => { 7 | cli.option('with-webpack', { 8 | type: 'boolean', 9 | desc: 'run webpack dev server', 10 | defaultValue: false, 11 | }); 12 | }, 13 | run: (argv) => { 14 | sdk.lib.craft.dev(argv['with-webpack']); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/craft/package.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'package', 5 | desc: 'Package kungfu artifact', 6 | run: async () => { 7 | await sdk.lib.craft.package(); 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/craft/upgrade.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'upgrade', 5 | desc: 'Upgrade @kungfu-trader packages', 6 | run: () => { 7 | sdk.lib.craft.upgrade(); 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/extension/build.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'build', 5 | desc: 'Build kungfu extension', 6 | setup: (cli) => { 7 | cli.option('url', { 8 | type: 'string', 9 | desc: 'lib site URL', 10 | defaultValue: sdk.lib.extension.DefaultLibSiteURL, 11 | }); 12 | }, 13 | run: async (argv) => { 14 | sdk.lib.project.configure(); 15 | await sdk.lib.extension.installBatch(argv.url); 16 | sdk.lib.extension.configure(); 17 | sdk.lib.extension.compile(); 18 | }, 19 | }; 20 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/extension/clean.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'clean', 5 | desc: 'Clean kungfu extensions', 6 | setup: (cli) => { 7 | cli.option('keep-libs', { 8 | type: 'boolean', 9 | desc: 'Keep downloaded lib files', 10 | defaultValue: false, 11 | }); 12 | }, 13 | run: (argv) => { 14 | sdk.lib.extension.clean(argv.keepLibs); 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/extension/compile.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'compile', 5 | desc: 'Compile kungfu extensions', 6 | run: () => { 7 | sdk.lib.extension.compile(); 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/extension/configure.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'configure', 5 | desc: 'Configure kungfu extensions', 6 | run: () => { 7 | sdk.lib.extension.configure(); 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/extension/format.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'format', 5 | desc: 'Format kungfu extension code', 6 | run: () => { 7 | sdk.lib.extension.format(); 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/project/install.js: -------------------------------------------------------------------------------- 1 | const { prebuilt } = require('@kungfu-trader/kungfu-core'); 2 | 3 | module.exports = { 4 | flags: 'install', 5 | desc: 'Install kungfu prebuilt', 6 | run: () => { 7 | prebuilt('install'); 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/project/package.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'package', 5 | desc: 'Package kungfu prebuilt', 6 | run: () => { 7 | sdk.lib.project.package(); 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/strategy/build.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'build', 5 | desc: 'Build kungfu strategy', 6 | run: async () => { 7 | await sdk.lib.extension.installBatch(); 8 | sdk.lib.extension.configure(); 9 | sdk.lib.extension.compile(); 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/strategy/clean.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'clean', 5 | desc: 'Clean build files', 6 | run: () => { 7 | sdk.lib.extension.clean(); 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /developer/sdk/src/commands/strategy/package.js: -------------------------------------------------------------------------------- 1 | const sdk = require('@kungfu-trader/kungfu-sdk'); 2 | 3 | module.exports = { 4 | flags: 'package', 5 | desc: 'Package kungfu strategy', 6 | run: () => { 7 | sdk.lib.extension.package(); 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /developer/sdk/src/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cli: () => require('./kfs'), 3 | lib: require('./lib'), 4 | }; 5 | -------------------------------------------------------------------------------- /developer/sdk/src/kfs.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const { parseByCli } = require('./utils'); 4 | 5 | const commands = ['craft', 'extension', 'project', 'strategy', 'broker']; 6 | 7 | module.exports = require('@kungfu-trader/kungfu-core').sywac(module, (cli) => { 8 | if (process.env.NODE_ENV === 'production') { 9 | commands.forEach((command) => { 10 | const opt = require(`./commands/${command}`); 11 | cli.command(opt); 12 | }); 13 | 14 | parseByCli(cli, true); 15 | } else { 16 | cli.commandDirectory('commands'); 17 | } 18 | }); 19 | -------------------------------------------------------------------------------- /developer/sdk/src/lib/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | craft: require('./craft'), 3 | extension: require('./extension'), 4 | project: require('./project'), 5 | }; 6 | -------------------------------------------------------------------------------- /developer/sdk/templates/cmake/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.15) 2 | project(<%= projectName %>) 3 | include(build/kungfu.cmake) 4 | kungfu_setup(<%= projectName %>) -------------------------------------------------------------------------------- /developer/sdk/templates/github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @kungfu-trader/kungfu-qa -------------------------------------------------------------------------------- /developer/sdk/templates/github/workflows/bump-major-version.yml: -------------------------------------------------------------------------------- 1 | name: Admin - Bump Major Version 2 | on: 3 | workflow_dispatch: 4 | inputs: 5 | confirm: 6 | description: 'Type confirm to bump major version' 7 | required: true 8 | default: 'cancel' 9 | 10 | jobs: 11 | bump: 12 | uses: kungfu-trader/workflows/.github/workflows/.bump-major-version.yml@v1 13 | secrets: 14 | GITHUB_PUSH_TOKEN: ${{ secrets.KUNGFU_GITHUB_TOKEN }} 15 | -------------------------------------------------------------------------------- /developer/sdk/templates/github/workflows/bump-minor-version.yml: -------------------------------------------------------------------------------- 1 | name: Admin - Bump Minor Version 2 | on: 3 | pull_request: 4 | types: [closed] 5 | branches: 6 | - main 7 | - release/*/lts 8 | 9 | jobs: 10 | bump: 11 | uses: kungfu-trader/workflows/.github/workflows/.bump-minor-version.yml@v1 12 | secrets: 13 | GITHUB_PUSH_TOKEN: ${{ secrets.KUNGFU_GITHUB_TOKEN }} 14 | -------------------------------------------------------------------------------- /examples/assemble-python/src/json/read_all_Location.json: -------------------------------------------------------------------------------- 1 | { 2 | "AssembleMode": "All", 3 | "source": { 4 | "mode": "live", 5 | "tags": [], 6 | "category": "MD", 7 | "group": "sim", 8 | "name": "sim" 9 | }, 10 | "dest": { 11 | "mode": "live", 12 | "category": "TD", 13 | "group": "sim", 14 | "name": "fill" 15 | }, 16 | "function": "read_all", 17 | "arguments": [ 18 | "Location" 19 | ], 20 | "export": [ 21 | "csv", 22 | "xls", 23 | "" 24 | ] 25 | } -------------------------------------------------------------------------------- /examples/assemble-python/src/json/read_bytes_10026.json: -------------------------------------------------------------------------------- 1 | { 2 | "AssembleMode": "write", 3 | "source": { 4 | "mode": "live", 5 | "tags": [], 6 | "category": "system", 7 | "group": "service", 8 | "name": "cached" 9 | }, 10 | "dest": { 11 | "dest_id": 0 12 | }, 13 | "function": "read_bytes", 14 | "arguments": [ 15 | 10026 16 | ], 17 | "export": [ 18 | "xls", 19 | "" 20 | ] 21 | } -------------------------------------------------------------------------------- /examples/assemble-python/src/json/read_header_data_Location.json: -------------------------------------------------------------------------------- 1 | { 2 | "AssembleMode": "All", 3 | "source": { 4 | "mode": "live", 5 | "tags": [], 6 | "category": "MD", 7 | "group": "sim", 8 | "name": "sim" 9 | }, 10 | "dest": { 11 | "mode": "live", 12 | "category": "TD", 13 | "group": "sim", 14 | "name": "fill" 15 | }, 16 | "function": "read_header_data", 17 | "arguments": [ 18 | "Location" 19 | ], 20 | "export": [ 21 | "csv", 22 | "xls", 23 | "" 24 | ] 25 | } -------------------------------------------------------------------------------- /examples/assemble-python/src/json/read_headers_10026.json: -------------------------------------------------------------------------------- 1 | { 2 | "AssembleMode": "write", 3 | "source": { 4 | "mode": "live", 5 | "tags": [], 6 | "category": "system", 7 | "group": "service", 8 | "name": "cached" 9 | }, 10 | "dest": { 11 | "dest_id": 0 12 | }, 13 | "function": "read_headers", 14 | "arguments": [ 15 | 10026 16 | ], 17 | "export": [ 18 | "csv", 19 | "xls", 20 | "" 21 | ] 22 | } -------------------------------------------------------------------------------- /examples/operator-python-101/pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "examples-operator-python" 3 | license = {text = "Apache-2.0"} 4 | authors = [ 5 | {name = "kungfu-trader", email = ""}, 6 | ] 7 | dynamic = ["version"] 8 | requires-python = "~=3.9" 9 | dependencies = [] 10 | 11 | [tool.pdm] 12 | version = {use_scm = true} 13 | 14 | [build-system] 15 | requires = ["pdm-pep517"] 16 | build-backend = "pdm.pep517.api" 17 | -------------------------------------------------------------------------------- /examples/strategy-cpp-101/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.15) 2 | project(KungfuStrategy101Cpp) 3 | include(build/kungfu.cmake) 4 | kungfu_setup(KungfuStrategy101Cpp) -------------------------------------------------------------------------------- /examples/strategy-cpp-exe/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.15) 2 | project(KungfuStrategy101CppExe) 3 | include(build/kungfu.cmake) 4 | kungfu_setup(KungfuStrategy101CppExe) -------------------------------------------------------------------------------- /examples/strategy-python-101/.gitignore: -------------------------------------------------------------------------------- 1 | cmake-build-debug/ 2 | build/ 3 | node_modules/ 4 | 5 | pyproject.toml 6 | .pdm.toml 7 | __pycache__/ 8 | __pypackages__/ 9 | *.pyc 10 | *.egg-info/ 11 | *.egg 12 | -------------------------------------------------------------------------------- /examples/strategy-python-101/pdm.lock: -------------------------------------------------------------------------------- 1 | 2 | [metadata] 3 | lock_version = "4.0" 4 | content_hash = "sha256:b507eb20f31b64a8c14a0121705b8f8be0de71abfd358f79210566f54e26fc9b" 5 | 6 | [metadata.files] 7 | -------------------------------------------------------------------------------- /examples/strategy-python-101/pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "examples-strategy-python" 3 | license = {text = "Apache-2.0"} 4 | authors = [ 5 | {name = "kungfu-trader", email = ""}, 6 | ] 7 | dynamic = ["version"] 8 | requires-python = "~=3.9" 9 | dependencies = [] 10 | [tool] 11 | [tool.pdm] 12 | version = {use_scm = true} 13 | [build-system] 14 | requires = ["pdm-pep517"] 15 | build-backend = "pdm.pep517.api" 16 | -------------------------------------------------------------------------------- /extensions/sim/.gitignore: -------------------------------------------------------------------------------- 1 | cmake-build-debug/ 2 | build/ 3 | node_modules/ 4 | 5 | pyproject.toml 6 | pdm.toml 7 | .pdm.toml 8 | __pycache__/ 9 | __pypackages__/ 10 | *.pyc 11 | *.egg-info/ 12 | *.egg 13 | -------------------------------------------------------------------------------- /extensions/sim/src/python/sim/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | 4 | def td(vendor): 5 | from . import trader 6 | 7 | return trader.TraderSim(vendor) 8 | 9 | 10 | def md(vendor): 11 | from . import marketdata 12 | 13 | return marketdata.MarketDataSim(vendor) 14 | -------------------------------------------------------------------------------- /extensions/sim/src/python/sim/mdmaker/README.md: -------------------------------------------------------------------------------- 1 | # mdmaker: Market Data Generator 2 | 3 | This is a set of python scripts that create random market data, useful for testing. 4 | 5 | 6 | ## Usage 7 | 8 | `stock.py` generates a csv with the top of book on each line with a valid timestamp. 9 | 10 | `merge.py` merges two top-of-book csvs using the timestamps for the operations. 11 | 12 | 13 | ## Dependencies 14 | 15 | ``` 16 | pip3 install sortedcollections 17 | pip3 install recordclass 18 | 19 | ``` 20 | -------------------------------------------------------------------------------- /extensions/sim/src/python/sim/mdmaker/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from .src.stock import * 4 | -------------------------------------------------------------------------------- /extensions/sim/src/python/sim/mdmaker/src/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | -------------------------------------------------------------------------------- /extensions/xtp/.gitignore: -------------------------------------------------------------------------------- 1 | cmake-build-debug/ 2 | build/ 3 | node_modules/ 4 | 5 | __pycache__/ 6 | __pypackages__/ 7 | pyproject.toml 8 | .pdm.toml 9 | *.pyc 10 | *.egg-info/ 11 | *.egg 12 | 13 | __kungfulibs__/ 14 | -------------------------------------------------------------------------------- /extensions/xtp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.15) 2 | project(xtp) 3 | include(build/kungfu.cmake) 4 | kungfu_setup(xtp) -------------------------------------------------------------------------------- /extensions/xtp/src/cpp/exports.cpp: -------------------------------------------------------------------------------- 1 | #include "marketdata_xtp.h" 2 | #include "trader_xtp.h" 3 | 4 | #include 5 | 6 | KUNGFU_EXTENSION() { 7 | KUNGFU_DEFINE_MD(kungfu::wingchun::xtp::MarketDataXTP); 8 | KUNGFU_DEFINE_TD(kungfu::wingchun::xtp::TraderXTP); 9 | } 10 | -------------------------------------------------------------------------------- /framework/api/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | /tests/e2e/videos/ 6 | /tests/e2e/screenshots/ 7 | 8 | 9 | # local env files 10 | .env.local 11 | .env.*.local 12 | 13 | # Log files 14 | npm-debug.log* 15 | yarn-debug.log* 16 | yarn-error.log* 17 | pnpm-debug.log* 18 | 19 | # Editor directories and files 20 | .idea 21 | .vscode 22 | *.suo 23 | *.ntvs* 24 | *.njsproj 25 | *.sln 26 | *.sw? 27 | -------------------------------------------------------------------------------- /framework/api/.prettierignore: -------------------------------------------------------------------------------- 1 | build 2 | dist -------------------------------------------------------------------------------- /framework/api/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['@vue/cli-plugin-babel/preset'], 3 | plugins: [ 4 | ['import', { libraryName: 'ant-design-vue', style: true }], 5 | 'syntax-dynamic-import', 6 | ], 7 | }; 8 | -------------------------------------------------------------------------------- /framework/api/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginsFile": "tests/e2e/plugins/index.js" 3 | } 4 | -------------------------------------------------------------------------------- /framework/api/lib/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | webpackBuild: require('./webpack/build.js'), 3 | }; 4 | -------------------------------------------------------------------------------- /framework/api/src/actions/exports.ts: -------------------------------------------------------------------------------- 1 | export * as tradingTask from './tradingTask'; 2 | export * as index from './index'; 3 | -------------------------------------------------------------------------------- /framework/api/src/config/exports.ts: -------------------------------------------------------------------------------- 1 | export * as globalSettings from './globalSettings'; 2 | export * as homePathConfig from './homePathConfig'; 3 | export * as pathConfig from './pathConfig'; 4 | export * as tradingConfig from './tradingConfig'; 5 | export * as index from './index'; 6 | export * as brand from './brand'; 7 | -------------------------------------------------------------------------------- /framework/api/src/config/systemConfig.ts: -------------------------------------------------------------------------------- 1 | export const SpecialWordsReg = new RegExp( 2 | "[`~!#$^&*()=|{}';'\\[\\]<>\"\\\\《》?~!#¥¥……&()——|{}【】「」‘;|:”“'。,、?_]+|(-+$)|(^-+)" + 3 | '|^CON$|^PRN$|^AUX$|^NUL$|^COM1$|^COM2$|^COM3$|^COM4$|^COM5$|^COM6$|^COM7$|^COM8$|^COM9$|^LPT1$|^LPT2$|^LPT3$|^LPT4$|^LPT5$|^LPT6$|^LPT7$|^LPT8$|^LPT9$' + // windows保留名称 4 | '|([\\u4E00-\\u9FFF]+)', // 中文 5 | 'i', 6 | ); 7 | 8 | export const EnterableSpecialWordsReg = new RegExp('[,.:/]+', 'ig'); 9 | -------------------------------------------------------------------------------- /framework/api/src/hooks/resolveExtConfigHook.ts: -------------------------------------------------------------------------------- 1 | import { ResetOptionHook } from './baseHook'; 2 | 3 | export type ResolveExtConfigHook = ( 4 | kfLocation: KungfuApi.DerivedKfLocation, 5 | extConfig: KungfuApi.KfExtConfig, 6 | ) => KungfuApi.KfExtConfig; 7 | 8 | export default new ResetOptionHook( 9 | 'ResolveExtConfigHook', 10 | ); 11 | -------------------------------------------------------------------------------- /framework/api/src/hooks/resolveStartProcessOptionsHook.ts: -------------------------------------------------------------------------------- 1 | import { Pm2StartOptions } from '../typings/global'; 2 | import { ResetOptionHook } from './baseHook'; 3 | 4 | export type ResolveStartOptionsHook = ( 5 | kfLocation: KungfuApi.DerivedKfLocation, 6 | options: Pm2StartOptions, 7 | ) => Promise; 8 | 9 | export default new ResetOptionHook( 10 | 'ResolveStartOptionsHook', 11 | ); 12 | -------------------------------------------------------------------------------- /framework/api/src/index.ts: -------------------------------------------------------------------------------- 1 | export * as config from './config/exports'; 2 | export * as actions from './actions/exports'; 3 | export * as kungfu from './kungfu/exports'; 4 | export * as hooks from './hooks/index'; 5 | export * as utils from './utils/exports'; 6 | export * as language from './language'; 7 | -------------------------------------------------------------------------------- /framework/api/src/kungfu/exports.ts: -------------------------------------------------------------------------------- 1 | export * as commission from './commission'; 2 | export * as riskSetting from './riskSetting'; 3 | export * as store from './store'; 4 | export * as strategy from './strategy'; 5 | export * as tradingData from './tradingData'; 6 | export * as watcher from './watcher'; 7 | export * as index from './index'; 8 | -------------------------------------------------------------------------------- /framework/api/src/kungfu/tradingData.ts: -------------------------------------------------------------------------------- 1 | import { Subject } from 'rxjs'; 2 | import { startWatcherSyncTask, startWatcher } from './watcher'; 3 | export const tradingDataSubject = new Subject(); 4 | 5 | export const triggerStartStep = (stepInterval = 2000) => { 6 | startWatcher(); 7 | startWatcherSyncTask(stepInterval, (watcher) => { 8 | tradingDataSubject.next(watcher); 9 | }); 10 | }; 11 | -------------------------------------------------------------------------------- /framework/api/src/utils/commonUtils.ts: -------------------------------------------------------------------------------- 1 | // 此文件内只放 不依赖外部逻辑 的 纯函数 2 | 3 | export const booleanProcessEnv = ( 4 | val: string | boolean | undefined, 5 | ): boolean => { 6 | if (val === undefined) { 7 | return false; 8 | } 9 | 10 | if (val === 'null') { 11 | return false; 12 | } 13 | 14 | if (val === 'true') { 15 | return true; 16 | } else if (val === 'false') { 17 | return false; 18 | } else { 19 | return !!val; 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /framework/api/src/utils/exports.ts: -------------------------------------------------------------------------------- 1 | export * as busiUtils from './busiUtils'; 2 | export * as fileUtils from './fileUtils'; 3 | export * as globalBus from './globalBus'; 4 | export * as pm2Custom from './pm2Custom'; 5 | export * as processUtils from './processUtils'; 6 | export * as osUtils from './osUtils'; 7 | export * as commonUtils from './commonUtils'; 8 | export * as globalStorage from './globalStorage'; 9 | -------------------------------------------------------------------------------- /framework/api/src/utils/globalBus.ts: -------------------------------------------------------------------------------- 1 | import { Subject } from 'rxjs'; 2 | 3 | export default new Subject(); 4 | -------------------------------------------------------------------------------- /framework/api/src/utils/pm2Custom.ts: -------------------------------------------------------------------------------- 1 | import pm2 from 'pm2'; 2 | import os from 'os'; 3 | import path from 'path'; 4 | 5 | process.env.OVER_HOME = path.resolve(path.join(os.homedir(), '.pm2')); 6 | if (process.env.NODE_ENV === 'development') { 7 | process.env.PM2_DEBUG = true; 8 | } 9 | const pm2Custom = new pm2['custom'](); 10 | 11 | export default pm2Custom; 12 | -------------------------------------------------------------------------------- /framework/api/toolkit/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | webpack: require('./webpack'), 3 | shell: require('./shell'), 4 | utils: require('./utils'), 5 | }; 6 | -------------------------------------------------------------------------------- /framework/app/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /framework/app/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | /public/python 5 | !/public/devtools/*/build 6 | /lib/electron/package.json 7 | 8 | /tests/e2e/videos/ 9 | /tests/e2e/screenshots/ 10 | 11 | 12 | # local env files 13 | .env.local 14 | .env.*.local 15 | 16 | # Log files 17 | npm-debug.log* 18 | yarn-debug.log* 19 | yarn-error.log* 20 | pnpm-debug.log* 21 | 22 | # Editor directories and files 23 | .idea 24 | .vscode 25 | *.suo 26 | *.ntvs* 27 | *.njsproj 28 | *.sln 29 | *.sw? 30 | -------------------------------------------------------------------------------- /framework/app/.prettierignore: -------------------------------------------------------------------------------- 1 | build 2 | dist 3 | public -------------------------------------------------------------------------------- /framework/app/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['@vue/cli-plugin-babel/preset'], 3 | plugins: [ 4 | ['import', { libraryName: 'ant-design-vue', style: true }], 5 | 'syntax-dynamic-import', 6 | ], 7 | }; 8 | -------------------------------------------------------------------------------- /framework/app/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginsFile": "tests/e2e/plugins/index.js" 3 | } 4 | -------------------------------------------------------------------------------- /framework/app/lib/electron/package.merge.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "./dist/app/main.js" 3 | } 4 | -------------------------------------------------------------------------------- /framework/app/lib/index.js: -------------------------------------------------------------------------------- 1 | const { getAppDir } = require('@kungfu-trader/kungfu-js-api/toolkit/utils'); 2 | const path = require('path'); 3 | const appDir = getAppDir(); 4 | 5 | module.exports = { 6 | devRun: require('./dev/run.js'), 7 | webpackBuild: require('./webpack/build.js'), 8 | electronBuild: require('./electron/build.js'), 9 | defaultDistDir: path.join(appDir, 'dist'), 10 | }; 11 | -------------------------------------------------------------------------------- /framework/app/public/config/kfConfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "performance": { 3 | "rocket": false, 4 | "bypassAccounting": false, 5 | "bypassTradingData": false 6 | }, 7 | "currency": { "instrumentCurrency": true }, 8 | "strategy": { "python": false }, 9 | "system": { 10 | "logLevel": "-l info", 11 | "autoRestartTd": true, 12 | "language": "zh-CN", 13 | "bypassArchive": false 14 | }, 15 | "code": { "tabSpaceType": "SPACES", "tabSpaceSize": "TWOINDENT" }, 16 | "trade": { "sound": true, "fatFinger": 0, "close": 100 }, 17 | "update": { "isCheckVersion": true } 18 | } 19 | -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/build/2906.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*!--------------------------------------------------------------------------------------------- 2 | * Copyright (C) David Owens II, owensd.io. All rights reserved. 3 | *--------------------------------------------------------------------------------------------*/ 4 | -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/build/proxy.js: -------------------------------------------------------------------------------- 1 | (()=>{const e=chrome.runtime.connect({name:"content-script"});function n(e){window.postMessage({source:"vue-devtools-proxy",payload:e},"*")}function t(t){t.data&&"vue-devtools-backend"===t.data.source?e.postMessage(t.data.payload):t.data&&"vue-devtools-backend-injection"===t.data.source&&"listening"===t.data.payload&&n("init")}function o(){window.removeEventListener("message",t),n("shutdown")}e.onMessage.addListener(n),window.addEventListener("message",t),e.onDisconnect.addListener(o),n("init")})(); -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/devtools-background.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/devtools.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 17 |
18 |
19 |
20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/icons/128-beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/icons/128-beta.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/icons/128-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/icons/128-gray.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/icons/128.nuxt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/icons/128.nuxt.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/icons/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/icons/128.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/icons/16-beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/icons/16-beta.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/icons/16-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/icons/16-gray.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/icons/16.nuxt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/icons/16.nuxt.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/icons/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/icons/16.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/icons/48-beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/icons/48-beta.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/icons/48-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/icons/48-gray.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/icons/48.nuxt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/icons/48.nuxt.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/icons/48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/icons/48.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@vue-devtools/shell-chrome", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "build": "rimraf ./build && cross-env NODE_ENV=production webpack --progress" 6 | }, 7 | "dependencies": { 8 | "@vue-devtools/app-backend-core": "^0.0.0", 9 | "@vue-devtools/app-frontend": "^0.0.0", 10 | "@vue-devtools/shared-utils": "^0.0.0" 11 | }, 12 | "devDependencies": { 13 | "@vue-devtools/build-tools": "^0.0.0", 14 | "rimraf": "^3.0.2", 15 | "webpack": "^5.35.1", 16 | "webpack-cli": "^4.6.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/popups/devtools-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/devtools/vue-devtool/popups/devtools-screenshot.png -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/popups/disabled.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

5 | Vue.js is detected on this page.
6 | Devtools inspection is not available because it's in 7 | production mode or explicitly disabled by the author. 8 |

9 | -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/popups/disabled.nuxt.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

5 | Nuxt + Vue.js is detected on this page.
6 | Devtools inspection is not available because it's in 7 | production mode or explicitly disabled by the author. 8 |

9 | -------------------------------------------------------------------------------- /framework/app/public/devtools/vue-devtool/popups/not-found.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

5 | Vue.js not detected 6 |

7 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/3d.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/angular-component.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/angular-directive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/angular-guard.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/angular-pipe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/angular-resolver.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/angular-service.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/angular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/applescript.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/audio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/azure.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/c.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/certificate.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/changelog.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/cmake.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/code-climate.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/code-climate_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/coffee.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/conduct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/console.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/contributing.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/cpp.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/credits.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/css-map.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/css.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/database.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/diff.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/document.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/drone.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/drone_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/elixir.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/email.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/exe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/file.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/firebase.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-api-open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-api.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-batch-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-batch.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-cluster-open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-cluster.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-command-open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-command.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-delta-open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-delta.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-download-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-download.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-environment-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-environment.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-font-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-font.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-layout-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-layout.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-mock.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-open.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-root-open.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-root.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-serverless-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-serverless.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-template-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-template.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-upload-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-upload.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-vm-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder-vm.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/folder.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/font.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/fsharp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/gemfile.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/gulp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/h.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/haskell.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/html.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/java.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/json.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/julia.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/karma.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/key.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/lib.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/lock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/log.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/markdown.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/mdx.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/merlin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/mxml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/nim.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/npm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | n 7 | 8 | 9 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/nunjucks.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/perl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/powerpoint.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/raml.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/readme.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/routing.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/ruby.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/scheme.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/shaderlab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/slim.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/solidity.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/swift.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/table.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/test-js.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/test-ts.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/todo.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/url.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/video.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/virtual.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/visualstudio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/vue-config.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/vue.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/wallaby.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/wepy.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/word.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/xaml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/xml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/yaml.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/yang.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/public/file-icons/zip.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/public/fonts/Source_Han_Sans_SC.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/fonts/Source_Han_Sans_SC.otf -------------------------------------------------------------------------------- /framework/app/public/fonts/sarasa-term-sc-nerd.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/fonts/sarasa-term-sc-nerd.ttf -------------------------------------------------------------------------------- /framework/app/public/keywords/kungfuFunctions: -------------------------------------------------------------------------------- 1 | pre_start 2 | post_start 3 | pre_stop 4 | post_stop 5 | on_quote 6 | on_order 7 | on_trade -------------------------------------------------------------------------------- /framework/app/public/logo/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/logo/128x128.png -------------------------------------------------------------------------------- /framework/app/public/logo/dialog-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/logo/dialog-logo.png -------------------------------------------------------------------------------- /framework/app/public/logo/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/logo/icon.icns -------------------------------------------------------------------------------- /framework/app/public/logo/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/logo/icon.ico -------------------------------------------------------------------------------- /framework/app/public/logo/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/logo/icon.png -------------------------------------------------------------------------------- /framework/app/public/music/ding.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/music/ding.mp3 -------------------------------------------------------------------------------- /framework/app/public/music/warn.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/music/warn.mp3 -------------------------------------------------------------------------------- /framework/app/public/vsDeps/msvcp100.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/msvcp100.dll -------------------------------------------------------------------------------- /framework/app/public/vsDeps/msvcp110.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/msvcp110.dll -------------------------------------------------------------------------------- /framework/app/public/vsDeps/msvcp120.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/msvcp120.dll -------------------------------------------------------------------------------- /framework/app/public/vsDeps/msvcp140_1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/msvcp140_1.dll -------------------------------------------------------------------------------- /framework/app/public/vsDeps/msvcp140_2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/msvcp140_2.dll -------------------------------------------------------------------------------- /framework/app/public/vsDeps/msvcr100.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/msvcr100.dll -------------------------------------------------------------------------------- /framework/app/public/vsDeps/msvcr110.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/msvcr110.dll -------------------------------------------------------------------------------- /framework/app/public/vsDeps/msvcr120.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/msvcr120.dll -------------------------------------------------------------------------------- /framework/app/public/vsDeps/vcomp100.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/vcomp100.dll -------------------------------------------------------------------------------- /framework/app/public/vsDeps/vcomp110.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/vcomp110.dll -------------------------------------------------------------------------------- /framework/app/public/vsDeps/vcomp120.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/vcomp120.dll -------------------------------------------------------------------------------- /framework/app/public/vsDeps/vcomp140.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/vcomp140.dll -------------------------------------------------------------------------------- /framework/app/public/vsDeps/vcruntime140_1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/public/vsDeps/vcruntime140_1.dll -------------------------------------------------------------------------------- /framework/app/src/main/index.dev.ts: -------------------------------------------------------------------------------- 1 | import { app, session } from 'electron'; 2 | import debug from 'electron-debug'; 3 | import path from 'path'; 4 | 5 | app.on('ready', async () => { 6 | try { 7 | const vueDevtoolDir = path.join( 8 | globalThis.__publicResources, 9 | 'devtools', 10 | 'vue-devtool', 11 | ); 12 | await session.defaultSession.loadExtension(vueDevtoolDir, { 13 | allowFileAccess: true, 14 | }); 15 | } catch (err) { 16 | console.error(err); 17 | } 18 | }); 19 | 20 | debug(); 21 | require('./index'); 22 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/imgs/headerLogo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/src/renderer/assets/imgs/headerLogo.jpg -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/imgs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/app/src/renderer/assets/imgs/logo.png -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/less/variables.less: -------------------------------------------------------------------------------- 1 | @layout-side-width: 64px; 2 | @layout-footer-height: 28px; 3 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/3d.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/angular-component.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/angular-directive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/angular-guard.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/angular-pipe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/angular-resolver.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/angular-service.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/angular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/applescript.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/audio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/azure.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/c.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/certificate.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/changelog.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/cmake.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/code-climate.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/code-climate_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/coffee.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/conduct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/console.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/contributing.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/cpp.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/credits.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/css-map.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/css.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/database.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/diff.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/document.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/elixir.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/email.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/exe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/file.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/firebase.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-api-open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-api.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-batch-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-batch.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-cluster.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-command-open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-command.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-delta-open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-delta.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-download-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-download.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-environment-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-environment.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-font-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-font.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-layout-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-layout.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-open.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-root-open.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-root.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-serverless-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-serverless.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-template-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-template.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-upload-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-upload.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-vm-open.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder-vm.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/folder.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/font.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/fsharp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/gemfile.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/gulp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/h.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/haskell.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/html.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/java.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/json.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/julia.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/karma.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/key.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/lib.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/lock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/log.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/markdown.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/mdx.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/merlin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/mxml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/nim.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/npm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | n 7 | 8 | 9 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/nunjucks.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/powerpoint.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/raml.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/readme.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/routing.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/ruby.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/scheme.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/shaderlab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/slim.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/solidity.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/swift.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/table.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/test-js.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/test-ts.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/todo.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/url.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/video.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/virtual.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/visualstudio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/vue-config.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/vue.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/wallaby.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/wepy.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/word.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/xaml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/xml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/yaml.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/yang.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/svg/file-icons/zip.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/assets/workers/index.ts: -------------------------------------------------------------------------------- 1 | import DealInstruments from 'worker-loader!@kungfu-trader/kungfu-app/src/renderer/assets/workers/dealInstruments'; 2 | 3 | export default { 4 | dealInstruments: new DealInstruments(), 5 | }; 6 | -------------------------------------------------------------------------------- /framework/app/src/renderer/pages/code/setEnv.ts: -------------------------------------------------------------------------------- 1 | // ELECTRON_RUN_AS_NODE 应用于通过process.execPath开启任务 2 | process.env.ELECTRON_RUN_AS_NODE = true; 3 | process.env.ELECTRON_ENABLE_STACK_DUMPING = true; 4 | process.env.APP_ID = 'codeEditor'; 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/pages/code/store/index.ts: -------------------------------------------------------------------------------- 1 | import { createPinia } from 'pinia'; 2 | const store = createPinia(); 3 | export default store; 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/pages/index/injectGlobal.ts: -------------------------------------------------------------------------------- 1 | import '@kungfu-trader/kungfu-js-api/hooks'; 2 | import pm2 from '@kungfu-trader/kungfu-js-api/utils/pm2Custom'; 3 | globalThis.pm2 = pm2; 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/pages/index/router/index.ts: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'; 2 | import Index from '@kungfu-trader/kungfu-app/src/renderer/pages/index/views/Index.vue'; 3 | 4 | const routes: Array = [ 5 | { 6 | path: '/', 7 | name: 'Index', 8 | component: Index, 9 | }, 10 | ]; 11 | 12 | const router = createRouter({ 13 | history: createWebHashHistory(), 14 | routes, 15 | }); 16 | 17 | export default router; 18 | -------------------------------------------------------------------------------- /framework/app/src/renderer/pages/index/setEnv.ts: -------------------------------------------------------------------------------- 1 | // ELECTRON_RUN_AS_NODE 应用于通过process.execPath开启任务 2 | process.env.ELECTRON_RUN_AS_NODE = true; 3 | process.env.ELECTRON_ENABLE_STACK_DUMPING = true; 4 | process.env.APP_ID = 'app'; 5 | process.env.RELOAD_AFTER_CRASHED = process.argv.includes('reloadAfterCrashed') 6 | ? 'true' 7 | : 'false'; 8 | console.log('RELOAD_AFTER_CRASHED', process.env.RELOAD_AFTER_CRASHED); 9 | -------------------------------------------------------------------------------- /framework/app/src/renderer/pages/index/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | declare module '*.vue' { 3 | import type { DefineComponent } from 'vue'; 4 | const component: DefineComponent<{}, {}, any>; 5 | export default component; 6 | } 7 | -------------------------------------------------------------------------------- /framework/app/src/renderer/pages/index/store/index.ts: -------------------------------------------------------------------------------- 1 | import { createPinia } from 'pinia'; 2 | const store = createPinia(); 3 | export default store; 4 | -------------------------------------------------------------------------------- /framework/app/src/renderer/pages/logview/setEnv.ts: -------------------------------------------------------------------------------- 1 | // ELECTRON_RUN_AS_NODE 应用于通过process.execPath开启任务 2 | process.env.ELECTRON_RUN_AS_NODE = true; 3 | process.env.ELECTRON_ENABLE_STACK_DUMPING = true; 4 | process.env.APP_ID = 'logview'; 5 | -------------------------------------------------------------------------------- /framework/app/src/renderer/pages/logview/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | declare module '*.vue' { 3 | import type { DefineComponent } from 'vue'; 4 | const component: DefineComponent<{}, {}, any>; 5 | export default component; 6 | } 7 | -------------------------------------------------------------------------------- /framework/app/src/typings/enums.ts: -------------------------------------------------------------------------------- 1 | export enum KfLayoutDirection { 2 | v = 'v', 3 | h = 'h', 4 | unset = '', 5 | } 6 | 7 | export enum KfLayoutTargetDirectionClassName { 8 | unset = '', 9 | center = 'drag-over', 10 | top = 'drag-over-top', 11 | bottom = 'drag-over-bottom', 12 | left = 'drag-over-left', 13 | right = 'drag-over-right', 14 | } 15 | -------------------------------------------------------------------------------- /framework/app/src/typings/less.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.less' { 2 | const resource: { [key: string]: string }; 3 | export = resource; 4 | } 5 | -------------------------------------------------------------------------------- /framework/cli/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | /tests/e2e/videos/ 6 | /tests/e2e/screenshots/ 7 | 8 | 9 | # local env files 10 | .env.local 11 | .env.*.local 12 | 13 | # Log files 14 | npm-debug.log* 15 | yarn-debug.log* 16 | yarn-error.log* 17 | pnpm-debug.log* 18 | 19 | # Editor directories and files 20 | .idea 21 | .vscode 22 | *.suo 23 | *.ntvs* 24 | *.njsproj 25 | *.sln 26 | *.sw? 27 | -------------------------------------------------------------------------------- /framework/cli/.prettierignore: -------------------------------------------------------------------------------- 1 | build 2 | dist -------------------------------------------------------------------------------- /framework/cli/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['@vue/cli-plugin-babel/preset'], 3 | plugins: [ 4 | ['import', { libraryName: 'ant-design-vue', style: true }], 5 | 'syntax-dynamic-import', 6 | ], 7 | }; 8 | -------------------------------------------------------------------------------- /framework/cli/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginsFile": "tests/e2e/plugins/index.js" 3 | } 4 | -------------------------------------------------------------------------------- /framework/cli/lib/index.js: -------------------------------------------------------------------------------- 1 | const { getCliDir } = require('@kungfu-trader/kungfu-js-api/toolkit/utils'); 2 | const path = require('path'); 3 | const cliDir = getCliDir(); 4 | 5 | module.exports = { 6 | devRun: require('./dev/run.js'), 7 | webpackBuild: require('./webpack/build.js'), 8 | defaultDistDir: path.join(cliDir, 'dist'), 9 | }; 10 | -------------------------------------------------------------------------------- /framework/cli/src/assets/components/Loading.ts: -------------------------------------------------------------------------------- 1 | import blessed, { Widgets } from 'blessed'; 2 | 3 | export default (screen: Widgets.Screen): Widgets.LoadingElement => { 4 | return blessed.loading({ 5 | parent: screen, 6 | top: '100%-5', 7 | left: '100%-40', 8 | height: 5, 9 | align: 'left', 10 | valign: 'top', 11 | width: 40, 12 | tags: true, 13 | hidden: true, 14 | border: 'line', 15 | }); 16 | }; 17 | -------------------------------------------------------------------------------- /framework/cli/src/assets/components/MessageBox.ts: -------------------------------------------------------------------------------- 1 | import blessed, { Widgets } from 'blessed'; 2 | 3 | export default (screen: Widgets.Screen) => { 4 | return blessed.message({ 5 | parent: screen, 6 | top: '100%-5', 7 | left: '100%-40', 8 | height: 5, 9 | padding: { 10 | left: 1, 11 | right: 1, 12 | top: 0, 13 | bottom: 0, 14 | }, 15 | align: 'left', 16 | valign: 'top', 17 | width: 40, 18 | tags: true, 19 | hidden: true, 20 | border: 'line', 21 | style: { 22 | bg: 'blue', 23 | }, 24 | }); 25 | }; 26 | -------------------------------------------------------------------------------- /framework/cli/src/commanders/remove.ts: -------------------------------------------------------------------------------- 1 | import { deleteAllByKfLocation } from '@kungfu-trader/kungfu-js-api/actions'; 2 | import { selectTargetKfConfig } from '../assets/methods/utils'; 3 | 4 | export const removeMdTdStrategy = async () => { 5 | const kfConfig = await selectTargetKfConfig(); 6 | 7 | if (!kfConfig) { 8 | throw new Error('target is illegal kfLocation'); 9 | } 10 | 11 | return deleteAllByKfLocation(kfConfig); 12 | }; 13 | -------------------------------------------------------------------------------- /framework/cli/src/injectGlobal.ts: -------------------------------------------------------------------------------- 1 | import '@kungfu-trader/kungfu-js-api/hooks'; 2 | import pm2 from '@kungfu-trader/kungfu-js-api/utils/pm2Custom'; 3 | import globalBus from '@kungfu-trader/kungfu-js-api/utils/globalBus'; 4 | globalThis.pm2 = pm2; 5 | globalThis.globalBus = globalBus; 6 | -------------------------------------------------------------------------------- /framework/cli/src/preInit.ts: -------------------------------------------------------------------------------- 1 | import './injectGlobal'; 2 | import { initKfConfig } from '@kungfu-trader/kungfu-js-api/config'; 3 | import globalStorage from '@kungfu-trader/kungfu-js-api/utils/globalStorage'; 4 | 5 | initKfConfig(); 6 | 7 | globalStorage.setItem('ifNotFirstRunning', true); 8 | -------------------------------------------------------------------------------- /framework/cli/src/setCliEnv.ts: -------------------------------------------------------------------------------- 1 | import '@kungfu-trader/kungfu-js-api/setGlobalEnv'; 2 | import dayjs from 'dayjs'; 3 | 4 | process.env.APP_ID = dayjs().format('MMDDHHmmss'); 5 | process.env.BY_PASS_RESTORE = true; 6 | process.env.BY_PASS_ACCOUNTING = true; 7 | process.env.BY_PASS_TRADINGDATA = true; 8 | -------------------------------------------------------------------------------- /framework/cli/src/setDzxyEnv.ts: -------------------------------------------------------------------------------- 1 | process.env.APP_ID = 'dzxy'; 2 | process.env.BY_PASS_RESTORE = true; 3 | -------------------------------------------------------------------------------- /framework/core/.deps/hana-1.80.0/RELEASE_NOTES.md: -------------------------------------------------------------------------------- 1 | Release notes for Hana 1.6.2 2 | ============================ 3 | -------------------------------------------------------------------------------- /framework/core/.deps/hana-1.80.0/include/boost/hana/adapt_adt.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | @file 3 | Defines the `BOOST_HANA_ADAPT_ADT` macro. 4 | 5 | @copyright Louis Dionne 2013-2017 6 | Distributed under the Boost Software License, Version 1.0. 7 | (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 8 | */ 9 | 10 | #ifndef BOOST_HANA_ADAPT_ADT_HPP 11 | #define BOOST_HANA_ADAPT_ADT_HPP 12 | 13 | #include 14 | 15 | #include 16 | 17 | #endif // !BOOST_HANA_ADAPT_ADT_HPP 18 | -------------------------------------------------------------------------------- /framework/core/.deps/hana-1.80.0/include/boost/hana/adapt_struct.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | @file 3 | Defines the `BOOST_HANA_ADAPT_STRUCT` macro. 4 | 5 | @copyright Louis Dionne 2013-2017 6 | Distributed under the Boost Software License, Version 1.0. 7 | (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 8 | */ 9 | 10 | #ifndef BOOST_HANA_ADAPT_STRUCT_HPP 11 | #define BOOST_HANA_ADAPT_STRUCT_HPP 12 | 13 | #include 14 | 15 | #include 16 | 17 | #endif // !BOOST_HANA_ADAPT_STRUCT_HPP 18 | -------------------------------------------------------------------------------- /framework/core/.deps/hana-1.80.0/include/boost/hana/core/when.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | @file 3 | Defines `boost::hana::when` and `boost::hana::when_valid`. 4 | 5 | @copyright Louis Dionne 2013-2017 6 | Distributed under the Boost Software License, Version 1.0. 7 | (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 8 | */ 9 | 10 | #ifndef BOOST_HANA_CORE_WHEN_HPP 11 | #define BOOST_HANA_CORE_WHEN_HPP 12 | 13 | #include 14 | 15 | #endif // !BOOST_HANA_CORE_WHEN_HPP 16 | -------------------------------------------------------------------------------- /framework/core/.deps/hana-1.80.0/include/boost/hana/define_struct.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | @file 3 | Defines the `BOOST_HANA_DEFINE_STRUCT` macro. 4 | 5 | @copyright Louis Dionne 2013-2017 6 | Distributed under the Boost Software License, Version 1.0. 7 | (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 8 | */ 9 | 10 | #ifndef BOOST_HANA_DEFINE_STRUCT_HPP 11 | #define BOOST_HANA_DEFINE_STRUCT_HPP 12 | 13 | #include 14 | 15 | #include 16 | 17 | #endif // !BOOST_HANA_DEFINE_STRUCT_HPP 18 | -------------------------------------------------------------------------------- /framework/core/.deps/hana-1.80.0/include/boost/hana/fold.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | @file 3 | Defines `boost::hana::fold`. 4 | 5 | @copyright Louis Dionne 2013-2017 6 | Distributed under the Boost Software License, Version 1.0. 7 | (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 8 | */ 9 | 10 | #ifndef BOOST_HANA_FOLD_HPP 11 | #define BOOST_HANA_FOLD_HPP 12 | 13 | #include 14 | 15 | #include 16 | 17 | #endif // !BOOST_HANA_FOLD_HPP 18 | -------------------------------------------------------------------------------- /framework/core/.deps/hana-1.80.0/include/boost/hana/fwd/bool.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | @file 3 | Includes boost/hana/fwd/integral_constant.hpp. 4 | 5 | @copyright Louis Dionne 2013-2017 6 | Distributed under the Boost Software License, Version 1.0. 7 | (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 8 | */ 9 | 10 | #ifndef BOOST_HANA_FWD_BOOL_HPP 11 | #define BOOST_HANA_FWD_BOOL_HPP 12 | 13 | #include 14 | 15 | #endif // !BOOST_HANA_FWD_BOOL_HPP 16 | -------------------------------------------------------------------------------- /framework/core/.deps/hana-1.80.0/include/boost/hana/integral_constant.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | @file 3 | Defines `boost::hana::integral_constant`. 4 | 5 | @copyright Louis Dionne 2013-2017 6 | Distributed under the Boost Software License, Version 1.0. 7 | (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 8 | */ 9 | 10 | #ifndef BOOST_HANA_INTEGRAL_CONSTANT_HPP 11 | #define BOOST_HANA_INTEGRAL_CONSTANT_HPP 12 | 13 | #include 14 | 15 | #endif // !BOOST_HANA_INTEGRAL_CONSTANT_HPP 16 | -------------------------------------------------------------------------------- /framework/core/.deps/hana-1.80.0/include/boost/hana/size.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | @file 3 | Defines `boost::hana::size`. 4 | 5 | @copyright Louis Dionne 2013-2017 6 | Distributed under the Boost Software License, Version 1.0. 7 | (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 8 | */ 9 | 10 | #ifndef BOOST_HANA_SIZE_HPP 11 | #define BOOST_HANA_SIZE_HPP 12 | 13 | #include 14 | 15 | #include 16 | 17 | #endif // !BOOST_HANA_SIZE_HPP 18 | -------------------------------------------------------------------------------- /framework/core/.deps/pybind11-2.9.0/MANIFEST.in: -------------------------------------------------------------------------------- 1 | recursive-include pybind11/include/pybind11 *.h 2 | recursive-include pybind11 *.py 3 | recursive-include pybind11 py.typed 4 | recursive-include pybind11 *.pyi 5 | include pybind11/share/cmake/pybind11/*.cmake 6 | include LICENSE README.rst pyproject.toml setup.py setup.cfg 7 | -------------------------------------------------------------------------------- /framework/core/.deps/pybind11-2.9.0/include/pybind11/common.h: -------------------------------------------------------------------------------- 1 | #include "detail/common.h" 2 | #warning "Including 'common.h' is deprecated. It will be removed in v3.0. Use 'pybind11.h'." 3 | -------------------------------------------------------------------------------- /framework/core/.deps/pybind11-2.9.0/pybind11/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from ._version import __version__, version_info 4 | from .commands import get_cmake_dir, get_include 5 | 6 | __all__ = ( 7 | "version_info", 8 | "__version__", 9 | "get_include", 10 | "get_cmake_dir", 11 | ) 12 | -------------------------------------------------------------------------------- /framework/core/.deps/pybind11-2.9.0/pybind11/_version.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | 4 | def _to_int(s): 5 | try: 6 | return int(s) 7 | except ValueError: 8 | return s 9 | 10 | 11 | __version__ = "2.9.0" 12 | version_info = tuple(_to_int(s) for s in __version__.split(".")) 13 | -------------------------------------------------------------------------------- /framework/core/.deps/pybind11-2.9.0/pybind11/_version.pyi: -------------------------------------------------------------------------------- 1 | from typing import Tuple, Union 2 | 3 | def _to_int(s: str) -> Union[int, str]: ... 4 | 5 | __version__: str 6 | version_info: Tuple[Union[int, str], ...] 7 | -------------------------------------------------------------------------------- /framework/core/.deps/pybind11-2.9.0/pybind11/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kungfu-origin/kungfu/d5928b07da0e53ce4074008e5d1c599164edc0a4/framework/core/.deps/pybind11-2.9.0/pybind11/py.typed -------------------------------------------------------------------------------- /framework/core/.deps/pybind11-2.9.0/tools/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools>=42", "wheel"] 3 | build-backend = "setuptools.build_meta" 4 | -------------------------------------------------------------------------------- /framework/core/.devtools/kfc.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from env import __frozen__ 4 | from kungfu import __main__ as origin 5 | from pathlib import Path 6 | from os import environ 7 | 8 | 9 | environ["KFC_DIR"] = Path("dist/kfc").resolve().as_posix() 10 | environ["KF_CLI_DEV_PATH"] = Path("../cli/dist/cli/index.js").resolve().as_posix() 11 | 12 | 13 | if __frozen__: 14 | origin.main() 15 | -------------------------------------------------------------------------------- /framework/core/.devtools/kfs.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from env import __frozen__, kfc_dir 4 | from kungfu import __tool__ as origin 5 | from os import environ 6 | from pathlib import Path 7 | 8 | environ["KFS_PATH"] = Path("../../developer/sdk/dist/sdk/kfs.js").resolve().as_posix() 9 | environ["KFC_PATH"] = kfc_dir.replace("\\", "/") 10 | 11 | if __frozen__: 12 | origin.sdk() 13 | -------------------------------------------------------------------------------- /framework/core/.gyp/electron-version.js: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | console.log(process.arch); 4 | process.exit(0); 5 | -------------------------------------------------------------------------------- /framework/core/.gyp/gyp_action_poetry.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | import os 4 | 5 | from gyp_action_lib import Shell 6 | 7 | opt = [] if "GITHUB_ACTIONS" in os.environ else ["-q"] 8 | 9 | Shell.run(["yarn", "-s", "poetry", "lock"] + opt) 10 | Shell.run(["yarn", "-s", "poetry", "install"] + opt) 11 | Shell.touch("poetry.lock") 12 | -------------------------------------------------------------------------------- /framework/core/.gyp/gyp_action_yarn.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from gyp_action_lib import Shell 4 | 5 | Shell.run(["yarn", *Shell.extract_argv()]) 6 | -------------------------------------------------------------------------------- /framework/core/.gyp/run-format-all.js: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | const { shell } = require('../lib'); 4 | 5 | function main() { 6 | const tryFormat = (lang) => { 7 | shell.run('yarn', ['-s', `format:${lang}`], false, { silent: true }); 8 | }; 9 | try { 10 | tryFormat('cpp'); 11 | tryFormat('python'); 12 | tryFormat('js'); 13 | } catch (err) { 14 | console.error(err); 15 | } 16 | } 17 | 18 | module.exports.main = main; 19 | 20 | if (require.main === module) main(); 21 | -------------------------------------------------------------------------------- /framework/core/.npmignore: -------------------------------------------------------------------------------- 1 | build 2 | cmake-build-debug 3 | dist 4 | node_modules 5 | -------------------------------------------------------------------------------- /framework/core/checks.json: -------------------------------------------------------------------------------- 1 | {"enabled":true,"categories":{}} -------------------------------------------------------------------------------- /framework/core/lib/.gitattributes: -------------------------------------------------------------------------------- 1 | kfc.js text eol=lf 2 | kfs.js text eol=lf 3 | -------------------------------------------------------------------------------- /framework/core/lib/executable.js: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | const path = require('path'); 4 | 5 | function resolve(name) { 6 | const kfcDir = path.resolve(__dirname, '..', 'dist', 'kfc'); 7 | const bin = process.platform === 'win32' ? `${name}.exe` : name; 8 | return path.resolve(kfcDir, bin); 9 | } 10 | 11 | module.exports = { 12 | kfc: resolve('kfc'), 13 | kfs: resolve('kfs'), 14 | }; 15 | -------------------------------------------------------------------------------- /framework/core/lib/index.js: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | module.exports = { 4 | executable: require('./executable'), 5 | kungfu: require('./kungfu'), 6 | shell: require('./shell'), 7 | sywac: require('./sywac'), 8 | prebuilt: require('./prebuilt'), 9 | }; 10 | -------------------------------------------------------------------------------- /framework/core/lib/kfc.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const path = require('path'); 4 | const { kfc } = require('./executable'); 5 | const shell = require('./shell'); 6 | 7 | function getCliDir() { 8 | try { 9 | return require('@kungfu-trader/kungfu-js-api/toolkit/utils').getCliDir(); 10 | } catch (err) { 11 | return '.'; 12 | } 13 | } 14 | 15 | shell.run(kfc, process.argv.slice(2), true, { 16 | silent: true, 17 | env: { 18 | KF_CLI_DEV_PATH: path.resolve(getCliDir(), 'lib', 'dev', 'cli.dev.js'), 19 | KF_LOG_LEVEL: 'trace', 20 | ...process.env, 21 | }, 22 | }); 23 | -------------------------------------------------------------------------------- /framework/core/lib/kfs.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const path = require('path'); 4 | const { kfs } = require('./executable'); 5 | const shell = require('./shell'); 6 | 7 | shell.run(kfs, process.argv.slice(2), true, { 8 | silent: true, 9 | env: { 10 | KFS_PATH: path.join( 11 | require.resolve('@kungfu-trader/kungfu-sdk'), 12 | '..', 13 | '..', 14 | 'dist', 15 | 'sdk', 16 | 'kfs.js', 17 | ), 18 | KFC_PATH: path.join(__dirname, '..', 'dist', 'kfc'), 19 | }, 20 | }); 21 | -------------------------------------------------------------------------------- /framework/core/poetry.toml: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | [virtualenvs] 4 | create = false 5 | -------------------------------------------------------------------------------- /framework/core/src/bindings/node/drone/module.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | // 4 | // Created by Keren Dong on 2022/2/4. 5 | // 6 | #include 7 | 8 | Napi::Object InitAll([[maybe_unused]] Napi::Env env, Napi::Object exports) { return exports; } 9 | 10 | NODE_API_MODULE(module, InitAll) -------------------------------------------------------------------------------- /framework/core/src/bindings/python/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | project(kungfu-python-binding) 2 | 3 | set(KF_PYTHON_BINDING_NAME pykungfu) 4 | message(STATUS "Configuring for python binding ${KF_PYTHON_BINDING_NAME}") 5 | 6 | use_libnode() 7 | 8 | aux_source_directory(binding SOURCE_FILES_PYKUNGFU) 9 | pybind11_add_module(${KF_PYTHON_BINDING_NAME} SHARED ${SOURCE_FILES_PYKUNGFU}) 10 | target_link_libraries(${KF_PYTHON_BINDING_NAME} PRIVATE ${LIBNODE} kungfu) 11 | -------------------------------------------------------------------------------- /framework/core/src/bindings/python/binding/py-libnode.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | // 4 | // Created by Keren Dong on 2021/8/13. 5 | // 6 | 7 | #ifndef KUNGFU_PY_LIBNODE_HPP 8 | #define KUNGFU_PY_LIBNODE_HPP 9 | 10 | #include 11 | 12 | namespace kungfu::libnode { 13 | 14 | void bind(pybind11::module &&m); 15 | 16 | } // namespace kungfu::libnode 17 | #endif // KUNGFU_PY_LIBNODE_HPP 18 | -------------------------------------------------------------------------------- /framework/core/src/bindings/python/binding/py-longfist.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "py-longfist.h" 4 | 5 | namespace kungfu::longfist { 6 | void bind(pybind11::module &&m) { 7 | pybind::bind_enums(m); 8 | pybind::bind_types(m); 9 | } 10 | } // namespace kungfu::longfist 11 | -------------------------------------------------------------------------------- /framework/core/src/bindings/python/binding/py-wingchun.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "py-wingchun.h" 4 | 5 | namespace kungfu::wingchun { 6 | void bind(pybind11::module &&m) { 7 | pybind::bind_book(m); 8 | pybind::bind_basketorder(m); 9 | pybind::bind_broker(m); 10 | pybind::bind_service(m); 11 | pybind::bind_strategy(m); 12 | pybind::bind_utils(m); 13 | } 14 | } // namespace kungfu::wingchun 15 | -------------------------------------------------------------------------------- /framework/core/src/bindings/python/binding/py-yijinjing.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | // 4 | // Created by Keren Dong on 2020/1/30. 5 | // 6 | 7 | #ifndef KUNGFU_PY_YIJINJING_HPP 8 | #define KUNGFU_PY_YIJINJING_HPP 9 | 10 | #include 11 | 12 | namespace kungfu::yijinjing { 13 | 14 | void bind(pybind11::module &&m); 15 | 16 | } // namespace kungfu::yijinjing 17 | 18 | #endif // KUNGFU_PY_YIJINJING_HPP -------------------------------------------------------------------------------- /framework/core/src/bindings/python/binding/pykungfu.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | #include "py-libnode.h" 4 | #include "py-longfist.h" 5 | #include "py-wingchun.h" 6 | #include "py-yijinjing.h" 7 | 8 | namespace py = pybind11; 9 | 10 | PYBIND11_MODULE(pykungfu, m) { 11 | kungfu::libnode::bind(m.def_submodule("libnode")); 12 | kungfu::longfist::bind(m.def_submodule("longfist")); 13 | kungfu::yijinjing::bind(m.def_submodule("yijinjing")); 14 | kungfu::wingchun::bind(m.def_submodule("wingchun")); 15 | } 16 | -------------------------------------------------------------------------------- /framework/core/src/include/kungfu/wingchun/encoding.h: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | 3 | // 4 | // Created by PolarAir on 2019-08-24. 5 | // 6 | 7 | #ifndef KUNGFU_ENCODING_H 8 | #define KUNGFU_ENCODING_H 9 | 10 | namespace kungfu::wingchun { 11 | [[maybe_unused]] std::string gbk2utf8(const std::string &str); 12 | } // namespace kungfu::wingchun 13 | 14 | #endif // KUNGFU_ENCODING_H 15 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | import json 4 | import os 5 | 6 | import pykungfu as __binding__ 7 | 8 | with open( 9 | os.path.join(os.path.dirname(__binding__.__file__), "kungfubuildinfo.json"), 10 | "r", 11 | ) as build_info_file: 12 | __build_info__ = json.load(build_info_file) 13 | 14 | __version__ = __build_info__["version"] 15 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/__main__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | # Environment Variables 4 | ########################################################### 5 | # KF_HOME - base folder for kungfu files 6 | # KF_LOG_LEVEL - logging level 7 | # KF_NO_EXT - disable extensions if set 8 | ########################################################### 9 | 10 | from kungfu.console import available, select 11 | 12 | 13 | def main(**kwargs): 14 | select(available(), **kwargs) 15 | 16 | 17 | if __name__ == "__main__": 18 | main() 19 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/__tool__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | import kungfu 4 | import sys 5 | import os 6 | 7 | from pathlib import Path 8 | 9 | 10 | def sdk(**kwargs): 11 | prod_sdk_script_path = str( 12 | (Path(sys.executable) / "../../app/dist/kfs/kfs.js").resolve() 13 | ) 14 | sdk_script_path = os.getenv("KFS_PATH", prod_sdk_script_path) 15 | sdk_script = Path(sdk_script_path).resolve().as_posix() 16 | sdk_args = [sys.executable, sdk_script, *sys.argv[1:]] 17 | kungfu.__binding__.libnode.run(*sdk_args, **kwargs) 18 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/console/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from kungfu.console import commands, variants 4 | 5 | __ = [commands, variants, __builtins__] 6 | 7 | 8 | def available(): 9 | return reversed(__ and __.pop() and __) or [commands] 10 | 11 | 12 | def select(modules, **kwargs): 13 | kwargs.pop("auto_envvar_prefix", None) 14 | next(m for m in modules if m.main(auto_envvar_prefix="KF", **kwargs)) 15 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/console/bridging/__registry__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from .black.__main__ import main as black 4 | from .nuitka.__main__ import main as nuitka 5 | from .pdm.__main__ import main as pdm 6 | from .scons.__main__ import main as scons 7 | 8 | __all__ = [ 9 | "black", 10 | "nuitka", 11 | "pdm", 12 | "scons", 13 | ] 14 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/console/bridging/black/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | 4 | def main(): 5 | from black.__main__ import patched_main 6 | 7 | patched_main() 8 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/console/bridging/black/__main__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from . import main 4 | 5 | if __name__ == "__main__": 6 | main() 7 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/console/bridging/nuitka/__main__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from . import ( 4 | setup, 5 | main, 6 | ) 7 | 8 | if __name__ == "__main__": 9 | setup() 10 | main() 11 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/console/bridging/pdm/__main__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from . import main 4 | 5 | if __name__ == "__main__": 6 | main() 7 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/console/bridging/scons/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | 4 | def main(): 5 | from SCons import Script 6 | 7 | Script.main() 8 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/console/bridging/scons/__main__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from . import main 4 | 5 | if __name__ == "__main__": 6 | main() 7 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/console/commands/__registry__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from . import engage 4 | from . import journal 5 | from . import run 6 | from . import cli 7 | from . import assemble 8 | 9 | __all__ = ["engage", "journal", "run", "cli", "assemble"] 10 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/console/variants/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from os import environ 4 | 5 | ENV_VARIANT_KEY = "KFC_AS_VARIANT" 6 | 7 | 8 | def disable(): 9 | environ.pop(ENV_VARIANT_KEY, None) 10 | 11 | 12 | def enable(variant: str): 13 | environ[ENV_VARIANT_KEY] = variant 14 | 15 | 16 | def main(**kwargs): 17 | from .__registry__ import runners 18 | 19 | variant = environ.get(ENV_VARIANT_KEY) 20 | runner = runners.get(variant, lambda **x: False) 21 | 22 | return runner(**kwargs) is not False 23 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/console/variants/__registry__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from . import node 4 | from . import python 5 | 6 | runners = { 7 | "node": node.main, 8 | "python": python.main, 9 | } 10 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/console/variants/node.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | import kungfu 4 | import sys 5 | 6 | 7 | def main(**kwargs): 8 | kungfu.__binding__.libnode.run(*sys.argv, **kwargs) 9 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/yijinjing/data/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/yijinjing/practice/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | -------------------------------------------------------------------------------- /framework/core/src/python/kungfu/yijinjing/sinks/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | -------------------------------------------------------------------------------- /framework/core/src/python/pyi-hooks/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | import os 4 | 5 | 6 | def get_hook_dirs(): 7 | return [os.path.dirname(__file__)] 8 | 9 | 10 | def get_PyInstaller_tests(): 11 | return [os.path.dirname(__file__)] 12 | -------------------------------------------------------------------------------- /framework/core/src/python/pyi-hooks/hook-blib2to3.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from PyInstaller.utils.hooks import collect_data_files 4 | 5 | # https://pyinstaller.org/en/v5.1/hooks.html#hook-global-variables 6 | datas = collect_data_files("blib2to3") 7 | -------------------------------------------------------------------------------- /framework/core/src/python/pyi-hooks/hook-pdm.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from PyInstaller.utils.hooks import collect_data_files 4 | 5 | datas = collect_data_files("pdm") 6 | -------------------------------------------------------------------------------- /framework/core/src/python/pyi-hooks/hook-pep517.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from PyInstaller.utils.hooks import collect_data_files 4 | 5 | datas = collect_data_files("pep517") 6 | -------------------------------------------------------------------------------- /framework/core/src/python/pyi-hooks/hook-pip.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from PyInstaller.utils.hooks import collect_data_files 4 | 5 | datas = collect_data_files("pip") 6 | -------------------------------------------------------------------------------- /framework/core/src/python/pyi-hooks/pre_find_module_path/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | # ************************************************************************* 4 | # ``pre_find_module_path/`` |docname| - make this directory a dummy package 5 | # ************************************************************************* 6 | # 7 | # The ``pre_find_module_path/`` directory actually is not a package. 8 | # But this dummy ``__init__.py`` file here eases packaging by setuptools, 9 | # since one does not need to add the extra files. 10 | -------------------------------------------------------------------------------- /framework/core/src/python/pyi-hooks/pre_find_module_path/hook-nuitka.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from PyInstaller.utils.hooks import logger 4 | 5 | 6 | def pre_find_module_path(api): 7 | logger.info("Running pre-find module path hook for nuitka.") 8 | -------------------------------------------------------------------------------- /framework/core/src/python/pyi-hooks/pre_safe_import_module/__init__.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | # *************************************************************************** 4 | # ``pre_safe_import_module/`` |docname| - make this directory a dummy package 5 | # *************************************************************************** 6 | # 7 | # The ``pre_safe_import_module/`` directory actually is not a package. 8 | # But this dummy ``__init__.py`` file here eases packaging by setuptools, 9 | # since one does not need to add the extra files. 10 | -------------------------------------------------------------------------------- /framework/core/src/python/pyi-hooks/pre_safe_import_module/hook-nuitka.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | 3 | from PyInstaller.utils.hooks import logger 4 | 5 | 6 | def pre_safe_import_module(api): 7 | logger.info("Pre-safe import module hook for nuitka was executed.") 8 | -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.4.77", 3 | "packages": [ 4 | "framework/*", 5 | "developer/*", 6 | "extensions/*", 7 | "examples/*", 8 | "artifact" 9 | ], 10 | "command": { 11 | "version": { 12 | "allowBranch": [ 13 | "main", 14 | "release/**", 15 | "alpha/**" 16 | ] 17 | } 18 | } 19 | } 20 | --------------------------------------------------------------------------------