├── .babelrc ├── .eslintignore ├── .eslintrc.js ├── .github └── workflows │ ├── npm.yml │ └── page.yml ├── .gitignore ├── .npmrc ├── .vscode └── settings.json ├── LICENSE ├── README.cn.md ├── README.md ├── cdn ├── .DS_Store ├── 4520188144a17fb24a6af28a70dae0ce.ttf ├── assets │ ├── css │ │ └── editor │ │ │ ├── editor.css │ │ │ └── editor.main.css │ └── js │ │ ├── editor │ │ ├── editor.main.js │ │ ├── editor.main.nls.js │ │ ├── javascript.js │ │ ├── loader.js │ │ ├── tsMode.js │ │ └── typescript.js │ │ ├── lib │ │ ├── babel.standalone.js │ │ ├── config.js │ │ ├── env.js │ │ ├── less.standalone.js │ │ └── lib.js │ │ └── vs │ │ ├── base │ │ ├── browser │ │ │ └── ui │ │ │ │ └── codiconLabel │ │ │ │ └── codicon │ │ │ │ └── codicon.ttf │ │ └── worker │ │ │ └── workerMain.js │ │ ├── basic-languages │ │ ├── abap │ │ │ └── abap.js │ │ ├── apex │ │ │ └── apex.js │ │ ├── azcli │ │ │ └── azcli.js │ │ ├── bat │ │ │ └── bat.js │ │ ├── cameligo │ │ │ └── cameligo.js │ │ ├── clojure │ │ │ └── clojure.js │ │ ├── coffee │ │ │ └── coffee.js │ │ ├── cpp │ │ │ └── cpp.js │ │ ├── csharp │ │ │ └── csharp.js │ │ ├── csp │ │ │ └── csp.js │ │ ├── css │ │ │ └── css.js │ │ ├── dockerfile │ │ │ └── dockerfile.js │ │ ├── fsharp │ │ │ └── fsharp.js │ │ ├── go │ │ │ └── go.js │ │ ├── graphql │ │ │ └── graphql.js │ │ ├── handlebars │ │ │ └── handlebars.js │ │ ├── html │ │ │ └── html.js │ │ ├── ini │ │ │ └── ini.js │ │ ├── java │ │ │ └── java.js │ │ ├── javascript │ │ │ └── javascript.js │ │ ├── kotlin │ │ │ └── kotlin.js │ │ ├── less │ │ │ └── less.js │ │ ├── lua │ │ │ └── lua.js │ │ ├── markdown │ │ │ └── markdown.js │ │ ├── mips │ │ │ └── mips.js │ │ ├── msdax │ │ │ └── msdax.js │ │ ├── mysql │ │ │ └── mysql.js │ │ ├── objective-c │ │ │ └── objective-c.js │ │ ├── pascal │ │ │ └── pascal.js │ │ ├── pascaligo │ │ │ └── pascaligo.js │ │ ├── perl │ │ │ └── perl.js │ │ ├── pgsql │ │ │ └── pgsql.js │ │ ├── php │ │ │ └── php.js │ │ ├── postiats │ │ │ └── postiats.js │ │ ├── powerquery │ │ │ └── powerquery.js │ │ ├── powershell │ │ │ └── powershell.js │ │ ├── pug │ │ │ └── pug.js │ │ ├── python │ │ │ └── python.js │ │ ├── r │ │ │ └── r.js │ │ ├── razor │ │ │ └── razor.js │ │ ├── redis │ │ │ └── redis.js │ │ ├── redshift │ │ │ └── redshift.js │ │ ├── restructuredtext │ │ │ └── restructuredtext.js │ │ ├── ruby │ │ │ └── ruby.js │ │ ├── rust │ │ │ └── rust.js │ │ ├── sb │ │ │ └── sb.js │ │ ├── scheme │ │ │ └── scheme.js │ │ ├── scss │ │ │ └── scss.js │ │ ├── shell │ │ │ └── shell.js │ │ ├── solidity │ │ │ └── solidity.js │ │ ├── sophia │ │ │ └── sophia.js │ │ ├── sql │ │ │ └── sql.js │ │ ├── st │ │ │ └── st.js │ │ ├── swift │ │ │ └── swift.js │ │ ├── tcl │ │ │ └── tcl.js │ │ ├── twig │ │ │ └── twig.js │ │ ├── typescript │ │ │ └── typescript.js │ │ ├── vb │ │ │ └── vb.js │ │ ├── xml │ │ │ └── xml.js │ │ └── yaml │ │ │ └── yaml.js │ │ ├── editor │ │ ├── editor.main.css │ │ ├── editor.main.js │ │ ├── editor.main.nls.de.js │ │ ├── editor.main.nls.es.js │ │ ├── editor.main.nls.fr.js │ │ ├── editor.main.nls.it.js │ │ ├── editor.main.nls.ja.js │ │ ├── editor.main.nls.js │ │ ├── editor.main.nls.ko.js │ │ ├── editor.main.nls.ru.js │ │ ├── editor.main.nls.zh-cn.js │ │ └── editor.main.nls.zh-tw.js │ │ ├── language │ │ ├── css │ │ │ ├── cssMode.js │ │ │ └── cssWorker.js │ │ ├── html │ │ │ ├── htmlMode.js │ │ │ └── htmlWorker.js │ │ ├── json │ │ │ ├── jsonMode.js │ │ │ └── jsonWorker.js │ │ └── typescript │ │ │ ├── tsMode.js │ │ │ └── tsWorker.js │ │ └── loader.js ├── images │ ├── jsbox.png │ ├── jsbox1.png │ ├── jsbox2.png │ ├── jsbox3.png │ ├── jsbox4.png │ ├── jsbox5.png │ ├── use1.png │ ├── use2.png │ ├── use3.png │ ├── use4.png │ └── use5.png ├── index.html ├── readme.md ├── v1.html └── v1 │ ├── 4520188144a17fb24a6af28a70dae0ce.ttf │ ├── bundle.js │ ├── env.js │ └── lib.js ├── cmd ├── LICENSE ├── README.md ├── bin │ ├── gen.js │ ├── help.js │ └── open.js ├── index.d.ts ├── index.js ├── package.json └── test.js ├── commitlint.config.js ├── ebuild.config.js ├── helper ├── copy-npm.js ├── dev.md ├── modify-version.js ├── publish.js ├── purge-cdn.js ├── push-release.js ├── todo.md ├── tool.js ├── transform-env-lib.js ├── version.md └── zipcssinjs-loader.js ├── jsbox.config.js ├── package.json ├── package ├── index.js └── package.js ├── pnpm-lock.yaml ├── public ├── bundle.js ├── config.js ├── css │ ├── editor.css │ └── editor.main.css ├── dev-npm.js ├── icon.ico ├── index.html ├── js │ ├── editor.main.js │ ├── editor.main.nls.js │ ├── javascript.js │ ├── loader.js │ ├── tsMode.js │ └── typescript.js ├── jsbox-demo │ ├── 01-Basic Use.html │ ├── 01-Basic Use.md │ ├── 02-Storage.html │ ├── 03-Append Mode.html │ ├── 04-Custom Storage.html │ ├── 05-No UI test.js │ └── 05-No UI test.md ├── jsbox.base.js ├── jsbox.config.js ├── lib │ ├── babel.standalone.js │ ├── config.js │ ├── env.js │ ├── less.standalone.js │ └── lib.js ├── me.css ├── me.html ├── onigasm.wasm ├── test-lib.html ├── test.html ├── test │ └── test-react.html └── vs │ ├── base │ ├── browser │ │ └── ui │ │ │ └── codiconLabel │ │ │ └── codicon │ │ │ └── codicon.ttf │ └── worker │ │ └── workerMain.js │ ├── basic-languages │ ├── abap │ │ └── abap.js │ ├── apex │ │ └── apex.js │ ├── azcli │ │ └── azcli.js │ ├── bat │ │ └── bat.js │ ├── cameligo │ │ └── cameligo.js │ ├── clojure │ │ └── clojure.js │ ├── coffee │ │ └── coffee.js │ ├── cpp │ │ └── cpp.js │ ├── csharp │ │ └── csharp.js │ ├── csp │ │ └── csp.js │ ├── css │ │ └── css.js │ ├── dockerfile │ │ └── dockerfile.js │ ├── fsharp │ │ └── fsharp.js │ ├── go │ │ └── go.js │ ├── graphql │ │ └── graphql.js │ ├── handlebars │ │ └── handlebars.js │ ├── html │ │ └── html.js │ ├── ini │ │ └── ini.js │ ├── java │ │ └── java.js │ ├── javascript │ │ └── javascript.js │ ├── kotlin │ │ └── kotlin.js │ ├── less │ │ └── less.js │ ├── lua │ │ └── lua.js │ ├── markdown │ │ └── markdown.js │ ├── mips │ │ └── mips.js │ ├── msdax │ │ └── msdax.js │ ├── mysql │ │ └── mysql.js │ ├── objective-c │ │ └── objective-c.js │ ├── pascal │ │ └── pascal.js │ ├── pascaligo │ │ └── pascaligo.js │ ├── perl │ │ └── perl.js │ ├── pgsql │ │ └── pgsql.js │ ├── php │ │ └── php.js │ ├── postiats │ │ └── postiats.js │ ├── powerquery │ │ └── powerquery.js │ ├── powershell │ │ └── powershell.js │ ├── pug │ │ └── pug.js │ ├── python │ │ └── python.js │ ├── r │ │ └── r.js │ ├── razor │ │ └── razor.js │ ├── redis │ │ └── redis.js │ ├── redshift │ │ └── redshift.js │ ├── restructuredtext │ │ └── restructuredtext.js │ ├── ruby │ │ └── ruby.js │ ├── rust │ │ └── rust.js │ ├── sb │ │ └── sb.js │ ├── scheme │ │ └── scheme.js │ ├── scss │ │ └── scss.js │ ├── shell │ │ └── shell.js │ ├── solidity │ │ └── solidity.js │ ├── sophia │ │ └── sophia.js │ ├── sql │ │ └── sql.js │ ├── st │ │ └── st.js │ ├── swift │ │ └── swift.js │ ├── tcl │ │ └── tcl.js │ ├── twig │ │ └── twig.js │ ├── typescript │ │ └── typescript.js │ ├── vb │ │ └── vb.js │ ├── xml │ │ └── xml.js │ └── yaml │ │ └── yaml.js │ ├── editor │ ├── editor.main.css │ ├── editor.main.js │ ├── editor.main.nls.de.js │ ├── editor.main.nls.es.js │ ├── editor.main.nls.fr.js │ ├── editor.main.nls.it.js │ ├── editor.main.nls.ja.js │ ├── editor.main.nls.js │ ├── editor.main.nls.ko.js │ ├── editor.main.nls.ru.js │ ├── editor.main.nls.zh-cn.js │ └── editor.main.nls.zh-tw.js │ ├── language │ ├── css │ │ ├── cssMode.js │ │ └── cssWorker.js │ ├── html │ │ ├── htmlMode.js │ │ └── htmlWorker.js │ ├── json │ │ ├── jsonMode.js │ │ └── jsonWorker.js │ └── typescript │ │ ├── tsMode.js │ │ └── tsWorker.js │ └── loader.js ├── src ├── event.js ├── html.js ├── import.js ├── index.js ├── load.js ├── main │ ├── components │ │ ├── code-set.vue │ │ ├── code.vue │ │ ├── console-editor.vue │ │ ├── diff-code.vue │ │ ├── files │ │ │ ├── css-module.js │ │ │ ├── file-system.js │ │ │ ├── file.js │ │ │ └── js-module.js │ │ ├── js │ │ │ ├── config.js │ │ │ ├── editor.js │ │ │ ├── execute.js │ │ │ ├── exp.js │ │ │ ├── file.js │ │ │ ├── fix-select.js │ │ │ ├── html.js │ │ │ ├── javascript.js │ │ │ ├── lib.js │ │ │ ├── log-console.js │ │ │ ├── menu-items.js │ │ │ ├── require.js │ │ │ ├── select-data.js │ │ │ ├── status-plugin.js │ │ │ └── store.js │ │ ├── jx-demo.js │ │ ├── log.vue │ │ ├── menu-item.vue │ │ ├── menu.vue │ │ ├── select │ │ │ ├── config.vue │ │ │ ├── confirm.vue │ │ │ ├── env.vue │ │ │ ├── language.vue │ │ │ └── lib.vue │ │ └── status.vue │ ├── js │ │ ├── compress.js │ │ ├── confirm.js │ │ ├── constant.js │ │ ├── diaplay-language.js │ │ ├── event.js │ │ ├── initEvent.js │ │ ├── notebook.js │ │ ├── status.js │ │ ├── style.js │ │ └── util.js │ ├── log │ │ ├── func.js │ │ ├── hackConsole.js │ │ ├── igonre.js │ │ ├── index.js │ │ ├── objectViewer.js │ │ ├── tool.js │ │ ├── type.js │ │ ├── util.js │ │ ├── valueViewer.js │ │ └── version.js │ ├── main.vue │ └── style │ │ ├── editor.less │ │ ├── element.less │ │ ├── import.less │ │ ├── index.less │ │ ├── jx-ui.less │ │ └── menu.vue.less ├── npm │ ├── constant.js │ ├── index.d.ts │ ├── index.js │ └── package.json ├── style │ ├── import.css │ └── index.css └── util.js ├── test-md.html └── webpack-config ├── .DS_Store ├── build-npm.js ├── build-v1.js ├── build.js ├── dev-npm.js ├── dev-v1.js └── dev.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [[ 3 | "@babel/preset-env", 4 | { 5 | "useBuiltIns": "entry", 6 | "targets": { 7 | "esmodules": true 8 | } 9 | } 10 | ]], 11 | "plugins": [ 12 | "@babel/plugin-syntax-dynamic-import", 13 | "@babel/plugin-proposal-object-rest-spread" 14 | ] 15 | } -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /public/bundle.js 2 | /public/index.html 3 | /public/resources.js 4 | /public/js 5 | /npm 6 | /cdn 7 | **/*.html 8 | /public/lib/babel.standalone.js 9 | /public/lib/less.standalone.js 10 | /public/vs 11 | /docs/src/cnchar.all.min.js 12 | /docs -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "env": { 3 | "browser": true, 4 | "es6": true, 5 | "node": true, 6 | "commonjs": true 7 | }, 8 | "extends": [ 9 | // "standard", 10 | "plugin:vue/essential" 11 | ], 12 | "parserOptions": { 13 | "parser": "babel-eslint", 14 | "ecmaVersion": 2018, 15 | "ecmaFeatures": { 16 | "arrowFunctions": true, 17 | "classes": true, 18 | "modules": true, 19 | "defaultParams": true, 20 | "experimentalObjectRestSpread": true 21 | }, 22 | "sourceType": "module", 23 | "parserOptions": { 24 | "allowImportExportEverywhere": true 25 | } 26 | }, 27 | "globals": { 28 | "window": true, 29 | }, 30 | "rules": { 31 | "no-extend-native": 0, 32 | "no-new": 0, 33 | "no-useless-escape": 0, 34 | "no-useless-constructor": 0, 35 | "no-trailing-spaces": ["error", { "skipBlankLines": true }], 36 | "indent": ["error", 4, { 37 | "SwitchCase": 1 38 | }], 39 | "vue/script-indent": ["warn", 4, { 40 | "baseIndent": 1, 41 | "switchCase": 1 42 | }], 43 | "space-infix-ops": ["error", {"int32Hint": false}], 44 | "space-before-function-paren": ["error", { 45 | "anonymous": "always", 46 | "named": "always", 47 | "asyncArrow": "always" 48 | }], 49 | "semi": ["error", "always"], 50 | "comma-dangle": 0, 51 | "no-console": 0, 52 | "no-debugger": 0, 53 | "id-length": 0, 54 | "eol-last": 0, 55 | "object-curly-spacing": ["error", "never"], 56 | "arrow-spacing": "error", 57 | "no-multiple-empty-lines": "error", 58 | "no-unused-vars": "error", 59 | "spaced-comment": "error", 60 | "quotes": ["error", "single", { "allowTemplateLiterals": true }], 61 | "no-unreachable": "error", 62 | "keyword-spacing": "error", 63 | "space-before-blocks": "error", 64 | "semi-spacing": "error", 65 | "comma-spacing": "error", 66 | "key-spacing": "error", 67 | "no-undef": "error", 68 | "vue/html-indent": ["error", 4], 69 | "vue/html-quotes": ["error", "single", { "avoidEscape": true }], 70 | }, 71 | "overrides": [ 72 | { 73 | "files": ["*.vue"], 74 | "rules": { 75 | "indent": "off" 76 | } 77 | } 78 | ] 79 | } -------------------------------------------------------------------------------- /.github/workflows/npm.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | on: 3 | push: 4 | tags: 5 | - v*.*.* 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout 12 | uses: actions/checkout@v3 13 | with: 14 | fetch-depth: 0 15 | 16 | - name: Setup Node 17 | uses: actions/setup-node@v3 18 | with: 19 | node-version: '16' 20 | registry-url: https://registry.npmjs.org 21 | 22 | - name: Determine npm cache directory 23 | id: npm-cache 24 | run: | 25 | echo "::set-output name=dir::$(npm config get cache)" 26 | 27 | - name: Restore npm cache 28 | uses: actions/cache@v3 29 | with: 30 | path: ${{ steps.npm-cache.outputs.dir }} 31 | key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} 32 | restore-keys: | 33 | ${{ runner.os }}-node- 34 | 35 | - name: Npm Install 36 | run: npm install 37 | 38 | - name: Version 39 | id: version 40 | run: | 41 | tag=${GITHUB_REF/refs\/tags\//} 42 | version=${tag#v} 43 | echo "::set-output name=version::${version}" 44 | 45 | - name: Build 46 | # run: npm run build:npm -- ${{ steps.version.outputs.version }} 47 | run: npm run build:npm 48 | 49 | - name: Release # release 50 | uses: release-drafter/release-drafter@v5 51 | with: 52 | version: ${{ steps.version.outputs.version }} 53 | publish: true 54 | env: 55 | GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} 56 | 57 | - name: Publish # npm publish 58 | env: 59 | NODE_AUTH_TOKEN: ${{ secrets.NPMJS_TOKEN }} 60 | run: npm publish npm -------------------------------------------------------------------------------- /.github/workflows/page.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | on: 3 | push: 4 | tags: 5 | - d*.*.* 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout 12 | uses: actions/checkout@v3 13 | with: 14 | fetch-depth: 0 15 | 16 | - name: Setup Node 17 | uses: actions/setup-node@v3 18 | with: 19 | node-version: '16' 20 | registry-url: https://registry.npmjs.org 21 | 22 | - name: Determine npm cache directory 23 | id: npm-cache 24 | run: | 25 | echo "::set-output name=dir::$(npm config get cache)" 26 | 27 | - name: Restore npm cache 28 | uses: actions/cache@v3 29 | with: 30 | path: ${{ steps.npm-cache.outputs.dir }} 31 | key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} 32 | restore-keys: | 33 | ${{ runner.os }}-node- 34 | 35 | - name: Npm Install 36 | run: npm install 37 | 38 | - name: Build 39 | run: npm run build 40 | 41 | - name: Pages # github pages 42 | uses: JamesIves/github-pages-deploy-action@v4.3.0 43 | with: 44 | branch: gh-pages 45 | folder: docs 46 | 47 | - name: Purge # purge cdn 48 | run: node ./helper/purge-cdn.js 49 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /template 3 | package-lock.json 4 | /public/vs_back 5 | npm 6 | docs 7 | .DS_Store 8 | packages 9 | old 10 | .DS_Store 11 | assets -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npm.taobao.org -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": false, // 每次保存的时候将代码按eslint格式进行修复 3 | "eslint.validate": [ 4 | //开启对.vue文件中错误的检查 5 | "javascript", 6 | "javascriptreact", 7 | "html", 8 | "vue", 9 | { 10 | "language": "html", 11 | "autoFix": true 12 | }, 13 | { 14 | "language": "vue", 15 | "autoFix": true 16 | } 17 | ], 18 | "search.exclude": { 19 | "**/node_modules": true, 20 | "**/cdn": true, 21 | "**/npm": true 22 | }, 23 | "eslint.autoFixOnSave": true, 24 | "typescript.validate.enable": true, 25 | "editor.codeActionsOnSave": { 26 | "source.fixAll.eslint": "explicit" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 - present theajack 4 | 5 | All rights reserved. 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /cdn/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theajack/jsbox/1bf5b91d0601b5236ce529d9754329d00dc8754e/cdn/.DS_Store -------------------------------------------------------------------------------- /cdn/4520188144a17fb24a6af28a70dae0ce.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theajack/jsbox/1bf5b91d0601b5236ce529d9754329d00dc8754e/cdn/4520188144a17fb24a6af28a70dae0ce.ttf -------------------------------------------------------------------------------- /cdn/assets/js/lib/config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: tackchen 3 | * @Date: 2022-07-08 08:57:44 4 | * @Description: config dev debug 5 | */ 6 | 7 | window.jsboxConfig = { 8 | libs: { 9 | // 'cnchar': 'https://cdn.jsdelivr.net/gh/theajack/cnchar/dist/cnchar.latest.min.js', 10 | // 'jQuery': 'https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js', 11 | // 'easy-icon': { 12 | // type: 'style', 13 | // versio: '1.0.1', 14 | // url: 'https://cdn.jsdelivr.net/gh/theajack/easy-icon/dist/easy-icon.min.css' 15 | // }, 16 | 'jsbox.cnchar': '', 17 | 'cnchar-order': 'jsbox.cnchar-order', 18 | }, 19 | codes: { // 20 | 'helloWorld': 'console.log("Hello world")', // 默认使用上面定义的所有依赖 21 | 'testCnchar': { 22 | desc: '测试', 23 | code: 'cnchar.spell("你好")', 24 | dep: ['cnchar-order'], // 定义依赖,优先从当前文件中查找,如果没有会尝试在jsbox预定义库中查找 25 | }, 26 | 'test': { 27 | lang: 'html', 28 | code: '
111
', 29 | dep: ['cnchar-order'], // 定义依赖,优先从当前文件中查找,如果没有会尝试在jsbox预定义库中查找 30 | } 31 | } 32 | }; 33 | 34 | // https://cdn.jsdelivr.net/npm/virtual-dom@2.1.1/dist/virtual-dom.js -------------------------------------------------------------------------------- /cdn/assets/js/vs/base/browser/ui/codiconLabel/codicon/codicon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theajack/jsbox/1bf5b91d0601b5236ce529d9754329d00dc8754e/cdn/assets/js/vs/base/browser/ui/codiconLabel/codicon/codicon.ttf -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/azcli/azcli.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/azcli/azcli",["require","exports"],(function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.conf={comments:{lineComment:"#"}},t.language={defaultToken:"keyword",ignoreCase:!0,tokenPostfix:".azcli",str:/[^#\s]/,tokenizer:{root:[{include:"@comment"},[/\s-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":{token:"key.identifier",next:"@type"}}}],[/^-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":{token:"key.identifier",next:"@type"}}}]],type:[{include:"@comment"},[/-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":"key.identifier"}}],[/@str+\s*/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}]],comment:[[/#.*$/,{cases:{"@eos":{token:"comment",next:"@popall"}}}]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/bat/bat.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/bat/bat",["require","exports"],(function(e,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0}),s.conf={comments:{lineComment:"REM"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],folding:{markers:{start:new RegExp("^\\s*(::\\s*|REM\\s+)#region"),end:new RegExp("^\\s*(::\\s*|REM\\s+)#endregion")}}},s.language={defaultToken:"",ignoreCase:!0,tokenPostfix:".bat",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:/call|defined|echo|errorlevel|exist|for|goto|if|pause|set|shift|start|title|not|pushd|popd/,symbols:/[=>"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}]},t.language={defaultToken:"",tokenPostfix:".cameligo",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["abs","begin","Bytes","Crypto","Current","else","end","failwith","false","fun","if","in","let","let%entry","let%init","List","list","Map","map","match","match%nat","mod","not","operation","Operation","of","Set","set","sender","source","String","then","true","type","with"],typeKeywords:["int","unit","string","tz"],operators:["=",">","<","<=",">=","<>",":",":=","and","mod","or","+","-","*","/","@","&","^","%","->","<-"],symbols:/[=><:@\^&|+\-*\/\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\$[0-9a-fA-F]{1,16}/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'/,"string","@string"],[/'[^\\']'/,"string"],[/'/,"string.invalid"],[/\#\d+/,"string"]],comment:[[/[^\(\*]+/,"comment"],[/\*\)/,"comment","@pop"],[/\(\*/,"comment"]],string:[[/[^\\']+/,"string"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\(\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/csp/csp.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/csp/csp",["require","exports"],(function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.conf={brackets:[],autoClosingPairs:[],surroundingPairs:[]},e.language={keywords:[],typeKeywords:[],tokenPostfix:".csp",operators:[],symbols:/[=>>","&^","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>=","&^=","&&","||","<-","++","--","==","<",">","=","!","!=","<=",">=",":=","...","(",")","","]","{","}",",",";",".",":"],symbols:/[=>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex"],[/0[0-7']*[0-7]/,"number.octal"],[/0[bB][0-1']*[0-1]/,"number.binary"],[/\d[\d']*/,"number"],[/\d/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/`/,"string","@rawstring"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],rawstring:[[/[^\`]/,"string"],[/`/,"string","@pop"]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/graphql/graphql.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/graphql/graphql",["require","exports"],(function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.conf={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"""',close:'"""',notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"""',close:'"""'},{open:'"',close:'"'}],folding:{offSide:!0}},n.language={defaultToken:"invalid",tokenPostfix:".gql",keywords:["null","true","false","query","mutation","subscription","extend","schema","directive","scalar","type","interface","union","enum","input","implements","fragment","on"],typeKeywords:["Int","Float","String","Boolean","ID"],directiveLocations:["SCHEMA","SCALAR","OBJECT","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","FRAGMENT_SPREAD","INLINE_FRAGMENT","VARIABLE_DEFINITION"],operators:["=","!","?",":","&","|"],symbols:/[=!?:&|]+/,escapes:/\\(?:["\\\/bfnrt]|u[0-9A-Fa-f]{4})/,tokenizer:{root:[[/[a-z_][\w$]*/,{cases:{"@keywords":"keyword","@default":"key.identifier"}}],[/[$][\w$]*/,{cases:{"@keywords":"keyword","@default":"argument.identifier"}}],[/[A-Z][\w\$]*/,{cases:{"@typeKeywords":"keyword","@default":"type.identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,{token:"annotation",log:"annotation token: $0"}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/"""/,{token:"string",next:"@mlstring",nextEmbedded:"markdown"}],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}]],mlstring:[[/[^"]+/,"string"],['"""',{token:"string",next:"@pop",nextEmbedded:"@pop"}]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/#.*$/,"comment"]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/ini/ini.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/ini/ini",["require","exports"],(function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.conf={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},n.language={defaultToken:"",tokenPostfix:".ini",escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^\[[^\]]*\]/,"metatag"],[/(^\w+)(\s*)(\=)/,["key","","delimiter"]],{include:"@whitespace"},[/\d+/,"number"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],whitespace:[[/[ \t\r\n]+/,""],[/^\s*[#;].*$/,"comment"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/java/java.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/java/java",["require","exports"],(function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.conf={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],folding:{markers:{start:new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:))")}}},t.language={defaultToken:"",tokenPostfix:".java",keywords:["abstract","continue","for","new","switch","assert","default","goto","package","synchronized","boolean","do","if","private","this","break","double","implements","protected","throw","byte","else","import","public","throws","case","enum","instanceof","return","transient","catch","extends","int","short","try","char","final","interface","static","void","class","finally","long","strictfp","volatile","const","float","native","super","while","true","false"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,"annotation"],[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,"number.float"],[/0[xX](@hexdigits)[Ll]?/,"number.hex"],[/0(@octaldigits)[Ll]?/,"number.octal"],[/0[bB](@binarydigits)[Ll]?/,"number.binary"],[/(@digits)[fFdD]/,"number.float"],[/(@digits)[lL]?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@javadoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],javadoc:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/lua/lua.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/lua/lua",["require","exports"],(function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.conf={comments:{lineComment:"--",blockComment:["--[[","]]"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},n.language={defaultToken:"",tokenPostfix:".lua",keywords:["and","break","do","else","elseif","end","false","for","function","goto","if","in","local","nil","not","or","repeat","return","then","true","until","while"],brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],operators:["+","-","*","/","%","^","#","==","~=","<=",">=","<",">","=",";",":",",",".","..","..."],symbols:/[=>\/\?\s]+)/g,comments:{blockComment:["###","###"],lineComment:"#"},folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},t.language={defaultToken:"",ignoreCase:!1,tokenPostfix:".mips",regEx:/\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,keywords:[".data",".text","syscall","trap","add","addu","addi","addiu","and","andi","div","divu","mult","multu","nor","or","ori","sll","slv","sra","srav","srl","srlv","sub","subu","xor","xori","lhi","lho","lhi","llo","slt","slti","sltu","sltiu","beq","bgtz","blez","bne","j","jal","jalr","jr","lb","lbu","lh","lhu","lw","li","la","sb","sh","sw","mfhi","mflo","mthi","mtlo","move"],symbols:/[\.,\:]+/,escapes:/\\(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\$[a-zA-Z_]\w*/,"variable.predefined"],[/[.a-zA-Z_]\w*/,{cases:{this:"variable.predefined","@keywords":{token:"keyword.$0"},"@default":""}}],[/[ \t\r\n]+/,""],[/#.*$/,"comment"],["///",{token:"regexp",next:"@hereregexp"}],[/^(\s*)(@regEx)/,["","regexp"]],[/(\,)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\:)(\s*)(@regEx)/,["delimiter","","regexp"]],[/@symbols/,"delimiter"],[/\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d+\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/0[0-7]+(?!\d)/,"number.octal"],[/\d+/,"number"],[/[,.]/,"delimiter"],[/"""/,"string",'@herestring."""'],[/'''/,"string","@herestring.'''"],[/"/,{cases:{"@eos":"string","@default":{token:"string",next:'@string."'}}}],[/'/,{cases:{"@eos":"string","@default":{token:"string",next:"@string.'"}}}]],string:[[/[^"'\#\\]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/\./,"string.escape.invalid"],[/#{/,{cases:{'$S2=="':{token:"string",next:"root.interpolatedstring"},"@default":"string"}}],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/#/,"string"]],herestring:[[/("""|''')/,{cases:{"$1==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/[^#\\'"]+/,"string"],[/['"]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/#{/,{token:"string.quote",next:"root.interpolatedstring"}],[/#/,"string"]],comment:[[/[^#]+/,"comment"],[/#/,"comment"]],hereregexp:[[/[^\\\/#]+/,"regexp"],[/\\./,"regexp"],[/#.*$/,"comment"],["///[igm]*",{token:"regexp",next:"@pop"}],[/\//,"regexp"]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/objective-c/objective-c.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/objective-c/objective-c",["require","exports"],(function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.conf={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},n.language={defaultToken:"",tokenPostfix:".objective-c",keywords:["#import","#include","#define","#else","#endif","#if","#ifdef","#ifndef","#ident","#undef","@class","@defs","@dynamic","@encode","@end","@implementation","@interface","@package","@private","@protected","@property","@protocol","@public","@selector","@synthesize","__declspec","assign","auto","BOOL","break","bycopy","byref","case","char","Class","const","copy","continue","default","do","double","else","enum","extern","FALSE","false","float","for","goto","if","in","int","id","inout","IMP","long","nil","nonatomic","NULL","oneway","out","private","public","protected","readwrite","readonly","register","return","SEL","self","short","signed","sizeof","static","struct","super","switch","typedef","TRUE","true","union","unsigned","volatile","void","while"],decpart:/\d(_?\d)*/,decimal:/0|@decpart/,tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},[/[,:;]/,"delimiter"],[/[{}\[\]()<>]/,"@brackets"],[/[a-zA-Z@#]\w*/,{cases:{"@keywords":"keyword","@default":"identifier"}}],[/[<>=\\+\\-\\*\\/\\^\\|\\~,]|and\\b|or\\b|not\\b]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],numbers:[[/0[xX][0-9a-fA-F]*(_?[0-9a-fA-F])*/,"number.hex"],[/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)[fF]*/,{cases:{"(\\d)*":"number",$0:"number.float"}}]],strings:[[/'$/,"string.escape","@popall"],[/'/,"string.escape","@stringBody"],[/"$/,"string.escape","@popall"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/[^\\']+$/,"string","@popall"],[/[^\\']+/,"string"],[/\\./,"string"],[/'/,"string.escape","@popall"],[/\\$/,"string"]],dblStringBody:[[/[^\\"]+$/,"string","@popall"],[/[^\\"]+/,"string"],[/\\./,"string"],[/"/,"string.escape","@popall"],[/\\$/,"string"]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/pascaligo/pascaligo.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/pascaligo/pascaligo",["require","exports"],(function(e,o){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.conf={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}]},o.language={defaultToken:"",tokenPostfix:".pascaligo",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["begin","block","case","const","else","end","fail","for","from","function","if","is","nil","of","remove","return","skip","then","type","var","while","with","option","None","transaction"],typeKeywords:["bool","int","list","map","nat","record","string","unit","address","map","mtz","xtz"],operators:["=",">","<","<=",">=","<>",":",":=","and","mod","or","+","-","*","/","@","&","^","%"],symbols:/[=><:@\^&|+\-*\/\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\$[0-9a-fA-F]{1,16}/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'/,"string","@string"],[/'[^\\']'/,"string"],[/'/,"string.invalid"],[/\#\d+/,"string"]],comment:[[/[^\(\*]+/,"comment"],[/\*\)/,"comment","@pop"],[/\(\*/,"comment"]],string:[[/[^\\']+/,"string"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\(\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/r/r.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/r/r",["require","exports"],(function(e,o){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.conf={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},o.language={defaultToken:"",tokenPostfix:".r",roxygen:["@param","@return","@name","@rdname","@examples","@include","@docType","@S3method","@TODO","@aliases","@alias","@assignee","@author","@callGraphDepth","@callGraph","@callGraphPrimitives","@concept","@exportClass","@exportMethod","@exportPattern","@export","@formals","@format","@importClassesFrom","@importFrom","@importMethodsFrom","@import","@keywords","@method","@nord","@note","@references","@seealso","@setClass","@slot","@source","@title","@usage"],constants:["NULL","FALSE","TRUE","NA","Inf","NaN ","NA_integer_","NA_real_","NA_complex_","NA_character_ ","T","F","LETTERS","letters","month.abb","month.name","pi","R.version.string"],keywords:["break","next","return","if","else","for","in","repeat","while","array","category","character","complex","double","function","integer","list","logical","matrix","numeric","vector","data.frame","factor","library","require","attach","detach","source"],special:["\\n","\\r","\\t","\\b","\\a","\\f","\\v","\\'",'\\"',"\\\\"],brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"}],tokenizer:{root:[{include:"@numbers"},{include:"@strings"},[/[{}\[\]()]/,"@brackets"],{include:"@operators"},[/#'/,"comment.doc","@roxygen"],[/(^#.*$)/,"comment"],[/\s+/,"white"],[/[,:;]/,"delimiter"],[/@[a-zA-Z]\w*/,"tag"],[/[a-zA-Z]\w*/,{cases:{"@keywords":"keyword","@constants":"constant","@default":"identifier"}}]],roxygen:[[/@\w+/,{cases:{"@roxygen":"tag","@eos":{token:"comment.doc",next:"@pop"},"@default":"comment.doc"}}],[/\s+/,{cases:{"@eos":{token:"comment.doc",next:"@pop"},"@default":"comment.doc"}}],[/.*/,{token:"comment.doc",next:"@pop"}]],numbers:[[/0[xX][0-9a-fA-F]+/,"number.hex"],[/-?(\d*\.)?\d+([eE][+\-]?\d+)?/,"number"]],operators:[[/<{1,2}-/,"operator"],[/->{1,2}/,"operator"],[/%[^%\s]+%/,"operator"],[/\*\*/,"operator"],[/%%/,"operator"],[/&&/,"operator"],[/\|\|/,"operator"],[/<>/,"operator"],[/[-+=&|!<>^~*/:$]/,"operator"]],strings:[[/'/,"string.escape","@stringBody"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/\\./,{cases:{"@special":"string","@default":"error-token"}}],[/'/,"string.escape","@popall"],[/./,"string"]],dblStringBody:[[/\\./,{cases:{"@special":"string","@default":"error-token"}}],[/"/,"string.escape","@popall"],[/./,"string"]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/sb/sb.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/sb/sb",["require","exports"],(function(e,o){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.conf={comments:{lineComment:"'"},brackets:[["(",")"],["[","]"],["If","EndIf"],["While","EndWhile"],["For","EndFor"],["Sub","EndSub"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]}]},o.language={defaultToken:"",tokenPostfix:".sb",ignoreCase:!0,brackets:[{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"keyword.tag-if",open:"If",close:"EndIf"},{token:"keyword.tag-while",open:"While",close:"EndWhile"},{token:"keyword.tag-for",open:"For",close:"EndFor"},{token:"keyword.tag-sub",open:"Sub",close:"EndSub"}],keywords:["Else","ElseIf","EndFor","EndIf","EndSub","EndWhile","For","Goto","If","Step","Sub","Then","To","While"],tagwords:["If","Sub","While","For"],operators:[">","<","<>","<=",">=","And","Or","+","-","*","/","="],identifier:/[a-zA-Z_][\w]*/,symbols:/[=><:+\-*\/%\.,]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},[/(@identifier)(?=[.])/,"type"],[/@identifier/,{cases:{"@keywords":{token:"keyword.$0"},"@operators":"operator","@default":"variable.name"}}],[/([.])(@identifier)/,{cases:{$2:["delimiter","type.member"],"@default":""}}],[/\d*\.\d+/,"number.float"],[/\d+/,"number"],[/[()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":"delimiter"}}],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"]],whitespace:[[/[ \t\r\n]+/,""],[/(\').*$/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"C?/,"string","@pop"]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/scheme/scheme.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/scheme/scheme",["require","exports"],(function(e,o){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.conf={comments:{lineComment:";",blockComment:["#|","|#"]},brackets:[["(",")"],["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},o.language={defaultToken:"",ignoreCase:!0,tokenPostfix:".scheme",brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],keywords:["case","do","let","loop","if","else","when","cons","car","cdr","cond","lambda","lambda*","syntax-rules","format","set!","quote","eval","append","list","list?","member?","load"],constants:["#t","#f"],operators:["eq?","eqv?","equal?","and","or","not","null?"],tokenizer:{root:[[/#[xXoObB][0-9a-fA-F]+/,"number.hex"],[/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/,"number.float"],[/(?:\b(?:(define|define-syntax|define-macro))\b)(\s+)((?:\w|\-|\!|\?)*)/,["keyword","white","variable"]],{include:"@whitespace"},{include:"@strings"},[/[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/,{cases:{"@keywords":"keyword","@constants":"constant","@operators":"operators","@default":"identifier"}}]],comment:[[/[^\|#]+/,"comment"],[/#\|/,"comment","@push"],[/\|#/,"comment","@pop"],[/[\|#]/,"comment"]],whitespace:[[/[ \t\r\n]+/,"white"],[/#\|/,"comment","@comment"],[/;.*$/,"comment"]],strings:[[/"$/,"string","@popall"],[/"(?=.)/,"string","@multiLineString"]],multiLineString:[[/[^\\"]+$/,"string","@popall"],[/[^\\"]+/,"string"],[/\\./,"string.escape"],[/"/,"string","@popall"],[/\\$/,"string"]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/shell/shell.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/shell/shell",["require","exports"],(function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.conf={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}]},r.language={defaultToken:"",ignoreCase:!0,tokenPostfix:".shell",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["if","then","do","else","elif","while","until","for","in","esac","fi","fin","fil","done","exit","set","unset","export","function"],builtins:["ab","awk","bash","beep","cat","cc","cd","chown","chmod","chroot","clear","cp","curl","cut","diff","echo","find","gawk","gcc","get","git","grep","hg","kill","killall","ln","ls","make","mkdir","openssl","mv","nc","node","npm","ping","ps","restart","rm","rmdir","sed","service","sh","shopt","shred","source","sort","sleep","ssh","start","stop","su","sudo","svn","tee","telnet","top","touch","vi","vim","wall","wc","wget","who","write","yes","zsh"],symbols:/[=>"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}]},t.language={defaultToken:"",tokenPostfix:".aes",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["contract","library","entrypoint","function","stateful","state","hash","signature","tuple","list","address","string","bool","int","record","datatype","type","option","oracle","oracle_query","Call","Bits","Bytes","Oracle","String","Crypto","Address","Auth","Chain","None","Some","bits","bytes","event","let","map","private","public","true","false","var","if","else","throw"],operators:["=",">","<","!","~","?","::",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,"number.hex"],[/0[0-7']*[0-7](@integersuffix)/,"number.octal"],[/0[bB][0-1']*[0-1](@integersuffix)/,"number.binary"],[/\d[\d']*\d(@integersuffix)/,"number"],[/\d(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}}})); -------------------------------------------------------------------------------- /cdn/assets/js/vs/basic-languages/xml/xml.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/xml/xml",["require","exports"],(function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.conf={comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["<",">"]],autoClosingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],surroundingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}]},t.language={defaultToken:"",tokenPostfix:".xml",ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,""],{include:"@whitespace"},[/(<)(@qualifiedName)/,[{token:"delimiter"},{token:"tag",next:"@tag"}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:"delimiter"},{token:"tag"},"",{token:"delimiter"}]],[/(<\?)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/(<\!)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/<\!\[CDATA\[/,{token:"delimiter.cdata",next:"@cdata"}],[/&\w+;/,"string.escape"]],cdata:[[/[^\]]+/,""],[/\]\]>/,{token:"delimiter.cdata",next:"@pop"}],[/\]/,""]],tag:[[/[ \t\r\n]+/,""],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,["attribute.name","","attribute.value"]],[/@qualifiedName/,"attribute.name"],[/\?>/,{token:"delimiter",next:"@pop"}],[/(\/)(>)/,[{token:"tag"},{token:"delimiter",next:"@pop"}]],[/>/,{token:"delimiter",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[//,{token:"comment",next:"@pop"}],[/ 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | JSBox js在线运行环境 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /cdn/readme.md: -------------------------------------------------------------------------------- 1 | 6 | 7 | 新建 assets/cdn, 将 cdn/assets, cdn/xxx.ttf 放入其中 8 | 9 | npm run build 之后 10 | 11 | 将 docs/envs, docs/main.min.css, docs/main.min.js 移入 assets中 12 | 13 | 执行 qiniu-upload中的脚本即可 14 | 15 | ---- 16 | 17 | 重要: 18 | 19 | 该项目架构太老太旧,不好扩展,新功能比较难以添加 20 | 21 | 有待重构 22 | -------------------------------------------------------------------------------- /cdn/v1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | JSBox js在线运行环境v1 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /cdn/v1/4520188144a17fb24a6af28a70dae0ce.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theajack/jsbox/1bf5b91d0601b5236ce529d9754329d00dc8754e/cdn/v1/4520188144a17fb24a6af28a70dae0ce.ttf -------------------------------------------------------------------------------- /cmd/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2019 - present 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /cmd/README.md: -------------------------------------------------------------------------------- 1 | 6 | # jsbox-cmd 7 | 8 | 此工具为 [Jsbox](https://github.com/theajack/jsbox) 的命令行工具 9 | 10 | 作用是将demo的文件夹生成一个配置文件 来供jsbox 使用 11 | 12 | Demo可以参考 [此处](https://github.com/theajack/store/tree/main/jsbox-demo) 13 | 14 | ``` 15 | npm install jsbox-cmd -g 16 | ``` 17 | 18 | ### 1. gen 19 | 20 | 生成 jsboxConfig 的配置文件 21 | 22 | ``` 23 | jsbox gen ./your/dir --format --watch --output {outputPath} --config {configFilePath} 24 | ``` 25 | 26 | 后面的参数都为可选参数 27 | 28 | 1. format: 是否对生成的配置文件格式化 29 | 2. watch: 是否开启监听同步 30 | 3. output: 输出的文件路径 31 | 4. config: 基础配置文件路径 32 | 33 | 该功能会将目标目录下面的js、html文件作为内容生成配置文件 34 | 35 | #### js demo 36 | 37 | ```js 38 | // @needUI=false 39 | // @hideLog=false 40 | // @dep=xxx,xxx 41 | // @desc=副标题 42 | // @title=章节标题 43 | 44 | console.log('Hello') 45 | ``` 46 | 47 | #### html demo 48 | 49 | ```html 50 | 51 | 52 | 53 |
Hello
54 | ``` 55 | 56 | ### markdown 文件 57 | 58 | 与js和html文件前缀名称相同即可 59 | 60 | #### 代码使用 61 | 62 | ```js 63 | const {initCodeMap} = require('jsbox-cmd'); 64 | initCodeMap({ 65 | input: string, 66 | output?: string, 67 | configFile?: string, 68 | format?: boolean, 69 | watch?: boolean, 70 | }); 71 | ``` 72 | 73 | ```js 74 | const {generateCodeMap} = require('jsbox-cmd'); 75 | const config = generateCodeMap({}, inputPath); 76 | ``` 77 | 78 | 79 | ### 2. open 80 | 81 | ``` 82 | jsbox open [type=value] 83 | ``` 84 | 85 | 如: 86 | 87 | ``` 88 | jsbox open github=theajack.eveit 89 | ``` 90 | 91 | 具体用法参考 [Jsbox](https://github.com/theajack/jsbox) 92 | 93 | 94 | ## -D 安装 95 | 96 | ``` 97 | npm install jsbox-cmd -D 98 | ``` 99 | 100 | package.json 101 | 102 | ``` 103 | "scripts": { 104 | "gen": "npx jsbox-gen " 105 | }, 106 | ``` -------------------------------------------------------------------------------- /cmd/bin/gen.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: chenzhongsheng 3 | * @Date: 2025-02-06 23:57:34 4 | * @Description: Coding something 5 | */ 6 | 7 | const {initCodeMap} = require('../index'); 8 | const path = require('path'); 9 | const {parseArgv} = require('@tcbox/command-parser'); 10 | 11 | const {args, options} = parseArgv(); 12 | 13 | 14 | initCodeMap({ 15 | input: path.resolve(process.cwd(), args[1]), 16 | format: options.format, 17 | watch: options.watch, 18 | output: options.output, 19 | configFile: options.config, 20 | }); 21 | 22 | console.log('Generate Finish.'); 23 | 24 | // dev test: node cmd/bin/gen.js public/jsbox-demo/ --watch -------------------------------------------------------------------------------- /cmd/bin/help.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | console.log([ 4 | 'jsbox gen : generate map config file.', 5 | 'jsbox open: Open jsbox with your config.', 6 | 'View https://github.com/theajack/jsbox/blob/master/cmd/README.md for detail' 7 | ].join('\n')); -------------------------------------------------------------------------------- /cmd/bin/open.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const openDefaultBrowser = function (url) { 4 | var exec = require('child_process').exec; 5 | switch (process.platform) { 6 | case 'darwin': 7 | exec('open ' + url); 8 | break; 9 | case 'win32': 10 | exec('start ' + url); 11 | break; 12 | default: 13 | exec('xdg-open', [url]); 14 | } 15 | }; 16 | 17 | // codeSrc,github,config,githubConfig 18 | openDefaultBrowser(`https://shiyix.cn/jsbox?${process.argv[2]}`); -------------------------------------------------------------------------------- /cmd/index.d.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: chenzhongsheng 3 | * @Date: 2025-02-05 21:47:14 4 | * @Description: Coding something 5 | */ 6 | export function generateCodeMap (base: any, input: string): any; 7 | export function initCodeMap (data: { 8 | input: string, 9 | output?: string, 10 | configFile?: string, 11 | format?: boolean, 12 | }): void; -------------------------------------------------------------------------------- /cmd/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: chenzhongsheng 3 | * @Date: 2025-02-05 20:30:50 4 | * @Description: Coding something 5 | */ 6 | 7 | const fs = require('fs'); 8 | const path = require('path'); 9 | 10 | function generateCodeMap (base, input) { 11 | const list = fs.readdirSync(input); 12 | 13 | let codes = {}; 14 | 15 | const htmlReg = //g; 16 | const jsReg = /\/\/ *@(needUI|hideLog|dep|desc|title) *=? *(.*?)(\n|$)/g; 17 | 18 | list.forEach(v => { 19 | let lastIndex = v.lastIndexOf('.'); 20 | 21 | let tail = v.substring(lastIndex + 1); 22 | if (tail !== 'js' && tail !== 'html') return; 23 | 24 | const filePath = path.resolve(input, v); 25 | let content = fs.readFileSync(filePath, 'utf-8'); 26 | 27 | let data = {}; 28 | 29 | const isHtml = tail === 'html'; 30 | 31 | const reg = isHtml ? htmlReg : jsReg; 32 | 33 | content = content.replaceAll(reg, (_, key, value) => { 34 | if (key === 'needUI' || key === 'hideLog') { 35 | data[key] = (value === 'true' || value === ''); 36 | } else if (key === 'dep') { 37 | data[key] = value.trim().split(','); 38 | } else { 39 | data[key] = value.trim(); 40 | } 41 | return ''; 42 | }); 43 | data.code = content.trim(); 44 | if (isHtml) { data.lang = 'html'; } 45 | 46 | const fileName = v.substring(0, lastIndex); 47 | const name = fileName.replace(/^[0-9]+-/, ''); 48 | 49 | const mdFile = path.resolve(filePath, `../${fileName}.md`); 50 | if (fs.existsSync(mdFile)) { 51 | data.doc = fs.readFileSync(mdFile, 'utf-8'); 52 | } 53 | codes[name] = data; 54 | }); 55 | return { 56 | ...base, 57 | codes, 58 | }; 59 | } 60 | 61 | 62 | function initCodeMap ({ 63 | input, 64 | output = path.resolve(input, '../jsbox.config.js'), 65 | configFile = path.resolve(input, '../jsbox.base.js'), 66 | format = false, 67 | watch = false, 68 | }) { 69 | let base = {}; 70 | if (fs.existsSync(configFile)) { 71 | base = require(configFile); 72 | } 73 | 74 | initBase({base, input, output, format}); 75 | 76 | if (watch) { 77 | fs.watch(input, () => { 78 | initBase({base, input, output, format}); 79 | }); 80 | } 81 | }; 82 | 83 | function initBase ({ 84 | base, input, output, format 85 | }) { 86 | const data = generateCodeMap(base, input); 87 | fs.writeFileSync(output, `window.jsboxConfig = ${format ? JSON.stringify(data, null, 4) : JSON.stringify(data)}`, 'utf-8'); 88 | } 89 | 90 | 91 | module.exports = { 92 | generateCodeMap, 93 | initCodeMap 94 | }; -------------------------------------------------------------------------------- /cmd/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jsbox-cmd", 3 | "version": "0.0.3", 4 | "description": "JsBox Command Util", 5 | "repository": { 6 | "type": "git", 7 | "url": "https://github.com/theajack/jsbox/tree/master/cmd" 8 | }, 9 | "bin": { 10 | "jsbox-help": "bin/help.js", 11 | "jsbox-gen": "bin/gen.js", 12 | "jsbox-open": "bin/open.js" 13 | }, 14 | "keywords": [ 15 | "JsBox" 16 | ], 17 | "author": "theajack", 18 | "license": "MIT", 19 | "bugs": { 20 | "url": "https://github.com/theajack/jsbox/issues" 21 | }, 22 | "homepage": "https://github.com/theajack/jsbox/tree/master/cmd", 23 | "publishConfig": { 24 | "registry": "https://registry.npmjs.org/", 25 | "tag": "latest" 26 | }, 27 | "dependencies": { 28 | "@tcbox/command-parser": "^0.0.1" 29 | }, 30 | "main": "index.js", 31 | "typings": "index.d.ts" 32 | } -------------------------------------------------------------------------------- /cmd/test.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: chenzhongsheng 3 | * @Date: 2025-02-05 20:43:46 4 | * @Description: Coding something 5 | */ 6 | 7 | const {generateCodeMap, initCodeMap} = require('../tool'); 8 | const path = require('path'); 9 | 10 | // generateCodeMap({}, path.resolve(__dirname, './files')); 11 | 12 | initCodeMap({ 13 | input: path.resolve(__dirname, './files'), 14 | format: true, 15 | }); -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['@commitlint/config-conventional'], 3 | rules: { 4 | 'type-enum': [2, 'always', [ 5 | 'feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'build', 'ci', 'chore', 'revert' 6 | ]], 7 | 'subject-full-stop': [0, 'never'], 8 | 'subject-case': [0, 'never'] 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /ebuild.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'tranToEs5InNpm': true, // wether use babel 3 | 'packageFiles': [ 4 | './package.json' 5 | // config which package.json files need to modify version 6 | // '../npm/package.json', // this is an example 7 | ], 8 | 'versioJsEs6Module': true, // use es6(export default) or require(module.exports=) 9 | 'versioJsFiles': [ 10 | // config which version.js files need to modify version 11 | // '../npm/version.js', // this is an example 12 | ], 13 | 'libraryName': '', // cdn global name 14 | 'cdnFileName': '', 15 | 'version': '0.0.1', 16 | 'npmExternals': { 17 | // example 18 | // 'md5': 'md5' 19 | }, 20 | 'npmPaths': [ 21 | 'npm' 22 | ] 23 | }; -------------------------------------------------------------------------------- /helper/copy-npm.js: -------------------------------------------------------------------------------- 1 | const gulp = require('gulp'); 2 | const babel = require('gulp-babel'); 3 | let config = require('../ebuild.config'); 4 | 5 | let tranToEs5InNpm = config.tranToEs5InNpm; 6 | 7 | function main () { 8 | copy(); 9 | } 10 | 11 | function copy () { 12 | gulp.src('src/*') 13 | .pipe(gulp.dest('npm')) 14 | .on('end', () => { 15 | if (tranToEs5InNpm) { 16 | transEs6ByBabel(); 17 | } 18 | }); 19 | } 20 | 21 | function transEs6ByBabel () { 22 | gulp.src('src/**/*.js') 23 | .pipe(babel({presets: ['@babel/env']})) 24 | .pipe(gulp.dest('npm')); 25 | } 26 | 27 | 28 | main(); -------------------------------------------------------------------------------- /helper/dev.md: -------------------------------------------------------------------------------- 1 | 6 | 开发完成后运行 7 | 8 | ``` 9 | npm run release -- vx.x.x 10 | ``` 11 | 12 | 即可发布版本 13 | 14 | 如为覆盖上一次发布 15 | 16 | 运行 17 | 18 | ``` 19 | npm run release -- vx.x.x 20 | ``` 21 | 22 | 单独发布文档 23 | 24 | ``` 25 | npm run release -- dx.x.x 26 | ``` 27 | 28 | ### env & lib 29 | 30 | 如需修改 env 或者 lib 文件 31 | 32 | 请修改 public/lib 下的文件 33 | 34 | 然后执行 npm run build:env 35 | 36 | 然后提交到master即可 37 | 38 | 如需立即生效 需要清一下缓存 39 | 40 | https://purge.jsdelivr.net/gh/theajack/jsbox/cdn/assets/js/lib/env.js 41 | 42 | https://purge.jsdelivr.net/gh/theajack/jsbox/cdn/assets/js/lib/lib.js 43 | 44 | 45 | ## 发布 46 | 47 | 新建 assets/cdn, 将 cdn/assets, cdn/xxx.ttf 放入其中 48 | 49 | npm run build 之后 50 | 51 | 将 docs/envs, docs/main.min.css, docs/main.min.js 移入 assets中 52 | 53 | 执行 qiniu-upload中的脚本即可 54 | 55 | ---- 56 | 57 | 重要: 58 | 59 | 该项目架构太老太旧,不好扩展,新功能比较难以添加 60 | 61 | 有待重构 62 | -------------------------------------------------------------------------------- /helper/modify-version.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | let config = require('../ebuild.config'); 3 | let version = config.version; 4 | 5 | let es6 = config.versioJsEs6Module; 6 | 7 | let packageFiles = config.packageFiles; 8 | 9 | let versioJsFiles = config.versioJsFiles; ; 10 | 11 | function modifyVersion () { 12 | packageFiles.forEach(file => { 13 | let pkg = require(file); 14 | pkg.version = version; 15 | fs.writeFile(file.substr(1), JSON.stringify(pkg, null, 4), 'utf8', (err) => { 16 | if (err) throw err; 17 | }); 18 | }); 19 | let head = es6 ? 'export default ' : 'module.exports = '; 20 | versioJsFiles.forEach(file => { 21 | fs.writeFile(file.substr(1), `${head}'${version}';`, 'utf8', (err) => { 22 | if (err) throw err; 23 | }); 24 | }); 25 | } 26 | 27 | modifyVersion(); -------------------------------------------------------------------------------- /helper/publish.js: -------------------------------------------------------------------------------- 1 | const execSync = require('child_process').execSync; 2 | const config = require('../ebuild.config'); 3 | // const packageJSON = require('../package.json'); 4 | // const path = require('path'); 5 | // const fs = require('fs-extra'); 6 | 7 | // const root = path.resolve(__dirname, '..'); 8 | // const distRoot = path.resolve(__dirname, '../dist'); 9 | // const npmOrganization = '@wenyanlang'; 10 | 11 | // const packages = ['cli', 'core', 'render']; 12 | 13 | // const fileToCopy = [ 14 | // 'README.md', 15 | // 'README.zh-Hans.md', 16 | // 'README.zh-Hant.md', 17 | // 'LICENSE' 18 | // ]; 19 | 20 | // const fieldsInPackageJSONToRemove = [ 21 | // 'devDependencies', 22 | // 'lint-staged', 23 | // 'husky', 24 | // 'scripts', 25 | // 'private' 26 | // ]; 27 | 28 | async function publish () { 29 | config.npmPaths.forEach((path) => { 30 | execSync(`npm publish ${path}`); 31 | }); 32 | } 33 | 34 | // async function CopyFiles () { 35 | // for (const pkg of packages) { 36 | // console.log(`Copying files for ${pkg}...`); 37 | // for (const file of fileToCopy) { 38 | // await fs.copyFile( 39 | // path.join(root, file), 40 | // path.join(distRoot, pkg, file) 41 | // ); 42 | // } 43 | // } 44 | // } 45 | 46 | // async function MakePackageJSON () { 47 | // for (const pkg of packages) { 48 | // console.log(`Generating package.json for ${pkg}...`); 49 | // const json = JSON.parse(JSON.stringify(packageJSON)); 50 | // json.name = `${npmOrganization}/${pkg}`; 51 | // json.main = './index.min.js'; 52 | 53 | // for (const field of fieldsInPackageJSONToRemove) delete json[field]; 54 | 55 | // if (pkg === 'cli') { 56 | // json.bin = { 57 | // wenyan: './index.min.js' 58 | // }; 59 | // } 60 | 61 | // const jsonString = JSON.stringify(json, null, 2) + '\n'; 62 | 63 | // await fs.writeFile( 64 | // path.join(distRoot, pkg, 'package.json'), 65 | // jsonString, 66 | // 'utf-8' 67 | // ); 68 | // } 69 | // } 70 | 71 | // async function Publish () { 72 | // for (const pkg of packages) { 73 | // console.log(`Publishing ${npmOrganization}/${pkg}...`); 74 | // execSync('npm publish --access public', { 75 | // cwd: path.join(distRoot, pkg) 76 | // }); 77 | // } 78 | // } 79 | 80 | (async () => { 81 | await publish(); 82 | })(); -------------------------------------------------------------------------------- /helper/purge-cdn.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: tackchen 3 | * @Date: 2022-07-08 08:24:27 4 | * @Description: Coding something 5 | */ 6 | const https = require('https'); 7 | 8 | console.log('Purge docs CDN...'); 9 | 10 | [ 11 | '@gh-pages/main.min.js', 12 | '@gh-pages/main.min.css', 13 | '/cdn/assets/js/lib/lib.js', 14 | '/cdn/assets/js/lib/env.js' 15 | ].forEach(path => { 16 | https.get(`https://purge.jsdelivr.net/gh/theajack/jsbox${path}`, () => { 17 | console.log(`Purge ${path} done`); 18 | }); 19 | }); -------------------------------------------------------------------------------- /helper/push-release.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: tackchen 3 | * @Date: 2022-04-06 09:14:55 4 | * @LastEditors: tackchen 5 | * @LastEditTime: 2022-05-19 11:14:56 6 | * @FilePath: /cnchar/helper/push-release.js 7 | * @Description: Coding something 8 | */ 9 | 10 | const {exec} = require('./tool'); 11 | 12 | async function delTag (tagName) { 13 | await exec(`git tag -d ${tagName}`); 14 | await exec(`git push origin :refs/tags/${tagName}`); 15 | } 16 | 17 | // 版本发布 del 表示需要覆盖上一个版本 一般不需要 18 | // node ./helper/push-tag.js vx.x.x 19 | // node ./helper/push-tag.js vx.x.x no-del 20 | 21 | // npm run release -- vx.x.x 22 | // npm run release -- vx.x.x no-del 23 | 24 | async function main () { 25 | const argv = process.argv.slice(2); 26 | const tagName = argv[0]; 27 | if (argv[1] !== 'no-del') { 28 | console.log(`Start delete tag ${tagName}...`); 29 | await delTag(tagName); 30 | } 31 | console.log(`Start create tag ${tagName}...`); 32 | await exec(`git tag -m "version ${tagName}" ${tagName} master`); 33 | console.log(`Start push tag ${tagName}...`); 34 | await exec('git push --tags'); 35 | console.log('Finished!'); 36 | } 37 | 38 | main(); -------------------------------------------------------------------------------- /helper/todo.md: -------------------------------------------------------------------------------- 1 | 6 | 7 | - [ ] 增加多 demo 标题支持 8 | - [ ] 增加 demo 的 md 描述文件 9 | - [x] 增加 toast 方法 -------------------------------------------------------------------------------- /helper/tool.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: tackchen 3 | * @Date: 2022-07-08 08:42:36 4 | * @Description: Coding something 5 | */ 6 | const childProcess = require('child_process'); 7 | const path = require('path'); 8 | const fs = require('fs'); 9 | 10 | async function exec (cmd) { 11 | return new Promise(resolve => { 12 | childProcess.exec(cmd, function (error, stdout, stderr) { 13 | if (error) { 14 | resolve({success: false, stdout, stderr}); 15 | } else { 16 | resolve({ 17 | success: true, 18 | stdout, 19 | stderr 20 | }); 21 | } 22 | }); 23 | }); 24 | } 25 | function resolvePath (filePath) { 26 | if (filePath[0] === '@' || filePath[0] === '/') { 27 | filePath = '../' + filePath.substring(1); 28 | } 29 | return path.resolve(__dirname, filePath); 30 | } 31 | function writeJsonFile (filePath, json) { 32 | fs.writeFileSync(resolvePath(filePath), JSON.stringify(json, null, 4), {encoding: 'utf-8'}); 33 | } 34 | 35 | module.exports = { 36 | exec, 37 | writeJsonFile, 38 | resolvePath, 39 | }; -------------------------------------------------------------------------------- /helper/transform-env-lib.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: tackchen 3 | * @Date: 2022-07-23 09:18:54 4 | * @Description: Coding something 5 | */ 6 | const gulp = require('gulp'); 7 | const babel = require('gulp-babel'); 8 | 9 | function transEs6ByBabel () { 10 | gulp.src([ 11 | 'public/lib/env.js', 12 | 'public/lib/lib.js', 13 | 'public/lib/config.js' 14 | ]) 15 | .pipe(babel({presets: ['@babel/env']})) 16 | .pipe(gulp.dest('docs/envs')); 17 | } 18 | 19 | module.exports = {transEs6ByBabel}; -------------------------------------------------------------------------------- /helper/version.md: -------------------------------------------------------------------------------- 1 | ### 1.0.1 2 | 1. 提取并加载 link 和 script 的链接 3 | 4 | ### 1.0.2 5 | 1. 使用lz-string压缩字符串 6 | 2. 修复bug 7 | 3. 修复npm包bug -------------------------------------------------------------------------------- /helper/zipcssinjs-loader.js: -------------------------------------------------------------------------------- 1 | module.exports = function loader (source) { 2 | let reg = new RegExp('\\/\\*[ \\*]*css[ \\*]*\\*\\/`(.|\\r\\n)*?`', 'g'); 3 | let array = source.match(reg); 4 | if (array !== null) { 5 | array.forEach(css => { 6 | source = source.replace( 7 | css, 8 | css.replace(new RegExp('\\r\\n *', 'g'), '') 9 | .replace(new RegExp('\\/\\*(.|\\r\\n)*?\\*\\/', 'g'), '') 10 | .replace(new RegExp(' *\\{', 'g'), '{')); 11 | }); 12 | } 13 | 14 | // 压缩字符串内的html 15 | // 为了引号嵌套 请在最后一个配对引号 紧贴着最后一个 > 中间嵌套的 >与` 之前请留出一个空格 16 | reg = new RegExp('\\/\\*[ \\*]*html[ \\*]*\\*\\/`(.|\\r\\n)*?>`', 'g'); 17 | array = source.match(reg); 18 | if (array !== null) { 19 | array.forEach(html => { 20 | source = source.replace( 21 | html, 22 | html.replace(new RegExp('\\r\\n *', 'g'), '') 23 | .replace(new RegExp('', 'g'), '')); 24 | }); 25 | } 26 | return source; 27 | }; -------------------------------------------------------------------------------- /jsbox.config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: chenzhongsheng 3 | * @Date: 2025-01-23 01:29:22 4 | * @Description: Coding something 5 | */ 6 | 'use strict'; 7 | 8 | /* 9 | 此为测试文件 10 | */ 11 | 12 | window.jsboxConfig = { 13 | libs: { 14 | // 'cnchar': 'https://cdn.jsdelivr.net/gh/theajack/cnchar/dist/cnchar.latest.min.js', 15 | // 'jQuery': 'https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js', 16 | // 'easy-icon': { 17 | // type: 'style', 18 | // versio: '1.0.1', 19 | // url: 'https://cdn.jsdelivr.net/gh/theajack/easy-icon/dist/easy-icon.min.css' 20 | // }, 21 | 'jsbox.cnchar': '', 22 | 'cnchar-order': 'jsbox.cnchar-order' 23 | }, 24 | codes: { 25 | // 26 | 'helloWorld': { 27 | code: 'console.log("Hello world")', 28 | needUI: true, 29 | hideLog: true, 30 | }, 31 | // 32 | 'helloWorld2': { 33 | code: 'console.log("Hello world")', 34 | needUI: false, 35 | }, 36 | 'helloWorldHtml': { 37 | lang: 'html', 38 | code: '

Hello world

', 39 | hideLog: true, 40 | }, 41 | // 默认使用上面定义的所有依赖 42 | 'testCnchar': { 43 | desc: '测试', 44 | code: 'cnchar.spell("你好")', 45 | dep: ['cnchar-order'] // 定义依赖,优先从当前文件中查找,如果没有会尝试在jsbox预定义库中查找 46 | }, 47 | 'test': { 48 | lang: 'html', 49 | code: '
111
', 50 | dep: ['cnchar-order'] // 定义依赖,优先从当前文件中查找,如果没有会尝试在jsbox预定义库中查找 51 | } 52 | } 53 | }; 54 | 55 | // https://cdn.jsdelivr.net/npm/virtual-dom@2.1.1/dist/virtual-dom.js -------------------------------------------------------------------------------- /package/index.js: -------------------------------------------------------------------------------- 1 | const request = require('request'); 2 | const fs = require('fs'); 3 | const packages = require('./package'); 4 | const path = 'https://cdn.jsdelivr.net/npm/'; 5 | const httpBase = 'https://data.jsdelivr.com/v1/package/npm/'; 6 | 7 | function main () { 8 | for (let k in packages) { 9 | loadSingle(k, packages[k]); 10 | } 11 | } 12 | 13 | function loadSingle (name, pkg) { 14 | let pkgPath = null; 15 | let url = ''; 16 | let version = ''; 17 | if (typeof pkg === 'string') { 18 | url = pkg; 19 | } else { 20 | if (pkg.url) {url = pkg.url;} 21 | if (pkg.def) {pkgPath = pkg.def;} 22 | delete pkg.def; 23 | } 24 | if (url !== '') { 25 | checkFinish(); 26 | return; 27 | } 28 | request(`${httpBase}${name}`, {json: true}, (err, res) => { 29 | if (err) { return console.log(err); } 30 | version = res.body.tags.latest; 31 | request(`${httpBase}${name}@${version}`, {json: true}, (err, res) => { 32 | if (err) { return console.log(err); } 33 | let def = res.body.default; 34 | if (def === null || def.substr(def.lastIndexOf('.')) !== '.js') { 35 | if (pkgPath) { 36 | def = pkgPath; 37 | } else { 38 | def = findDefJs(res.body.files, name, '/'); 39 | } 40 | } 41 | if (!def) { 42 | url = `https://unpkg.com/${name}`; 43 | checkFinish(name, version, url); 44 | } else { 45 | url = `${path}${name}@${version}${def}`; 46 | checkFinish(name, version, url); 47 | } 48 | }); 49 | }); 50 | } 51 | 52 | let num = 0; 53 | let length = Object.keys(packages).length; 54 | function checkFinish (name, version, url) { 55 | num ++; 56 | console.log(`${num} / ${length}`); 57 | if (name) { 58 | if (typeof packages[name] === 'object') { 59 | packages[name].version = version; 60 | packages[name].url = url; 61 | } else { 62 | packages[name] = { 63 | version, 64 | url, 65 | }; 66 | } 67 | } 68 | if (num >= length) { 69 | saveLibs(packages); 70 | } 71 | } 72 | 73 | function saveLibs (packages) { 74 | let content = `window.jsbox_libs = ${JSON.stringify(packages, null, 4)};`; 75 | fs.writeFileSync('public/resources.js', content, 'utf8' ); 76 | } 77 | 78 | function findDefJs (files, pkg, name) { 79 | for (let i = 0; i < files.length; i++) { 80 | let file = files[i]; 81 | if (file.type === 'directory') { 82 | let res = findDefJs(file.files, pkg, `${name}${file.name}/`); 83 | if (res) { 84 | return res; 85 | } 86 | } else if (file.type === 'file') { 87 | let fileName = file.name.toLowerCase(); 88 | if (fileName.indexOf(pkg.toLowerCase()) !== -1 && fileName.substr(fileName.lastIndexOf('.')) === '.js') { 89 | return name + file.name; 90 | } 91 | } 92 | } 93 | } 94 | 95 | main(); -------------------------------------------------------------------------------- /public/bundle.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theajack/jsbox/1bf5b91d0601b5236ce529d9754329d00dc8754e/public/bundle.js -------------------------------------------------------------------------------- /public/dev-npm.js: -------------------------------------------------------------------------------- 1 | import JSBox from '../npm'; 2 | // import JSBox from '../src/npm'; 3 | JSBox.config({ 4 | code: '111', 5 | theme: 'light', 6 | mes: false 7 | }); 8 | 9 | JSBox.open(); // 使用公共配置或默认配置打开jsbox -------------------------------------------------------------------------------- /public/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theajack/jsbox/1bf5b91d0601b5236ce529d9754329d00dc8754e/public/icon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | JSBox js在线运行环境 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 33 | 34 | 35 | 36 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /public/jsbox-demo/01-Basic Use.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /public/jsbox-demo/01-Basic Use.md: -------------------------------------------------------------------------------- 1 | 6 | # Test md File 7 | 8 | ## hhh 9 | 10 | ```html 11 |
111
12 | ``` 13 | 14 | ```js 15 | var a = 1; 16 | ``` 17 | 18 | [jsbox](https://shiyix.cn/jsbox) 19 | 20 | - 1 21 | - 2 22 | - 3 23 | -------------------------------------------------------------------------------- /public/jsbox-demo/02-Storage.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /public/jsbox-demo/03-Append Mode.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /public/jsbox-demo/04-Custom Storage.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /public/jsbox-demo/05-No UI test.js: -------------------------------------------------------------------------------- 1 | // @hideLog 2 | 3 | const a = 1; 4 | console.log(a); 5 | -------------------------------------------------------------------------------- /public/jsbox-demo/05-No UI test.md: -------------------------------------------------------------------------------- 1 | 6 | # Test md File 7 | 8 | ## hhh 9 | 10 | ```html 11 |
111
12 | ``` 13 | 14 | ```js 15 | var a = 1; 16 | ``` 17 | 18 | [jsbox](https://shiyix.cn/jsbox) 19 | 20 | - 1 21 | - 2 22 | - 3 23 | -------------------------------------------------------------------------------- /public/jsbox.base.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: chenzhongsheng 3 | * @Date: 2025-02-05 20:30:26 4 | * @Description: Coding something 5 | */ 6 | module.exports = { 7 | libs: { 8 | 'history-stack': 'https://cdn.jsdelivr.net/npm/history-stack', 9 | }, 10 | iifeMap: { 11 | 'history-stack': 'HistoryStack', 12 | }, 13 | }; -------------------------------------------------------------------------------- /public/lib/config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: tackchen 3 | * @Date: 2022-07-08 08:57:44 4 | * @Description: config dev debug 5 | */ 6 | 7 | window.jsboxConfig = { 8 | libs: { 9 | // 'cnchar': 'https://cdn.jsdelivr.net/gh/theajack/cnchar/dist/cnchar.latest.min.js', 10 | // 'jQuery': 'https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js', 11 | // 'easy-icon': { 12 | // type: 'style', 13 | // versio: '1.0.1', 14 | // url: 'https://cdn.jsdelivr.net/gh/theajack/easy-icon/dist/easy-icon.min.css' 15 | // }, 16 | 'jsbox.cnchar': '', 17 | 'cnchar-order': 'jsbox.cnchar-order', 18 | }, 19 | codes: { // 20 | 'helloWorld': 'console.log("Hello world")', // 默认使用上面定义的所有依赖 21 | 'testCnchar': { 22 | desc: '测试', 23 | code: 'cnchar.spell("你好")', 24 | dep: ['cnchar-order'], // 定义依赖,优先从当前文件中查找,如果没有会尝试在jsbox预定义库中查找 25 | }, 26 | 'test': { 27 | lang: 'html', 28 | code: '
111
', 29 | dep: ['cnchar-order'], // 定义依赖,优先从当前文件中查找,如果没有会尝试在jsbox预定义库中查找 30 | } 31 | } 32 | }; 33 | 34 | // https://cdn.jsdelivr.net/npm/virtual-dom@2.1.1/dist/virtual-dom.js -------------------------------------------------------------------------------- /public/onigasm.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theajack/jsbox/1bf5b91d0601b5236ce529d9754329d00dc8754e/public/onigasm.wasm -------------------------------------------------------------------------------- /public/test-lib.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /public/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Demo of ACE Editor 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
21 | 22 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /public/test/test-react.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /public/vs/base/browser/ui/codiconLabel/codicon/codicon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theajack/jsbox/1bf5b91d0601b5236ce529d9754329d00dc8754e/public/vs/base/browser/ui/codiconLabel/codicon/codicon.ttf -------------------------------------------------------------------------------- /public/vs/basic-languages/azcli/azcli.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/azcli/azcli",["require","exports"],(function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.conf={comments:{lineComment:"#"}},t.language={defaultToken:"keyword",ignoreCase:!0,tokenPostfix:".azcli",str:/[^#\s]/,tokenizer:{root:[{include:"@comment"},[/\s-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":{token:"key.identifier",next:"@type"}}}],[/^-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":{token:"key.identifier",next:"@type"}}}]],type:[{include:"@comment"},[/-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":"key.identifier"}}],[/@str+\s*/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}]],comment:[[/#.*$/,{cases:{"@eos":{token:"comment",next:"@popall"}}}]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/bat/bat.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/bat/bat",["require","exports"],(function(e,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0}),s.conf={comments:{lineComment:"REM"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],folding:{markers:{start:new RegExp("^\\s*(::\\s*|REM\\s+)#region"),end:new RegExp("^\\s*(::\\s*|REM\\s+)#endregion")}}},s.language={defaultToken:"",ignoreCase:!0,tokenPostfix:".bat",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:/call|defined|echo|errorlevel|exist|for|goto|if|pause|set|shift|start|title|not|pushd|popd/,symbols:/[=>"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}]},t.language={defaultToken:"",tokenPostfix:".cameligo",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["abs","begin","Bytes","Crypto","Current","else","end","failwith","false","fun","if","in","let","let%entry","let%init","List","list","Map","map","match","match%nat","mod","not","operation","Operation","of","Set","set","sender","source","String","then","true","type","with"],typeKeywords:["int","unit","string","tz"],operators:["=",">","<","<=",">=","<>",":",":=","and","mod","or","+","-","*","/","@","&","^","%","->","<-"],symbols:/[=><:@\^&|+\-*\/\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\$[0-9a-fA-F]{1,16}/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'/,"string","@string"],[/'[^\\']'/,"string"],[/'/,"string.invalid"],[/\#\d+/,"string"]],comment:[[/[^\(\*]+/,"comment"],[/\*\)/,"comment","@pop"],[/\(\*/,"comment"]],string:[[/[^\\']+/,"string"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\(\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/csp/csp.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/csp/csp",["require","exports"],(function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.conf={brackets:[],autoClosingPairs:[],surroundingPairs:[]},e.language={keywords:[],typeKeywords:[],tokenPostfix:".csp",operators:[],symbols:/[=>\]/,"annotation"],[/^#(if|else|endif)/,"keyword"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0x[0-9a-fA-F]+LF/,"number.float"],[/0x[0-9a-fA-F]+(@integersuffix)/,"number.hex"],[/0b[0-1]+(@integersuffix)/,"number.bin"],[/\d+(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"""/,"string",'@string."""'],[/"/,"string",'@string."'],[/\@"/,{token:"string.quote",next:"@litstring"}],[/'[^\\']'B?/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\(\*(?!\))/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^*(]+/,"comment"],[/\*\)/,"comment","@pop"],[/\*/,"comment"],[/\(\*\)/,"comment"],[/\(/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/("""|"B?)/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]],litstring:[[/[^"]+/,"string"],[/""/,"string.escape"],[/"/,{token:"string.quote",next:"@pop"}]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/go/go.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/go/go",["require","exports"],(function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.conf={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`"},{open:'"',close:'"'},{open:"'",close:"'"}]},n.language={defaultToken:"",tokenPostfix:".go",keywords:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var","bool","true","false","uint8","uint16","uint32","uint64","int8","int16","int32","int64","float32","float64","complex64","complex128","byte","rune","uint","int","uintptr","string","nil"],operators:["+","-","*","/","%","&","|","^","<<",">>","&^","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>=","&^=","&&","||","<-","++","--","==","<",">","=","!","!=","<=",">=",":=","...","(",")","","]","{","}",",",";",".",":"],symbols:/[=>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex"],[/0[0-7']*[0-7]/,"number.octal"],[/0[bB][0-1']*[0-1]/,"number.binary"],[/\d[\d']*/,"number"],[/\d/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/`/,"string","@rawstring"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],rawstring:[[/[^\`]/,"string"],[/`/,"string","@pop"]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/graphql/graphql.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/graphql/graphql",["require","exports"],(function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.conf={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"""',close:'"""',notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"""',close:'"""'},{open:'"',close:'"'}],folding:{offSide:!0}},n.language={defaultToken:"invalid",tokenPostfix:".gql",keywords:["null","true","false","query","mutation","subscription","extend","schema","directive","scalar","type","interface","union","enum","input","implements","fragment","on"],typeKeywords:["Int","Float","String","Boolean","ID"],directiveLocations:["SCHEMA","SCALAR","OBJECT","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","FRAGMENT_SPREAD","INLINE_FRAGMENT","VARIABLE_DEFINITION"],operators:["=","!","?",":","&","|"],symbols:/[=!?:&|]+/,escapes:/\\(?:["\\\/bfnrt]|u[0-9A-Fa-f]{4})/,tokenizer:{root:[[/[a-z_][\w$]*/,{cases:{"@keywords":"keyword","@default":"key.identifier"}}],[/[$][\w$]*/,{cases:{"@keywords":"keyword","@default":"argument.identifier"}}],[/[A-Z][\w\$]*/,{cases:{"@typeKeywords":"keyword","@default":"type.identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,{token:"annotation",log:"annotation token: $0"}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/"""/,{token:"string",next:"@mlstring",nextEmbedded:"markdown"}],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}]],mlstring:[[/[^"]+/,"string"],['"""',{token:"string",next:"@pop",nextEmbedded:"@pop"}]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/#.*$/,"comment"]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/ini/ini.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/ini/ini",["require","exports"],(function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.conf={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},n.language={defaultToken:"",tokenPostfix:".ini",escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^\[[^\]]*\]/,"metatag"],[/(^\w+)(\s*)(\=)/,["key","","delimiter"]],{include:"@whitespace"},[/\d+/,"number"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],whitespace:[[/[ \t\r\n]+/,""],[/^\s*[#;].*$/,"comment"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/java/java.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/java/java",["require","exports"],(function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.conf={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],folding:{markers:{start:new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:))")}}},t.language={defaultToken:"",tokenPostfix:".java",keywords:["abstract","continue","for","new","switch","assert","default","goto","package","synchronized","boolean","do","if","private","this","break","double","implements","protected","throw","byte","else","import","public","throws","case","enum","instanceof","return","transient","catch","extends","int","short","try","char","final","interface","static","void","class","finally","long","strictfp","volatile","const","float","native","super","while","true","false"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,"annotation"],[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,"number.float"],[/0[xX](@hexdigits)[Ll]?/,"number.hex"],[/0(@octaldigits)[Ll]?/,"number.octal"],[/0[bB](@binarydigits)[Ll]?/,"number.binary"],[/(@digits)[fFdD]/,"number.float"],[/(@digits)[lL]?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@javadoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],javadoc:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/lua/lua.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/lua/lua",["require","exports"],(function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.conf={comments:{lineComment:"--",blockComment:["--[[","]]"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},n.language={defaultToken:"",tokenPostfix:".lua",keywords:["and","break","do","else","elseif","end","false","for","function","goto","if","in","local","nil","not","or","repeat","return","then","true","until","while"],brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],operators:["+","-","*","/","%","^","#","==","~=","<=",">=","<",">","=",";",":",",",".","..","..."],symbols:/[=>\/\?\s]+)/g,comments:{blockComment:["###","###"],lineComment:"#"},folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},t.language={defaultToken:"",ignoreCase:!1,tokenPostfix:".mips",regEx:/\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,keywords:[".data",".text","syscall","trap","add","addu","addi","addiu","and","andi","div","divu","mult","multu","nor","or","ori","sll","slv","sra","srav","srl","srlv","sub","subu","xor","xori","lhi","lho","lhi","llo","slt","slti","sltu","sltiu","beq","bgtz","blez","bne","j","jal","jalr","jr","lb","lbu","lh","lhu","lw","li","la","sb","sh","sw","mfhi","mflo","mthi","mtlo","move"],symbols:/[\.,\:]+/,escapes:/\\(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\$[a-zA-Z_]\w*/,"variable.predefined"],[/[.a-zA-Z_]\w*/,{cases:{this:"variable.predefined","@keywords":{token:"keyword.$0"},"@default":""}}],[/[ \t\r\n]+/,""],[/#.*$/,"comment"],["///",{token:"regexp",next:"@hereregexp"}],[/^(\s*)(@regEx)/,["","regexp"]],[/(\,)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\:)(\s*)(@regEx)/,["delimiter","","regexp"]],[/@symbols/,"delimiter"],[/\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d+\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/0[0-7]+(?!\d)/,"number.octal"],[/\d+/,"number"],[/[,.]/,"delimiter"],[/"""/,"string",'@herestring."""'],[/'''/,"string","@herestring.'''"],[/"/,{cases:{"@eos":"string","@default":{token:"string",next:'@string."'}}}],[/'/,{cases:{"@eos":"string","@default":{token:"string",next:"@string.'"}}}]],string:[[/[^"'\#\\]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/\./,"string.escape.invalid"],[/#{/,{cases:{'$S2=="':{token:"string",next:"root.interpolatedstring"},"@default":"string"}}],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/#/,"string"]],herestring:[[/("""|''')/,{cases:{"$1==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/[^#\\'"]+/,"string"],[/['"]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/#{/,{token:"string.quote",next:"root.interpolatedstring"}],[/#/,"string"]],comment:[[/[^#]+/,"comment"],[/#/,"comment"]],hereregexp:[[/[^\\\/#]+/,"regexp"],[/\\./,"regexp"],[/#.*$/,"comment"],["///[igm]*",{token:"regexp",next:"@pop"}],[/\//,"regexp"]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/objective-c/objective-c.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/objective-c/objective-c",["require","exports"],(function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.conf={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},n.language={defaultToken:"",tokenPostfix:".objective-c",keywords:["#import","#include","#define","#else","#endif","#if","#ifdef","#ifndef","#ident","#undef","@class","@defs","@dynamic","@encode","@end","@implementation","@interface","@package","@private","@protected","@property","@protocol","@public","@selector","@synthesize","__declspec","assign","auto","BOOL","break","bycopy","byref","case","char","Class","const","copy","continue","default","do","double","else","enum","extern","FALSE","false","float","for","goto","if","in","int","id","inout","IMP","long","nil","nonatomic","NULL","oneway","out","private","public","protected","readwrite","readonly","register","return","SEL","self","short","signed","sizeof","static","struct","super","switch","typedef","TRUE","true","union","unsigned","volatile","void","while"],decpart:/\d(_?\d)*/,decimal:/0|@decpart/,tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},[/[,:;]/,"delimiter"],[/[{}\[\]()<>]/,"@brackets"],[/[a-zA-Z@#]\w*/,{cases:{"@keywords":"keyword","@default":"identifier"}}],[/[<>=\\+\\-\\*\\/\\^\\|\\~,]|and\\b|or\\b|not\\b]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],numbers:[[/0[xX][0-9a-fA-F]*(_?[0-9a-fA-F])*/,"number.hex"],[/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)[fF]*/,{cases:{"(\\d)*":"number",$0:"number.float"}}]],strings:[[/'$/,"string.escape","@popall"],[/'/,"string.escape","@stringBody"],[/"$/,"string.escape","@popall"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/[^\\']+$/,"string","@popall"],[/[^\\']+/,"string"],[/\\./,"string"],[/'/,"string.escape","@popall"],[/\\$/,"string"]],dblStringBody:[[/[^\\"]+$/,"string","@popall"],[/[^\\"]+/,"string"],[/\\./,"string"],[/"/,"string.escape","@popall"],[/\\$/,"string"]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/pascaligo/pascaligo.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/pascaligo/pascaligo",["require","exports"],(function(e,o){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.conf={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}]},o.language={defaultToken:"",tokenPostfix:".pascaligo",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["begin","block","case","const","else","end","fail","for","from","function","if","is","nil","of","remove","return","skip","then","type","var","while","with","option","None","transaction"],typeKeywords:["bool","int","list","map","nat","record","string","unit","address","map","mtz","xtz"],operators:["=",">","<","<=",">=","<>",":",":=","and","mod","or","+","-","*","/","@","&","^","%"],symbols:/[=><:@\^&|+\-*\/\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\$[0-9a-fA-F]{1,16}/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'/,"string","@string"],[/'[^\\']'/,"string"],[/'/,"string.invalid"],[/\#\d+/,"string"]],comment:[[/[^\(\*]+/,"comment"],[/\*\)/,"comment","@pop"],[/\(\*/,"comment"]],string:[[/[^\\']+/,"string"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\(\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/r/r.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/r/r",["require","exports"],(function(e,o){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.conf={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},o.language={defaultToken:"",tokenPostfix:".r",roxygen:["@param","@return","@name","@rdname","@examples","@include","@docType","@S3method","@TODO","@aliases","@alias","@assignee","@author","@callGraphDepth","@callGraph","@callGraphPrimitives","@concept","@exportClass","@exportMethod","@exportPattern","@export","@formals","@format","@importClassesFrom","@importFrom","@importMethodsFrom","@import","@keywords","@method","@nord","@note","@references","@seealso","@setClass","@slot","@source","@title","@usage"],constants:["NULL","FALSE","TRUE","NA","Inf","NaN ","NA_integer_","NA_real_","NA_complex_","NA_character_ ","T","F","LETTERS","letters","month.abb","month.name","pi","R.version.string"],keywords:["break","next","return","if","else","for","in","repeat","while","array","category","character","complex","double","function","integer","list","logical","matrix","numeric","vector","data.frame","factor","library","require","attach","detach","source"],special:["\\n","\\r","\\t","\\b","\\a","\\f","\\v","\\'",'\\"',"\\\\"],brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"}],tokenizer:{root:[{include:"@numbers"},{include:"@strings"},[/[{}\[\]()]/,"@brackets"],{include:"@operators"},[/#'/,"comment.doc","@roxygen"],[/(^#.*$)/,"comment"],[/\s+/,"white"],[/[,:;]/,"delimiter"],[/@[a-zA-Z]\w*/,"tag"],[/[a-zA-Z]\w*/,{cases:{"@keywords":"keyword","@constants":"constant","@default":"identifier"}}]],roxygen:[[/@\w+/,{cases:{"@roxygen":"tag","@eos":{token:"comment.doc",next:"@pop"},"@default":"comment.doc"}}],[/\s+/,{cases:{"@eos":{token:"comment.doc",next:"@pop"},"@default":"comment.doc"}}],[/.*/,{token:"comment.doc",next:"@pop"}]],numbers:[[/0[xX][0-9a-fA-F]+/,"number.hex"],[/-?(\d*\.)?\d+([eE][+\-]?\d+)?/,"number"]],operators:[[/<{1,2}-/,"operator"],[/->{1,2}/,"operator"],[/%[^%\s]+%/,"operator"],[/\*\*/,"operator"],[/%%/,"operator"],[/&&/,"operator"],[/\|\|/,"operator"],[/<>/,"operator"],[/[-+=&|!<>^~*/:$]/,"operator"]],strings:[[/'/,"string.escape","@stringBody"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/\\./,{cases:{"@special":"string","@default":"error-token"}}],[/'/,"string.escape","@popall"],[/./,"string"]],dblStringBody:[[/\\./,{cases:{"@special":"string","@default":"error-token"}}],[/"/,"string.escape","@popall"],[/./,"string"]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/sb/sb.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/sb/sb",["require","exports"],(function(e,o){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.conf={comments:{lineComment:"'"},brackets:[["(",")"],["[","]"],["If","EndIf"],["While","EndWhile"],["For","EndFor"],["Sub","EndSub"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]}]},o.language={defaultToken:"",tokenPostfix:".sb",ignoreCase:!0,brackets:[{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"keyword.tag-if",open:"If",close:"EndIf"},{token:"keyword.tag-while",open:"While",close:"EndWhile"},{token:"keyword.tag-for",open:"For",close:"EndFor"},{token:"keyword.tag-sub",open:"Sub",close:"EndSub"}],keywords:["Else","ElseIf","EndFor","EndIf","EndSub","EndWhile","For","Goto","If","Step","Sub","Then","To","While"],tagwords:["If","Sub","While","For"],operators:[">","<","<>","<=",">=","And","Or","+","-","*","/","="],identifier:/[a-zA-Z_][\w]*/,symbols:/[=><:+\-*\/%\.,]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},[/(@identifier)(?=[.])/,"type"],[/@identifier/,{cases:{"@keywords":{token:"keyword.$0"},"@operators":"operator","@default":"variable.name"}}],[/([.])(@identifier)/,{cases:{$2:["delimiter","type.member"],"@default":""}}],[/\d*\.\d+/,"number.float"],[/\d+/,"number"],[/[()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":"delimiter"}}],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"]],whitespace:[[/[ \t\r\n]+/,""],[/(\').*$/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"C?/,"string","@pop"]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/scheme/scheme.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/scheme/scheme",["require","exports"],(function(e,o){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.conf={comments:{lineComment:";",blockComment:["#|","|#"]},brackets:[["(",")"],["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},o.language={defaultToken:"",ignoreCase:!0,tokenPostfix:".scheme",brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],keywords:["case","do","let","loop","if","else","when","cons","car","cdr","cond","lambda","lambda*","syntax-rules","format","set!","quote","eval","append","list","list?","member?","load"],constants:["#t","#f"],operators:["eq?","eqv?","equal?","and","or","not","null?"],tokenizer:{root:[[/#[xXoObB][0-9a-fA-F]+/,"number.hex"],[/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/,"number.float"],[/(?:\b(?:(define|define-syntax|define-macro))\b)(\s+)((?:\w|\-|\!|\?)*)/,["keyword","white","variable"]],{include:"@whitespace"},{include:"@strings"},[/[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/,{cases:{"@keywords":"keyword","@constants":"constant","@operators":"operators","@default":"identifier"}}]],comment:[[/[^\|#]+/,"comment"],[/#\|/,"comment","@push"],[/\|#/,"comment","@pop"],[/[\|#]/,"comment"]],whitespace:[[/[ \t\r\n]+/,"white"],[/#\|/,"comment","@comment"],[/;.*$/,"comment"]],strings:[[/"$/,"string","@popall"],[/"(?=.)/,"string","@multiLineString"]],multiLineString:[[/[^\\"]+$/,"string","@popall"],[/[^\\"]+/,"string"],[/\\./,"string.escape"],[/"/,"string","@popall"],[/\\$/,"string"]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/shell/shell.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/shell/shell",["require","exports"],(function(e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.conf={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}]},r.language={defaultToken:"",ignoreCase:!0,tokenPostfix:".shell",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["if","then","do","else","elif","while","until","for","in","esac","fi","fin","fil","done","exit","set","unset","export","function"],builtins:["ab","awk","bash","beep","cat","cc","cd","chown","chmod","chroot","clear","cp","curl","cut","diff","echo","find","gawk","gcc","get","git","grep","hg","kill","killall","ln","ls","make","mkdir","openssl","mv","nc","node","npm","ping","ps","restart","rm","rmdir","sed","service","sh","shopt","shred","source","sort","sleep","ssh","start","stop","su","sudo","svn","tee","telnet","top","touch","vi","vim","wall","wc","wget","who","write","yes","zsh"],symbols:/[=>"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}]},t.language={defaultToken:"",tokenPostfix:".aes",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["contract","library","entrypoint","function","stateful","state","hash","signature","tuple","list","address","string","bool","int","record","datatype","type","option","oracle","oracle_query","Call","Bits","Bytes","Oracle","String","Crypto","Address","Auth","Chain","None","Some","bits","bytes","event","let","map","private","public","true","false","var","if","else","throw"],operators:["=",">","<","!","~","?","::",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,"number.hex"],[/0[0-7']*[0-7](@integersuffix)/,"number.octal"],[/0[bB][0-1']*[0-1](@integersuffix)/,"number.binary"],[/\d[\d']*\d(@integersuffix)/,"number"],[/\d(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}}})); -------------------------------------------------------------------------------- /public/vs/basic-languages/xml/xml.js: -------------------------------------------------------------------------------- 1 | /*!----------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * monaco-languages version: 1.10.0(1b4729c63bdb0d1e06d4e637e5c3977ddeb714dd) 4 | * Released under the MIT license 5 | * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md 6 | *-----------------------------------------------------------------------------*/ 7 | DEFINE("vs/basic-languages/xml/xml",["require","exports"],(function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.conf={comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["<",">"]],autoClosingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],surroundingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}]},t.language={defaultToken:"",tokenPostfix:".xml",ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,""],{include:"@whitespace"},[/(<)(@qualifiedName)/,[{token:"delimiter"},{token:"tag",next:"@tag"}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:"delimiter"},{token:"tag"},"",{token:"delimiter"}]],[/(<\?)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/(<\!)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/<\!\[CDATA\[/,{token:"delimiter.cdata",next:"@cdata"}],[/&\w+;/,"string.escape"]],cdata:[[/[^\]]+/,""],[/\]\]>/,{token:"delimiter.cdata",next:"@pop"}],[/\]/,""]],tag:[[/[ \t\r\n]+/,""],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,["attribute.name","","attribute.value"]],[/@qualifiedName/,"attribute.name"],[/\?>/,{token:"delimiter",next:"@pop"}],[/(\/)(>)/,[{token:"tag"},{token:"delimiter",next:"@pop"}]],[/>/,{token:"delimiter",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[//,{token:"comment",next:"@pop"}],[/ 21 | 22 | 23 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/main/components/select/lib.vue: -------------------------------------------------------------------------------- 1 | 33 | 82 | -------------------------------------------------------------------------------- /src/main/js/compress.js: -------------------------------------------------------------------------------- 1 | import { 2 | compressToEncodedURIComponent, 3 | decompressFromEncodedURIComponent, 4 | compress as _compress, 5 | decompress as _decompress, 6 | } from 'lz-string'; 7 | 8 | export function compressUrl (str) { 9 | return compressToEncodedURIComponent(str); 10 | } 11 | 12 | export function decompressUrl (str) { 13 | const result = decompressFromEncodedURIComponent(str); 14 | return result || decodeURIComponent(str); 15 | } 16 | 17 | export function compress (str) { 18 | return _compress(str); 19 | } 20 | 21 | export function decompress (str) { 22 | return _decompress(str); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/js/confirm.js: -------------------------------------------------------------------------------- 1 | 2 | // import {MessageBox} from 'element-ui'; 3 | // import 'element-ui/lib/theme-chalk/message-box.css'; 4 | 5 | 6 | // export function confirm () { 7 | // MessageBox.confirm('此操作将永久删除该文件, 是否继续?', '提示', { 8 | // confirmButtonText: '确定', 9 | // cancelButtonText: '取消', 10 | // type: 'warning' 11 | // }).then(() => { 12 | // this.$message({ 13 | // type: 'success', 14 | // message: '删除成功!' 15 | // }); 16 | // }).catch(() => { 17 | // this.$message({ 18 | // type: 'info', 19 | // message: '已取消删除' 20 | // }); 21 | // }); 22 | // } -------------------------------------------------------------------------------- /src/main/js/constant.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: chenzhongsheng 3 | * @Date: 2022-11-05 00:06:41 4 | * @Description: Coding something 5 | * @LastEditors: Please set LastEditors 6 | * @LastEditTime: 2025-02-06 23:16:19 7 | */ 8 | export const MENU_TYPE = { 9 | OPEN: 'open', 10 | LINK: 'link', 11 | FUNC: 'func', 12 | SPLIT: 'split' 13 | }; 14 | 15 | export const EVENT = { 16 | THEME_CHANGE: 'THEME_CHANGE', 17 | THEME_TOGGLE: 'THEME_TOGGLE', 18 | WORD_WRAP_CHANGE: 'WORD_WRAP_CHANGE', 19 | WORD_WRAP_TOGGLE: 'WORD_WRAP_TOGGLE', 20 | OPEN_LIB_CHOOSE: 'OPEN_LIB_CHOOSE', 21 | CLOSE_LIB_CHOOSE: 'CLOSE_LIB_CHOOSE', 22 | OPEN_ENV_CHOOSE: 'OPEN_ENV_CHOOSE', 23 | CLOSE_ENV_CHOOSE: 'CLOSE_ENV_CHOOSE', 24 | OPEN_LANG_CHOOSE: 'OPEN_LANG_CHOOSE', 25 | CLOSE_LANG_CHOOSE: 'CLOSE_LANG_CHOOSE', 26 | LANG_CHANGE: 'LANG_CHANGE', 27 | RESIZE: 'RESIZE', 28 | SET_CODE: 'SET_CODE', 29 | CODE_CHANGE: 'CODE_CHANGE', 30 | USE_CODE: 'USE_CODE', 31 | HTML_PANEL_CHANGE: 'HTML_PANEL_CHANGE', 32 | HTML_CONTENT_CHANGE: 'HTML_CONTENT_CHANGE', 33 | FONT_SIZE_CHANGE: 'FONT_SIZE_CHANGE', 34 | EDITOR_MOUNTED: 'EDITOR_MOUNTED', 35 | OPEN_CONFIRM: 'OPEN_CONFIRM', 36 | CLEAR_CODE: 'CLEAR_CODE', 37 | RESET_CODE: 'RESET_CODE', 38 | SAVE_CODE: 'SAVE_CODE', 39 | RUN_CODE: 'RUN_CODE', 40 | COPY_CODE: 'COPY_CODE', 41 | GENE_LINK: 'GENE_LINK', 42 | TOGGLE_LOG: 'TOGGLE_LOG', 43 | ADD_LIB: 'ADD_LIB', 44 | SET_ENV: 'SET_ENV', 45 | OPEN_DIFF: 'OPEN_DIFF', 46 | CURSOR_CHANGE: 'CURSOR_CHANGE', 47 | OPEN_FILE: 'OPEN_FILE', 48 | TOGGLE_FULLSCREEN: 'TOGGLE_FULLSCREEN', 49 | CONSOLE_VAL_CHANGE: 'CONSOLE_VAL_CHANGE', 50 | OPEN_CONFIG_CHOOSE: 'OPEN_CONFIG_CHOOSE', 51 | // drag相关 52 | DRAG_PERCENT: 'DRAG_PERCENT', 53 | DRAG_STATUS: 'DRAG_STATUS', 54 | 55 | // 配置有变化时 56 | JSBOX_CODE_CHANGE: 'JSBOX_CODE_CHANGE', 57 | 58 | CODE_MAP_INIT: 'CODE_MAP_INIT', 59 | STORE_CHANGE: 'STORE_CHANGE', 60 | 61 | CLEAR_LOG: 'CLEAR_LOG', 62 | 63 | RECOUNT_FILE_SIZE: 'RECOUNT_FILE_SIZE', 64 | 65 | SWITCH_CODE: 'SWITCH_CODE', 66 | }; 67 | 68 | export const TOOL_HEIGHT = 30; -------------------------------------------------------------------------------- /src/main/js/diaplay-language.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theajack/jsbox/1bf5b91d0601b5236ce529d9754329d00dc8754e/src/main/js/diaplay-language.js -------------------------------------------------------------------------------- /src/main/js/event.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Event BUS 4 | */ 5 | import {isUndf, isObject} from './util'; 6 | 7 | let events = {}; 8 | let EVENT = {}; 9 | 10 | export function checkEvent (name) { 11 | if (events[name]) { 12 | return true; 13 | } else { 14 | return false; 15 | } 16 | } 17 | 18 | function init (name) { 19 | if (isUndf(EVENT[name])) { 20 | events[name] = new _event(name); 21 | EVENT[name] = name; 22 | } 23 | } 24 | 25 | function regist (name, listener) { 26 | if (isObject(name)) { 27 | for (let key in name) { 28 | regist(key, name[key]); 29 | } 30 | return; 31 | } 32 | if (!checkEvent(name)) { 33 | init(name); 34 | } 35 | events[name].regist(listener); 36 | } 37 | 38 | function remove (name, listener) { 39 | if (!checkEvent(name)) { 40 | console.warn('removeEvent:未找到事件 ' + name); 41 | return false; 42 | } 43 | if (isUndf(listener)) {// 移除所有监听 44 | console.error('请传入要移除的listener'); 45 | return false; 46 | } else {// 移除单个监听 47 | let index = events[name].listeners.indexOf(listener); 48 | if (index === -1) { 49 | console.warn('removeEvent:未找到监听函数 ' + name); 50 | return false; 51 | } else { 52 | events[name].listeners.splice(index, 1); 53 | return true; 54 | } 55 | } 56 | } 57 | 58 | function emit (name, data) { 59 | if (checkEvent(name)) { 60 | events[name].emit(data); 61 | } else { 62 | // console.warn('错误的事件:' + name); 63 | } 64 | } 65 | 66 | class _event { 67 | constructor (name) { 68 | this.name = name; 69 | this.listeners = []; 70 | } 71 | regist (listener) { 72 | this.listeners.push(listener); 73 | } 74 | emit (data) { 75 | this.listeners.forEach(listener => { 76 | listener(data); 77 | }); 78 | } 79 | } 80 | 81 | export default { 82 | EVENT, // 事件枚举 83 | // init, // 初始化一个事件(注册一个发布者) // 初始化与注册和到一起 84 | emit, // 触发事件 85 | regist, // 注册一个监听者 86 | checkEvent, // 检查是否存在事件 87 | remove 88 | }; -------------------------------------------------------------------------------- /src/main/js/notebook.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: chenzhongsheng 3 | * @Date: 2025-01-22 11:16:21 4 | * @Description: Coding something 5 | */ 6 | import {compress, decompress} from './compress'; 7 | let storage = window.localStorage; 8 | 9 | export const TYPE = { 10 | CODE: 'code', 11 | THEME: 'theme', 12 | DRAG_PERCENT: 'drag_percent', 13 | DRAG_STATUS: 'drag_status', 14 | LANGUAGE: 'language', 15 | HTML_PANEL: 'html_panel', 16 | FONT_SIZE: 'font_size', 17 | HISTORY: 'history', 18 | SHOW_CODE_MAP: 'show_code_map', 19 | WORD_WRAP: 'word_wrap', 20 | }; 21 | 22 | const encodeList = [ 23 | TYPE.CODE, 24 | TYPE.HISTORY 25 | ]; 26 | 27 | function checkEncode (key, value, encode = true) { 28 | if (encodeList.indexOf(key) !== -1) { 29 | if (encode) { 30 | return compress(value); 31 | } 32 | return decompress(value); 33 | } 34 | return value; 35 | } 36 | 37 | export function read (key) { 38 | let value = storage.getItem(geneKey(key)); 39 | if (value === null) { 40 | return null; 41 | } 42 | let type = value.substr(0, value.indexOf(':')); 43 | value = value.substr(value.indexOf(':') + 1); 44 | value = checkEncode(key, value, false); 45 | if (type === 'number') { 46 | return parseFloat(value); 47 | } else if (type === 'boolean') { 48 | return value === 'true'; 49 | } else if (type === 'object') { 50 | return JSON.parse(value); 51 | } 52 | return value; 53 | } 54 | 55 | export function write (key, value) { 56 | let type = typeof value; 57 | if (type === 'object') { 58 | value = JSON.stringify(value); 59 | } else if (type !== 'string') { 60 | value = value.toString(); 61 | } 62 | value = checkEncode(key, value); 63 | value = `${type}:${value}`; 64 | storage.setItem(geneKey(key), value); 65 | } 66 | 67 | export function remove (key) { 68 | storage.removeItem(geneKey(key)); 69 | } 70 | 71 | function geneKey (key) { 72 | return key + '_jsbox'; 73 | } -------------------------------------------------------------------------------- /src/main/js/status.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: chenzhongsheng 3 | * @Date: 2025-01-22 11:16:21 4 | * @Description: Coding something 5 | */ 6 | import {THEME, LANG, DEFAULT_FONT_SIZE} from '../components/js/editor'; 7 | import {read, write, TYPE} from './notebook'; 8 | import event from './event'; 9 | import {EVENT} from './constant'; 10 | 11 | function generateStatus ({ 12 | def, 13 | name, 14 | emit 15 | }) { 16 | return { 17 | _value: null, 18 | get (storage) { 19 | if (storage === true) { 20 | return read(name); 21 | } 22 | if (this._value === null) { 23 | let v = read(name); 24 | this._value = v === null ? def : v; 25 | } 26 | return this._value; 27 | }, 28 | set (value, save = true, emitThis = true) { 29 | this.stash(value, false); 30 | if (save) { 31 | this.save(); 32 | } 33 | this.emit(emitThis); 34 | }, 35 | emit (emitThis = true) { 36 | if (emit && emitThis) 37 | event.emit(emit, this._value); 38 | }, 39 | stash (value, emitThis = true) { 40 | this._value = value; 41 | this.emit(emitThis); 42 | }, 43 | save () { 44 | write(name, this._value); 45 | }, 46 | init (value, save = false) { 47 | if (typeof value === 'undefined' || value === null || value === '') { 48 | value = this.get(); 49 | } 50 | this.set(value, save); 51 | } 52 | }; 53 | } 54 | 55 | export const theme = generateStatus({ 56 | def: THEME.DARK, 57 | name: TYPE.THEME, 58 | emit: EVENT.THEME_CHANGE 59 | }); 60 | export const wordWrap = generateStatus({ 61 | def: false, 62 | name: TYPE.WORD_WRAP, 63 | emit: EVENT.WORD_WRAP_CHANGE 64 | }); 65 | 66 | export const dragPercent = generateStatus({ 67 | def: 50, 68 | name: TYPE.DRAG_PERCENT, 69 | emit: EVENT.DRAG_PERCENT 70 | }); 71 | 72 | export const dragStatus = generateStatus({ 73 | def: false, 74 | name: TYPE.DRAG_STATUS, 75 | emit: EVENT.DRAG_STATUS 76 | }); 77 | 78 | export const code = generateStatus({ 79 | def: '', 80 | name: TYPE.CODE, 81 | emit: EVENT.SET_CODE 82 | }); 83 | 84 | export const language = generateStatus({ 85 | def: LANG.JAVASCRIPT, 86 | name: TYPE.LANGUAGE, 87 | emit: EVENT.LANG_CHANGE 88 | }); 89 | export const htmlLog = generateStatus({ 90 | def: true, 91 | name: TYPE.HTML_PANEL, 92 | emit: EVENT.HTML_PANEL_CHANGE 93 | }); 94 | export const fontSize = generateStatus({ 95 | def: DEFAULT_FONT_SIZE, 96 | name: TYPE.FONT_SIZE, 97 | emit: EVENT.FONT_SIZE_CHANGE 98 | }); -------------------------------------------------------------------------------- /src/main/js/style.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: chenzhongsheng 3 | * @Date: 2025-01-22 11:16:21 4 | * @Description: Coding something 5 | */ 6 | 7 | import 'easy-icon'; 8 | import $ from 'easy-dom-util'; 9 | import '../style/index.less'; 10 | import {TOOL_HEIGHT} from './constant'; 11 | import {IsPC} from './util'; 12 | 13 | $.reportStyle({ 14 | func: initStyle, 15 | usePool: true 16 | }); 17 | 18 | $.initStylePool(); 19 | 20 | function initStyle () { 21 | let size = $.windowSize(); 22 | // let barWidth = 4; 23 | 24 | return /* css */` 25 | .jsbox-main-panel{ 26 | height: ${size.height - TOOL_HEIGHT}px; 27 | display: flex; 28 | } 29 | .jsbox-tool-w { 30 | height: ${TOOL_HEIGHT}px; 31 | line-height: ${TOOL_HEIGHT}px; 32 | background-color: #f6f6f6; 33 | } 34 | ::-webkit-scrollbar { 35 | width:5px; 36 | cursor: pointer; 37 | height: 5px; 38 | } 39 | ${IsPC() ? ` 40 | ::-webkit-scrollbar-button { 41 | display: none; 42 | } 43 | ::-webkit-scrollbar-track { 44 | display: none; 45 | } 46 | ::-webkit-scrollbar-track-piece { 47 | background-color:#88888811; 48 | } 49 | ::-webkit-scrollbar-thumb{ 50 | background-color:#88888866; 51 | cursor: pointer; 52 | } 53 | ::-webkit-scrollbar-thumb:hover{ 54 | background-color:#88888888; 55 | cursor: pointer; 56 | }` : ''} 57 | `; 58 | } -------------------------------------------------------------------------------- /src/main/log/func.js: -------------------------------------------------------------------------------- 1 | import tool from './tool'; 2 | import TYPE from './type'; 3 | let state = TYPE.all; 4 | let laseEl; 5 | 6 | function gc (el, type) { 7 | let cls = 'log-func log-' + type; 8 | if (type === state) { 9 | cls += ' active'; 10 | } 11 | return tool.create('div', cls, type[0].toUpperCase(), function () { 12 | if (type === state) { 13 | return; 14 | } 15 | if (laseEl) {laseEl.className = laseEl.className.replace('tc-active', '').trim();} 16 | state = type; 17 | laseEl = this; 18 | this.className += ' tc-active'; 19 | let childs = el.children; 20 | if (state === TYPE.all) { 21 | for (var i = 0; i < childs.length; i++) { 22 | childs[i].style.display = 'block'; 23 | } 24 | } else { 25 | for (var i = 0; i < childs.length; i++) { 26 | if (childs[i].className.indexOf('tc-log-' + type) !== -1) { 27 | childs[i].style.display = 'block'; 28 | } else { 29 | childs[i].style.display = 'none'; 30 | } 31 | } 32 | } 33 | }); 34 | } 35 | export function generateFunc (log) { 36 | let el = log.blockList; 37 | laseEl = gc(el, TYPE.all); 38 | let array = [ 39 | tool.create('div', 'log-func log-clear', '+', () => { 40 | log.blockList.innerHTML = ''; 41 | // console.log('Console all clear'); 42 | }), 43 | gc(el, TYPE.error), 44 | gc(el, TYPE.warn), 45 | gc(el, TYPE.info), 46 | gc(el, TYPE.log), 47 | // gc(el, TYPE.tc), 48 | laseEl 49 | ]; 50 | let title = ['清空log(ctrl+e)', 'error', 'warning', 'info', 'log', '显示全部']; 51 | array.forEach((item, index) => { 52 | item.title = title[index]; 53 | }); 54 | return tool.append( 55 | tool.create('div', 'log-funcs'), 56 | array 57 | ); 58 | } 59 | export function checkType (el, type) { 60 | if (state !== TYPE.all && type !== state) { 61 | el.style.display = 'none'; 62 | } 63 | } -------------------------------------------------------------------------------- /src/main/log/hackConsole.js: -------------------------------------------------------------------------------- 1 | import obejectViewer from './objectViewer'; 2 | import valueViewer from './valueViewer'; 3 | import TYPE from './type'; 4 | let hconsole = { 5 | onConsole: function () {} 6 | }; 7 | function hackConsole () { 8 | // 定义一个输出运行js结果的函数 9 | // window.console.tc = window.console.log; 10 | // window.console.html = window.console.log; 11 | TYPE.list.forEach((name) => { 12 | hack(name); 13 | }); 14 | window.addEventListener('error', function (err) { 15 | console.error(`${err.constructor.name}:\n${err.message || err.error.stack}`); 16 | }, false); 17 | return hconsole; 18 | } 19 | 20 | function hack (name) { 21 | let f = window.console[name]; 22 | console['_' + name] = f; 23 | window.console[name] = function (...arg) { 24 | f(...arg); 25 | if (arg.length == 0) { 26 | return; 27 | } 28 | if (arg.length === 1) { 29 | arg = arg[0]; 30 | if (obejectViewer.test(arg)) { 31 | hconsole.onConsole(obejectViewer(arg, name), arg, name); 32 | } else { 33 | hconsole.onConsole(valueViewer(arg, name), arg, name); 34 | } 35 | } else { 36 | renderMutil(arg, name); 37 | } 38 | }; 39 | } 40 | 41 | function renderMutil (arg, name) { 42 | let str = ''; 43 | let objArr = []; 44 | for (var i = 0; i < arg.length; i++) { 45 | let value = arg[i]; 46 | if (obejectViewer.test(value)) { 47 | objArr.push(value); 48 | str += '[' + spanStr('key', 'Object' + (objArr.length)) + '] '; 49 | } else { 50 | str += generateHtml(value) + ' '; 51 | } 52 | } 53 | hconsole.onConsole(valueViewer(str, name, true), str, name); 54 | objArr.forEach((obj, i) => { 55 | hconsole.onConsole(obejectViewer(obj, 'tc', 'Object' + (i + 1)), obj, name); 56 | }); 57 | } 58 | 59 | function generateHtml (value) { 60 | let str = ''; 61 | switch (typeof value) { 62 | case 'undefined': str = spanStr('key', 'undefined'); break; 63 | case 'object': str = spanStr('key', 'null'); break;// 只可能是null 64 | case 'string': str = spanStr('string', value); break; 65 | case 'number': str = spanStr('number', value); break; 66 | case 'boolean': str = spanStr('key', value); break; 67 | case 'function': str = spanStr('def', value.toString()); break; 68 | default :;break; 69 | } 70 | return str; 71 | } 72 | 73 | function spanStr (cls, text) { 74 | return '' + text + ''; 75 | } 76 | 77 | export default hackConsole; -------------------------------------------------------------------------------- /src/main/log/igonre.js: -------------------------------------------------------------------------------- 1 | export default [ 2 | `ErrorEvent: 3 | ResizeObserver loop limit exceeded`, 4 | 'Could not find source file', 5 | 'Cannot read property \'getText\' of null' 6 | ]; -------------------------------------------------------------------------------- /src/main/log/tool.js: -------------------------------------------------------------------------------- 1 | export default { 2 | create (tag, cls, text, click) { 3 | let el = document.createElement(tag); 4 | if (cls) { 5 | el.className = cls.split(' ').map((item) => { 6 | return 'tc-' + item; 7 | }).join(' '); 8 | } 9 | if (text) { 10 | if (el.tagName === 'INPUT') { 11 | el.value = text; 12 | } else { 13 | el.innerText = text; 14 | } 15 | }; 16 | if (click) {el.addEventListener('click', click);} 17 | return el; 18 | }, 19 | attr (el, name, value) { 20 | if (typeof value === 'undefined') { 21 | return el.getAttribute(name); 22 | } 23 | el.setAttribute(name, value); 24 | return el; 25 | }, 26 | append (el, array) { 27 | if (array instanceof Array) { 28 | array.forEach((item) => { 29 | el.appendChild(item); 30 | }); 31 | } else { 32 | el.appendChild(array); 33 | } 34 | return el; 35 | }, 36 | addStyle (css, id) { 37 | let style = this.create('style'); 38 | style.innerHTML = css; 39 | if (id) { 40 | let s = document.getElementById(id); 41 | if (s !== null) { 42 | return s; 43 | } 44 | this.attr(style, 'id', id); 45 | } 46 | window.document.head.appendChild(style); 47 | return style; 48 | }, 49 | hasClass (el, name) { 50 | return getRegExp(name).test(el.className); 51 | }, 52 | addClass (el, name) { 53 | check(name, (cls) => { 54 | if (!this.hasClass(el, cls)) { 55 | if (el.className === '') { 56 | el.className = cls; 57 | } else { 58 | el.className += ' ' + cls; 59 | } 60 | } 61 | }); 62 | return el; 63 | }, 64 | rmClass (el, name) { 65 | if (this.hasClass(el, name)) { 66 | el.className = el.className.replace(getRegExp(name), ' ').trim(); 67 | } 68 | return el; 69 | }, 70 | replaceClass (arg, a, b) { 71 | check(arg, (el) => { 72 | if (this.hasClass(el, a)) { 73 | el.className = el.className.replace(getRegExp(a), ' ' + b + ' ').trim(); 74 | } else { 75 | this.addClass(el, b); 76 | } 77 | }); 78 | return arg; 79 | }, 80 | active (...arg) { 81 | check(arg, (el) => { 82 | this.addClass(el, 'tc-active'); 83 | }); 84 | }, 85 | inactive (...arg) { 86 | check(arg, (el) => { 87 | this.rmClass(el, 'tc-active'); 88 | }); 89 | } 90 | }; 91 | 92 | function check (arg, cb) { 93 | if (arg instanceof Array) { 94 | for (var i = 0; i < arg.length; i++) { 95 | cb(arg[i], i); 96 | } 97 | } else { 98 | cb(arg, 0); 99 | } 100 | } 101 | 102 | function getRegExp (name) { 103 | return new RegExp('(^| )' + name + '($| )'); 104 | } -------------------------------------------------------------------------------- /src/main/log/type.js: -------------------------------------------------------------------------------- 1 | let list = []; 2 | let json = { 3 | all: 'all', 4 | error: 'error', 5 | warn: 'warn', 6 | log: 'log', 7 | info: 'info', 8 | tc: 'tc', 9 | html: 'html' 10 | }; 11 | for (var k in json) { 12 | if (json[k] !== json.all) { 13 | list.push(json[k]); 14 | } 15 | } 16 | json.list = list; 17 | export default json; -------------------------------------------------------------------------------- /src/main/log/util.js: -------------------------------------------------------------------------------- 1 | import tool from './tool'; 2 | // import TYPE from './type' 3 | export function generateLogBlock (type) { 4 | let block = tool.create('div', 'log-block log-' + type); 5 | let hide = tool.create('div', 'log-block-hide', '', () => { 6 | block.parentNode.removeChild(block); 7 | }); 8 | tool.append(hide, tool.create('span', '', '+')); 9 | tool.append(block, hide); 10 | return block; 11 | } 12 | export function copyText (str) { 13 | let input = document.getElementById('_copy_input_'); 14 | if (!input) { 15 | input = document.createElement('input'); 16 | input.setAttribute('type', 'text'); 17 | input.setAttribute( 18 | 'style', 19 | 'height:10px;position:fixed;top:-100px;opacity:0;' 20 | ); 21 | input.setAttribute('id', '_copy_input_'); 22 | document.body.appendChild(input); 23 | } 24 | input.value = str; 25 | input.select(); 26 | 27 | try { 28 | if (document.execCommand('Copy')) { 29 | console.log('复制内容成功'); 30 | } else { 31 | console.log('复制内容失败'); 32 | } 33 | } catch (err) { 34 | console.error('浏览器不支持复制功能'); 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /src/main/log/valueViewer.js: -------------------------------------------------------------------------------- 1 | import tool from './tool'; 2 | import {generateLogBlock, copyText} from './util'; 3 | const STRING_MAX = 300; 4 | 5 | function valueViewer (value, type, isHtml) { 6 | return (new ValuetViewer(value, type, isHtml))._block; 7 | } 8 | 9 | class ValuetViewer { 10 | constructor (value, type, isHtml) { 11 | if (isHtml) { 12 | this.html = true; 13 | this._block = generateLogBlock(type); 14 | let content = tool.create('div'); 15 | tool.append(this._block, content); 16 | content.innerHTML = value.toString(); 17 | tool.append(content, tool.create('span', 'log-copy', 'copy', () => { 18 | copyText(content.innerText.replace(/ copy$/, '')); 19 | })); 20 | } else { 21 | this._block = generateLogBlock(type); 22 | tool.append(this._block, generateDiv(value, type)); 23 | } 24 | } 25 | } 26 | 27 | {/* 28 | 29 | */} 30 | function generateDiv (value, type) { 31 | let div = tool.create('div'); 32 | switch (typeof value) { 33 | case 'undefined': generateLogSpan(div, 'undefined'); break; 34 | case 'object': generateLogSpan(div, 'null'); break;// 只可能是null 35 | case 'string': generateLogSpan(div, checkMaxLength(value), 'obj-string'); break; 36 | case 'number': generateLogSpan(div, value, 'obj-number'); break; 37 | case 'boolean': generateLogSpan(div, value); break; 38 | case 'function': generateLogSpan(div, checkMaxLength(value.toString()), 'obj-def'); break; 39 | default :generateLogSpan(div, 'undefined'); break; 40 | } 41 | tool.append(div, tool.create('span', 'log-copy', 'copy', () => { 42 | copyText(value); 43 | })); 44 | let iconClass = ''; 45 | switch (type) { 46 | case 'info': iconClass = 'ei-info-sign'; break; 47 | case 'error': iconClass = 'ei-remove-sign'; break; 48 | case 'warn': iconClass = 'ei-exclamation-sign'; break; 49 | default :break; 50 | } 51 | if (iconClass) { 52 | let icon = tool.create('i'); 53 | tool.addClass(icon, iconClass + ' tc-log-icon'); 54 | div.insertBefore(icon, div.children[0]); 55 | } 56 | return div; 57 | } 58 | 59 | function checkMaxLength (str) { 60 | if (str.length > STRING_MAX) { 61 | // tool.append(div,tool.create('span','log-copy','copy',()=>{ 62 | // copyText(str); 63 | // })) 64 | return str.substring(0, STRING_MAX) + '...'; 65 | } 66 | return str; 67 | } 68 | 69 | function generateLogSpan (div, str, cls) { 70 | let span = tool.create('span', cls || 'obj-key', str.toString()); 71 | if (div.children.length === 0) { 72 | div.appendChild(span); 73 | } else { 74 | div.insertBefore(span, div.children[0]); 75 | } 76 | } 77 | 78 | export default valueViewer; -------------------------------------------------------------------------------- /src/main/log/version.js: -------------------------------------------------------------------------------- 1 | export default '1.1.4'; -------------------------------------------------------------------------------- /src/main/style/editor.less: -------------------------------------------------------------------------------- 1 | .monaco-editor .suggest-widget{ 2 | border: none!important; 3 | } 4 | 5 | .cc-console-container{ 6 | border: none!important; 7 | font-size: 12px!important; 8 | background-color: transparent!important; 9 | } 10 | .cc-obj-def { 11 | color: var(--color)!important; 12 | font-style: italic; 13 | } -------------------------------------------------------------------------------- /src/main/style/element.less: -------------------------------------------------------------------------------- 1 | .dialog-width{ 2 | width: 80%; 3 | max-width: 800px; 4 | } 5 | .jx-select-dialog{ 6 | .el-dialog{ 7 | margin: 0 auto; 8 | margin-top: 0!important; 9 | .dialog-width(); 10 | } 11 | .el-dialog__header{ 12 | display: none; 13 | } 14 | .el-dialog__footer{ 15 | position: absolute; 16 | top: 100%; 17 | left: 50%; 18 | transform: translateX(-50%); 19 | padding: 0; 20 | font-size: 20px; 21 | color: #fff; 22 | i{ 23 | background-color: #0003; 24 | display: inline-block; 25 | width: 55px; 26 | height: 30px; 27 | text-align: center; 28 | vertical-align: middle; 29 | line-height: 30px; 30 | margin-top: 15px; 31 | margin-left: 20px; 32 | border-radius: 2px; 33 | cursor: pointer; 34 | &:hover{ 35 | background-color: #4443; 36 | } 37 | &:first-child{ 38 | margin-left: 0px; 39 | } 40 | } 41 | } 42 | .el-dialog__body{ 43 | padding: 0; 44 | } 45 | 46 | .el-input__inner,.el-select .el-input.is-focus .el-input__inner { 47 | border:none; 48 | border-radius: 0; 49 | } 50 | .dialog-wrapper{ 51 | .dialog-width(); 52 | } 53 | .dialog-wrapper{ 54 | position: fixed; 55 | height: auto; 56 | z-index: 4000; 57 | left: 50%; 58 | top: 0; 59 | transform: translateX(-50%); 60 | } 61 | .el-dialog__wrapper{ 62 | position: absolute; 63 | } 64 | } 65 | .jx-select-dd{ 66 | &.el-select-dropdown{ 67 | .dialog-width(); 68 | margin-top: 0!important; 69 | border-radius: 0; 70 | } 71 | .el-select-dropdown__wrap { 72 | max-height: 400px; 73 | } 74 | .popper__arrow{ 75 | display: none; 76 | } 77 | } 78 | .el-message{ 79 | left: auto; 80 | right: -180px; 81 | width: 400px; 82 | .el-message__content{ 83 | word-break: break-all; 84 | 85 | } 86 | } -------------------------------------------------------------------------------- /src/main/style/import.less: -------------------------------------------------------------------------------- 1 | 2 | #SetApp{ 3 | width:0; 4 | } 5 | .el-select{ 6 | width:100%; 7 | } 8 | 9 | .lib-name{ 10 | float: left; 11 | font-weight: bold; 12 | } 13 | .lib-url{ 14 | float: left;color: #aaa; font-size: 12px; margin-left: 10px; 15 | } 16 | .lib-version{ 17 | margin-right: 15px; 18 | float: right; color: #8492a6; font-size: 13px 19 | } 20 | @media (max-width: 700px){ 21 | .el-dialog{ 22 | width: 98%; 23 | } 24 | .lib-url{ 25 | display: none; 26 | 27 | } 28 | } -------------------------------------------------------------------------------- /src/main/style/jx-ui.less: -------------------------------------------------------------------------------- 1 | .jx-input, .jx-select, .jx-textarea, .jx-ui input, .jx-ui select, .jx-ui textarea { 2 | color: #222; 3 | width: 200px; 4 | height: 30px; 5 | border-radius: 2px; 6 | border: 1px solid #666; 7 | padding: 0 8px; 8 | outline: none; 9 | font-size: 14px; 10 | } 11 | .jx-textarea, .jx-ui textarea{ 12 | min-height: 150px; 13 | padding: 8px; 14 | } 15 | .jx-input.jx-full, .jx-textarea, .jx-ui input.jx-full, .jx-ui textarea { 16 | width: 100%; 17 | } 18 | .jx-block { 19 | margin: 10px 0; 20 | } 21 | 22 | .jx-button, .jx-ui button{ 23 | border-radius: 2px; 24 | padding: 0 10px; 25 | height: 30px; 26 | line-height: 30px; 27 | font-size: 14px; 28 | outline: none; 29 | border: 1px solid #666; 30 | cursor: pointer; 31 | } 32 | .jx-button:active, .jx-ui button:active{ 33 | transform: scale(0.96); 34 | } -------------------------------------------------------------------------------- /src/main/style/menu.vue.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theajack/jsbox/1bf5b91d0601b5236ce529d9754329d00dc8754e/src/main/style/menu.vue.less -------------------------------------------------------------------------------- /src/npm/constant.js: -------------------------------------------------------------------------------- 1 | 2 | export const PARAM = { 3 | THEME: 'theme', 4 | CODE: 'code', 5 | LIB: 'lib', 6 | CONFIG: 'config', 7 | ID: 'id', 8 | ENV: 'env', 9 | RUN: 'run', 10 | REMIND: 'remind', 11 | MES: 'mes', 12 | LANG: 'lang' 13 | }; 14 | 15 | export const THEME = { 16 | DARK: 'dark', 17 | LIGHT: 'light', 18 | }; 19 | 20 | export const LIB = { 21 | 'jquery': 'jquery', 22 | 'vue': 'vue', 23 | 'react': 'react', 24 | 'reactdom': 'react-dom', 25 | 'angularjs': 'angularjs', 26 | 'vuex': 'vuex', 27 | 'redux': 'redux', 28 | 'loadsh': 'loadsh', 29 | 'virtualdom': 'virtual-dom', 30 | 'nodehtmlparser': 'node-html-parser', 31 | 'jest': 'jest', 32 | 'mocha': 'mocha', 33 | 'moment': 'moment', 34 | 'dayjs': 'dayjs', 35 | 'underscore': 'underscore', 36 | 'axios': 'axios', 37 | 'qrcode': 'qrcode', 38 | 'backbone': 'backbone', 39 | 'jsxlsx': 'js-xlsx', 40 | 'recast': 'recast', 41 | 'cnchar': 'cnchar', 42 | 'cncharpoly': 'cnchar-poly', 43 | 'cncharorder': 'cnchar-order', 44 | 'cnchartrad': 'cnchar-trad', 45 | 'cnchardraw': 'cnchar-draw', 46 | 'cncharall': 'cnchar-all', 47 | 'easyicon': 'easy-icon', 48 | 'elementui': 'element-ui', 49 | 'elementuistyle': 'element-ui-style' 50 | }; 51 | 52 | export const ENV = { 53 | 'elementui': 'element-ui', 54 | 'cnchar': 'cnchar', 55 | 'vue': 'vue', 56 | 'react': 'react', 57 | 'angularjs': 'angularjs' 58 | }; 59 | 60 | // var a = {}; 61 | // Object.keys(jsbox_libs).forEach(item => { 62 | // a[item.replace(/-/g, '')] = item; 63 | // }); 64 | // JSON.stringify(a, null, 4); -------------------------------------------------------------------------------- /src/npm/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jsbox-util", 3 | "version": "1.0.4", 4 | "description": "在线运行代码的环境,可供第三方接入", 5 | "main": "jsbox.min.js", 6 | "unpkg": "jsbox.min.js", 7 | "jsdelivr": "jsbox.min.js", 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/theajack/jsbox.git" 14 | }, 15 | "keywords": [ 16 | "JXBox", 17 | "在线js", 18 | "在线编辑器", 19 | "webIDE" 20 | ], 21 | "author": "theajack", 22 | "license": "MIT", 23 | "bugs": { 24 | "url": "https://github.com/theajack/jsbox/issues" 25 | }, 26 | "homepage": "https://github.com/theajack/jsbox#readme" 27 | } -------------------------------------------------------------------------------- /src/style/import.css: -------------------------------------------------------------------------------- 1 | 2 | #SetApp{ 3 | width:0; 4 | } 5 | .el-select{ 6 | width:100%; 7 | } 8 | 9 | .lib-name{ 10 | float: left; 11 | font-weight: bold; 12 | } 13 | .lib-url{ 14 | float: left;color: #aaa; font-size: 12px; margin-left: 10px; 15 | } 16 | .lib-version{ 17 | margin-right: 15px; 18 | float: right; color: #8492a6; font-size: 13px 19 | } 20 | @media (max-width: 700px){ 21 | .el-dialog{ 22 | width: 98%; 23 | } 24 | .lib-url{ 25 | display: none; 26 | 27 | } 28 | } -------------------------------------------------------------------------------- /src/style/index.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theajack/jsbox/1bf5b91d0601b5236ce529d9754329d00dc8754e/src/style/index.css -------------------------------------------------------------------------------- /test-md.html: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Markdown to HTML 13 | 14 | 15 | 16 | 17 | 18 |
19 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /webpack-config/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theajack/jsbox/1bf5b91d0601b5236ce529d9754329d00dc8754e/webpack-config/.DS_Store -------------------------------------------------------------------------------- /webpack-config/build-npm.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: tackchen 3 | * @Date: 2020-03-27 23:13:02 4 | * @Description: Coding something 5 | */ 6 | const path = require('path'); 7 | const CopyWebpackPlugin = require('copy-webpack-plugin'); 8 | const VueLoaderPlugin = require('vue-loader/lib/plugin'); 9 | 10 | module.exports = () => { 11 | return { 12 | mode: 'production', 13 | entry: path.resolve('./', 'src/npm/index.js'), 14 | output: { 15 | path: path.resolve('./', 'npm'), 16 | filename: 'jsbox.min.js', 17 | library: 'JSBox', 18 | libraryTarget: 'umd', 19 | libraryExport: 'default', 20 | }, 21 | module: { 22 | rules: [ 23 | { 24 | test: /(.js)$/, 25 | use: [{ 26 | loader: 'babel-loader', 27 | }] 28 | }, { 29 | enforce: 'pre', 30 | test: /\.vue$/, 31 | loader: 'eslint-loader', 32 | exclude: /node_modules/ 33 | }, { 34 | test: /\.vue$/, 35 | loader: 'vue-loader', 36 | options: { 37 | loaders: { 38 | js: 'babel-loader', 39 | }, 40 | }, 41 | } 42 | ] 43 | }, 44 | plugins: [ 45 | new CopyWebpackPlugin([ 46 | {from: 'src/npm/package.json'}, 47 | {from: 'src/npm/index.d.ts'}, 48 | {from: 'LICENSE'}, 49 | {from: 'README.md'}, 50 | ]), 51 | new VueLoaderPlugin() 52 | ] 53 | }; 54 | }; 55 | -------------------------------------------------------------------------------- /webpack-config/build-v1.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const gulp = require('gulp'); 3 | const babel = require('gulp-babel'); 4 | function initRes () { 5 | gulp.src('public/env.js') 6 | .pipe(babel({presets: ['@babel/env']})) 7 | .pipe(gulp.dest('cdn/v1')); 8 | 9 | gulp.src('public/lib.js') 10 | .pipe(gulp.dest('cdn/v1')); 11 | } 12 | initRes(); 13 | 14 | module.exports = () => { 15 | return { 16 | mode: 'production', 17 | entry: path.resolve('./', 'src/v1'), 18 | output: { 19 | path: path.resolve('./', 'cdn/v1'), 20 | filename: 'bundle.js', 21 | }, 22 | module: { 23 | rules: [ 24 | { 25 | test: /(.js)$/, 26 | use: [{ 27 | loader: 'babel-loader', 28 | }] 29 | }, { 30 | enforce: 'pre', 31 | test: /\.vue$/, 32 | loader: 'eslint-loader', 33 | exclude: /node_modules/ 34 | }, { 35 | test: /(.js)$/, 36 | use: [{ 37 | loader: path.resolve('./', 'helper/zipcssinjs-loader.js') 38 | }], 39 | exclude: /node_modules/, 40 | include: /(tacl-ui)|(easy-dom)/ 41 | }, { 42 | test: /\.css$/, 43 | use: ['style-loader', 'css-loader'], 44 | }, { 45 | test: /\.(woff|ttf)$/, 46 | loader: 'url-loader', 47 | options: { 48 | limit: 50000, 49 | }, 50 | }, 51 | ] 52 | } 53 | }; 54 | }; 55 | -------------------------------------------------------------------------------- /webpack-config/build.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: tackchen 3 | * @Date: 2022-05-18 11:41:30 4 | * @Description: Coding something 5 | */ 6 | const path = require('path'); 7 | const gulp = require('gulp'); 8 | const babel = require('gulp-babel'); 9 | const VueLoaderPlugin = require('vue-loader/lib/plugin'); 10 | const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // 分离css 11 | const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin'); 12 | const {transEs6ByBabel} = require('../helper/transform-env-lib'); 13 | // const CopyWebpackPlugin = require('copy-webpack-plugin'); 14 | 15 | function initRes () { 16 | gulp.src('public/css/*.css') 17 | .pipe(gulp.dest('cdn/assets/css/editor')); 18 | gulp.src('public/js/*.js') 19 | .pipe(gulp.dest('cdn/assets/js/editor')); 20 | gulp.src('public/lib/*.js') 21 | .pipe(gulp.dest('cdn/assets/js/lib')); 22 | gulp.src('public/lib/env.js') 23 | .pipe(babel({presets: ['@babel/env']})) 24 | .pipe(gulp.dest('cdn/assets/js/lib')); 25 | gulp.src('public/vs/**/*') 26 | .pipe(gulp.dest('cdn/assets/js/vs')); 27 | gulp.src('cdn/index.html') 28 | .pipe(gulp.dest('docs')); 29 | } 30 | initRes(); 31 | 32 | transEs6ByBabel(); 33 | 34 | module.exports = () => { 35 | return { 36 | mode: 'production', 37 | entry: path.resolve('./', 'src'), 38 | output: { 39 | path: path.resolve('./', 'docs'), 40 | filename: 'main.min.js', 41 | }, 42 | module: { 43 | rules: [ 44 | { 45 | test: /(.js)$/, 46 | use: [{ 47 | loader: 'babel-loader', 48 | }] 49 | }, { 50 | // enforce: 'pre', 51 | // test: /\.vue$/, 52 | // loader: 'eslint-loader', 53 | // exclude: /node_modules/ 54 | // }, { 55 | test: /\.css$/, 56 | use: [ MiniCssExtractPlugin.loader, 'css-loader'], 57 | }, { 58 | test: /\.less$/, 59 | use: [ MiniCssExtractPlugin.loader, 'css-loader', 'less-loader'], 60 | }, { 61 | test: /\.(woff|ttf)$/, 62 | loader: 'url-loader', 63 | options: { 64 | limit: 50000, 65 | }, 66 | }, { 67 | test: /\.vue$/, 68 | loader: 'vue-loader', 69 | options: { 70 | loaders: { 71 | js: 'babel-loader', 72 | }, 73 | }, 74 | }, { 75 | test: /\.html$/, 76 | loader: 'html-loader', 77 | } 78 | ] 79 | }, 80 | plugins: [ 81 | new VueLoaderPlugin(), 82 | new MiniCssExtractPlugin({ 83 | filename: '[name].min.css', 84 | }), 85 | new OptimizeCssAssetsPlugin() 86 | ] 87 | }; 88 | }; 89 | -------------------------------------------------------------------------------- /webpack-config/dev-npm.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | // const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); 3 | module.exports = { 4 | mode: 'development', 5 | entry: path.resolve('./', 'public/dev-npm.js'), 6 | output: { 7 | path: path.resolve('./', 'public'), 8 | filename: 'bundle.js' 9 | }, 10 | devtool: 'eval-source-map', 11 | devServer: { 12 | contentBase: path.resolve('./', 'public'), 13 | historyApiFallback: true, 14 | inline: true, 15 | host: 'localhost', 16 | disableHostCheck: true, 17 | proxy: { 18 | }, 19 | }, 20 | module: { 21 | rules: [{ 22 | test: /(.js)$/, 23 | use: [{ 24 | loader: 'babel-loader', 25 | }] 26 | }, { 27 | test: /(.js)$/, 28 | loader: 'eslint-loader', 29 | enforce: 'pre', 30 | exclude: /node_modules/, 31 | options: { 32 | configFile: './.eslintrc.js' 33 | } 34 | }, { 35 | test: /\.css$/, 36 | use: ['style-loader', 'css-loader'], 37 | }, { 38 | test: /\.less$/, 39 | use: ['style-loader', 'css-loader', 'less-loader'], 40 | }, { 41 | test: /\.(woff|ttf)$/, 42 | loader: 'url-loader', 43 | options: { 44 | limit: 50000, 45 | }, 46 | }, { 47 | test: /\.vue$/, 48 | loader: 'vue-loader', 49 | options: { 50 | loaders: { 51 | js: 'babel-loader', 52 | }, 53 | }, 54 | }, { 55 | test: /\.html$/, 56 | loader: 'html-loader', 57 | }] 58 | }, 59 | }; -------------------------------------------------------------------------------- /webpack-config/dev-v1.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const VueLoaderPlugin = require('vue-loader/lib/plugin'); 3 | module.exports = { 4 | mode: 'development', 5 | entry: path.resolve('./', 'src/v1/index.js'), 6 | output: { 7 | path: path.resolve('./', 'public/v1'), 8 | filename: 'bundle.js' 9 | }, 10 | devtool: 'eval-source-map', 11 | devServer: { 12 | contentBase: path.resolve('./', 'public/v1'), 13 | historyApiFallback: true, 14 | inline: true, 15 | host: 'localhost', 16 | disableHostCheck: true, 17 | proxy: { 18 | }, 19 | }, 20 | module: { 21 | rules: [{ 22 | test: /(.js)$/, 23 | use: [{ 24 | loader: 'babel-loader', 25 | }] 26 | }, { 27 | test: /(.js)$/, 28 | loader: 'eslint-loader', 29 | enforce: 'pre', 30 | exclude: /node_modules/, 31 | options: { 32 | configFile: './.eslintrc.js' 33 | } 34 | }, { 35 | test: /\.css$/, 36 | use: ['style-loader', 'css-loader'], 37 | }, { 38 | test: /\.less$/, 39 | use: ['style-loader', 'css-loader', 'less-loader'], 40 | }, { 41 | test: /\.(woff|ttf)$/, 42 | loader: 'url-loader', 43 | options: { 44 | limit: 50000, 45 | }, 46 | }, { 47 | test: /\.vue$/, 48 | loader: 'vue-loader', 49 | options: { 50 | loaders: { 51 | js: 'babel-loader', 52 | }, 53 | }, 54 | }, { 55 | test: /\.html$/, 56 | loader: 'html-loader', 57 | }] 58 | }, 59 | plugins: [ 60 | new VueLoaderPlugin() 61 | ] 62 | }; -------------------------------------------------------------------------------- /webpack-config/dev.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const VueLoaderPlugin = require('vue-loader/lib/plugin'); 3 | // const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); 4 | module.exports = { 5 | mode: 'development', 6 | entry: path.resolve('./', 'src/index.js'), 7 | output: { 8 | path: path.resolve('./', 'public'), 9 | filename: 'bundle.js' 10 | }, 11 | devtool: 'eval-source-map', 12 | devServer: { 13 | contentBase: path.resolve('./', 'public'), 14 | historyApiFallback: true, 15 | inline: true, 16 | host: 'localhost', 17 | disableHostCheck: true, 18 | proxy: { 19 | }, 20 | }, 21 | module: { 22 | rules: [{ 23 | test: /(.js)$/, 24 | use: [{ 25 | loader: 'babel-loader', 26 | }] 27 | }, { 28 | test: /(.js)$/, 29 | loader: 'eslint-loader', 30 | enforce: 'pre', 31 | exclude: /node_modules/, 32 | options: { 33 | configFile: './.eslintrc.js' 34 | } 35 | }, { 36 | test: /\.css$/, 37 | use: ['style-loader', 'css-loader'], 38 | }, { 39 | test: /\.less$/, 40 | use: ['style-loader', 'css-loader', 'less-loader'], 41 | }, { 42 | test: /\.(woff|ttf)$/, 43 | loader: 'url-loader', 44 | options: { 45 | limit: 50000, 46 | }, 47 | }, { 48 | test: /\.vue$/, 49 | loader: 'vue-loader', 50 | options: { 51 | loaders: { 52 | js: 'babel-loader', 53 | }, 54 | }, 55 | }, { 56 | test: /\.html$/, 57 | loader: 'html-loader', 58 | }] 59 | }, 60 | plugins: [ 61 | new VueLoaderPlugin(), 62 | // new MonacoWebpackPlugin({ 63 | // languages: ['javascript', 'typescript', 'html', 'json'] 64 | // }) 65 | ] 66 | }; --------------------------------------------------------------------------------