From 401702972f30c4e556a2cf8d048f78fa9ee1c5ba Mon Sep 17 00:00:00 2001 From: Charles7c Date: Tue, 19 Dec 2023 23:37:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(tool/generator):=20=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=96=B0=E5=A2=9E=E7=94=9F=E6=88=90=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tool/model/resp/GeneratePreviewResp.java | 59 ++++ .../admin/tool/service/GeneratorService.java | 10 + .../service/impl/GeneratorServiceImpl.java | 93 ++++-- continew-admin-ui/package.json | 4 + continew-admin-ui/pnpm-lock.yaml | 303 ++++++++++++++---- continew-admin-ui/src/api/tool/generator.ts | 9 + .../src/views/tool/generator/index.vue | 72 +++++ .../webapi/tool/GeneratorController.java | 9 + 8 files changed, 464 insertions(+), 95 deletions(-) create mode 100644 continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/model/resp/GeneratePreviewResp.java diff --git a/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/model/resp/GeneratePreviewResp.java b/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/model/resp/GeneratePreviewResp.java new file mode 100644 index 00000000..e1a22d17 --- /dev/null +++ b/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/model/resp/GeneratePreviewResp.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package top.charles7c.continew.admin.tool.model.resp; + +import java.io.Serial; +import java.io.Serializable; + +import lombok.Data; + +import io.swagger.v3.oas.annotations.media.Schema; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +/** + * 生成预览信息 + * + * @author Charles7c + * @since 2023/12/19 21:34 + */ +@Data +@Schema(description = "生成预览信息") +public class GeneratePreviewResp implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 文件名 + */ + @Schema(description = "文件名", example = "UserController.java") + private String fileName; + + /** + * 内容 + */ + @Schema(description = "内容", example = "public class UserController {...}") + private String content; + + /** + * 是否为后端代码 + */ + @Schema(hidden = true) + @JsonIgnore + private boolean backend; +} diff --git a/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/GeneratorService.java b/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/GeneratorService.java index 43cedb67..be5ce97c 100644 --- a/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/GeneratorService.java +++ b/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/GeneratorService.java @@ -23,6 +23,7 @@ import top.charles7c.continew.admin.tool.model.entity.FieldConfigDO; import top.charles7c.continew.admin.tool.model.entity.GenConfigDO; import top.charles7c.continew.admin.tool.model.query.TableQuery; import top.charles7c.continew.admin.tool.model.req.GenConfigReq; +import top.charles7c.continew.admin.tool.model.resp.GeneratePreviewResp; import top.charles7c.continew.admin.tool.model.resp.TableResp; import top.charles7c.continew.starter.extension.crud.model.query.PageQuery; import top.charles7c.continew.starter.extension.crud.model.resp.PageDataResp; @@ -80,6 +81,15 @@ public interface GeneratorService { */ void saveConfig(GenConfigReq req, String tableName); + /** + * 生成预览 + * + * @param tableName + * 表名称 + * @return 预览信息 + */ + List preview(String tableName); + /** * 生成代码 * diff --git a/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/impl/GeneratorServiceImpl.java b/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/impl/GeneratorServiceImpl.java index 1882beb1..46be8f86 100644 --- a/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/impl/GeneratorServiceImpl.java +++ b/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/impl/GeneratorServiceImpl.java @@ -51,6 +51,7 @@ import top.charles7c.continew.admin.tool.model.entity.FieldConfigDO; import top.charles7c.continew.admin.tool.model.entity.GenConfigDO; import top.charles7c.continew.admin.tool.model.query.TableQuery; import top.charles7c.continew.admin.tool.model.req.GenConfigReq; +import top.charles7c.continew.admin.tool.model.resp.GeneratePreviewResp; import top.charles7c.continew.admin.tool.model.resp.TableResp; import top.charles7c.continew.admin.tool.service.GeneratorService; import top.charles7c.continew.starter.core.constant.StringConstants; @@ -85,7 +86,8 @@ public class GeneratorServiceImpl implements GeneratorService { if (StrUtil.isNotBlank(tableName)) { tableList.removeIf(table -> !StrUtil.containsAny(table.getTableName(), tableName)); } - tableList.removeIf(table -> StrUtil.equalsAny(table.getTableName(), generatorProperties.getExcludeTables())); + tableList.removeIf( + table -> StrUtil.equalsAnyIgnoreCase(table.getTableName(), generatorProperties.getExcludeTables())); CollUtil.sort(tableList, Comparator.comparing(Table::getCreateTime) .thenComparing(table -> Optional.ofNullable(table.getUpdateTime()).orElse(table.getCreateTime())) @@ -209,7 +211,9 @@ public class GeneratorServiceImpl implements GeneratorService { } @Override - public void generate(String tableName) { + public List preview(String tableName) { + List generatePreviewList = new ArrayList<>(); + // 初始化配置 GenConfigDO genConfig = genConfigMapper.selectById(tableName); CheckUtils.throwIfNull(genConfig, "请先进行数据表 [{}] 生成配置", tableName); List fieldConfigList = fieldConfigMapper.selectListByTableName(tableName); @@ -221,68 +225,107 @@ public class GeneratorServiceImpl implements GeneratorService { StrUtil.subSuf(packageName, StrUtil.lastIndexOfIgnoreCase(packageName, StringConstants.DOT) + 1); genConfigMap.put("apiModuleName", apiModuleName); genConfigMap.put("apiName", StrUtil.lowerFirst(genConfig.getClassNamePrefix())); + // 渲染后端代码 + String classNamePrefix = genConfig.getClassNamePrefix(); + Map templateConfigMap = generatorProperties.getTemplateConfigs(); + for (Map.Entry templateConfigEntry : templateConfigMap.entrySet()) { + this.pretreatment(genConfigMap, fieldConfigList, templateConfigEntry); + String className = classNamePrefix + StrUtil.nullToEmpty(templateConfigEntry.getKey()); + genConfigMap.put("className", className); + TemplateConfig templateConfig = templateConfigEntry.getValue(); + String content = TemplateUtils.render(templateConfig.getTemplatePath(), genConfigMap); + GeneratePreviewResp codePreview = new GeneratePreviewResp(); + codePreview.setFileName(className + FileNameUtil.EXT_JAVA); + codePreview.setContent(content); + codePreview.setBackend(true); + generatePreviewList.add(codePreview); + } + // 渲染前端代码 + // api 代码 + genConfigMap.put("fieldConfigs", fieldConfigList); + String apiContent = TemplateUtils.render("generator/api.ftl", genConfigMap); + GeneratePreviewResp apiCodePreview = new GeneratePreviewResp(); + apiCodePreview.setFileName(classNamePrefix.toLowerCase() + ".ts"); + apiCodePreview.setContent(apiContent); + generatePreviewList.add(apiCodePreview); + // view 代码 + String viewContent = TemplateUtils.render("generator/index.ftl", genConfigMap); + GeneratePreviewResp viewCodePreview = new GeneratePreviewResp(); + viewCodePreview.setFileName("index.vue"); + viewCodePreview.setContent(viewContent); + generatePreviewList.add(viewCodePreview); + return generatePreviewList; + } + @Override + public void generate(String tableName) { + // 初始化配置及数据 + List generatePreviewList = this.preview(tableName); + GenConfigDO genConfig = genConfigMapper.selectById(tableName); + Boolean isOverride = genConfig.getIsOverride(); + // 生成代码 + String packageName = genConfig.getPackageName(); try { - String classNamePrefix = genConfig.getClassNamePrefix(); - Boolean isOverride = genConfig.getIsOverride(); // 生成后端代码 - // 1、确定后端代码基础路径 + String classNamePrefix = genConfig.getClassNamePrefix(); + // 1.确定后端代码基础路径 // 例如:D:/continew-admin String projectPath = SystemUtil.getUserInfo().getCurrentDir(); // 例如:D:/continew-admin/continew-admin-tool File backendModuleFile = new File(projectPath, genConfig.getModuleName()); // 例如:D:/continew-admin/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool List backendModuleChildPathList = CollUtil.newArrayList("src", "main", "java"); - backendModuleChildPathList.addAll(StrUtil.split(genConfig.getPackageName(), StringConstants.DOT)); + backendModuleChildPathList.addAll(StrUtil.split(packageName, StringConstants.DOT)); File backendParentFile = FileUtil.file(backendModuleFile, backendModuleChildPathList.toArray(new String[0])); - // 2、生成代码 + // 2.生成代码 + List backendCodePreviewList = + generatePreviewList.stream().filter(GeneratePreviewResp::isBackend).collect(Collectors.toList()); Map templateConfigMap = generatorProperties.getTemplateConfigs(); - for (Map.Entry templateConfigEntry : templateConfigMap.entrySet()) { + for (GeneratePreviewResp codePreview : backendCodePreviewList) { // 例如:D:/continew-admin/continew-admin-tool/src/main/java/top/charles7c/continew/admin/tool/service/impl/XxxServiceImpl.java - this.pretreatment(genConfigMap, fieldConfigList, templateConfigEntry); - String className = classNamePrefix + StrUtil.nullToEmpty(templateConfigEntry.getKey()); - genConfigMap.put("className", className); - TemplateConfig templateConfig = templateConfigEntry.getValue(); + TemplateConfig templateConfig = + templateConfigMap.get(codePreview.getFileName().replace(classNamePrefix, StringConstants.EMPTY) + .replace(FileNameUtil.EXT_JAVA, StringConstants.EMPTY)); File classParentFile = FileUtil.file(backendParentFile, StrUtil.splitToArray(templateConfig.getPackageName(), StringConstants.DOT)); - File classFile = new File(classParentFile, className + FileNameUtil.EXT_JAVA); + File classFile = new File(classParentFile, codePreview.getFileName()); // 如果已经存在,且不允许覆盖,则跳过 if (classFile.exists() && !isOverride) { continue; } - String content = TemplateUtils.render(templateConfig.getTemplatePath(), genConfigMap); - FileUtil.writeString(content, classFile, StandardCharsets.UTF_8); + FileUtil.writeString(codePreview.getContent(), classFile, StandardCharsets.UTF_8); } - // 生成前端代码 String frontendPath = genConfig.getFrontendPath(); if (StrUtil.isBlank(frontendPath)) { return; } - // 1、生成 api 代码 + List frontendCodePreviewList = + generatePreviewList.stream().filter(p -> !p.isBackend()).collect(Collectors.toList()); + // 1.生成 api 代码 + String apiModuleName = + StrUtil.subSuf(packageName, StrUtil.lastIndexOfIgnoreCase(packageName, StringConstants.DOT) + 1); + GeneratePreviewResp apiCodePreview = frontendCodePreviewList.get(0); // 例如:D:/continew-admin/continew-admin-ui - genConfigMap.put("fieldConfigs", fieldConfigList); List frontendSubPathList = StrUtil.split(frontendPath, "src"); String frontendModulePath = frontendSubPathList.get(0); // 例如:D:/continew-admin/continew-admin-ui/src/api/tool/xxx.ts File apiParentFile = FileUtil.file(frontendModulePath, "src", "api", apiModuleName); - String apiFileName = classNamePrefix.toLowerCase() + ".ts"; - File apiFile = new File(apiParentFile, apiFileName); + File apiFile = new File(apiParentFile, apiCodePreview.getFileName()); if (apiFile.exists() && !isOverride) { return; } - String apiContent = TemplateUtils.render("generator/api.ftl", genConfigMap); - FileUtil.writeString(apiContent, apiFile, StandardCharsets.UTF_8); - // 2、生成 view 代码 + FileUtil.writeString(apiCodePreview.getContent(), apiFile, StandardCharsets.UTF_8); + // 2.生成 view 代码 + GeneratePreviewResp viewCodePreview = frontendCodePreviewList.get(1); // 例如:D:/continew-admin/continew-admin-ui/src/views/tool/xxx/index.vue File indexFile = FileUtil.file(frontendPath, apiModuleName, StrUtil.lowerFirst(classNamePrefix), "index.vue"); if (indexFile.exists() && !isOverride) { return; } - String indexContent = TemplateUtils.render("generator/index.ftl", genConfigMap); - FileUtil.writeString(indexContent, indexFile, StandardCharsets.UTF_8); + FileUtil.writeString(viewCodePreview.getContent(), indexFile, StandardCharsets.UTF_8); } catch (Exception e) { log.error("Generate code occurred an error: {}. tableName: {}.", e.getMessage(), tableName, e); throw new BusinessException("代码生成失败,请手动清理生成文件"); diff --git a/continew-admin-ui/package.json b/continew-admin-ui/package.json index 15189f14..aeba0330 100644 --- a/continew-admin-ui/package.json +++ b/continew-admin-ui/package.json @@ -31,9 +31,12 @@ }, "dependencies": { "@arco-design/web-vue": "^2.53.0", + "@codemirror/lang-java": "^6.0.1", + "@codemirror/lang-javascript": "^6.2.1", "@kangc/v-md-editor": "^2.3.17", "@vueuse/core": "^10.5.0", "axios": "^0.24.0", + "codemirror": "^6.0.1", "crypto-js": "^4.2.0", "dayjs": "^1.11.10", "echarts": "^5.4.3", @@ -46,6 +49,7 @@ "query-string": "^8.1.0", "sortablejs": "^1.15.0", "vue": "^3.3.7", + "vue-codemirror": "^6.1.1", "vue-cropper": "^1.1.1", "vue-echarts": "^6.6.1", "vue-i18n": "^9.6.5", diff --git a/continew-admin-ui/pnpm-lock.yaml b/continew-admin-ui/pnpm-lock.yaml index dd2828af..9ff8933d 100644 --- a/continew-admin-ui/pnpm-lock.yaml +++ b/continew-admin-ui/pnpm-lock.yaml @@ -8,6 +8,12 @@ dependencies: '@arco-design/web-vue': specifier: ^2.53.0 version: 2.53.0(vue@3.3.7) + '@codemirror/lang-java': + specifier: ^6.0.1 + version: 6.0.1 + '@codemirror/lang-javascript': + specifier: ^6.2.1 + version: 6.2.1 '@kangc/v-md-editor': specifier: ^2.3.17 version: 2.3.17(@vue/compiler-sfc@3.3.7)(vue@3.3.7) @@ -17,6 +23,9 @@ dependencies: axios: specifier: ^0.24.0 version: 0.24.0 + codemirror: + specifier: ^6.0.1 + version: 6.0.1(@lezer/common@1.1.2) crypto-js: specifier: ^4.2.0 version: 4.2.0 @@ -53,6 +62,9 @@ dependencies: vue: specifier: ^3.3.7 version: 3.3.7(typescript@5.2.2) + vue-codemirror: + specifier: ^6.1.1 + version: 6.1.1(codemirror@6.0.1)(vue@3.3.7) vue-cropper: specifier: ^1.1.1 version: 1.1.1 @@ -214,7 +226,7 @@ packages: dev: true /@aesoper/normal-utils@0.1.5: - resolution: {integrity: sha512-LFF/6y6h5mfwhnJaWqqxuC8zzDaHCG62kMRkd8xhDtq62TQj9dM17A9DhE87W7DhiARJsHLgcina/9P4eNCN1w==} + resolution: {integrity: sha512-LFF/6y6h5mfwhnJaWqqxuC8zzDaHCG62kMRkd8xhDtq62TQj9dM17A9DhE87W7DhiARJsHLgcina/9P4eNCN1w==, tarball: https://registry.npmmirror.com/@aesoper/normal-utils/-/normal-utils-0.1.5.tgz} dev: false /@ampproject/remapping@2.2.0: @@ -754,6 +766,87 @@ packages: deprecated: Potential XSS vulnerability patched in v6.0.0. dev: false + /@codemirror/autocomplete@6.11.1(@codemirror/language@6.9.3)(@codemirror/state@6.3.3)(@codemirror/view@6.22.3)(@lezer/common@1.1.2): + resolution: {integrity: sha512-L5UInv8Ffd6BPw0P3EF7JLYAMeEbclY7+6Q11REt8vhih8RuLreKtPy/xk8wPxs4EQgYqzI7cdgpiYwWlbS/ow==, tarball: https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.11.1.tgz} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + dependencies: + '@codemirror/language': 6.9.3 + '@codemirror/state': 6.3.3 + '@codemirror/view': 6.22.3 + '@lezer/common': 1.1.2 + dev: false + + /@codemirror/commands@6.3.2: + resolution: {integrity: sha512-tjoi4MCWDNxgIpoLZ7+tezdS9OEB6pkiDKhfKx9ReJ/XBcs2G2RXIu+/FxXBlWsPTsz6C9q/r4gjzrsxpcnqCQ==, tarball: https://registry.npmmirror.com/@codemirror/commands/-/commands-6.3.2.tgz} + dependencies: + '@codemirror/language': 6.9.3 + '@codemirror/state': 6.3.3 + '@codemirror/view': 6.22.3 + '@lezer/common': 1.1.2 + dev: false + + /@codemirror/lang-java@6.0.1: + resolution: {integrity: sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==, tarball: https://registry.npmmirror.com/@codemirror/lang-java/-/lang-java-6.0.1.tgz} + dependencies: + '@codemirror/language': 6.9.3 + '@lezer/java': 1.1.0 + dev: false + + /@codemirror/lang-javascript@6.2.1: + resolution: {integrity: sha512-jlFOXTejVyiQCW3EQwvKH0m99bUYIw40oPmFjSX2VS78yzfe0HELZ+NEo9Yfo1MkGRpGlj3Gnu4rdxV1EnAs5A==, tarball: https://registry.npmmirror.com/@codemirror/lang-javascript/-/lang-javascript-6.2.1.tgz} + dependencies: + '@codemirror/autocomplete': 6.11.1(@codemirror/language@6.9.3)(@codemirror/state@6.3.3)(@codemirror/view@6.22.3)(@lezer/common@1.1.2) + '@codemirror/language': 6.9.3 + '@codemirror/lint': 6.4.2 + '@codemirror/state': 6.3.3 + '@codemirror/view': 6.22.3 + '@lezer/common': 1.1.2 + '@lezer/javascript': 1.4.11 + dev: false + + /@codemirror/language@6.9.3: + resolution: {integrity: sha512-qq48pYzoi6ldYWV/52+Z9Ou6QouVI+8YwvxFbUypI33NbjG2UeRHKENRyhwljTTiOqjQ33FjyZj6EREQ9apAOQ==, tarball: https://registry.npmmirror.com/@codemirror/language/-/language-6.9.3.tgz} + dependencies: + '@codemirror/state': 6.3.3 + '@codemirror/view': 6.22.3 + '@lezer/common': 1.1.2 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.3.14 + style-mod: 4.1.0 + dev: false + + /@codemirror/lint@6.4.2: + resolution: {integrity: sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA==, tarball: https://registry.npmmirror.com/@codemirror/lint/-/lint-6.4.2.tgz} + dependencies: + '@codemirror/state': 6.3.3 + '@codemirror/view': 6.22.3 + crelt: 1.0.6 + dev: false + + /@codemirror/search@6.5.5: + resolution: {integrity: sha512-PIEN3Ke1buPod2EHbJsoQwlbpkz30qGZKcnmH1eihq9+bPQx8gelauUwLYaY4vBOuBAuEhmpDLii4rj/uO0yMA==, tarball: https://registry.npmmirror.com/@codemirror/search/-/search-6.5.5.tgz} + dependencies: + '@codemirror/state': 6.3.3 + '@codemirror/view': 6.22.3 + crelt: 1.0.6 + dev: false + + /@codemirror/state@6.3.3: + resolution: {integrity: sha512-0wufKcTw2dEwEaADajjHf6hBy1sh3M6V0e+q4JKIhLuiMSe5td5HOWpUdvKth1fT1M9VYOboajoBHpkCd7PG7A==, tarball: https://registry.npmmirror.com/@codemirror/state/-/state-6.3.3.tgz} + dev: false + + /@codemirror/view@6.22.3: + resolution: {integrity: sha512-rqnq+Zospwoi3x1vZ8BGV1MlRsaGljX+6qiGYmIpJ++M+LCC+wjfDaPklhwpWSgv7pr/qx29KiAKQBH5+DOn4w==, tarball: https://registry.npmmirror.com/@codemirror/view/-/view-6.22.3.tgz} + dependencies: + '@codemirror/state': 6.3.3 + style-mod: 4.1.0 + w3c-keyname: 2.2.8 + dev: false + /@commitlint/cli@18.2.0(typescript@5.2.2): resolution: {integrity: sha512-F/DCG791kMFmWg5eIdogakuGeg4OiI2kD430ed1a1Hh3epvrJdeIAgcGADAMIOmF+m0S1+VlIYUKG2dvQQ1Izw==} engines: {node: '>=v18'} @@ -953,7 +1046,7 @@ packages: dev: true /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==, tarball: https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -962,7 +1055,7 @@ packages: optional: true /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -971,7 +1064,7 @@ packages: optional: true /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==, tarball: https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -980,7 +1073,7 @@ packages: optional: true /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==, tarball: https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -989,7 +1082,7 @@ packages: optional: true /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==, tarball: https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -998,7 +1091,7 @@ packages: optional: true /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==, tarball: https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1007,7 +1100,7 @@ packages: optional: true /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==, tarball: https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1016,7 +1109,7 @@ packages: optional: true /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==, tarball: https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -1025,7 +1118,7 @@ packages: optional: true /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==, tarball: https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1034,7 +1127,7 @@ packages: optional: true /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==, tarball: https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1043,7 +1136,7 @@ packages: optional: true /@esbuild/linux-loong64@0.14.54: - resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -1052,7 +1145,7 @@ packages: optional: true /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -1061,7 +1154,7 @@ packages: optional: true /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==, tarball: https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -1070,7 +1163,7 @@ packages: optional: true /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==, tarball: https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -1079,7 +1172,7 @@ packages: optional: true /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==, tarball: https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -1088,7 +1181,7 @@ packages: optional: true /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==, tarball: https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -1097,7 +1190,7 @@ packages: optional: true /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==, tarball: https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -1106,7 +1199,7 @@ packages: optional: true /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==, tarball: https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -1115,7 +1208,7 @@ packages: optional: true /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==, tarball: https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -1124,7 +1217,7 @@ packages: optional: true /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==, tarball: https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -1133,7 +1226,7 @@ packages: optional: true /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==, tarball: https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -1142,7 +1235,7 @@ packages: optional: true /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==, tarball: https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -1151,7 +1244,7 @@ packages: optional: true /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==, tarball: https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1305,6 +1398,36 @@ packages: - supports-color dev: false + /@lezer/common@1.1.2: + resolution: {integrity: sha512-V+GqBsga5+cQJMfM0GdnHmg4DgWvLzgMWjbldBg0+jC3k9Gu6nJNZDLJxXEBT1Xj8KhRN4jmbC5CY7SIL++sVw==, tarball: https://registry.npmmirror.com/@lezer/common/-/common-1.1.2.tgz} + dev: false + + /@lezer/highlight@1.2.0: + resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==, tarball: https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.2.0.tgz} + dependencies: + '@lezer/common': 1.1.2 + dev: false + + /@lezer/java@1.1.0: + resolution: {integrity: sha512-RmBS+P9LJ4P9SU7ZewahMkBUNOEz1zQTMOKLq8OEa7ge8FZxz7mKjoEIGewRSn9kom1z5GKQjtxNE++m6u8SYw==, tarball: https://registry.npmmirror.com/@lezer/java/-/java-1.1.0.tgz} + dependencies: + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.3.14 + dev: false + + /@lezer/javascript@1.4.11: + resolution: {integrity: sha512-B5Y9EJF4BWiMgj4ufxUo2hrORnmMBDrMtR+L7dwIO5pocuSAahG6QBwXR6PbKJOjRywJczU2r2LJPg79ER91TQ==, tarball: https://registry.npmmirror.com/@lezer/javascript/-/javascript-1.4.11.tgz} + dependencies: + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.3.14 + dev: false + + /@lezer/lr@1.3.14: + resolution: {integrity: sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==, tarball: https://registry.npmmirror.com/@lezer/lr/-/lr-1.3.14.tgz} + dependencies: + '@lezer/common': 1.1.2 + dev: false + /@mrmlnc/readdir-enhanced@2.2.1: resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} engines: {node: '>=4'} @@ -1350,7 +1473,7 @@ packages: dev: true /@popperjs/core@2.11.8: - resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==, tarball: https://registry.npmmirror.com/@popperjs/core/-/core-2.11.8.tgz} dev: false /@rollup/pluginutils@4.2.1: @@ -1377,7 +1500,7 @@ packages: dev: true /@rollup/rollup-android-arm-eabi@4.3.0: - resolution: {integrity: sha512-/4pns6BYi8MXdwnXM44yoGAcFYVHL/BYlB2q1HXZ6AzH++LaiEVWFpBWQ/glXhbMbv3E3o09igrHFbP/snhAvA==} + resolution: {integrity: sha512-/4pns6BYi8MXdwnXM44yoGAcFYVHL/BYlB2q1HXZ6AzH++LaiEVWFpBWQ/glXhbMbv3E3o09igrHFbP/snhAvA==, tarball: https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.3.0.tgz} cpu: [arm] os: [android] requiresBuild: true @@ -1385,7 +1508,7 @@ packages: optional: true /@rollup/rollup-android-arm64@4.3.0: - resolution: {integrity: sha512-nLO/JsL9idr416vzi3lHm3Xm+QZh4qHij8k3Er13kZr5YhL7/+kBAx84kDmPc7HMexLmwisjDCeDIKNFp8mDlQ==} + resolution: {integrity: sha512-nLO/JsL9idr416vzi3lHm3Xm+QZh4qHij8k3Er13kZr5YhL7/+kBAx84kDmPc7HMexLmwisjDCeDIKNFp8mDlQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.3.0.tgz} cpu: [arm64] os: [android] requiresBuild: true @@ -1393,7 +1516,7 @@ packages: optional: true /@rollup/rollup-darwin-arm64@4.3.0: - resolution: {integrity: sha512-dGhVBlllt4iHwTGy21IEoMOTN5wZoid19zEIxsdY29xcEiOEHqzDa7Sqrkh5OE7LKCowL61eFJXxYe/+pYa7ZQ==} + resolution: {integrity: sha512-dGhVBlllt4iHwTGy21IEoMOTN5wZoid19zEIxsdY29xcEiOEHqzDa7Sqrkh5OE7LKCowL61eFJXxYe/+pYa7ZQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.3.0.tgz} cpu: [arm64] os: [darwin] requiresBuild: true @@ -1401,7 +1524,7 @@ packages: optional: true /@rollup/rollup-darwin-x64@4.3.0: - resolution: {integrity: sha512-h8wRfHeLEbU3NzaP1Oku7BYXCJQiTRr+8U0lklyOQXxXiEpHLL8tk1hFl+tezoRKLcPJD7joKaK74ASsqt3Ekg==} + resolution: {integrity: sha512-h8wRfHeLEbU3NzaP1Oku7BYXCJQiTRr+8U0lklyOQXxXiEpHLL8tk1hFl+tezoRKLcPJD7joKaK74ASsqt3Ekg==, tarball: https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.3.0.tgz} cpu: [x64] os: [darwin] requiresBuild: true @@ -1409,7 +1532,7 @@ packages: optional: true /@rollup/rollup-linux-arm-gnueabihf@4.3.0: - resolution: {integrity: sha512-wP4VgR/gfV18sylTuym3sxRTkAgUR2vh6YLeX/GEznk5jCYcYSlx585XlcUcl0c8UffIZlRJ09raWSX3JDb4GA==} + resolution: {integrity: sha512-wP4VgR/gfV18sylTuym3sxRTkAgUR2vh6YLeX/GEznk5jCYcYSlx585XlcUcl0c8UffIZlRJ09raWSX3JDb4GA==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.3.0.tgz} cpu: [arm] os: [linux] requiresBuild: true @@ -1417,7 +1540,7 @@ packages: optional: true /@rollup/rollup-linux-arm64-gnu@4.3.0: - resolution: {integrity: sha512-v/14JCYVkqRSJeQbxFx4oUkwVQQw6lFMN7bd4vuARBc3X2lmomkxBsc+BFiIDL/BK+CTx5AOh/k9XmqDnKWRVg==} + resolution: {integrity: sha512-v/14JCYVkqRSJeQbxFx4oUkwVQQw6lFMN7bd4vuARBc3X2lmomkxBsc+BFiIDL/BK+CTx5AOh/k9XmqDnKWRVg==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.3.0.tgz} cpu: [arm64] os: [linux] libc: [glibc] @@ -1426,7 +1549,7 @@ packages: optional: true /@rollup/rollup-linux-arm64-musl@4.3.0: - resolution: {integrity: sha512-tNhfYqFH5OxtRzfkTOKdgFYlPSZnlDLNW4+leNEvQZhwTJxoTwsZAAhR97l3qVry/kkLyJPBK+Q8EAJLPinDIg==} + resolution: {integrity: sha512-tNhfYqFH5OxtRzfkTOKdgFYlPSZnlDLNW4+leNEvQZhwTJxoTwsZAAhR97l3qVry/kkLyJPBK+Q8EAJLPinDIg==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.3.0.tgz} cpu: [arm64] os: [linux] libc: [musl] @@ -1435,7 +1558,7 @@ packages: optional: true /@rollup/rollup-linux-x64-gnu@4.3.0: - resolution: {integrity: sha512-pw77m8QywdsoFdFOgmc8roF1inBI0rciqzO8ffRUgLoq7+ee9o5eFqtEcS6hHOOplgifAUUisP8cAnwl9nUYPw==} + resolution: {integrity: sha512-pw77m8QywdsoFdFOgmc8roF1inBI0rciqzO8ffRUgLoq7+ee9o5eFqtEcS6hHOOplgifAUUisP8cAnwl9nUYPw==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.3.0.tgz} cpu: [x64] os: [linux] libc: [glibc] @@ -1444,7 +1567,7 @@ packages: optional: true /@rollup/rollup-linux-x64-musl@4.3.0: - resolution: {integrity: sha512-tJs7v2MnV2F8w6X1UpPHl/43OfxjUy9SuJ2ZPoxn79v9vYteChVYO/ueLHCpRMmyTUIVML3N9z4azl9ENH8Xxg==} + resolution: {integrity: sha512-tJs7v2MnV2F8w6X1UpPHl/43OfxjUy9SuJ2ZPoxn79v9vYteChVYO/ueLHCpRMmyTUIVML3N9z4azl9ENH8Xxg==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.3.0.tgz} cpu: [x64] os: [linux] libc: [musl] @@ -1453,7 +1576,7 @@ packages: optional: true /@rollup/rollup-win32-arm64-msvc@4.3.0: - resolution: {integrity: sha512-OKGxp6kATQdTyI2DF+e9s+hB3/QZB45b6e+dzcfW1SUqiF6CviWyevhmT4USsMEdP3mlpC9zxLz3Oh+WaTMOSw==} + resolution: {integrity: sha512-OKGxp6kATQdTyI2DF+e9s+hB3/QZB45b6e+dzcfW1SUqiF6CviWyevhmT4USsMEdP3mlpC9zxLz3Oh+WaTMOSw==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.3.0.tgz} cpu: [arm64] os: [win32] requiresBuild: true @@ -1461,7 +1584,7 @@ packages: optional: true /@rollup/rollup-win32-ia32-msvc@4.3.0: - resolution: {integrity: sha512-DDZ5AH68JJ2ClQFEA1aNnfA7Ybqyeh0644rGbrLOdNehTmzfICHiWSn0OprzYi9HAshTPQvlwrM+bi2kuaIOjQ==} + resolution: {integrity: sha512-DDZ5AH68JJ2ClQFEA1aNnfA7Ybqyeh0644rGbrLOdNehTmzfICHiWSn0OprzYi9HAshTPQvlwrM+bi2kuaIOjQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.3.0.tgz} cpu: [ia32] os: [win32] requiresBuild: true @@ -1469,7 +1592,7 @@ packages: optional: true /@rollup/rollup-win32-x64-msvc@4.3.0: - resolution: {integrity: sha512-dMvGV8p92GQ8jhNlGIKpyhVZPzJlT258pPrM5q2F8lKcc9Iv9BbfdnhX1OfinYWnb9ms5zLw6MlaMnqLfUkKnQ==} + resolution: {integrity: sha512-dMvGV8p92GQ8jhNlGIKpyhVZPzJlT258pPrM5q2F8lKcc9Iv9BbfdnhX1OfinYWnb9ms5zLw6MlaMnqLfUkKnQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.3.0.tgz} cpu: [x64] os: [win32] requiresBuild: true @@ -2749,7 +2872,21 @@ packages: dev: true /codemirror@5.65.14: - resolution: {integrity: sha512-VSNugIBDGt0OU9gDjeVr6fNkoFQznrWEUdAApMlXQNbfE8gGO19776D6MwSqF/V/w/sDwonsQ0z7KmmI9guScg==} + resolution: {integrity: sha512-VSNugIBDGt0OU9gDjeVr6fNkoFQznrWEUdAApMlXQNbfE8gGO19776D6MwSqF/V/w/sDwonsQ0z7KmmI9guScg==, tarball: https://registry.npmmirror.com/codemirror/-/codemirror-5.65.14.tgz} + dev: false + + /codemirror@6.0.1(@lezer/common@1.1.2): + resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==, tarball: https://registry.npmmirror.com/codemirror/-/codemirror-6.0.1.tgz} + dependencies: + '@codemirror/autocomplete': 6.11.1(@codemirror/language@6.9.3)(@codemirror/state@6.3.3)(@codemirror/view@6.22.3)(@lezer/common@1.1.2) + '@codemirror/commands': 6.3.2 + '@codemirror/language': 6.9.3 + '@codemirror/lint': 6.4.2 + '@codemirror/search': 6.5.5 + '@codemirror/state': 6.3.3 + '@codemirror/view': 6.22.3 + transitivePeerDependencies: + - '@lezer/common' dev: false /collapse-white-space@1.0.6: @@ -2974,6 +3111,10 @@ packages: typescript: 5.2.2 dev: true + /crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==, tarball: https://registry.npmmirror.com/crelt/-/crelt-1.0.6.tgz} + dev: false + /cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} @@ -4023,7 +4164,7 @@ packages: dev: true /errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, tarball: https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz} hasBin: true requiresBuild: true dependencies: @@ -4147,7 +4288,7 @@ packages: dev: true /esbuild-android-64@0.14.54: - resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} + resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==, tarball: https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -4156,7 +4297,7 @@ packages: optional: true /esbuild-android-arm64@0.14.54: - resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} + resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==, tarball: https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -4165,7 +4306,7 @@ packages: optional: true /esbuild-darwin-64@0.14.54: - resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} + resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==, tarball: https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -4174,7 +4315,7 @@ packages: optional: true /esbuild-darwin-arm64@0.14.54: - resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} + resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==, tarball: https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -4183,7 +4324,7 @@ packages: optional: true /esbuild-freebsd-64@0.14.54: - resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} + resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==, tarball: https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -4192,7 +4333,7 @@ packages: optional: true /esbuild-freebsd-arm64@0.14.54: - resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} + resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==, tarball: https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -4201,7 +4342,7 @@ packages: optional: true /esbuild-linux-32@0.14.54: - resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} + resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==, tarball: https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -4210,7 +4351,7 @@ packages: optional: true /esbuild-linux-64@0.14.54: - resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} + resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==, tarball: https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -4219,7 +4360,7 @@ packages: optional: true /esbuild-linux-arm64@0.14.54: - resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} + resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==, tarball: https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -4228,7 +4369,7 @@ packages: optional: true /esbuild-linux-arm@0.14.54: - resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} + resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==, tarball: https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -4237,7 +4378,7 @@ packages: optional: true /esbuild-linux-mips64le@0.14.54: - resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} + resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==, tarball: https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -4246,7 +4387,7 @@ packages: optional: true /esbuild-linux-ppc64le@0.14.54: - resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} + resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==, tarball: https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -4255,7 +4396,7 @@ packages: optional: true /esbuild-linux-riscv64@0.14.54: - resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} + resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==, tarball: https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -4264,7 +4405,7 @@ packages: optional: true /esbuild-linux-s390x@0.14.54: - resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} + resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==, tarball: https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -4273,7 +4414,7 @@ packages: optional: true /esbuild-netbsd-64@0.14.54: - resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} + resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==, tarball: https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -4282,7 +4423,7 @@ packages: optional: true /esbuild-openbsd-64@0.14.54: - resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} + resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==, tarball: https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -4291,7 +4432,7 @@ packages: optional: true /esbuild-sunos-64@0.14.54: - resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} + resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==, tarball: https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -4300,7 +4441,7 @@ packages: optional: true /esbuild-windows-32@0.14.54: - resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} + resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==, tarball: https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -4309,7 +4450,7 @@ packages: optional: true /esbuild-windows-64@0.14.54: - resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} + resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==, tarball: https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -4318,7 +4459,7 @@ packages: optional: true /esbuild-windows-arm64@0.14.54: - resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} + resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==, tarball: https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -5164,7 +5305,7 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -5506,10 +5647,10 @@ packages: dev: true /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz} /gradient-parser@1.0.2: - resolution: {integrity: sha512-gR6nY33xC9yJoH4wGLQtZQMXDi6RI3H37ERu7kQCVUzlXjNedpZM7xcA489Opwbq0BSGohtWGsWsntupmxelMg==} + resolution: {integrity: sha512-gR6nY33xC9yJoH4wGLQtZQMXDi6RI3H37ERu7kQCVUzlXjNedpZM7xcA489Opwbq0BSGohtWGsWsntupmxelMg==, tarball: https://registry.npmmirror.com/gradient-parser/-/gradient-parser-1.0.2.tgz} engines: {node: '>=0.10.0'} dev: false @@ -5747,7 +5888,7 @@ packages: dev: true /image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==, tarball: https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz} engines: {node: '>=0.10.0'} hasBin: true dev: true @@ -6685,7 +6826,7 @@ packages: dev: true /lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==, tarball: https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz} dev: false /lodash.camelcase@4.3.0: @@ -6840,7 +6981,7 @@ packages: dev: true /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, tarball: https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz} engines: {node: '>=6'} requiresBuild: true dependencies: @@ -7132,7 +7273,7 @@ packages: dev: true /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, tarball: https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz} engines: {node: '>=4'} hasBin: true requiresBuild: true @@ -7274,7 +7415,7 @@ packages: dev: true /needle@3.2.0: - resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==} + resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==, tarball: https://registry.npmmirror.com/needle/-/needle-3.2.0.tgz} engines: {node: '>= 4.4.x'} hasBin: true requiresBuild: true @@ -8904,7 +9045,7 @@ packages: engines: {node: '>=0.10.0'} /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz} engines: {node: '>=0.10.0'} dev: true @@ -9207,6 +9348,10 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: true + /style-mod@4.1.0: + resolution: {integrity: sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==, tarball: https://registry.npmmirror.com/style-mod/-/style-mod-4.1.0.tgz} + dev: false + /style-search@0.1.0: resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} dev: true @@ -9594,7 +9739,7 @@ packages: dev: true /tinycolor2@1.6.0: - resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==, tarball: https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz} dev: false /titleize@3.0.0: @@ -10198,6 +10343,20 @@ packages: fsevents: 2.3.2 dev: true + /vue-codemirror@6.1.1(codemirror@6.0.1)(vue@3.3.7): + resolution: {integrity: sha512-rTAYo44owd282yVxKtJtnOi7ERAcXTeviwoPXjIc6K/IQYUsoDkzPvw/JDFtSP6T7Cz/2g3EHaEyeyaQCKoDMg==, tarball: https://registry.npmmirror.com/vue-codemirror/-/vue-codemirror-6.1.1.tgz} + peerDependencies: + codemirror: 6.x + vue: 3.x + dependencies: + '@codemirror/commands': 6.3.2 + '@codemirror/language': 6.9.3 + '@codemirror/state': 6.3.3 + '@codemirror/view': 6.22.3 + codemirror: 6.0.1(@lezer/common@1.1.2) + vue: 3.3.7(typescript@5.2.2) + dev: false + /vue-cropper@1.1.1: resolution: {integrity: sha512-WsqKMpaBf9Osi1LQlE/5AKdD0nHWOy1asLXocaG8NomOWO07jiZi968+/PbMmnD0QbPJOumDQaGuGa13qys85A==} dev: false @@ -10317,7 +10476,7 @@ packages: dev: true /vue-types@4.2.1(vue@3.3.7): - resolution: {integrity: sha512-DNQZmJuOvovLUIp0BENRkdnZHbI0V4e2mNvjAZOAXKD56YGvRchtUYOXA/XqTxdv7Ng5SJLZqRKRpAhm5NLaPQ==} + resolution: {integrity: sha512-DNQZmJuOvovLUIp0BENRkdnZHbI0V4e2mNvjAZOAXKD56YGvRchtUYOXA/XqTxdv7Ng5SJLZqRKRpAhm5NLaPQ==, tarball: https://registry.npmmirror.com/vue-types/-/vue-types-4.2.1.tgz} engines: {node: '>=12.16.0'} peerDependencies: vue: ^2.0.0 || ^3.0.0 @@ -10363,6 +10522,10 @@ packages: '@vue/shared': 3.3.7 typescript: 5.2.2 + /w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==, tarball: https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz} + dev: false + /webpack-chain@4.12.1: resolution: {integrity: sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==} dependencies: diff --git a/continew-admin-ui/src/api/tool/generator.ts b/continew-admin-ui/src/api/tool/generator.ts index 0364ec0a..6b4e340c 100644 --- a/continew-admin-ui/src/api/tool/generator.ts +++ b/continew-admin-ui/src/api/tool/generator.ts @@ -78,6 +78,15 @@ export function saveConfig(tableName: string, req: GeneratorConfigRecord) { return axios.post(`${BASE_URL}/config/${tableName}`, req); } +export interface GeneratePreviewRecord { + fileName: string; + content: string; +} + +export function preview(tableName: string) { + return axios.get(`${BASE_URL}/preview/${tableName}`); +} + export function generate(tableName: string) { return axios.post(`${BASE_URL}/${tableName}`); } diff --git a/continew-admin-ui/src/views/tool/generator/index.vue b/continew-admin-ui/src/views/tool/generator/index.vue index a1e9ccf4..2e4b4494 100644 --- a/continew-admin-ui/src/views/tool/generator/index.vue +++ b/continew-admin-ui/src/views/tool/generator/index.vue @@ -70,6 +70,15 @@ > 配置 + + 预览 + + + + + + + + + + + +