From 072cd088dd0b25397c06dae5d7c25bbbeac910db Mon Sep 17 00:00:00 2001 From: ielgnaw Date: Tue, 3 Aug 2021 16:56:35 +0800 Subject: [PATCH] bump to v0.2.5 (#453) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修改删除和新增分类的项目 * 修改删除和新增分类的项目 (#256) * 1. 函数体验优化 2. 函数对接项目 * 修改删除和新增分类的项目 * 函数修改为可以选中所有模板生成的函数 * 登录权限控制 & 账号管理页面 & 用户信息 * 登录权限控制 & 账号管理页面 & 用户信息 (#259) * entities base 中尝试获取 curLoginUser (#260) * 登录权限控制 & 账号管理页面 & 用户信息 * entities base 中尝试获取 curLoginUser * fix页面管理体验问题 (#257) * fix页面管理体验问题 * 下拉项目列表增加搜索 Co-authored-by: ielgnaw * 使用函数的时候,可以选择所有模板生成的函数 (#258) * 1. 函数体验优化 2. 函数对接项目 * 修改删除和新增分类的项目 * 函数修改为可以选中所有模板生成的函数 * add http.js.example * add http.js.example (#261) * 项目管理对接登录用户和复制项目及样式与交互优化 (#262) * 新增项目级别页面布局和项目列表页UI * 新增创建项目和查询项目列表功能 * 新增项目收藏功能 * 新增项目重命名功能 * 新增项目列表分类和搜索查询 * 新增复制项目功能 * 修改项目收藏功能使用独立的数据接口和模型 * 优化项目列表查询 * 新增删除项目功能 * 项目管理样式和交互优化 * 项目对接登录用户和复制项目优化 Co-authored-by: ielgnaw * 处理projectId不存在情况,fix页面管理样式问题 (#263) * 增加chart图表 * fix冲突 * 删除consolelog * 更新图标库 * 同步新的lesscode-develop,fix图表bug * fix高版本echarts无法自适应大小的问题 * project模块layout和router * 提交页面管理 * merge * fix复制页面问题 * 删除preview页面的query参数 * update msg * 修改整体路由、生成页面缩略图 * 增加手动保存串连流程 * 删除consolelog * fix页面管理体验问题 * 下拉项目列表增加搜索 * 处理projectId不存在情况,fix页面管理样式问题 Co-authored-by: ielgnaw * 数据库默认值调整 (#264) * merge #201 * merge manually from #201 * merge manually from #203 * fix some bug * 修复 charts-line options.tips 小问题 * 修复刷新页面时,没有选中组件但右侧面板会显示 grid 属性的问题 * 修复 chart 组件样式被覆盖的问题 * 体验 bug 修复 * 修复体验问题 * 画布仅剩一个 grid 时,不允许删除;增加清空 grid 操作 * 修复 clone grid 时,右侧面板没有默认选中的问题;更新日志 * 文案 * up data-base conf example * merge page && page 表,content 和 sourceCode 改为允许 null * format code style * page 模块小问题修复 * merge * merge && cookie * 登录权限控制 & 账号管理页面 & 用户信息 * add http.js.example * 修复自定义组件 x-table 获取数据的问题 * 统一操作用户 * 修复自定义组件 x-table 获取数据的问题 (#265) * 统一操作用户 (#266) * 1. 函数体验优化 2. 函数对接项目 * 修改删除和新增分类的项目 * 函数修改为可以选中所有模板生成的函数 * 统一操作用户 * 获取正确的当前登录用户写入数据库 createUser 和 updateUser * 获取正确的当前登录用户写入数据库 createUser 和 updateUser (#267) * 修复 cookie 中 bktoken 失效的问题 * 项目复制完善和项目列表体验问题修复 (#268) * 项目列表体验优化 Co-authored-by: ielgnaw * 修复 cookie 中 bktoken 失效的问题 (#269) * 函数体验优化 * 去除重复js * fix页面管理相关体验问题 (#271) * 处理projectId不存在情况,fix页面管理样式问题 * 页面管理体验问题修复 * fix page style Co-authored-by: ielgnaw * 函数体验问题修复 (#270) * 1. 函数体验优化 2. 函数对接项目 * 修改删除和新增分类的项目 * 函数修改为可以选中所有模板生成的函数 * 统一操作用户 * 函数体验优化 * 去除重复js * 函数api url提示,默认函数填写绝对路径 * 去掉多余的空格 * 函数体验问题修复 (#272) * 1. 函数体验优化 2. 函数对接项目 * 修改删除和新增分类的项目 * 函数修改为可以选中所有模板生成的函数 * 统一操作用户 * 函数体验优化 * 去除重复js * 函数api url提示,默认函数填写绝对路径 * 去掉多余的空格 * 修改layout样式 * 导航与主站一致 * 导航与主站一致 (#274) * 导航与主站一致 * 导航与主站一致 * 隐藏项目删除操作和画布内容区加loading等体验问题修复 (#275) * 新增项目级别页面布局和项目列表页UI * 新增创建项目和查询项目列表功能 * 新增项目收藏功能 * 新增项目重命名功能 * 新增项目列表分类和搜索查询 * 新增复制项目功能 * 修改项目收藏功能使用独立的数据接口和模型 * 优化项目列表查询 * 新增删除项目功能 * 项目管理样式和交互优化 * 项目对接登录用户和复制项目优化 * 复制项目补充页面函数关联记录 * 项目列表体验优化 * 体验问题修复 Co-authored-by: ielgnaw * 修复属性面板中 switch 组件不会正确渲染的问题 * 修复属性面板中 switch 组件不会正确渲染的问题 (#276) * 函数提示优化,增加按钮获取数据 (#277) * 项目名称、ID 校验去重在当前用户维度下 * 项目名称、ID 校验去重在当前用户维度下 (#278) * 修复 compId 的问题 * 修复 compId 的问题 (#280) * initcode (#326) * initCode * update ignore文件 * feat:修改conf目录下npm、bkrepo、migrate配置文件引用方式和相应文档说明 (#329) * initCode * update ignore文件 * 修改conf目录下npm、bkrepo、migrate配置文件引用方式和相应文档说明 * 修改gitignore文件 * feature: 新增sideslider交互式组件;feature: 路由功能增强,支持删除路由、修改父路径、绑定跳转路由及自动识别项目默认首页 * feature: 新增sideslider交互式组件;feature: 路由功能增强,支持删除路由、修改父路径、绑定跳转路由及自动识别项目默认首页 (#336) * bugfix: 增加路由跳转的sql变更 (#337) * bugfix: 增加路由跳转的sql变更 * bugfix: 增加路由跳转的sql变更 * bugfix: delete图标库相关code (#341) * bugfix: 增加路由跳转的sql变更 * bugfix: 增加路由跳转的sql变更 * fix: delete图标库相关code * fix: 页面预览图偶发失败 * fix: 页面预览图偶发失败 (#344) * fix: 修复侧栏sideSlider的配置问题 (#348) fix: 变量名优化 Co-authored-by: vincenttgao * fix: 页面绑定路由时未禁用已绑定跳转的路由问题 (#350) * fix(edit): 路由参数tips (#352) * fix: 修复交互式组件的若干问题 (#351) * fix: 修复侧栏sideSlider的配置问题 fix: 变量名优化 * fix: 修复交互式组件中,自由布局定位错误的问题 * fix: 修复diff组件缺少language报错的问题 * fix: 修复交互式组件处于激活态时,底层下仍然可交互的问题 * fix: 修复交互式组件拖拽的问题 Co-authored-by: vincenttgao * feat: new version * feat: new version (#354) * bugfix: fix自定义组件第一次拖入时不显示问题 (#357) * feat: add db index sql * feat: add db index sql (#358) * feat: 画布支持json导入和渲染 (#363) * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染 (#364) * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染 (#365) * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染 (#366) * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染 * feat: 画布支持json导入和渲染(增加弹窗确认) * 画布属性实时获取最新变量值 (#367) * 画布属性实时获取最新变量值 * 属性多tab切换,异常修复 * 画布属性实时获取最新变量值 (#369) * 画布属性实时获取最新变量值 * 属性多tab切换,异常修复 * 画布默认为一个单格 * change crlf to lf * bugfix: ee体验问题 (#376) * bugfix: demo示例包名称规范问题、input组件tips显示问题 * bugfix: fix成员重复问题 * bugfix: 项目名称为test时与自定义组件prefix冲突问题 * feat: add log path config * feat: 增加数据库表索引 (#379) * bugfix: demo示例包名称规范问题、input组件tips显示问题 * bugfix: fix成员重复问题 * bugfix: 项目名称为test时与自定义组件prefix冲突问题 * feat: 增加数据库表索引 * feat: add log path config (#378) * feat: 优化帮助导航,采用悬浮UI (#380) feat: 优化帮助导航,采用悬浮UI Co-authored-by: vincenttgao * feat: element ui集成,form模块组件 * feat: 优化帮助导航 * feat: 优化帮助导航 (#383) * feat: 源码模块增加复合组件的配置 * feat: 优化帮助导航,采用悬浮UI (#385) * feat: 优化帮助导航,采用悬浮UI * bugfix: 修复文档导航错误的问题 * opt: 画布指引优化 fix: 删除无用依赖 Co-authored-by: vincenttgao * feat: bump to v0.2.2 * feat: bump to v0.2.2 (#386) * feat: 增加form表单容器 (#387) * feat: 增加form表单布局 * feat: 增加form表单布局 * feat: 增加form表单布局(增加初始数据源) * feat: 增加form表单布局(生成formModel数据,兼容性问题处理) * feat: 增加form表单布局(fix) * fix: 修复帮助点击无反应问题 (#390) Co-authored-by: vincenttgao * feat: 增加form表单布局(bugfix) (#389) * feat: 增加form表单布局(fixbug) * feat: element ui集成:单选框、多选框、级联选择器、日期选择器、日期时间选择器、上传、颜色选择器、穿梭框 * feat: element ui组件集成:table * feat: element ui组件集成:tag标签 * feat: element ui组件集成:progress进度条 * feat: element ui组件集成:tree树形组件 * feat: element ui组件集成:pagination分页 * feat: element ui组件集成:alert,badge * 支持函数的导入导出 (#392) * 画布属性实时获取最新变量值 * 属性多tab切换,异常修复 * 画布默认为一个单格 * change crlf to lf * feat: 页面保存的时候校验函数和变量是否重复 (#523) * feat: 支持函数的导入导出 (#201) * change crlf to lf * feature: 添加指令使用指引(issue: #431) * change crlf to lf * feature(edit): 导航自定义Icon (#393) * feat: element ui组件集成:组件vmodel配置问题 * feat: element ui组件集成:组件vmodel配置问题代码优化 * feat: element ui组件集成:inputNumber计数器 * feat: element ui组件集成:avatar头像 * feat: element ui组件集成:badge标记 * feat: element ui组件集成:image 图片 * feat: element ui组件集成:card卡片 * feat: update 复合组件 && fix: 部分页面预览图加载失败的问题 * feat: update 复合组件 && fix: 部分页面预览图加载失败的问题 (#396) * 导入函数优化 & 切换tab保留编辑的值 (#397) * 画布属性实时获取最新变量值 * 属性多tab切换,异常修复 * 画布默认为一个单格 * change crlf to lf * feat: 页面保存的时候校验函数和变量是否重复 (#523) * feat: 支持函数的导入导出 (#201) * change crlf to lf * feature: 添加指令使用指引(issue: #431) * change crlf to lf * feat: 支持函数的导入导出 (#201) * 编辑时,保留切换tab的值 * merge: 中途解决 * feat: element ui组件集成:tooltip文字提示 * bugfix: table组件点击源码报错 * feat: element ui组件集成:tab标签页 && 组件列表顺序 * feat: element ui组件集成:breadcrumb 面包屑 * feat: element ui组件集成:图标库 * minor:删除无用代码 * feat: element ui组件集成:upload上传 * feat: element ui组件集成:transfer穿梭框 * feat: element ui组件集成:checkbox多选框 * feat: element ui组件集成:steps步骤 * feat: element ui组件集成:timeline时间轴 * feat: element ui组件集成:carousel走马灯 * feat: element ui组件集成:radio、checkbox属性配置面板修改 * feature(bk-charts): 添加bkCharts (#399) Co-authored-by: vincenttgao * feature: 删除权限增加判断是否为数据的创造者 (#531) (#403) * feature: 删除权限增加判断是否为数据的创造者 (fix: 项目管理: 非项目管理员,自己创建的函数自己也不能删除) * feat: element ui集成,form模块组件 (#382) * feat: element ui组件集成:form模块组件;tree树形组件;pagination分页;alert;badge;组件vmodel配置问题;组件vmodel配置问题代码优化;inputNumber计数器;avatar头像;badge标记;image 图片;card卡片;tooltip文字提示;tab标签页 && 组件列表顺序;table;tag标签;progress进度条;单选框;多选框;级联选择器;日期选择器;日期时间选择器;上传;颜色选择器;穿梭框;breadcrumb 面包屑;图标库;upload上传;transfer穿梭框;checkbox多选框;steps步骤;timeline时间轴;carousel走马灯;radio;checkbox属性配置面板修改 * feat: 源码模块增加复合组件的配置 * bugfix: table组件点击源码报错 Co-authored-by: Lukol * bugfix: element ui组件集成:分类名改为中文 * feat: element ui组件集成:新增element版本号展示 * optimization:element组件集成:修改分类名及版本号展示 (#404) * bugfix: element ui组件集成:分类名改为中文 * feat: element ui组件集成:新增element版本号展示 Co-authored-by: Lukol * feat: merge * fix: element table el-table-cokumn slot-scope 变量的问题 * fix: element table el-table-cokumn slot-scope 变量的问题 (#405) * fix: 修复 tree 组件 JSON 字段循环引入报错的问题 (#407) * merge #201 * merge manually from #201 * merge manually from #203 * fix some bug * 修复 charts-line options.tips 小问题 * 修复刷新页面时,没有选中组件但右侧面板会显示 grid 属性的问题 * 修复 chart 组件样式被覆盖的问题 * 体验 bug 修复 * 修复体验问题 * 画布仅剩一个 grid 时,不允许删除;增加清空 grid 操作 * 修复 clone grid 时,右侧面板没有默认选中的问题;更新日志 * 文案 * up data-base conf example * merge page && page 表,content 和 sourceCode 改为允许 null * format code style * page 模块小问题修复 * merge * merge && cookie * 登录权限控制 & 账号管理页面 & 用户信息 * add http.js.example * 修复自定义组件 x-table 获取数据的问题 * 获取正确的当前登录用户写入数据库 createUser 和 updateUser * 修复 cookie 中 bktoken 失效的问题 * 导航与主站一致 * 修复属性面板中 switch 组件不会正确渲染的问题 * 项目名称、ID 校验去重在当前用户维度下 * 修复 compId 的问题 * feature: 新增sideslider交互式组件;feature: 路由功能增强,支持删除路由、修改父路径、绑定跳转路由及自动识别项目默认首页 * fix: 页面预览图偶发失败 * feat: new version * feat: add db index sql * feat: add log path config * feat: 优化帮助导航 * feat: bump to v0.2.2 * feat: update 复合组件 && fix: 部分页面预览图加载失败的问题 * feat: merge * fix: element table el-table-cokumn slot-scope 变量的问题 * bugfix: 兼容页面不存在调用页面详情数据 (#406) * fix: 补充js关键字为无效页面ID和删除页面同时删除项目与页面的关联关系 (#408) * fix: 添加js关键字为无效的页面ID * fix: 删除页面的同时删除项目与页面的关联关系 * fix: 项目列表页面项目缩略图为空的问题 * fix: 项目列表页面项目缩略图为空的问题 (#409) * update: 新增bkcharts的雷达图、气泡图和散点图 && 优化图表分类 (#411) Co-authored-by: vincenttgao * bugfix: fix有form组件时生成项目源码报错问题 (#410) * feat: bumo to v0.2.3 * feat: bumo to v0.2.3 (#412) * bugfix: 删除project列表页部署入口 (#413) * bugfix: fix有form组件时生成项目源码报错问题 * bugfix: 删除project列表页部署入口 * bugfix: fix服务器部署拖拽项目时异常情况 (#415) * bugfix: fix有form组件时生成项目源码报错问题 * bugfix: 删除project列表页部署入口 * bugfix: fix服务器部署拖拽项目时异常情况 * bugfix: 修复变量切换 (#414) * bugfix: 修复变量切换 * perf: api 错误信息处理 (#416) * perf: 后端异常处理 (#418) * perf: 后端异常处理 Co-authored-by: ielgnaw * bugfix: 颜色相关属性统一用颜色选择器 * fix: 修复p标签外边距较大时的显示问题 & 增加部分组件text-align属性 (#417) Co-authored-by: vincenttgao * 自动fix eslint & 部署页面title (#419) * feature: 函数和计算变量添加自动fix eslint * feature: 部署页面title和页面名称一致 issue:530 * feature: 函数和计算变量添加自动fix eslint (#421) * feature: 函数和计算变量添加自动fix eslint * bugfix: element icon颜色预览不生效 * fix: 修复社区版测试的一些小问题 * fix: 修复社区版测试的一些小问题 (#423) * 函数相关 (#424) * add auth whitelist & add function tip * feature: 修改远程函数提示和获取数据源逻辑 * 修改校验tip (#425) * feature: 修改校验tip * 去掉getip (#426) * 去掉getip * feat: 增加health接口(访问路径: 域名/checkHealth) (#429) * feat: 增加health接口(访问路径: 域名/checkHealth) * feat: props属性可视化配置 * fix: 身份认证失败状态码 (#430) * feature: 添加画布加锁功能 * fixup: 添加释放画布逻辑; 加锁文案优化 * bugfix: element ui组件bug修复 * minor:删除无用代码 * feat: v0.2.4 changeLog (#439) * feat: v0.2.4changeLog * bugfix: fix eslint (#440) * feat: v0.2.4changeLog * feat: v0.2.4changeLog * bugfix: fix eslint error * bugfix: fix eslint error * feat: 顶导 设计规范 链接更新 * feat: 顶导 设计规范 链接更新 * feature: 按钮组件增加icon设置属性 (#443) Co-authored-by: Lukol * 组件添加vmodel值 (#444) Co-authored-by: Lukol * bugfix: rate组件预览不可更改、穿梭框增加tips * fixed: 画布加锁提示优化 * bugfix: 修复弹窗存在时保存成功的问题 * feat: v0.2.5 changeLog Co-authored-by: xuzhan Co-authored-by: terlinhe <312592676@qq.com> Co-authored-by: yangyy Co-authored-by: Vincent Ko <512419912@qq.com> Co-authored-by: vincenttgao Co-authored-by: hlinx <327159425@qq.com> Co-authored-by: Lukol Co-authored-by: Lukol <724320257@qq.com> Co-authored-by: terlinhe --- paas-ce/lesscode/lib/client/build/conf.js | 1 - paas-ce/lesscode/lib/client/index-dev.html | 2 +- paas-ce/lesscode/lib/client/index.html | 2 +- paas-ce/lesscode/lib/client/preview.html | 2 +- .../lesscode/lib/client/require-monaco.html | 60 +- .../lesscode/lib/client/src/common/bkmagic.js | 22 +- .../lib/client/src/components/header.vue | 2 +- .../src/components/methods/func-form.vue | 38 +- .../client/src/components/methods/index.vue | 1848 +++++----- .../src/components/methods/monaco-func.vue | 81 + .../client/src/components/methods/monaco.vue | 109 +- .../src/components/novice-guide/index.vue | 10 +- .../components/render/component-wrapper.js | 6 +- .../variable/variable-form/index.vue | 3 +- .../variable/variable-form/variable-code.vue | 26 +- .../materials/bk/button/index.js | 6 + .../materials/bk/link/index.js | 3 +- .../materials/bk/rate/index.js | 13 +- .../materials/bk/tag-input/index.js | 7 + .../materials/bk/transfer/index.js | 12 +- .../materials/element/cascade/index.js | 2 +- .../materials/element/color-picker/index.js | 2 +- .../materials/element/input/index.js | 3 + .../materials/element/link/index.js | 5 +- .../materials/element/radio-group/index.js | 7 +- .../materials/element/rate/index.js | 4 +- .../materials/element/select/index.js | 14 - .../materials/element/switcher/index.js | 4 +- .../props/components/render-prop.vue | 7 +- .../props/components/strategy/el-props.vue | 120 + .../props/components/strategy/remote.vue | 30 +- .../lesscode/lib/client/src/router/index.js | 6 + .../lesscode/lib/client/src/store/index.js | 7 + .../lib/client/src/store/modules/functions.js | 29 +- .../lib/client/src/store/modules/page.js | 16 + .../lib/client/src/views/changelog/index.md | 26 + .../lib/client/src/views/help/docs/intro.md | 2 +- .../lib/client/src/views/index/index.vue | 171 +- .../src/views/project/function-manage.vue | 8 +- .../lib/client/src/views/system/health.vue | 32 + .../min-maps/vs/base/worker/workerMain.js.map | 1 + .../min-maps/vs/editor/editor.main.js.map | 1 + .../vs/editor/editor.main.nls.de.js.map | 1 + .../vs/editor/editor.main.nls.es.js.map | 1 + .../vs/editor/editor.main.nls.fr.js.map | 1 + .../vs/editor/editor.main.nls.it.js.map | 1 + .../vs/editor/editor.main.nls.ja.js.map | 1 + .../min-maps/vs/editor/editor.main.nls.js.map | 1 + .../vs/editor/editor.main.nls.ko.js.map | 1 + .../vs/editor/editor.main.nls.ru.js.map | 1 + .../vs/editor/editor.main.nls.zh-cn.js.map | 1 + .../vs/editor/editor.main.nls.zh-tw.js.map | 1 + .../monaco-editor/min-maps/vs/loader.js.map | 1 + .../ui/codiconLabel/codicon/codicon.ttf | Bin 56484 -> 0 bytes .../browser/ui/codicons/codicon/codicon.ttf | Bin 0 -> 71056 bytes .../min/vs/base/worker/workerMain.js | 170 +- .../min/vs/basic-languages/abap/abap.js | 4 +- .../min/vs/basic-languages/apex/apex.js | 4 +- .../min/vs/basic-languages/azcli/azcli.js | 4 +- .../min/vs/basic-languages/bat/bat.js | 4 +- .../min/vs/basic-languages/bicep/bicep.js | 7 + .../vs/basic-languages/cameligo/cameligo.js | 4 +- .../min/vs/basic-languages/clojure/clojure.js | 4 +- .../min/vs/basic-languages/coffee/coffee.js | 4 +- .../min/vs/basic-languages/cpp/cpp.js | 4 +- .../min/vs/basic-languages/csharp/csharp.js | 4 +- .../min/vs/basic-languages/csp/csp.js | 4 +- .../min/vs/basic-languages/css/css.js | 4 +- .../min/vs/basic-languages/dart/dart.js | 7 + .../basic-languages/dockerfile/dockerfile.js | 4 +- .../min/vs/basic-languages/ecl/ecl.js | 7 + .../min/vs/basic-languages/elixir/elixir.js | 7 + .../min/vs/basic-languages/fsharp/fsharp.js | 4 +- .../min/vs/basic-languages/go/go.js | 4 +- .../min/vs/basic-languages/graphql/graphql.js | 4 +- .../basic-languages/handlebars/handlebars.js | 4 +- .../min/vs/basic-languages/hcl/hcl.js | 7 + .../min/vs/basic-languages/html/html.js | 4 +- .../min/vs/basic-languages/ini/ini.js | 4 +- .../min/vs/basic-languages/java/java.js | 4 +- .../basic-languages/javascript/javascript.js | 4 +- .../min/vs/basic-languages/julia/julia.js | 7 + .../min/vs/basic-languages/kotlin/kotlin.js | 4 +- .../min/vs/basic-languages/less/less.js | 4 +- .../min/vs/basic-languages/lexon/lexon.js | 7 + .../min/vs/basic-languages/liquid/liquid.js | 7 + .../min/vs/basic-languages/lua/lua.js | 4 +- .../min/vs/basic-languages/m3/m3.js | 7 + .../vs/basic-languages/markdown/markdown.js | 4 +- .../min/vs/basic-languages/mips/mips.js | 4 +- .../min/vs/basic-languages/msdax/msdax.js | 4 +- .../min/vs/basic-languages/mysql/mysql.js | 4 +- .../objective-c/objective-c.js | 4 +- .../min/vs/basic-languages/pascal/pascal.js | 4 +- .../vs/basic-languages/pascaligo/pascaligo.js | 4 +- .../min/vs/basic-languages/perl/perl.js | 4 +- .../min/vs/basic-languages/pgsql/pgsql.js | 4 +- .../min/vs/basic-languages/php/php.js | 4 +- .../vs/basic-languages/postiats/postiats.js | 4 +- .../basic-languages/powerquery/powerquery.js | 4 +- .../basic-languages/powershell/powershell.js | 4 +- .../min/vs/basic-languages/pug/pug.js | 4 +- .../min/vs/basic-languages/python/python.js | 4 +- .../min/vs/basic-languages/r/r.js | 4 +- .../min/vs/basic-languages/razor/razor.js | 4 +- .../min/vs/basic-languages/redis/redis.js | 4 +- .../vs/basic-languages/redshift/redshift.js | 4 +- .../restructuredtext/restructuredtext.js | 4 +- .../min/vs/basic-languages/ruby/ruby.js | 4 +- .../min/vs/basic-languages/rust/rust.js | 4 +- .../min/vs/basic-languages/sb/sb.js | 4 +- .../min/vs/basic-languages/scala/scala.js | 7 + .../min/vs/basic-languages/scheme/scheme.js | 4 +- .../min/vs/basic-languages/scss/scss.js | 4 +- .../min/vs/basic-languages/shell/shell.js | 4 +- .../vs/basic-languages/solidity/solidity.js | 4 +- .../min/vs/basic-languages/sophia/sophia.js | 4 +- .../min/vs/basic-languages/sql/sql.js | 4 +- .../min/vs/basic-languages/st/st.js | 4 +- .../min/vs/basic-languages/swift/swift.js | 4 +- .../systemverilog/systemverilog.js | 7 + .../min/vs/basic-languages/tcl/tcl.js | 4 +- .../min/vs/basic-languages/twig/twig.js | 4 +- .../basic-languages/typescript/typescript.js | 4 +- .../min/vs/basic-languages/vb/vb.js | 4 +- .../min/vs/basic-languages/xml/xml.js | 4 +- .../min/vs/basic-languages/yaml/yaml.js | 4 +- .../min/vs/editor/editor.main.css | 6 +- .../min/vs/editor/editor.main.js | 3037 ++++------------- .../min/vs/editor/editor.main.nls.de.js | 39 +- .../min/vs/editor/editor.main.nls.es.js | 39 +- .../min/vs/editor/editor.main.nls.fr.js | 38 +- .../min/vs/editor/editor.main.nls.it.js | 38 +- .../min/vs/editor/editor.main.nls.ja.js | 31 +- .../min/vs/editor/editor.main.nls.js | 34 +- .../min/vs/editor/editor.main.nls.ko.js | 29 +- .../min/vs/editor/editor.main.nls.ru.js | 39 +- .../min/vs/editor/editor.main.nls.zh-cn.js | 27 +- .../min/vs/editor/editor.main.nls.zh-tw.js | 25 +- .../min/vs/language/css/cssMode.js | 4 +- .../min/vs/language/css/cssWorker.js | 4 +- .../min/vs/language/html/htmlMode.js | 4 +- .../min/vs/language/html/htmlWorker.js | 4 +- .../min/vs/language/json/jsonMode.js | 4 +- .../min/vs/language/json/jsonWorker.js | 4 +- .../min/vs/language/typescript/tsMode.js | 4 +- .../min/vs/language/typescript/tsWorker.js | 4 +- .../static/monaco-editor/min/vs/loader.js | 42 +- .../lib/server/controller/function.js | 26 +- .../lesscode/lib/server/controller/health.js | 37 + .../lesscode/lib/server/controller/page.js | 142 + .../lib/server/controller/variable.js | 12 +- .../lesscode/lib/server/middleware/auth.js | 11 +- .../lesscode/lib/server/middleware/http.js | 10 +- .../lib/server/model/entities/page.js | 13 + paas-ce/lesscode/lib/server/model/health.js | 60 + .../migrations/20210706115827-update-sql.js | 53 + .../sqls/20210706115827-update-sql-down.sql | 1 + .../sqls/20210706115827-update-sql-up.sql | 6 + .../lesscode/lib/server/model/page-code.js | 8 +- .../lesscode/lib/server/model/project-code.js | 7 +- .../lib/server/model/sql/20210706/update.sql | 5 + .../lib/client/src/router/index.js | 3 + .../lib/server/controller/user.js | 1 - .../lib/server/middleware/http.js | 8 +- .../project-template/router-template.js | 8 +- .../lesscode/lib/server/router/function.js | 6 +- paas-ce/lesscode/lib/server/router/health.js | 22 + paas-ce/lesscode/lib/server/router/page.js | 10 +- paas-ce/lesscode/lib/server/util.js | 46 +- paas-ce/lesscode/package.json | 4 +- 171 files changed, 3062 insertions(+), 4141 deletions(-) create mode 100644 paas-ce/lesscode/lib/client/src/components/methods/monaco-func.vue create mode 100644 paas-ce/lesscode/lib/client/src/element-materials/modifier/component/props/components/strategy/el-props.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/system/health.vue create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/base/worker/workerMain.js.map create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/editor/editor.main.js.map create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/editor/editor.main.nls.de.js.map create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/editor/editor.main.nls.es.js.map create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/editor/editor.main.nls.fr.js.map create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/editor/editor.main.nls.it.js.map create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/editor/editor.main.nls.ja.js.map create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/editor/editor.main.nls.js.map create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/editor/editor.main.nls.ko.js.map create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/editor/editor.main.nls.ru.js.map create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/editor/editor.main.nls.zh-cn.js.map create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/editor/editor.main.nls.zh-tw.js.map create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/loader.js.map delete mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/base/browser/ui/codiconLabel/codicon/codicon.ttf create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/basic-languages/bicep/bicep.js create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/basic-languages/dart/dart.js create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/basic-languages/ecl/ecl.js create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/basic-languages/elixir/elixir.js create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/basic-languages/hcl/hcl.js create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/basic-languages/julia/julia.js create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/basic-languages/lexon/lexon.js create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/basic-languages/liquid/liquid.js create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/basic-languages/m3/m3.js create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/basic-languages/scala/scala.js create mode 100644 paas-ce/lesscode/lib/client/static/monaco-editor/min/vs/basic-languages/systemverilog/systemverilog.js create mode 100644 paas-ce/lesscode/lib/server/controller/health.js create mode 100644 paas-ce/lesscode/lib/server/model/health.js create mode 100644 paas-ce/lesscode/lib/server/model/migrations/20210706115827-update-sql.js create mode 100644 paas-ce/lesscode/lib/server/model/migrations/sqls/20210706115827-update-sql-down.sql create mode 100644 paas-ce/lesscode/lib/server/model/migrations/sqls/20210706115827-update-sql-up.sql create mode 100644 paas-ce/lesscode/lib/server/model/sql/20210706/update.sql create mode 100644 paas-ce/lesscode/lib/server/router/health.js diff --git a/paas-ce/lesscode/lib/client/build/conf.js b/paas-ce/lesscode/lib/client/build/conf.js index f6eddfc8d..ddb8b0eb3 100644 --- a/paas-ce/lesscode/lib/client/build/conf.js +++ b/paas-ce/lesscode/lib/client/build/conf.js @@ -24,7 +24,6 @@ module.exports = { APP_CODE: JSON.stringify(APP_CODE), AJAX_URL_PREFIX: JSON.stringify('/api'), ENV: JSON.stringify(ENV) - }, assetsPublicPath: '{{STATIC_URL}}', staticUrl: '/static', diff --git a/paas-ce/lesscode/lib/client/index-dev.html b/paas-ce/lesscode/lib/client/index-dev.html index 63229a9f9..7480b1a5e 100644 --- a/paas-ce/lesscode/lib/client/index-dev.html +++ b/paas-ce/lesscode/lib/client/index-dev.html @@ -15,7 +15,7 @@ - 蓝鲸智云MagicBox|可视化开发 + 可视化开发平台 | 蓝鲸智云社区版 diff --git a/paas-ce/lesscode/lib/client/src/common/bkmagic.js b/paas-ce/lesscode/lib/client/src/common/bkmagic.js index 471965ca1..85fcee2c7 100644 --- a/paas-ce/lesscode/lib/client/src/common/bkmagic.js +++ b/paas-ce/lesscode/lib/client/src/common/bkmagic.js @@ -10,7 +10,6 @@ */ import Vue from 'vue' - // 全量引入 import './fully-import' @@ -21,6 +20,26 @@ const Message = Vue.prototype.$bkMessage let messageInstance = null +export const messageHtmlError = (errMessage, delay = 3000, ellipsisLine = 0) => { + messageInstance && messageInstance.close() + const messageComponent = Vue.compile(errMessage) + const globalComponent = global.mainComponent + const { $options, $createElement } = globalComponent + const _staticRenderFns = $options.staticRenderFns + + $options.staticRenderFns = messageComponent.staticRenderFns + const message = messageComponent.render.call(globalComponent, $createElement) + $options.staticRenderFns = _staticRenderFns + + messageInstance = Message({ + message, + delay, + theme: 'error', + ellipsisLine, + extCls: 'auto-width' + }) +} + export const messageError = (message, delay = 3000, ellipsisLine = 0) => { messageInstance && messageInstance.close() messageInstance = Message({ @@ -59,6 +78,7 @@ export const messageWarn = (message, delay = 3000) => { }) } +Vue.prototype.messageHtmlError = messageHtmlError Vue.prototype.messageError = messageError Vue.prototype.messageSuccess = messageSuccess Vue.prototype.messageInfo = messageInfo diff --git a/paas-ce/lesscode/lib/client/src/components/header.vue b/paas-ce/lesscode/lib/client/src/components/header.vue index 6a26af36d..be1a0988b 100644 --- a/paas-ce/lesscode/lib/client/src/components/header.vue +++ b/paas-ce/lesscode/lib/client/src/components/header.vue @@ -80,7 +80,7 @@ 前端规范
- 设计规范 + 设计规范
辅助样式 diff --git a/paas-ce/lesscode/lib/client/src/components/methods/func-form.vue b/paas-ce/lesscode/lib/client/src/components/methods/func-form.vue index b302fe129..2067de78b 100644 --- a/paas-ce/lesscode/lib/client/src/components/methods/func-form.vue +++ b/paas-ce/lesscode/lib/client/src/components/methods/func-form.vue @@ -55,26 +55,37 @@ - + - + + + - - - + + + + + + diff --git a/paas-ce/lesscode/lib/client/src/components/methods/monaco-func.vue b/paas-ce/lesscode/lib/client/src/components/methods/monaco-func.vue new file mode 100644 index 000000000..8270a46c9 --- /dev/null +++ b/paas-ce/lesscode/lib/client/src/components/methods/monaco-func.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/paas-ce/lesscode/lib/client/src/components/methods/monaco.vue b/paas-ce/lesscode/lib/client/src/components/methods/monaco.vue index e81c7a898..1ee91fbb5 100644 --- a/paas-ce/lesscode/lib/client/src/components/methods/monaco.vue +++ b/paas-ce/lesscode/lib/client/src/components/methods/monaco.vue @@ -1,20 +1,23 @@ - diff --git a/paas-ce/lesscode/lib/client/src/components/novice-guide/index.vue b/paas-ce/lesscode/lib/client/src/components/novice-guide/index.vue index d0f315794..0affa0262 100644 --- a/paas-ce/lesscode/lib/client/src/components/novice-guide/index.vue +++ b/paas-ce/lesscode/lib/client/src/components/novice-guide/index.vue @@ -41,9 +41,9 @@ 确定 取消 -
+
@@ -393,8 +393,10 @@ transform: translate(-50%, -50%); .wraper{ width: 500px; - height: 390px; - padding-top: 45px; + /* height: 390px; */ + /* padding-top: 45px; */ + height: 370px; + padding-top: 25px; text-align: center; border-radius: 2px; background: #fff; diff --git a/paas-ce/lesscode/lib/client/src/components/render/component-wrapper.js b/paas-ce/lesscode/lib/client/src/components/render/component-wrapper.js index 3f1a2d933..f247967a8 100644 --- a/paas-ce/lesscode/lib/client/src/components/render/component-wrapper.js +++ b/paas-ce/lesscode/lib/client/src/components/render/component-wrapper.js @@ -38,7 +38,11 @@ export default { }, dynamicProps) const renderStyles = Object.assign({}, renderData.renderStyles) - if (componentData.type !== 'img') delete renderStyles.width + + const widthChangeableCompoennts = ['img', 'p', 'span', 'bk-link', 'el-link'] + if (!widthChangeableCompoennts.includes(componentData.type)) delete renderStyles.width + + console.log('renderStyle', renderStyles) return h(renderData.type, { key: params['component-type'] === 'bk-sideslider' ? 'bk-slider' : refreshKey, // sideSlider 固定key,防止属性修改动画刷新 diff --git a/paas-ce/lesscode/lib/client/src/components/variable/variable-form/index.vue b/paas-ce/lesscode/lib/client/src/components/variable/variable-form/index.vue index 4396803d3..d5827cc8d 100644 --- a/paas-ce/lesscode/lib/client/src/components/variable/variable-form/index.vue +++ b/paas-ce/lesscode/lib/client/src/components/variable/variable-form/index.vue @@ -232,8 +232,7 @@ } return this.getAllVariable(params) }).catch((err) => { - const message = this.$createElement('pre', { style: { margin: 0 } }, [err.message]) - this.$bkMessage({ theme: 'error', message, ellipsisLine: 0, extCls: 'auto-width' }) + this.messageHtmlError(err.message) }).finally(() => { this.isSaving = false }) diff --git a/paas-ce/lesscode/lib/client/src/components/variable/variable-form/variable-code.vue b/paas-ce/lesscode/lib/client/src/components/variable/variable-form/variable-code.vue index f75d677f3..16d1632b5 100644 --- a/paas-ce/lesscode/lib/client/src/components/variable/variable-form/variable-code.vue +++ b/paas-ce/lesscode/lib/client/src/components/variable/variable-form/variable-code.vue @@ -2,7 +2,11 @@
@@ -10,13 +14,31 @@ diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/button/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/button/index.js index 53c2a9d11..87e5ec187 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/button/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/button/index.js @@ -47,6 +47,12 @@ export default { type: 'boolean', val: false }, + icon: { + type: 'icon' + }, + 'icon-right': { + type: 'icon' + }, 'ext-cls': { type: 'string', tips: '配置自定义样式类名,传入的类会被加在组件最外层的 DOM 上' diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/link/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/link/index.js index 845b08e26..2e531348c 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/link/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/link/index.js @@ -19,7 +19,8 @@ export default { events: [{ name: 'click' }], styles: ['size', 'margin', 'padding', 'display', 'textAlign'], renderStyles: { - display: 'inline-block' + display: 'inline-block', + textAlign: 'center' }, props: { theme: { diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/rate/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/rate/index.js index 0355798f1..55ddfdb54 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/rate/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/rate/index.js @@ -20,11 +20,22 @@ export default { name: 'score', tips: '评分的时候触发该回调事件,回调参数为选中的分数' }], styles: ['margin', 'display'], + directives: [ + { + type: 'v-bind', + prop: 'rate', + propTypes: ['number'], + val: '', + valType: 'variable', + modifiers: ['sync'] + } + ], props: { rate: { type: 'number', val: 0, - tips: '显示的分数' + tips: '显示的分数', + modifiers: ['sync'] }, width: { type: 'number', diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/tag-input/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/tag-input/index.js index af480d2ed..a651c087c 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/tag-input/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/tag-input/index.js @@ -29,6 +29,13 @@ export default { }], styles: ['size', 'margin', 'display'], directives: [ + { + type: 'v-model', + prop: 'value', + propTypes: ['array'], + val: '', + valType: 'variable' + }, { type: 'v-bind', prop: 'list', diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/transfer/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/transfer/index.js index 9d6ce05f7..05c96f890 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/transfer/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/bk/transfer/index.js @@ -22,6 +22,16 @@ export default { }], styles: ['size', 'margin'], directives: [ + { + type: 'v-bind', + prop: 'target-list', + propTypes: ['array'], + val: '', + valType: 'variable', + tips () { + return '已选择数据,数据格式[\'shenzhen\', \'guangzhou\']' + } + }, { type: 'v-bind', prop: 'source-list', @@ -76,7 +86,7 @@ export default { 'target-list': { type: 'array', val: [], - tips: '已选择的数据' + tips: '已选择数据,数据格式[\'shenzhen\', \'guangzhou\']' }, searchable: { type: 'boolean', diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/cascade/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/cascade/index.js index 9f508dbef..b21309354 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/cascade/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/cascade/index.js @@ -254,7 +254,7 @@ export default { tips: '可选项数据源' }, props: { - type: 'object', + type: 'el-props', val: { multiple: false, expandTrigger: 'click', diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/color-picker/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/color-picker/index.js index bf4e9d266..6f8232c57 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/color-picker/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/color-picker/index.js @@ -36,7 +36,7 @@ export default { ], props: { value: { - type: 'string', + type: 'color', val: '#3A84FF' }, size: { diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/input/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/input/index.js index 2d42cf5f4..aac2909ec 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/input/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/input/index.js @@ -28,6 +28,9 @@ export default { name: 'clear', tips: '在点击由 clearable 属性生成的清空按钮时触发' }], styles: ['size', 'margin', 'display'], + renderStyles: { + width: '200px' + }, directives: [ { type: 'v-model', diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/link/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/link/index.js index 247884d2c..c4e155ebb 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/link/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/link/index.js @@ -17,9 +17,10 @@ export default { displayName: '文字链接', group: '基础', events: [{ name: 'click' }], - styles: ['size', 'padding', 'margin', 'display'], + styles: ['size', 'padding', 'margin', 'display', 'text-align'], renderStyles: { - display: 'inline-flex' + display: 'inline-block', + textAlign: 'center' }, props: { type: { diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/radio-group/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/radio-group/index.js index 5457d4f65..6e08f9ba3 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/radio-group/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/radio-group/index.js @@ -52,18 +52,13 @@ export default { }, value: { type: ['string', 'number', 'boolean'], - val: '' + val: '单选一' }, disabled: { type: 'boolean', val: false, 'v-bind': '', tips: '是否禁用状态' - }, - fill: { - type: 'string', - val: '#409EFF', - tips: '按钮形式的 Radio 激活时的填充色和边框色' } } } diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/rate/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/rate/index.js index 055eab9b6..a3ece873e 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/rate/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/rate/index.js @@ -64,7 +64,7 @@ export default { tips: 'icon 的颜色。若传入数组,共有 3 个元素,为 3 个分段所对应的颜色;若传入对象,可自定义分段,键名为分段的界限值,键值为对应的颜色' }, 'void-color': { - type: 'string', + type: 'color', val: '#C6D1DE', tips: '未选中 icon 的颜色' }, @@ -79,7 +79,7 @@ export default { tips: '是否显示当前分数,show-score 和 show-text 不能同时为真' }, 'text-color': { - type: 'string', + type: 'color', val: '#1F2D3D', tips: '辅助文字的颜色' }, diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/select/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/select/index.js index 9bc6f4489..a6a2310cc 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/select/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/select/index.js @@ -76,20 +76,6 @@ export default { val: false, tips: '是否可搜索' }, - // 'filter-method': { - // type: 'remote', - // tips: '自定义搜索方法' - // - // }, - // remote: { - // type: 'boolean', - // val: false, - // tips: '是否为远程搜索' - // }, - // 'remote-method': { - // type: 'remote', - // tips: '远程搜索方法' - // }, 'collapse-tags': { type: 'boolean', val: false, diff --git a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/switcher/index.js b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/switcher/index.js index 36f7045a0..0a4267d31 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/materials/element/switcher/index.js +++ b/paas-ce/lesscode/lib/client/src/element-materials/materials/element/switcher/index.js @@ -62,12 +62,12 @@ export default { tips: 'switch 关闭时的值' }, 'active-color': { - type: 'string', + type: 'color', val: '#409EFF', tips: 'switch 打开时的背景色' }, 'inactive-color': { - type: 'string', + type: 'color', val: '#C0CCDA', tips: 'switch 关闭时的背景色' } diff --git a/paas-ce/lesscode/lib/client/src/element-materials/modifier/component/props/components/render-prop.vue b/paas-ce/lesscode/lib/client/src/element-materials/modifier/component/props/components/render-prop.vue index 5f2a96dba..1fb3e36b2 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/modifier/component/props/components/render-prop.vue +++ b/paas-ce/lesscode/lib/client/src/element-materials/modifier/component/props/components/render-prop.vue @@ -90,6 +90,7 @@ import TypeIcon from './strategy/icon' import TypeFormItem from './strategy/form-item' import TypeColor from './strategy/color' + import TypleElProps from './strategy/el-props' import { transformTipsWidth } from '@/common/util' import safeStringify from '@/common/json-safe-stringify' @@ -182,7 +183,8 @@ 'timeline': TypeSlotWrapper, 'carousel': TypeSlotWrapper, 'el-radio': TypeSlotWrapper, - 'el-checkbox': TypeSlotWrapper + 'el-checkbox': TypeSlotWrapper, + 'el-props': TypleElProps } let realType = config.type @@ -218,7 +220,8 @@ 'timeline': 'timeline', 'carousel': 'carousel', 'el-radio': 'el-radio', - 'el-checkbox': 'el-checkbox' + 'el-checkbox': 'el-checkbox', + 'el-props': 'el-props' } const valueMap = { 'text': 'string', diff --git a/paas-ce/lesscode/lib/client/src/element-materials/modifier/component/props/components/strategy/el-props.vue b/paas-ce/lesscode/lib/client/src/element-materials/modifier/component/props/components/strategy/el-props.vue new file mode 100644 index 000000000..83dd4726c --- /dev/null +++ b/paas-ce/lesscode/lib/client/src/element-materials/modifier/component/props/components/strategy/el-props.vue @@ -0,0 +1,120 @@ + + + + + + diff --git a/paas-ce/lesscode/lib/client/src/element-materials/modifier/component/props/components/strategy/remote.vue b/paas-ce/lesscode/lib/client/src/element-materials/modifier/component/props/components/strategy/remote.vue index 2a008efd4..e76242a6d 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/modifier/component/props/components/strategy/remote.vue +++ b/paas-ce/lesscode/lib/client/src/element-materials/modifier/component/props/components/strategy/remote.vue @@ -14,7 +14,7 @@
{{title || (name === 'remoteOptions' ? '动态配置' : '远程函数')}}
- + 获取数据 @@ -74,6 +74,11 @@ this.saveChange() }, methods: { + changeFunc () { + this.saveChange() + this.getApiData() + }, + saveChange () { this.change(this.name, this.defaultValue, this.type, JSON.parse(JSON.stringify(this.remoteData))) }, @@ -84,10 +89,8 @@ if (curVar) { const { defaultValue, defaultValueType, valueType } = curVar let value = defaultValueType === 0 ? defaultValue.all : defaultValue.stag - if ([3, 4].includes(valueType) && typeof value === 'string') { - value = JSON.parse(value) - } if (valueType === 6) value = '' + if (valueType === 0) value = `'${value}'` return value } else { throw new Error(`函数【${funcName}】里引用的变量【${variableCode}】不存在,请检查`) @@ -110,13 +113,13 @@ const funcParams = (returnMethod.funcParams || []).join(', ') if (returnMethod.funcType === 1) { const remoteParams = (returnMethod.remoteParams || []).join(', ') - const data = { - url: this.processVarInFunParams(returnMethod.funcApiUrl, returnMethod.funcName), - type: returnMethod.funcMethod, - apiData: this.processVarInFunParams(returnMethod.funcApiData, returnMethod.funcName), - withToken: returnMethod.withToken - } - returnMethod.funcStr = `const ${returnMethod.funcName} = (${funcParams}) => { return this.$store.dispatch('getApiData', ${JSON.stringify(data)}).then((${remoteParams}) => { ${returnMethod.funcBody} }) };` + const data = `{ + url: '${this.processVarInFunParams(returnMethod.funcApiUrl, returnMethod.funcName)}', + type: '${returnMethod.funcMethod}', + apiData: ${this.processVarInFunParams(returnMethod.funcApiData, returnMethod.funcName) || "''"}, + withToken: ${returnMethod.withToken} + }` + returnMethod.funcStr = `const ${returnMethod.funcName} = (${funcParams}) => { return this.$store.dispatch('getApiData', ${data}).then((${remoteParams}) => { ${returnMethod.funcBody} }) };` } else { returnMethod.funcStr = `const ${returnMethod.funcName} = (${funcParams}) => { ${returnMethod.funcBody} };` } @@ -245,9 +248,10 @@ try { const sandBox = this.createSandBox() const res = await sandBox.exec(methodStr, this.remoteData.params) - const message = this.remoteValidate(res) + let message = this.remoteValidate(res) if (message) { - this.$bkMessage({ theme: 'error', message }) + message = '数据源设置成功,以下问题可能会导致组件表现异常,请检查:' + message + this.$bkMessage({ theme: 'warning', message }) } else { this.change(this.name, res, this.type, JSON.parse(JSON.stringify(this.remoteData))) if (this.name === 'remoteOptions') { diff --git a/paas-ce/lesscode/lib/client/src/router/index.js b/paas-ce/lesscode/lib/client/src/router/index.js index 310d608af..b976d8390 100644 --- a/paas-ce/lesscode/lib/client/src/router/index.js +++ b/paas-ce/lesscode/lib/client/src/router/index.js @@ -38,6 +38,8 @@ const Index = () => import(/* webpackChunkName: 'index' */'@/views/index/index') const Preview = () => import(/* webpackChunkName: 'preview' */'@/views/preview') const NotFound = () => import(/* webpackChunkName: 'none' */'@/views/status/404') +const HealthPage = () => import(/* webpackChunkName: 'none' */'@/views/system/health') + const MainHelpEntry = () => import(/* webpackChunkName: 'index' */'@/views/help') const Custom = () => import(/* webpackChunkName: 'custom' */'@/views/help/docs/custom.md') const Grid = () => import(/* webpackChunkName: 'grid' */'@/views/help/docs/grid.md') @@ -72,6 +74,10 @@ const routes = [ { path: 'free-layout', name: 'freeLayout', component: FreeLayoutDoc } ] }, + { + path: '/checkHealth', + component: HealthPage + }, { path: '/', component: SystemEntry, diff --git a/paas-ce/lesscode/lib/client/src/store/index.js b/paas-ce/lesscode/lib/client/src/store/index.js index e63369aaa..39f3e66d1 100644 --- a/paas-ce/lesscode/lib/client/src/store/index.js +++ b/paas-ce/lesscode/lib/client/src/store/index.js @@ -125,6 +125,13 @@ const store = new Vuex.Store({ }) }, + getHealthData ({ state }) { + return http.get('/health/check').then(response => { + const data = response.data || [] + return data + }) + }, + // x-table remove (context, params, config) { return http.delete(`/test/remove?${json2Query(params)}`, {}, config).then(res => { diff --git a/paas-ce/lesscode/lib/client/src/store/modules/functions.js b/paas-ce/lesscode/lib/client/src/store/modules/functions.js index 68f6f19f6..1e621d71c 100644 --- a/paas-ce/lesscode/lib/client/src/store/modules/functions.js +++ b/paas-ce/lesscode/lib/client/src/store/modules/functions.js @@ -8,9 +8,8 @@ * 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. */ -import { bkMessage } from 'bk-magic-vue' +import { messageHtmlError } from '../../common/bkmagic' import http from '@/api' -import router from '../../router' const perfix = '/function' export default { @@ -31,11 +30,10 @@ export default { }) }, - bulkAddFunc ({ state }, { groupId, funcList, h, varWhere }) { + bulkAddFunc ({ state }, { groupId, funcList, varWhere }) { return http.post(`${perfix}/bulkAddFunction`, { funcList, varWhere }).then((res = {}) => { if (res.code === 499) { - const message = h('pre', { style: { margin: 0 } }, [res.message]) - bkMessage({ theme: 'error', message, ellipsisLine: 0, extCls: 'auto-width' }) + messageHtmlError(res.message) return } const newFuncs = res.data || [] @@ -45,11 +43,10 @@ export default { }) }, - addFunc ({ state }, { groupId, func, h, varWhere }) { + addFunc ({ state }, { groupId, func, varWhere }) { return http.post(`${perfix}/addFunction`, { func, varWhere }).then((res = {}) => { if (res.code === 499) { - const message = h('pre', { style: { margin: 0 } }, [res.message]) - bkMessage({ theme: 'error', message, ellipsisLine: 0, extCls: 'auto-width' }) + messageHtmlError(res.message) return } const newFunc = res.data || {} @@ -68,11 +65,10 @@ export default { }) }, - editFunc ({ state }, { groupId, func, h, varWhere }) { + editFunc ({ state }, { func, varWhere }) { return http.put(`${perfix}/editFunction`, { func, varWhere }).then((res) => { if (res.code === 499) { - const message = h('pre', { style: { margin: 0 } }, [res.message]) - bkMessage({ theme: 'error', message, ellipsisLine: 0, extCls: 'auto-width' }) + messageHtmlError(res.message) return } const data = res.data || [] @@ -106,15 +102,8 @@ export default { return http.put(`${perfix}/editFuncGroups`, groups) }, - generateToken ({ state }, { appCode, id }) { - return http.get(`${perfix}/generateToken`, { params: { appCode, id } }) - }, - - getTokenList () { - const curRouter = router.currentRoute || {} - const params = curRouter.params || {} - const projectId = params.projectId || '' - return http.get(`${perfix}/getTokenList?projectId=${projectId}`) + fixFunByEslint (_, func) { + return http.post(`${perfix}/fixFunByEslint`, func) } } } diff --git a/paas-ce/lesscode/lib/client/src/store/modules/page.js b/paas-ce/lesscode/lib/client/src/store/modules/page.js index fce232a69..7eead8303 100644 --- a/paas-ce/lesscode/lib/client/src/store/modules/page.js +++ b/paas-ce/lesscode/lib/client/src/store/modules/page.js @@ -84,6 +84,22 @@ export default { return data }) }, + pageLockStatus ({ commit }, { pageId }) { + return http.get(`/page/pageLockStatus?pageId=${pageId}`).then(response => { + const data = response.data || '' + return data + }) + }, + updatePageLock ({ commit }, { data = {} }) { + return http.post('/page/updatePageActive', data).then(response => { + return response.data || '' + }) + }, + occupyPage ({ commit }, { data = {} }) { + return http.post('/page/occupyPage', data).then(response => { + return response.data || '' + }) + }, verify ({ commit }, { data, config }) { return http.post('/page/verify', data, config).then(response => { return response diff --git a/paas-ce/lesscode/lib/client/src/views/changelog/index.md b/paas-ce/lesscode/lib/client/src/views/changelog/index.md index e88708acf..f696278e5 100644 --- a/paas-ce/lesscode/lib/client/src/views/changelog/index.md +++ b/paas-ce/lesscode/lib/client/src/views/changelog/index.md @@ -2,6 +2,32 @@
+### v0.2.5 +###### 2021.08.03 + +* **[add]**: + - 画布: 画布编辑页面增加加锁和抢占功能 + - 画布: Element表单组件(标签输入、穿梭框、rate组件)加上v-model可以获取表单值 + - 画布: Element按钮组件增加icon设置属性 +* **[fix]**: + - 其他: 体验问题修复 + +--- + +### v0.2.4 +###### 2021.07.22 + +* **[add]**: + - 画布: Element 基础组件库组件丰富 + - 画布: 修改部署页面title + - 项目管理: 函数和计算变量添加自动fix eslint +* **[fix]**: + - 画布: 修复p标签与文字相关组件的对齐问题 + - 项目管理: 函数相关体验问题 + - 其他: 修改身份认证失败状态码 + +--- + ### v0.2.3 ###### 2021.07.01 diff --git a/paas-ce/lesscode/lib/client/src/views/help/docs/intro.md b/paas-ce/lesscode/lib/client/src/views/help/docs/intro.md index a702596d9..d508b19f4 100644 --- a/paas-ce/lesscode/lib/client/src/views/help/docs/intro.md +++ b/paas-ce/lesscode/lib/client/src/views/help/docs/intro.md @@ -8,6 +8,6 @@ - **布局模板**:提供多种导航布局模板 - **在线函数库管理**:支持在线灵活编写管理事件函数及远程接口返回数据清洗函数 - **在线组件配置**:支持组件样式、属性、事件在线配置 -- **二次开发能力**:生成的 Vue 源码文件支持无缝集成到蓝鲸前端开发框架([BKUI-CLI](https://bk.tencent.com/docs/document/5.1/19/583))进行二次开发 +- **二次开发能力**:生成的 Vue 源码文件支持无缝集成到蓝鲸前端开发框架([BKUI-CLI](https://bk.tencent.com/docs/document/6.0/130/5940))进行二次开发 - **支持自定义组件开发**:提供自定义组件开发规范及示例,开放自定义组件开发能力,满足业务场景组件集成需求 - **一键部署**:基于蓝鲸PaaS,支持在线拖拽布局后,一键部署至线上环境 diff --git a/paas-ce/lesscode/lib/client/src/views/index/index.vue b/paas-ce/lesscode/lib/client/src/views/index/index.vue index 267fb3ce9..a8b4876e1 100644 --- a/paas-ce/lesscode/lib/client/src/views/index/index.vue +++ b/paas-ce/lesscode/lib/client/src/views/index/index.vue @@ -321,6 +321,8 @@ baseComponentList.splice(0, 0, ...allComponentConf['bk']) return { + lockNotify: null, + lockCheckTimer: null, leftNavTabList: [ { icon: 'bk-drag-custom-comp-default', @@ -448,6 +450,7 @@ } }, computed: { + ...mapGetters(['user']), ...mapGetters(['mainContentLoading']), ...mapGetters('drag', [ 'draggableSourceGroup', @@ -499,9 +502,11 @@ targetData: { get () { + console.warn('get Target') return this.$store.state.drag.targetData }, set (value) { + console.warn('set Target') this.setTargetData(value) } }, @@ -522,6 +527,12 @@ this.panelMap.base.props.componentList = this.baseComponentList this.panelMap.base.props.componentGroupList = allComponentConf[`${v}ComponentGroupList`] + }, + targetData: { + deep: true, + handler () { + this.lockStatsuPolling('lock') + } } }, async created () { @@ -637,13 +648,17 @@ window.addEventListener('keyup', this.judgeCtrl) window.addEventListener('click', this.toggleQuickOperation, true) window.addEventListener('beforeunload', this.beforeunloadConfirm) + window.addEventListener('unload', this.relasePage) }, beforeDestroy () { window.removeEventListener('keydown', this.quickOperation) window.removeEventListener('keyup', this.judgeCtrl) window.removeEventListener('click', this.toggleQuickOperation, true) window.removeEventListener('beforeunload', this.beforeunloadConfirm) + window.removeEventListener('unload', this.relasePage) this.resizeObserve.disconnect() + this.relasePage() + this.lockNotify && this.lockNotify.close() }, beforeRouteLeave (to, from, next) { this.$bkInfo({ @@ -680,6 +695,144 @@ }) this.resizeObserve.observe(canvas) }, + relasePage () { + const data = new FormData() + data.append('activeUser', this.user.username) + data.append('pageId', this.pageId) + navigator.sendBeacon('/api/page/releasePage', data) + }, + async lockStatsuPolling (type) { + const interval = 20 * 1000 // 节流,状态检查每20s一次 + if (this.lockCheckTimer === null) { + await this.checkLockStatus(type) + this.lockCheckTimer = setTimeout(() => { + clearTimeout(this.lockCheckTimer) + this.lockCheckTimer = null + }, interval) + } + }, + async checkLockStatus (type) { + try { + const status = await this.$store.dispatch('page/pageLockStatus', { pageId: this.pageId }) + if (status.isLock) { + if (this.lockNotify !== null) return true// 当前有弹窗,代表无权限 + const messageType = `${type}-${status.accessible ? 'valiad' : 'invaliad'}` + this.lockNotify = this.$bkNotify({ + title: '暂无编辑权限', + theme: 'warning', + delay: 0, + onClose: () => { + this.lockNotify = null + }, + message: this.getLockMessage(messageType, status.activeUser) + }) + return true + } else { // 未加锁,更新当前画布的加锁者为当前用户 + this.$store.dispatch('page/updatePageLock', { data: { + pageId: this.pageId + } }) + return false + } + } catch (error) { + throw Error({ + message: error + }) + } + }, + userText (text) { + const h = this.$createElement + return h('span', { + style: { + color: '#EA3636' + } + }, [text]) + }, + hpyerTextGenerator (text, handler) { + const h = this.$createElement + return h('span', { + style: { + cursor: 'pointer', + color: '#3a84ff' + }, + on: { + click: handler + } + }, [text]) + }, + getLockMessage (type, user) { + const h = this.$createElement + switch (type) { + case 'lock-invaliad': + return h('p', { + style: { + 'line-height': '26px' + } + }, [ + '当前画布正在被', + this.userText(user), + '编辑,您暂无编辑权限,如需操作请联系其退出编辑,如仅需查看页面最新状态,请直接', + this.hpyerTextGenerator('刷新页面', location.reload.bind(location)) + + ]) + case 'lock-valiad': + return h('p', { + style: { + 'line-height': '26px' + } + }, [ + '当前页面正在被', + this.userText(user), + '编辑,如需获取操作,可点击', + this.hpyerTextGenerator('获取权限', this.occupyPage.bind(this)), + ',如仅需查看页面最新状态,请直接', + this.hpyerTextGenerator('刷新页面', location.reload.bind(location)) + ]) + case 'taked-invaliad': + return h('p', { + style: { + 'line-height': '26px' + } + }, [ + '由于您长时间未操作,页面编辑权已被释放;当前页面正在被', + this.userText(user), + '编辑,如仍需操作请联系其退出,如仅需查看页面最新状态,请直接', + this.hpyerTextGenerator('刷新页面', location.reload.bind(location)) + ]) + case 'taked-valiad': + return h('p', { + style: { + 'line-height': '26px' + } + }, [ + '由于您长时间未操作,页面编辑权已被释放;当前页面正在被', + this.userText(user), + '编辑,如需获取操作,可点击', + this.hpyerTextGenerator('获取权限', this.occupyPage.bind(this)), + '获取权限,如仅需查看页面最新状态,请直接', + this.hpyerTextGenerator('刷新页面', location.reload.bind(location)) + ]) + } + }, + async occupyPage () { + try { + const resp = await this.$store.dispatch('page/occupyPage', { + data: { + pageId: this.pageId + } + }) + if (resp.activeUser === this.user.username) { + this.lockNotify && this.lockNotify.close() + this.$bkMessage({ + message: '抢占成功', + theme: 'success' + }) + } + } catch (error) { + throw Error({ + message: error + }) + } + }, isToolItemActive (item) { if (item.text === '快捷键') { return this.showQuickOperation === true @@ -713,11 +866,15 @@ this.$store.dispatch('page/detail', { pageId: this.pageId }), this.$store.dispatch('page/getList', { projectId: this.projectId }), this.$store.dispatch('project/detail', { projectId: this.projectId }), + this.$store.dispatch('page/pageLockStatus', { pageId: this.pageId }), this.$store.dispatch('route/getProjectPageRoute', { projectId: this.projectId, config: { fromCache: true } }), this.$store.dispatch('layout/getPageLayout', { pageId: this.pageId }), this.$store.dispatch('components/componentNameMap'), this.getAllGroupFuncs(this.projectId) ]) + + await this.lockStatsuPolling('lock') // 处理加锁逻辑 + await this.getAllVariable({ projectId: this.projectId, pageCode: pageDetail.pageCode, effectiveRange: 0 }) // update targetdata const content = pageDetail.content @@ -1182,7 +1339,10 @@ /** * 清空页面已拖拽的元素 */ - handleClearAll () { + async handleClearAll () { + const isLock = await this.checkLockStatus('lock') + if (isLock) return // 如果被锁,不可清空 + const me = this me.$bkInfo({ title: '确定清空所有组件元素?', @@ -1319,6 +1479,9 @@ }, async handleSave (callBack, from) { + const isLock = await this.checkLockStatus('lock') + if (isLock) return // 如果被锁,不可保存 + if (this.isSaving) { return } @@ -1386,7 +1549,11 @@ const { modifiers, prop, type, val, valType } = dir function generateUseInfo (variableId) { const useInfo = { type, componentId: id, prop, modifiers, val } - const useInfos = usedVariableMap[variableId] || (usedVariableMap[variableId] = [], usedVariableMap[variableId]) + // const useInfos = usedVariableMap[variableId] || (usedVariableMap[variableId] = [], usedVariableMap[variableId]) + if (!usedVariableMap[variableId]) { + usedVariableMap[variableId] = [] + } + const useInfos = usedVariableMap[variableId] useInfos.push(useInfo) } if (val !== '' && valType === 'variable') { diff --git a/paas-ce/lesscode/lib/client/src/views/project/function-manage.vue b/paas-ce/lesscode/lib/client/src/views/project/function-manage.vue index 602a29fa9..ef34277e1 100644 --- a/paas-ce/lesscode/lib/client/src/views/project/function-manage.vue +++ b/paas-ce/lesscode/lib/client/src/views/project/function-manage.vue @@ -324,13 +324,12 @@ this.$refs.func.validate().then((postData) => { if (!postData) return this.funcObj.loading = true - const h = this.$createElement if (!postData.projectId) { postData.projectId = this.projectId } const varWhere = { projectId: this.projectId, effectiveRange: 0 } - const add = () => this.addFunc({ groupId: this.curGroupId, func: postData, h, varWhere }) - const edit = () => this.editFunc({ groupId: this.curGroupId, func: postData, h, varWhere }) + const add = () => this.addFunc({ groupId: this.curGroupId, func: postData, varWhere }) + const edit = () => this.editFunc({ groupId: this.curGroupId, func: postData, varWhere }) const curMethod = this.funcObj.isEdit ? edit : add curMethod().then((res) => { @@ -594,8 +593,7 @@ bulkAddFuncFromApi (funcList) { const varWhere = { projectId: this.projectId, effectiveRange: 0 } - const h = this.$createElement - const postData = { groupId: this.curGroupId, funcList, h, varWhere } + const postData = { groupId: this.curGroupId, funcList, varWhere } return this.bulkAddFunc(postData).then((res) => { if (!res) return const projectId = this.$route.params.projectId diff --git a/paas-ce/lesscode/lib/client/src/views/system/health.vue b/paas-ce/lesscode/lib/client/src/views/system/health.vue new file mode 100644 index 000000000..47c927353 --- /dev/null +++ b/paas-ce/lesscode/lib/client/src/views/system/health.vue @@ -0,0 +1,32 @@ + + + diff --git a/paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/base/worker/workerMain.js.map b/paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/base/worker/workerMain.js.map new file mode 100644 index 000000000..ef32b7a5b --- /dev/null +++ b/paas-ce/lesscode/lib/client/static/monaco-editor/min-maps/vs/base/worker/workerMain.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["out-editor/vs/base/worker/fake","out-editor/vs/base/worker/vs/loader.js","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/diff/diffChange.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/errors.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/iterator.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/keyCodes.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/lifecycle.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/linkedList.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/platform.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/process.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/path.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/stopwatch.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/event.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/cancellation.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/strings.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/hash.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/diff/diff.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/types.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/uint.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/uri.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/common/worker/simpleWorker.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/core/characterClassifier.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/core/position.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/core/range.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/core/selection.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/core/token.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/diff/diffComputer.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/model/wordHelper.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/modes/linkComputer.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/modes/supports/inplaceReplaceSupport.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/standalone/standaloneEnums.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/standalone/standaloneBase.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/viewModel/prefixSumComputer.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/model/mirrorTextModel.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/editor/common/services/editorSimpleWorker.ts","out-editor/vs/base/worker/file:/C:/dev/microsoft/vscode/out-editor-src/vs/base/worker/workerMain.ts"],"sourcesContent":["}).call(this);","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/*---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n * Please make sure to make edits in the .ts file at https://github.com/microsoft/vscode-loader/\n *---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n *---------------------------------------------------------------------------------------------\n *--------------------------------------------------------------------------------------------*/\nvar _amdLoaderGlobal = this;\nvar _commonjsGlobal = typeof global === 'object' ? global : {};\nvar AMDLoader;\n(function (AMDLoader) {\n AMDLoader.global = _amdLoaderGlobal;\n var Environment = /** @class */ (function () {\n function Environment() {\n this._detected = false;\n this._isWindows = false;\n this._isNode = false;\n this._isElectronRenderer = false;\n this._isWebWorker = false;\n }\n Object.defineProperty(Environment.prototype, \"isWindows\", {\n get: function () {\n this._detect();\n return this._isWindows;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Environment.prototype, \"isNode\", {\n get: function () {\n this._detect();\n return this._isNode;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Environment.prototype, \"isElectronRenderer\", {\n get: function () {\n this._detect();\n return this._isElectronRenderer;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Environment.prototype, \"isWebWorker\", {\n get: function () {\n this._detect();\n return this._isWebWorker;\n },\n enumerable: false,\n configurable: true\n });\n Environment.prototype._detect = function () {\n if (this._detected) {\n return;\n }\n this._detected = true;\n this._isWindows = Environment._isWindows();\n this._isNode = (typeof module !== 'undefined' && !!module.exports);\n this._isElectronRenderer = (typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.electron !== 'undefined' && process.type === 'renderer');\n this._isWebWorker = (typeof AMDLoader.global.importScripts === 'function');\n };\n Environment._isWindows = function () {\n if (typeof navigator !== 'undefined') {\n if (navigator.userAgent && navigator.userAgent.indexOf('Windows') >= 0) {\n return true;\n }\n }\n if (typeof process !== 'undefined') {\n return (process.platform === 'win32');\n }\n return false;\n };\n return Environment;\n }());\n AMDLoader.Environment = Environment;\n})(AMDLoader || (AMDLoader = {}));\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar AMDLoader;\n(function (AMDLoader) {\n var LoaderEvent = /** @class */ (function () {\n function LoaderEvent(type, detail, timestamp) {\n this.type = type;\n this.detail = detail;\n this.timestamp = timestamp;\n }\n return LoaderEvent;\n }());\n AMDLoader.LoaderEvent = LoaderEvent;\n var LoaderEventRecorder = /** @class */ (function () {\n function LoaderEventRecorder(loaderAvailableTimestamp) {\n this._events = [new LoaderEvent(1 /* LoaderAvailable */, '', loaderAvailableTimestamp)];\n }\n LoaderEventRecorder.prototype.record = function (type, detail) {\n this._events.push(new LoaderEvent(type, detail, AMDLoader.Utilities.getHighPerformanceTimestamp()));\n };\n LoaderEventRecorder.prototype.getEvents = function () {\n return this._events;\n };\n return LoaderEventRecorder;\n }());\n AMDLoader.LoaderEventRecorder = LoaderEventRecorder;\n var NullLoaderEventRecorder = /** @class */ (function () {\n function NullLoaderEventRecorder() {\n }\n NullLoaderEventRecorder.prototype.record = function (type, detail) {\n // Nothing to do\n };\n NullLoaderEventRecorder.prototype.getEvents = function () {\n return [];\n };\n NullLoaderEventRecorder.INSTANCE = new NullLoaderEventRecorder();\n return NullLoaderEventRecorder;\n }());\n AMDLoader.NullLoaderEventRecorder = NullLoaderEventRecorder;\n})(AMDLoader || (AMDLoader = {}));\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar AMDLoader;\n(function (AMDLoader) {\n var Utilities = /** @class */ (function () {\n function Utilities() {\n }\n /**\n * This method does not take care of / vs \\\n */\n Utilities.fileUriToFilePath = function (isWindows, uri) {\n uri = decodeURI(uri).replace(/%23/g, '#');\n if (isWindows) {\n if (/^file:\\/\\/\\//.test(uri)) {\n // This is a URI without a hostname => return only the path segment\n return uri.substr(8);\n }\n if (/^file:\\/\\//.test(uri)) {\n return uri.substr(5);\n }\n }\n else {\n if (/^file:\\/\\//.test(uri)) {\n return uri.substr(7);\n }\n }\n // Not sure...\n return uri;\n };\n Utilities.startsWith = function (haystack, needle) {\n return haystack.length >= needle.length && haystack.substr(0, needle.length) === needle;\n };\n Utilities.endsWith = function (haystack, needle) {\n return haystack.length >= needle.length && haystack.substr(haystack.length - needle.length) === needle;\n };\n // only check for \"?\" before \"#\" to ensure that there is a real Query-String\n Utilities.containsQueryString = function (url) {\n return /^[^\\#]*\\?/gi.test(url);\n };\n /**\n * Does `url` start with http:// or https:// or file:// or / ?\n */\n Utilities.isAbsolutePath = function (url) {\n return /^((http:\\/\\/)|(https:\\/\\/)|(file:\\/\\/)|(\\/))/.test(url);\n };\n Utilities.forEachProperty = function (obj, callback) {\n if (obj) {\n var key = void 0;\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n callback(key, obj[key]);\n }\n }\n }\n };\n Utilities.isEmpty = function (obj) {\n var isEmpty = true;\n Utilities.forEachProperty(obj, function () {\n isEmpty = false;\n });\n return isEmpty;\n };\n Utilities.recursiveClone = function (obj) {\n if (!obj || typeof obj !== 'object' || obj instanceof RegExp) {\n return obj;\n }\n if (!Array.isArray(obj) && Object.getPrototypeOf(obj) !== Object.prototype) {\n // only clone \"simple\" objects\n return obj;\n }\n var result = Array.isArray(obj) ? [] : {};\n Utilities.forEachProperty(obj, function (key, value) {\n if (value && typeof value === 'object') {\n result[key] = Utilities.recursiveClone(value);\n }\n else {\n result[key] = value;\n }\n });\n return result;\n };\n Utilities.generateAnonymousModule = function () {\n return '===anonymous' + (Utilities.NEXT_ANONYMOUS_ID++) + '===';\n };\n Utilities.isAnonymousModule = function (id) {\n return Utilities.startsWith(id, '===anonymous');\n };\n Utilities.getHighPerformanceTimestamp = function () {\n if (!this.PERFORMANCE_NOW_PROBED) {\n this.PERFORMANCE_NOW_PROBED = true;\n this.HAS_PERFORMANCE_NOW = (AMDLoader.global.performance && typeof AMDLoader.global.performance.now === 'function');\n }\n return (this.HAS_PERFORMANCE_NOW ? AMDLoader.global.performance.now() : Date.now());\n };\n Utilities.NEXT_ANONYMOUS_ID = 1;\n Utilities.PERFORMANCE_NOW_PROBED = false;\n Utilities.HAS_PERFORMANCE_NOW = false;\n return Utilities;\n }());\n AMDLoader.Utilities = Utilities;\n})(AMDLoader || (AMDLoader = {}));\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar AMDLoader;\n(function (AMDLoader) {\n function ensureError(err) {\n if (err instanceof Error) {\n return err;\n }\n var result = new Error(err.message || String(err) || 'Unknown Error');\n if (err.stack) {\n result.stack = err.stack;\n }\n return result;\n }\n AMDLoader.ensureError = ensureError;\n ;\n var ConfigurationOptionsUtil = /** @class */ (function () {\n function ConfigurationOptionsUtil() {\n }\n /**\n * Ensure configuration options make sense\n */\n ConfigurationOptionsUtil.validateConfigurationOptions = function (options) {\n function defaultOnError(err) {\n if (err.phase === 'loading') {\n console.error('Loading \"' + err.moduleId + '\" failed');\n console.error(err);\n console.error('Here are the modules that depend on it:');\n console.error(err.neededBy);\n return;\n }\n if (err.phase === 'factory') {\n console.error('The factory method of \"' + err.moduleId + '\" has thrown an exception');\n console.error(err);\n return;\n }\n }\n options = options || {};\n if (typeof options.baseUrl !== 'string') {\n options.baseUrl = '';\n }\n if (typeof options.isBuild !== 'boolean') {\n options.isBuild = false;\n }\n if (typeof options.paths !== 'object') {\n options.paths = {};\n }\n if (typeof options.config !== 'object') {\n options.config = {};\n }\n if (typeof options.catchError === 'undefined') {\n options.catchError = false;\n }\n if (typeof options.recordStats === 'undefined') {\n options.recordStats = false;\n }\n if (typeof options.urlArgs !== 'string') {\n options.urlArgs = '';\n }\n if (typeof options.onError !== 'function') {\n options.onError = defaultOnError;\n }\n if (!Array.isArray(options.ignoreDuplicateModules)) {\n options.ignoreDuplicateModules = [];\n }\n if (options.baseUrl.length > 0) {\n if (!AMDLoader.Utilities.endsWith(options.baseUrl, '/')) {\n options.baseUrl += '/';\n }\n }\n if (typeof options.cspNonce !== 'string') {\n options.cspNonce = '';\n }\n if (typeof options.preferScriptTags === 'undefined') {\n options.preferScriptTags = false;\n }\n if (!Array.isArray(options.nodeModules)) {\n options.nodeModules = [];\n }\n if (options.nodeCachedData && typeof options.nodeCachedData === 'object') {\n if (typeof options.nodeCachedData.seed !== 'string') {\n options.nodeCachedData.seed = 'seed';\n }\n if (typeof options.nodeCachedData.writeDelay !== 'number' || options.nodeCachedData.writeDelay < 0) {\n options.nodeCachedData.writeDelay = 1000 * 7;\n }\n if (!options.nodeCachedData.path || typeof options.nodeCachedData.path !== 'string') {\n var err = ensureError(new Error('INVALID cached data configuration, \\'path\\' MUST be set'));\n err.phase = 'configuration';\n options.onError(err);\n options.nodeCachedData = undefined;\n }\n }\n return options;\n };\n ConfigurationOptionsUtil.mergeConfigurationOptions = function (overwrite, base) {\n if (overwrite === void 0) { overwrite = null; }\n if (base === void 0) { base = null; }\n var result = AMDLoader.Utilities.recursiveClone(base || {});\n // Merge known properties and overwrite the unknown ones\n AMDLoader.Utilities.forEachProperty(overwrite, function (key, value) {\n if (key === 'ignoreDuplicateModules' && typeof result.ignoreDuplicateModules !== 'undefined') {\n result.ignoreDuplicateModules = result.ignoreDuplicateModules.concat(value);\n }\n else if (key === 'paths' && typeof result.paths !== 'undefined') {\n AMDLoader.Utilities.forEachProperty(value, function (key2, value2) { return result.paths[key2] = value2; });\n }\n else if (key === 'config' && typeof result.config !== 'undefined') {\n AMDLoader.Utilities.forEachProperty(value, function (key2, value2) { return result.config[key2] = value2; });\n }\n else {\n result[key] = AMDLoader.Utilities.recursiveClone(value);\n }\n });\n return ConfigurationOptionsUtil.validateConfigurationOptions(result);\n };\n return ConfigurationOptionsUtil;\n }());\n AMDLoader.ConfigurationOptionsUtil = ConfigurationOptionsUtil;\n var Configuration = /** @class */ (function () {\n function Configuration(env, options) {\n this._env = env;\n this.options = ConfigurationOptionsUtil.mergeConfigurationOptions(options);\n this._createIgnoreDuplicateModulesMap();\n this._createNodeModulesMap();\n this._createSortedPathsRules();\n if (this.options.baseUrl === '') {\n if (this.options.nodeRequire && this.options.nodeRequire.main && this.options.nodeRequire.main.filename && this._env.isNode) {\n var nodeMain = this.options.nodeRequire.main.filename;\n var dirnameIndex = Math.max(nodeMain.lastIndexOf('/'), nodeMain.lastIndexOf('\\\\'));\n this.options.baseUrl = nodeMain.substring(0, dirnameIndex + 1);\n }\n if (this.options.nodeMain && this._env.isNode) {\n var nodeMain = this.options.nodeMain;\n var dirnameIndex = Math.max(nodeMain.lastIndexOf('/'), nodeMain.lastIndexOf('\\\\'));\n this.options.baseUrl = nodeMain.substring(0, dirnameIndex + 1);\n }\n }\n }\n Configuration.prototype._createIgnoreDuplicateModulesMap = function () {\n // Build a map out of the ignoreDuplicateModules array\n this.ignoreDuplicateModulesMap = {};\n for (var i = 0; i < this.options.ignoreDuplicateModules.length; i++) {\n this.ignoreDuplicateModulesMap[this.options.ignoreDuplicateModules[i]] = true;\n }\n };\n Configuration.prototype._createNodeModulesMap = function () {\n // Build a map out of nodeModules array\n this.nodeModulesMap = Object.create(null);\n for (var _i = 0, _a = this.options.nodeModules; _i < _a.length; _i++) {\n var nodeModule = _a[_i];\n this.nodeModulesMap[nodeModule] = true;\n }\n };\n Configuration.prototype._createSortedPathsRules = function () {\n var _this = this;\n // Create an array our of the paths rules, sorted descending by length to\n // result in a more specific -> less specific order\n this.sortedPathsRules = [];\n AMDLoader.Utilities.forEachProperty(this.options.paths, function (from, to) {\n if (!Array.isArray(to)) {\n _this.sortedPathsRules.push({\n from: from,\n to: [to]\n });\n }\n else {\n _this.sortedPathsRules.push({\n from: from,\n to: to\n });\n }\n });\n this.sortedPathsRules.sort(function (a, b) {\n return b.from.length - a.from.length;\n });\n };\n /**\n * Clone current configuration and overwrite options selectively.\n * @param options The selective options to overwrite with.\n * @result A new configuration\n */\n Configuration.prototype.cloneAndMerge = function (options) {\n return new Configuration(this._env, ConfigurationOptionsUtil.mergeConfigurationOptions(options, this.options));\n };\n /**\n * Get current options bag. Useful for passing it forward to plugins.\n */\n Configuration.prototype.getOptionsLiteral = function () {\n return this.options;\n };\n Configuration.prototype._applyPaths = function (moduleId) {\n var pathRule;\n for (var i = 0, len = this.sortedPathsRules.length; i < len; i++) {\n pathRule = this.sortedPathsRules[i];\n if (AMDLoader.Utilities.startsWith(moduleId, pathRule.from)) {\n var result = [];\n for (var j = 0, lenJ = pathRule.to.length; j < lenJ; j++) {\n result.push(pathRule.to[j] + moduleId.substr(pathRule.from.length));\n }\n return result;\n }\n }\n return [moduleId];\n };\n Configuration.prototype._addUrlArgsToUrl = function (url) {\n if (AMDLoader.Utilities.containsQueryString(url)) {\n return url + '&' + this.options.urlArgs;\n }\n else {\n return url + '?' + this.options.urlArgs;\n }\n };\n Configuration.prototype._addUrlArgsIfNecessaryToUrl = function (url) {\n if (this.options.urlArgs) {\n return this._addUrlArgsToUrl(url);\n }\n return url;\n };\n Configuration.prototype._addUrlArgsIfNecessaryToUrls = function (urls) {\n if (this.options.urlArgs) {\n for (var i = 0, len = urls.length; i < len; i++) {\n urls[i] = this._addUrlArgsToUrl(urls[i]);\n }\n }\n return urls;\n };\n /**\n * Transform a module id to a location. Appends .js to module ids\n */\n Configuration.prototype.moduleIdToPaths = function (moduleId) {\n var isNodeModule = ((this.nodeModulesMap[moduleId] === true)\n || (this.options.amdModulesPattern instanceof RegExp && !this.options.amdModulesPattern.test(moduleId)));\n if (isNodeModule) {\n // This is a node module...\n if (this.isBuild()) {\n // ...and we are at build time, drop it\n return ['empty:'];\n }\n else {\n // ...and at runtime we create a `shortcut`-path\n return ['node|' + moduleId];\n }\n }\n var result = moduleId;\n var results;\n if (!AMDLoader.Utilities.endsWith(result, '.js') && !AMDLoader.Utilities.isAbsolutePath(result)) {\n results = this._applyPaths(result);\n for (var i = 0, len = results.length; i < len; i++) {\n if (this.isBuild() && results[i] === 'empty:') {\n continue;\n }\n if (!AMDLoader.Utilities.isAbsolutePath(results[i])) {\n results[i] = this.options.baseUrl + results[i];\n }\n if (!AMDLoader.Utilities.endsWith(results[i], '.js') && !AMDLoader.Utilities.containsQueryString(results[i])) {\n results[i] = results[i] + '.js';\n }\n }\n }\n else {\n if (!AMDLoader.Utilities.endsWith(result, '.js') && !AMDLoader.Utilities.containsQueryString(result)) {\n result = result + '.js';\n }\n results = [result];\n }\n return this._addUrlArgsIfNecessaryToUrls(results);\n };\n /**\n * Transform a module id or url to a location.\n */\n Configuration.prototype.requireToUrl = function (url) {\n var result = url;\n if (!AMDLoader.Utilities.isAbsolutePath(result)) {\n result = this._applyPaths(result)[0];\n if (!AMDLoader.Utilities.isAbsolutePath(result)) {\n result = this.options.baseUrl + result;\n }\n }\n return this._addUrlArgsIfNecessaryToUrl(result);\n };\n /**\n * Flag to indicate if current execution is as part of a build.\n */\n Configuration.prototype.isBuild = function () {\n return this.options.isBuild;\n };\n /**\n * Test if module `moduleId` is expected to be defined multiple times\n */\n Configuration.prototype.isDuplicateMessageIgnoredFor = function (moduleId) {\n return this.ignoreDuplicateModulesMap.hasOwnProperty(moduleId);\n };\n /**\n * Get the configuration settings for the provided module id\n */\n Configuration.prototype.getConfigForModule = function (moduleId) {\n if (this.options.config) {\n return this.options.config[moduleId];\n }\n };\n /**\n * Should errors be caught when executing module factories?\n */\n Configuration.prototype.shouldCatchError = function () {\n return this.options.catchError;\n };\n /**\n * Should statistics be recorded?\n */\n Configuration.prototype.shouldRecordStats = function () {\n return this.options.recordStats;\n };\n /**\n * Forward an error to the error handler.\n */\n Configuration.prototype.onError = function (err) {\n this.options.onError(err);\n };\n return Configuration;\n }());\n AMDLoader.Configuration = Configuration;\n})(AMDLoader || (AMDLoader = {}));\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar AMDLoader;\n(function (AMDLoader) {\n /**\n * Load `scriptSrc` only once (avoid multiple