diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 7b59e09..0000000 --- a/.eslintignore +++ /dev/null @@ -1,7 +0,0 @@ -/dist -/src-capacitor -/src-cordova -/.quasar -/node_modules -.eslintrc.js -/src-ssr diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..078ede2 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,21 @@ +{ + "root": true, + "env": { + "browser": true, + "es2021": true + }, + "plugins": ["@typescript-eslint", "prettier"], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", + "prettier" + ], + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "rules": { + "prettier/prettier": "error" + } +} diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 765228b..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,89 +0,0 @@ -module.exports = { - // https://eslint.org/docs/user-guide/configuring#configuration-cascading-and-hierarchy - // This option interrupts the configuration hierarchy at this file - // Remove this if you have an higher level ESLint config file (it usually happens into a monorepos) - root: true, - - // https://eslint.vuejs.org/user-guide/#how-to-use-a-custom-parser - // Must use parserOptions instead of "parser" to allow vue-eslint-parser to keep working - // `parser: 'vue-eslint-parser'` is already included with any 'plugin:vue/**' config and should be omitted - parserOptions: { - parser: require.resolve('@typescript-eslint/parser'), - extraFileExtensions: ['.vue'], - }, - - env: { - browser: true, - es2021: true, - node: true, - 'vue/setup-compiler-macros': true, - }, - - // Rules order is important, please avoid shuffling them - extends: [ - // Base ESLint recommended rules - // 'eslint:recommended', - - // https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin#usage - // ESLint typescript rules - 'plugin:@typescript-eslint/recommended', - - // Uncomment any of the lines below to choose desired strictness, - // but leave only one uncommented! - // See https://eslint.vuejs.org/rules/#available-rules - 'plugin:vue/vue3-essential', // Priority A: Essential (Error Prevention) - // 'plugin:vue/vue3-strongly-recommended', // Priority B: Strongly Recommended (Improving Readability) - // 'plugin:vue/vue3-recommended', // Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead) - - // https://github.com/prettier/eslint-config-prettier#installation - // usage with Prettier, provided by 'eslint-config-prettier'. - 'prettier', - ], - - plugins: [ - // required to apply rules which need type information - '@typescript-eslint', - - // https://eslint.vuejs.org/user-guide/#why-doesn-t-it-work-on-vue-files - // required to lint *.vue files - 'vue', - - // https://github.com/typescript-eslint/typescript-eslint/issues/389#issuecomment-509292674 - // Prettier has not been included as plugin to avoid performance impact - // add it as an extension for your IDE - ], - - globals: { - ga: 'readonly', // Google Analytics - cordova: 'readonly', - __statics: 'readonly', - __QUASAR_SSR__: 'readonly', - __QUASAR_SSR_SERVER__: 'readonly', - __QUASAR_SSR_CLIENT__: 'readonly', - __QUASAR_SSR_PWA__: 'readonly', - process: 'readonly', - Capacitor: 'readonly', - chrome: 'readonly', - }, - - // add your custom rules here - rules: { - 'prefer-promise-reject-errors': 'off', - - quotes: ['warn', 'single', { avoidEscape: true }], - - // this rule, if on, would require explicit return type on the `render` function - '@typescript-eslint/explicit-function-return-type': 'off', - - // in plain CommonJS modules, you can't use `import foo = require('foo')` to pass this rule, so it has to be disabled - '@typescript-eslint/no-var-requires': 'off', - '@typescript-eslint/no-namespace': 'off', - - // The core 'no-unused-vars' rules (in the eslint:recommended ruleset) - // does not work with type definitions - 'no-unused-vars': 'off', - - // allow debugger during development only - 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', - }, -}; diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index fe38802..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "recommendations": [ - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", - "editorconfig.editorconfig", - "vue.volar", - "wayou.vscode-todo-highlight" - ], - "unwantedRecommendations": [ - "octref.vetur", - "hookyqr.beautify", - "dbaeumer.jshint", - "ms-vscode.vscode-typescript-tslint-plugin" - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 746cf57..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "editor.bracketPairColorization.enabled": true, - "editor.guides.bracketPairs": true, - "editor.formatOnSave": true, - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.codeActionsOnSave": [ - "source.fixAll.eslint" - ], - "eslint.validate": [ - "javascript", - "javascriptreact", - "typescript", - "vue" - ], - "typescript.tsdk": "node_modules/typescript/lib" -} \ No newline at end of file diff --git a/index.html b/index.html deleted file mode 100644 index 3c8c78f..0000000 --- a/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - <%= productName %> - - - - - - - - - - - - - - - - - diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..96a33c2 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,8051 @@ +'use strict'; + +var pixi_js = require('pixi.js'); +var EventEmitter = require('eventemitter3'); +var pixiViewport = require('pixi-viewport'); +var stompjs = require('@stomp/stompjs'); +var mqtt = require('mqtt'); + +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +/** + * ID生成器 + */ +var IdGenerator = /** @class */ (function () { + function IdGenerator(type) { + this.serial = 0; + this.type = type; + } + IdGenerator.prototype.next = function () { + ++this.serial; + // console.log(this.getType() + this.serial) + return this.getType() + this.serial; + }; + IdGenerator.prototype.getType = function () { + return this.type; + }; + IdGenerator.prototype.initSerial = function (serial) { + // console.log(serial) + this.serial = serial; + }; + return IdGenerator; +}()); +var GraphicIdGenerator = new IdGenerator(''); + +exports.InteractionPluginType = void 0; +(function (InteractionPluginType) { + InteractionPluginType["App"] = "app"; + InteractionPluginType["Graphic"] = "graphic"; + InteractionPluginType["Other"] = "other"; +})(exports.InteractionPluginType || (exports.InteractionPluginType = {})); +var InteractionPluginBase = /** @class */ (function () { + function InteractionPluginBase(app, name, type) { + this._type = type; + this.app = app; + this.name = name; + this._pause = true; + app.registerInteractionPlugin(this); + } + /** + * 恢复 + */ + InteractionPluginBase.prototype.resume = function () { + this.bind(); + this._pause = false; + this.app.emit('interaction-plugin-resume', this); + }; + /** + * 停止 + */ + InteractionPluginBase.prototype.pause = function () { + this.unbind(); + this._pause = true; + this.app.emit('interaction-plugin-pause', this); + }; + /** + * 是否生效 + */ + InteractionPluginBase.prototype.isActive = function () { + return !this._pause; + }; + InteractionPluginBase.prototype.isGraphicPlugin = function () { + return this._type === exports.InteractionPluginType.Graphic; + }; + InteractionPluginBase.prototype.isAppPlugin = function () { + return this._type === exports.InteractionPluginType.App; + }; + InteractionPluginBase.prototype.isOtherPlugin = function () { + return this._type === exports.InteractionPluginType.Other; + }; + return InteractionPluginBase; +}()); +var OtherInteractionPlugin = /** @class */ (function (_super) { + __extends(OtherInteractionPlugin, _super); + function OtherInteractionPlugin(app, name) { + return _super.call(this, app, name, exports.InteractionPluginType.Other) || this; + } + return OtherInteractionPlugin; +}(InteractionPluginBase)); +var AppDragEvent = /** @class */ (function () { + function AppDragEvent(app, type, target, original, start) { + this.app = app; + this.type = type; + this.target = target; + this.original = original; + this.start = start; + } + Object.defineProperty(AppDragEvent.prototype, "isMouse", { + get: function () { + return this.original.pointerType === 'mouse'; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(AppDragEvent.prototype, "isLeftButton", { + get: function () { + return (this.isMouse && + ((this.original.button === -1 && this.original.buttons === 1) || + (this.original.button === 0 && this.original.buttons === 0))); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(AppDragEvent.prototype, "isRightButton", { + get: function () { + return (this.isMouse && + ((this.original.button === -1 && this.original.buttons === 2) || + (this.original.button === 2 && this.original.buttons === 0))); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(AppDragEvent.prototype, "isMiddleButton", { + get: function () { + return (this.isMouse && + ((this.original.button === -1 && this.original.buttons === 4) || + (this.original.button === 1 && this.original.buttons === 0))); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(AppDragEvent.prototype, "isTouch", { + get: function () { + return this.original.pointerType === 'touch'; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(AppDragEvent.prototype, "end", { + /** + * 终点坐标(画布坐标) + */ + get: function () { + return this.app.toCanvasCoordinates(this.original.global); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(AppDragEvent.prototype, "dx", { + get: function () { + var move = this.original.movement; + return move.x / this.app.viewport.scaled; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(AppDragEvent.prototype, "dy", { + get: function () { + var move = this.original.movement; + return move.y / this.app.viewport.scaled; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(AppDragEvent.prototype, "dsx", { + get: function () { + return this.end.x - this.start.x; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(AppDragEvent.prototype, "dsy", { + get: function () { + return this.end.y - this.start.y; + }, + enumerable: false, + configurable: true + }); + /** + * 转换为目标对象的位移距离 + */ + AppDragEvent.prototype.toTargetShiftLen = function (target) { + var sl = target.canvasToLocalPoint(this.start); + var el = target.canvasToLocalPoint(this.end); + return { dx: el.x - sl.x, dy: el.y - sl.y }; + }; + return AppDragEvent; +}()); +/** + * 拖拽操作插件 + */ +var DragPlugin = /** @class */ (function (_super) { + __extends(DragPlugin, _super); + function DragPlugin(app) { + var _this = _super.call(this, app, DragPlugin.Name) || this; + _this.threshold = 3; + _this.target = null; + _this.start = null; + _this.startClientPoint = null; + _this.drag = false; + app.on('options-update', function (options) { + if (options.threshold !== undefined) { + _this.threshold = options.threshold; + } + }); + return _this; + } + DragPlugin.new = function (app) { + return new DragPlugin(app); + }; + DragPlugin.prototype.bind = function () { + var canvas = this.app.canvas; + canvas.on('pointerdown', this.onPointerDown, this); + }; + DragPlugin.prototype.unbind = function () { + var canvas = this.app.canvas; + canvas.off('pointerdown', this.onPointerDown, this); + canvas.off('pointerup', this.onPointerUp, this); + canvas.off('pointerupoutside', this.onPointerUp, this); + }; + DragPlugin.prototype.onPointerDown = function (e) { + this.target = e.target; + this.start = this.app.toCanvasCoordinates(e.global); + this.startClientPoint = e.global.clone(); + var canvas = this.app.canvas; + canvas.on('pointermove', this.onPointerMove, this); + canvas.on('pointerup', this.onPointerUp, this); + canvas.on('pointerupoutside', this.onPointerUp, this); + }; + DragPlugin.prototype.onPointerMove = function (e) { + if (this.start && this.startClientPoint) { + var current = e.global; + var sgp = this.startClientPoint; + var dragStart = Math.abs(current.x - sgp.x) > this.threshold || + Math.abs(current.y - sgp.y) > this.threshold; + if (this.target && this.start && !this.drag && dragStart) { + this.app.emit('drag_op_start', new AppDragEvent(this.app, 'start', this.target, e, this.start)); + this.drag = true; + } + // drag移动处理 + if (this.target && this.drag && this.start) { + // console.log('drag move', e.movement); + this.app.emit('drag_op_move', new AppDragEvent(this.app, 'move', this.target, e, this.start)); + } + } + }; + DragPlugin.prototype.onPointerUp = function (e) { + if (this.target && this.drag && this.start) { + // console.log('drag end'); + this.app.emit('drag_op_end', new AppDragEvent(this.app, 'end', this.target, e, this.start)); + } + else if (this.target && this.start && !this.drag) { + // this.target.emit('click', this.target); + var ade = new AppDragEvent(this.app, 'end', this.target, e, this.start); + var graphic = this.target.getGraphic(); + if (ade.isRightButton) { + this.target.emit('_rightclick', e); + if (graphic != null) { + graphic.emit('_rightclick', e); + } + } + else if (ade.isLeftButton) { + this.target.emit('_leftclick', e); + if (graphic != null) { + graphic.emit('_leftclick', e); + } + } + } + var canvas = this.app.canvas; + canvas.off('mousemove', this.onPointerMove, this); + canvas.off('mouseup', this.onPointerUp, this); + canvas.off('mouseupoutside', this.onPointerUp, this); + this.clearCache(); + }; + /** + * 清理缓存 + */ + DragPlugin.prototype.clearCache = function () { + this.drag = false; + this.start = null; + this.startClientPoint = null; + this.target = null; + }; + DragPlugin.Name = '__drag_operation_plugin'; + return DragPlugin; +}(OtherInteractionPlugin)); +/** + * 视口移动插件 + */ +var ViewportMovePlugin = /** @class */ (function (_super) { + __extends(ViewportMovePlugin, _super); + function ViewportMovePlugin(app) { + var _this = _super.call(this, app, ViewportMovePlugin.Name) || this; + _this.moveHandler = null; + _this.moveSpeedx = 0; + _this.moveSpeedy = 0; + return _this; + } + ViewportMovePlugin.new = function (app) { + return new ViewportMovePlugin(app); + }; + ViewportMovePlugin.prototype.pause = function () { + _super.prototype.pause.call(this); + this.stopMove(); + }; + ViewportMovePlugin.prototype.bind = function () { + this.app.canvas.on('pointermove', this.viewportMove, this); + }; + ViewportMovePlugin.prototype.unbind = function () { + this.app.canvas.off('pointermove', this.viewportMove, this); + }; + ViewportMovePlugin.prototype.startMove = function (moveSpeedx, moveSpeedy) { + var _this = this; + this.moveSpeedx = moveSpeedx; + this.moveSpeedy = moveSpeedy; + if (this.moveHandler == null) { + var viewport_1 = this.app.viewport; + this.moveHandler = setInterval(function () { + viewport_1.moveCorner(viewport_1.corner.x + _this.moveSpeedx, viewport_1.corner.y + _this.moveSpeedy); + }, ViewportMovePlugin.MoveInterval); + } + }; + ViewportMovePlugin.prototype.stopMove = function () { + if (this.moveHandler != null) { + clearInterval(this.moveHandler); + this.moveHandler = null; + this.app.canvas.cursor = 'auto'; + } + }; + ViewportMovePlugin.prototype.calculateBoundaryMoveSpeed = function (sp) { + var moveSpeedx = 0; + var moveSpeedy = 0; + var range = ViewportMovePlugin.TriggerRange; + var viewport = this.app.viewport; + if (sp.x < range) { + moveSpeedx = this.calculateMoveSpeed(sp.x - range); + } + else if (sp.x > viewport.screenWidth - range) { + moveSpeedx = this.calculateMoveSpeed(sp.x + range - viewport.screenWidth); + } + else { + moveSpeedx = 0; + } + if (sp.y < range) { + moveSpeedy = this.calculateMoveSpeed(sp.y - range); + } + else if (sp.y > viewport.screenHeight - range) { + moveSpeedy = this.calculateMoveSpeed(sp.y + range - viewport.screenHeight); + } + else { + moveSpeedy = 0; + } + return { moveSpeedx: moveSpeedx, moveSpeedy: moveSpeedy }; + }; + ViewportMovePlugin.prototype.calculateMoveSpeed = function (dd) { + return ((dd / ViewportMovePlugin.TriggerRange) * + ViewportMovePlugin.DefaultMoveSpeed); + }; + ViewportMovePlugin.prototype.viewportMove = function (e) { + var sp = e.global; + var _a = this.calculateBoundaryMoveSpeed(sp), moveSpeedx = _a.moveSpeedx, moveSpeedy = _a.moveSpeedy; + if (moveSpeedx == 0 && moveSpeedy == 0) { + this.app.canvas.cursor = 'auto'; + this.stopMove(); + } + else { + this.app.canvas.cursor = 'grab'; + this.startMove(moveSpeedx, moveSpeedy); + } + }; + ViewportMovePlugin.Name = '__viewport_move_plugin'; + ViewportMovePlugin.MoveInterval = 20; // 移动间隔,单位ms + ViewportMovePlugin.TriggerRange = 100; // 边界触发范围,单位px + ViewportMovePlugin.DefaultMoveSpeed = 200 / ViewportMovePlugin.MoveInterval; // 默认移动速度 + return ViewportMovePlugin; +}(OtherInteractionPlugin)); +/** + * 应用交互插件,同时只能生效一个 + */ +var AppInteractionPlugin = /** @class */ (function (_super) { + __extends(AppInteractionPlugin, _super); + function AppInteractionPlugin(name, app) { + return _super.call(this, app, name, exports.InteractionPluginType.App) || this; + } + /** + * 恢复,app交互插件同时只能生效一个 + */ + AppInteractionPlugin.prototype.resume = function () { + this.app.pauseAppInteractionPlugins(); + _super.prototype.resume.call(this); + }; + return AppInteractionPlugin; +}(InteractionPluginBase)); +/** + * 图形交互插件,可同时生效 + */ +var GraphicInteractionPlugin = /** @class */ (function () { + function GraphicInteractionPlugin(name, app) { + var _this = this; + this._type = exports.InteractionPluginType.Graphic; + this.app = app; + this.name = name; + this._pause = true; + app.registerInteractionPlugin(this); + this.resume(); + // 新增的图形对象绑定 + this.app.on('graphicstored', function (g) { + if (_this.isActive()) { + _this.binds(_this.filter(g)); + } + }); + this.app.on('graphicdeleted', function (g) { + if (_this.isActive()) { + _this.unbinds(_this.filter(g)); + } + }); + } + GraphicInteractionPlugin.prototype.isActive = function () { + return !this._pause; + }; + GraphicInteractionPlugin.prototype.isAppPlugin = function () { + return false; + }; + GraphicInteractionPlugin.prototype.isOtherPlugin = function () { + return false; + }; + GraphicInteractionPlugin.prototype.isGraphicPlugin = function () { + return true; + }; + GraphicInteractionPlugin.prototype.resume = function () { + var list = this.filter.apply(this, this.app.queryStore.getAllGraphics()); + this.binds(list); + this._pause = false; + this.app.emit('interaction-plugin-resume', this); + }; + GraphicInteractionPlugin.prototype.pause = function () { + var list = this.filter.apply(this, this.app.queryStore.getAllGraphics()); + this.unbinds(list); + this._pause = true; + this.app.emit('interaction-plugin-pause', this); + }; + GraphicInteractionPlugin.prototype.binds = function (list) { + var _this = this; + if (list) { + list.forEach(function (g) { return _this.bind(g); }); + } + }; + GraphicInteractionPlugin.prototype.unbinds = function (list) { + var _this = this; + if (list) { + list.forEach(function (g) { return _this.unbind(g); }); + } + }; + return GraphicInteractionPlugin; +}()); + +var CompleteMouseToolOptions = /** @class */ (function () { + function CompleteMouseToolOptions() { + this.boxSelect = true; + this.viewportDrag = true; + this.wheelZoom = true; + this.viewportDragLeft = false; + } + CompleteMouseToolOptions.prototype.update = function (options) { + if (options.boxSelect != undefined) { + this.boxSelect = options.boxSelect; + } + if (options.viewportDrag != undefined) { + this.viewportDrag = options.viewportDrag; + } + if (options.viewportDragLeft != undefined) { + this.viewportDragLeft = options.viewportDragLeft; + } + if (options.wheelZoom != undefined) { + this.wheelZoom = options.wheelZoom; + } + this.selectFilter = options.selectFilter; + }; + return CompleteMouseToolOptions; +}()); +/** + * 通用交互工具 + */ +var CommonMouseTool = /** @class */ (function (_super) { + __extends(CommonMouseTool, _super); + function CommonMouseTool(scene) { + var _this = _super.call(this, CommonMouseTool.Name, scene) || this; + _this.leftDownTarget = null; + _this.drag = false; + _this.graphicSelect = false; + _this.rightTarget = null; + _this.options = new CompleteMouseToolOptions(); + _this.box = new pixi_js.Graphics(); + _this.box.name = CommonMouseTool.SelectBox; + _this.box.visible = false; + _this.app.canvas.addAssistantAppends(_this.box); + scene.on('options-update', function (options) { + if (options.mouseToolOptions) { + _this.options.update(options.mouseToolOptions); + if (_this.isActive()) { + _this.pause(); + _this.resume(); + } + } + }); + return _this; + } + CommonMouseTool.new = function (app) { + return new CommonMouseTool(app); + }; + CommonMouseTool.prototype.bind = function () { + var canvas = this.app.canvas; + canvas.on('mousedown', this.onMouseDown, this); + canvas.on('mouseup', this.onMouseUp, this); + this.app.on('drag_op_start', this.onDragStart, this); + this.app.on('drag_op_move', this.onDragMove, this); + this.app.on('drag_op_end', this.onDragEnd, this); + if (this.options.viewportDrag) { + if (this.options.viewportDragLeft) { + this.app.viewport.drag({ + mouseButtons: 'left', + }); + canvas.on('mousedown', this.setLeftCursor, this); + canvas.on('mouseup', this.resumeLeftCursor, this); + canvas.on('mouseupoutside', this.resumeLeftCursor, this); + } + else { + this.app.viewport.drag({ + mouseButtons: 'right', + }); + canvas.on('rightdown', this.setCursor, this); + canvas.on('rightup', this.resumeCursor, this); + canvas.on('rightupoutside', this.resumeCursor, this); + } + } + if (this.options.wheelZoom) { + this.app.viewport.wheel({ + percent: 0.01, + }); + } + }; + CommonMouseTool.prototype.unbind = function () { + var canvas = this.app.canvas; + // 确保所有事件取消监听 + canvas.off('mousedown', this.onMouseDown, this); + canvas.off('mouseup', this.onMouseUp, this); + this.app.off('drag_op_start', this.onDragStart, this); + this.app.off('drag_op_move', this.onDragMove, this); + this.app.off('drag_op_end', this.onDragEnd, this); + this.app.viewport.plugins.remove('drag'); + canvas.off('mousedown', this.setLeftCursor, this); + canvas.off('mouseup', this.resumeLeftCursor, this); + canvas.off('mouseupoutside', this.resumeLeftCursor, this); + canvas.off('rightdown', this.setCursor, this); + canvas.off('rightup', this.resumeCursor, this); + canvas.off('rightupoutside', this.resumeCursor, this); + this.app.viewport.plugins.remove('wheel'); + this.clearCache(); + }; + CommonMouseTool.prototype.onDragStart = function (event) { + // console.log( + // 'start', + // `pointerType:${event.original.pointerType},pointerId:${event.original.pointerId},button: ${event.original.button},buttons:${event.original.buttons}` + // ); + if (this.boxSelect && event.target.isCanvas() && event.isLeftButton) { + this.box.visible = true; + this.app.interactionPlugin(ViewportMovePlugin.Name).resume(); + } + this.drag = true; + }; + CommonMouseTool.prototype.onDragMove = function (event) { + // console.log( + // 'moving', + // `pointerType:${event.original.pointerType},pointerId:${event.original.pointerId},button: ${event.original.button},buttons:${event.original.buttons}` + // ); + if (this.boxSelect && event.target.isCanvas()) { + this.boxSelectDraw(event.start, event.end); + } + }; + CommonMouseTool.prototype.onDragEnd = function (event) { + // console.log( + // 'end', + // `pointerType:${event.original.pointerType},pointerId:${event.original.pointerId},button: ${event.original.button},buttons:${event.original.buttons}` + // ); + if (this.boxSelect && event.target.isCanvas() && event.isLeftButton) { + this.boxSelectDraw(event.start, event.end); + this.boxSelectGraphicCheck(); + this.app.interactionPlugin(ViewportMovePlugin.Name).pause(); + this.box.clear(); + this.box.visible = false; + } + }; + CommonMouseTool.prototype.setLeftCursor = function (e) { + var target = e.target; + this.leftDownTarget = target; + if (target.isCanvas() && this.app.pixi.view.style) { + this.app.pixi.view.style.cursor = 'grab'; + } + }; + CommonMouseTool.prototype.resumeLeftCursor = function () { + if (this.leftDownTarget && + this.leftDownTarget.isCanvas() && + this.app.pixi.view.style) { + this.app.pixi.view.style.cursor = 'inherit'; + } + this.leftDownTarget = null; + }; + CommonMouseTool.prototype.setCursor = function (e) { + var target = e.target; + this.rightTarget = target; + if (target.isCanvas() && this.app.pixi.view.style) { + this.app.pixi.view.style.cursor = 'grab'; + } + }; + CommonMouseTool.prototype.resumeCursor = function () { + if (this.rightTarget && + this.rightTarget.isCanvas() && + this.app.pixi.view.style) { + this.app.pixi.view.style.cursor = 'inherit'; + } + this.rightTarget = null; + }; + CommonMouseTool.prototype.onMouseDown = function (e) { + this.leftDownTarget = e.target; + this.graphicSelect = false; + // 图形 + var graphic = this.leftDownTarget.getGraphic(); + if (graphic) { + var app = this.app; + // console.log(this.leftDownTarget.isGraphic()); + // 图形选中 + if (!e.ctrlKey && !graphic.selected && graphic.selectable) { + app.updateSelected(graphic); + graphic.childEdit = false; + this.graphicSelect = true; + } + else if (!e.ctrlKey && graphic.selected && graphic.childEdit) { + if (this.leftDownTarget.isGraphicChild() && + this.leftDownTarget.selectable) { + graphic.setChildSelected(this.leftDownTarget); + } + else { + graphic.exitChildEdit(); + } + } + } + }; + /** + * 选中处理 + * @param e + */ + CommonMouseTool.prototype.onMouseUp = function (e) { + var app = this.app; + if (!this.drag) { + var target = e.target; + var graphic = e.target.getGraphic(); + if (graphic && + graphic.selected && + !this.graphicSelect && + app.selectedGraphics.length == 1 && + target === this.leftDownTarget && + target.isGraphicChild() && + target.selectable) { + graphic.childEdit = true; + } + if (e.ctrlKey) { + // 多选 + if (graphic) { + if (graphic.childEdit && target === this.leftDownTarget) { + graphic.invertChildSelected(target); + } + else { + graphic.invertSelected(); + } + } + } + else { + // 非多选 + if (e.target.isCanvas()) { + this.app.updateSelected(); + } + else { + if (graphic && + graphic.childEdit && + app.selectedGraphics.length === 1 && + target === this.leftDownTarget) { + graphic.setChildSelected(target); + } + } + } + // 多个图形选中,退出子元素编辑模式 + var selecteds = this.app.selectedGraphics; + if (selecteds.length > 1) { + selecteds.forEach(function (g) { return g.exitChildEdit(); }); + } + } + this.clearCache(); + }; + /** + * 清理缓存 + */ + CommonMouseTool.prototype.clearCache = function () { + this.drag = false; + this.leftDownTarget = null; + }; + Object.defineProperty(CommonMouseTool.prototype, "boxSelect", { + get: function () { + return this.options.boxSelect; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CommonMouseTool.prototype, "selectFilter", { + get: function () { + return this.options.selectFilter; + }, + enumerable: false, + configurable: true + }); + /** + * 框选图形绘制并检查 + */ + CommonMouseTool.prototype.boxSelectDraw = function (start, end) { + if (!this.drag) + return; + // 绘制框选矩形框 + this.box.clear(); + this.box.lineStyle({ + width: 2, + color: this.app.appOptions.assistantElementColor || + AppConsts.assistantElementColor, + }); + var dsx = end.x - start.x; + var dsy = end.y - start.y; + var x = start.x, y = start.y; + if (dsx < 0) { + x += dsx; + } + if (dsy < 0) { + y += dsy; + } + var width = Math.abs(dsx); + var height = Math.abs(dsy); + this.box.drawRect(x, y, width, height); + }; + /** + * 框选图形判断 + * @returns + */ + CommonMouseTool.prototype.boxSelectGraphicCheck = function () { + var _this = this; + if (!this.drag) + return; + // 遍历筛选 + var boxRect = this.box.getLocalBounds(); + var app = this.app; + var selects = []; + app.queryStore.getAllGraphics().forEach(function (g) { + if ((_this.selectFilter == undefined && g.visible) || + (!!_this.selectFilter && _this.selectFilter(g))) { + // 选择过滤器 + if (g.boxIntersectCheck(boxRect)) { + selects.push(g); + } + } + }); + app.updateSelected.apply(app, selects); + }; + CommonMouseTool.Name = 'mouse-tool'; + CommonMouseTool.SelectBox = '__select_box'; + return CommonMouseTool; +}(AppInteractionPlugin)); + +var target; +var GlobalKeyboardHelper = /** @class */ (function () { + function GlobalKeyboardHelper() { + var _this = this; + this.appKeyboardPluginMap = []; + window.onkeydown = function (e) { + _this.appKeyboardPluginMap.forEach(function (plugin) { + var listenerMap = plugin.getKeyListener(e); + listenerMap === null || listenerMap === void 0 ? void 0 : listenerMap.forEach(function (listener) { + if (listener.global) { + listener.press(e, plugin.app); + } + }); + }); + if (e.ctrlKey) { + if (e.code == 'KeyS') { + // 屏蔽全局Ctrl+S保存操作 + // console.log('屏蔽全局Ctrl+S') + return false; + } + } + if (target && target.nodeName == 'CANVAS') { + // 事件的目标是画布时,屏蔽总的键盘操作操作 + if (e.ctrlKey) { + if (e.code == 'KeyA' || e.code == 'KeyS') { + // 屏蔽Canvas上的Ctrl+A、Ctrl+S操作 + return false; + } + } + } + return true; + }; + window.onkeyup = function (e) { + _this.appKeyboardPluginMap.forEach(function (plugin) { + var listenerMap = plugin.getKeyListener(e); + listenerMap === null || listenerMap === void 0 ? void 0 : listenerMap.forEach(function (listener) { + if (listener.global) { + listener.release(e, plugin.app); + } + }); + }); + }; + } + GlobalKeyboardHelper.prototype.registerGAKPlugin = function (plugin) { + if (!this.appKeyboardPluginMap.find(function (pg) { return pg == plugin; })) { + this.appKeyboardPluginMap.push(plugin); + } + }; + GlobalKeyboardHelper.prototype.removeGAKPlugin = function (plugin) { + var index = this.appKeyboardPluginMap.findIndex(function (pg) { return pg == plugin; }); + if (index >= 0) { + this.appKeyboardPluginMap.splice(index, 1); + } + }; + return GlobalKeyboardHelper; +}()); +var GlobalKeyboardPlugin = new GlobalKeyboardHelper(); +var JlGraphicAppKeyboardPlugin = /** @class */ (function () { + function JlGraphicAppKeyboardPlugin(app) { + var _this = this; + /** + * 结构为Map> + */ + this.keyListenerMap = new Map(); // 键值监听map + this.keyListenerStackMap = new Map(); // 键值监听栈(多次注册相同的监听会把之前注册的监听器入栈,移除最新的监听会从栈中弹出一个作为指定事件监听处理器) + this.app = app; + GlobalKeyboardPlugin.registerGAKPlugin(this); + var onMouseUpdateTarget = function (e) { + var node = e.target; + target = node; + // console.log('Mousedown Event', node.nodeName, node.nodeType, node.nodeValue) + }; + var keydownHandle = function (e) { + var _a; + // console.debug(e.key, e.code, e.keyCode); + if (target && target == ((_a = _this.app.dom) === null || _a === void 0 ? void 0 : _a.getElementsByTagName('canvas')[0])) { + var listenerMap = _this.getKeyListener(e); + listenerMap === null || listenerMap === void 0 ? void 0 : listenerMap.forEach(function (listener) { + if (!listener.global) { + listener.press(e, _this.app); + } + }); + } + }; + var keyupHandle = function (e) { + var _a; + if (target && target == ((_a = _this.app.dom) === null || _a === void 0 ? void 0 : _a.getElementsByTagName('canvas')[0])) { + var listenerMap = _this.getKeyListener(e); + listenerMap === null || listenerMap === void 0 ? void 0 : listenerMap.forEach(function (listener) { + if (!listener.global) { + listener.release(e, _this.app); + } + }); + } + }; + document.addEventListener('mousedown', onMouseUpdateTarget, false); + document.addEventListener('keydown', keydownHandle, false); + document.addEventListener('keyup', keyupHandle, false); + this.app.on('destroy', function () { + document.removeEventListener('mousedown', onMouseUpdateTarget, false); + document.removeEventListener('keydown', keydownHandle, false); + document.removeEventListener('keyup', keyupHandle, false); + GlobalKeyboardPlugin.removeGAKPlugin(_this); + }); + } + JlGraphicAppKeyboardPlugin.prototype.getOrInit = function (key) { + var map = this.keyListenerMap.get(key); + if (map === undefined) { + map = new Map(); + this.keyListenerMap.set(key, map); + } + return map; + }; + JlGraphicAppKeyboardPlugin.prototype.getOrInitStack = function (key) { + var stack = this.keyListenerStackMap.get(key); + if (stack === undefined) { + stack = []; + this.keyListenerStackMap.set(key, stack); + } + return stack; + }; + /** + * 注册按键监听,若有旧的,旧的入栈 + * @param keyListener + */ + JlGraphicAppKeyboardPlugin.prototype.addKeyListener = function (keyListener) { + var map = this.getOrInit(keyListener.value); + // 查询是否有旧的监听,若有入栈 + var old = map.get(keyListener.identifier); + if (old) { + var stack = this.getOrInitStack(keyListener.identifier); + stack.push(old); + } + map.set(keyListener.identifier, keyListener); + // console.log(this.getAllListenedKeys()); + }; + /** + * 移除按键监听,若是当前注册的监听,尝试从栈中取出作为按键监听器,若是旧的,则同时移除栈中的监听 + * @param keyListener + */ + JlGraphicAppKeyboardPlugin.prototype.removeKeyListener = function (keyListener) { + keyListener.onRemove(); + var map = this.getOrInit(keyListener.value); + var old = map.get(keyListener.identifier); + map.delete(keyListener.identifier); + var stack = this.getOrInitStack(keyListener.identifier); + if (old && old === keyListener) { + // 是旧的监听 + var listener = stack.pop(); + if (listener) { + map.set(keyListener.identifier, listener); + } + } + else { + // 移除栈中的 + var index = stack.findIndex(function (ls) { return ls === keyListener; }); + if (index >= 0) { + stack.splice(index, 1); + } + } + // console.log(this); + }; + JlGraphicAppKeyboardPlugin.prototype.getKeyListenerBy = function (key) { + return this.keyListenerMap.get(key); + }; + JlGraphicAppKeyboardPlugin.prototype.getKeyListener = function (e) { + return (this.getKeyListenerBy(e.key) || + this.getKeyListenerBy(e.code) || + this.getKeyListenerBy(e.keyCode)); + }; + JlGraphicAppKeyboardPlugin.prototype.isKeyListened = function (key) { + return this.getOrInit(key).size > 0; + }; + /** + * 获取所有注册监听的键值(组合键) + */ + JlGraphicAppKeyboardPlugin.prototype.getAllListenedKeys = function () { + var keys = []; + this.keyListenerMap.forEach(function (v) { + return v.forEach(function (_listener, ck) { return keys.push(ck); }); + }); + return keys; + }; + return JlGraphicAppKeyboardPlugin; +}()); +exports.CombinationKey = void 0; +(function (CombinationKey) { + CombinationKey["Ctrl"] = "Ctrl"; + CombinationKey["Alt"] = "Alt"; + CombinationKey["Shift"] = "Shift"; +})(exports.CombinationKey || (exports.CombinationKey = {})); +var DefaultKeyListenerOptions = { + value: '', + combinations: [], + global: false, + onPress: undefined, + pressTriggerAsOriginalEvent: false, + onRelease: undefined, +}; +var KeyListener = /** @class */ (function () { + function KeyListener(options) { + this.isPress = false; + this.options = Object.assign({}, DefaultKeyListenerOptions, options); + } + KeyListener.create = function (options) { + return new KeyListener(options); + }; + Object.defineProperty(KeyListener.prototype, "value", { + get: function () { + return this.options.value; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(KeyListener.prototype, "combinations", { + get: function () { + return this.options.combinations; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(KeyListener.prototype, "identifier", { + get: function () { + return this.options.combinations.join('+') + '+' + this.options.value; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(KeyListener.prototype, "global", { + get: function () { + return this.options.global; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(KeyListener.prototype, "onPress", { + get: function () { + return this.options.onPress; + }, + set: function (v) { + this.options.onPress = v; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(KeyListener.prototype, "onRelease", { + get: function () { + return this.options.onRelease; + }, + set: function (v) { + this.options.onRelease = v; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(KeyListener.prototype, "pressTriggerEveryTime", { + get: function () { + return this.options.pressTriggerAsOriginalEvent; + }, + set: function (v) { + this.options.pressTriggerAsOriginalEvent = v; + }, + enumerable: false, + configurable: true + }); + KeyListener.prototype.press = function (e, app) { + if (!this.checkCombinations(e)) { + console.debug('组合键不匹配, 不执行press', e, this); + return; + } + if (this.pressTriggerEveryTime || !this.isPress) { + // console.log('Keydown: ', e, this.onPress); + this.isPress = true; + if (this.onPress) { + this.onPress(e, app); + } + } + }; + /** + * 检查组合键是否匹配 + */ + KeyListener.prototype.checkCombinations = function (e) { + var cbs = this.combinations; + if (cbs.length > 0) { + if (((e.altKey && cbs.includes(exports.CombinationKey.Alt)) || + (!e.altKey && !cbs.includes(exports.CombinationKey.Alt))) && + ((e.ctrlKey && cbs.includes(exports.CombinationKey.Ctrl)) || + (!e.ctrlKey && !cbs.includes(exports.CombinationKey.Ctrl))) && + ((e.shiftKey && cbs.includes(exports.CombinationKey.Shift)) || + (!e.shiftKey && !cbs.includes(exports.CombinationKey.Shift)))) { + return true; + } + } + else { + return !e.altKey && !e.ctrlKey && !e.shiftKey; + } + return false; + }; + KeyListener.prototype.release = function (e, app) { + if (this.isPress) { + // console.log('Keyup : ', e.key, e); + this.isPress = false; + if (this.onRelease) { + this.onRelease(e, app); + } + } + }; + KeyListener.prototype.onRemove = function () { + // 重置按下状态 + this.isPress = false; + }; + return KeyListener; +}()); + +/** + * 图形复制插件 + */ +var GraphicCopyPlugin = /** @class */ (function () { + function GraphicCopyPlugin(scene) { + var _this = this; + this.running = false; + this.scene = scene; + this.container = new pixi_js.Container(); + this.copys = []; + this.keyListeners = []; + this.keyListeners.push(new KeyListener({ + // ESC 用于取消复制操作 + value: 'Escape', + global: true, + // combinations: [CombinationKey.Ctrl], + onPress: function () { + _this.cancle(); + }, + }), new KeyListener({ + // X 限制只能在x轴移动 + value: 'KeyX', + global: true, + // combinations: [CombinationKey.Ctrl], + onPress: function () { + _this.updateMoveLimit('x'); + }, + }), new KeyListener({ + // Y 限制只能在y轴移动 + value: 'KeyY', + global: true, + // combinations: [CombinationKey.Ctrl], + onPress: function () { + _this.updateMoveLimit('y'); + }, + })); + } + GraphicCopyPlugin.prototype.updateMoveLimit = function (limit) { + if (this.moveLimit === limit) { + this.moveLimit = undefined; + } + else { + this.moveLimit = limit; + } + }; + GraphicCopyPlugin.prototype.init = function () { + var _this = this; + if (this.running) + return; + if (this.scene.selectedGraphics.length === 0) { + throw new Error('没有选中图形,复制取消'); + } + this.running = true; + this.copys = []; + this.container.alpha = 0.5; + this.scene.canvas.addChild(this.container); + var app = this.scene; + this.scene.selectedGraphics.forEach(function (g) { + var template = app.getGraphicTemplatesByType(g.type); + var clone = template.clone(g); + _this.copys.push(clone); + _this.container.position.set(0, 0); + _this.container.addChild(clone); + clone.repaint(); + }); + this.scene.canvas.on('mousemove', this.onPointerMove, this); + this.scene.canvas.on('mouseup', this.onFinish, this); + this.scene.canvas.on('rightup', this.cancle, this); + this.keyListeners.forEach(function (kl) { + _this.scene.app.addKeyboardListener(kl); + }); + }; + GraphicCopyPlugin.prototype.clear = function () { + var _this = this; + this.running = false; + this.start = undefined; + this.moveLimit = undefined; + this.copys = []; + this.container.removeChildren(); + this.scene.canvas.removeChild(this.container); + this.scene.canvas.off('mousemove', this.onPointerMove, this); + this.scene.canvas.off('mouseup', this.onFinish, this); + this.scene.canvas.off('rightup', this.cancle, this); + this.keyListeners.forEach(function (kl) { + _this.scene.app.removeKeyboardListener(kl); + }); + }; + GraphicCopyPlugin.prototype.onPointerMove = function (e) { + var cp = this.scene.toCanvasCoordinates(e.global); + if (!this.start) { + this.start = cp; + } + else { + if (this.moveLimit === 'x') { + var dx = cp.x - this.start.x; + this.container.position.x = dx; + this.container.position.y = 0; + } + else if (this.moveLimit === 'y') { + var dy = cp.y - this.start.y; + this.container.position.x = 0; + this.container.position.y = dy; + } + else { + var dx = cp.x - this.start.x; + var dy = cp.y - this.start.y; + this.container.position.x = dx; + this.container.position.y = dy; + } + } + }; + GraphicCopyPlugin.prototype.onFinish = function () { + var _a, _b; + var _this = this; + console.log('复制确认'); + // 将图形添加到app + this.copys.forEach(function (g) { + g.position.x += _this.container.position.x; + g.position.y += _this.container.position.y; + }); + (_a = this.scene.app).addGraphicAndRecord.apply(_a, this.copys); + this.scene.detectRelations(); + (_b = this.scene).updateSelected.apply(_b, this.copys); + this.clear(); + }; + GraphicCopyPlugin.prototype.cancle = function () { + console.log('复制操作取消'); + this.scene.canvas.removeChild(this.container); + this.clear(); + }; + return GraphicCopyPlugin; +}()); + +var VectorGraphicUtil = /** @class */ (function () { + function VectorGraphicUtil() { + } + VectorGraphicUtil.handle = function (obj) { + var vg = obj; + var onScaleChange = function (obj) { + if (vg.isParent(obj)) { + vg.updateOnScaled(); + } + }; + var registerScaleChange = function registerScaleChange(obj) { + if (!obj.scaledListenerOn) { + obj.scaledListenerOn = true; + obj.getGraphicApp().on('viewport-scaled', onScaleChange); + } + }; + var unregisterScaleChange = function unregisterScaleChange(obj) { + obj.scaledListenerOn = false; + obj.getGraphicApp().off('viewport-scaled', onScaleChange); + }; + obj.onAddToCanvas = function onAddToCanvas() { + obj.updateOnScaled(); + registerScaleChange(obj); + }; + obj.onRemoveFromCanvas = function onRemoveFromCanvas() { + // console.debug('矢量图像onRemoveFromCanvas'); + unregisterScaleChange(obj); + }; + obj.on('added', function (container) { + if (container.isInCanvas()) { + obj.onAddToCanvas(container.getCanvas()); + } + }); + }; + return VectorGraphicUtil; +}()); + +/** + * 矢量文字.实现原理:在缩放发生变化时,更新fontSize + */ +var VectorText = /** @class */ (function (_super) { + __extends(VectorText, _super); + function VectorText(text, style, canvas) { + var _this = _super.call(this, text, style, canvas) || this; + _this.vectorFontSize = 8; + _this.scaled = 1; + _this.scaledListenerOn = false; + VectorGraphicUtil.handle(_this); + return _this; + } + VectorText.prototype.updateOnScaled = function () { + var scaled = this.getAllParentScaled(); + var scale = Math.max(scaled.x, scaled.y); + this.style.fontSize = this.vectorFontSize * scale; + this.scale.set(1 / scale, 1 / scale); + }; + /** + * 设置矢量文字的字体大小 + */ + VectorText.prototype.setVectorFontSize = function (fontSize) { + if (this.vectorFontSize !== fontSize) { + this.vectorFontSize = fontSize; + this.updateOnScaled(); + } + }; + return VectorText; +}(pixi_js.Text)); + +/** + * 拖拽点参数 + */ +var DraggablePointParam = { + lineWidth: 1, + lineColor: 0x000000, + fillColor: 0xffffff, + radius: 5, // 半径 +}; +var DraggablePointGraphic = new pixi_js.Graphics(); +DraggablePointGraphic.lineStyle(DraggablePointParam.lineWidth, DraggablePointParam.lineColor); +DraggablePointGraphic.beginFill(DraggablePointParam.fillColor); +DraggablePointGraphic.drawCircle(0, 0, DraggablePointParam.radius); +DraggablePointGraphic.endFill(); +/** + * 拖拽点,用于更新图形属性 + */ +var DraggablePoint = /** @class */ (function (_super) { + __extends(DraggablePoint, _super); + /** + * + * @param point 画布坐标点 + */ + function DraggablePoint(point) { + var _this = _super.call(this, DraggablePointGraphic.geometry) || this; + _this.scaledListenerOn = false; + _this.position.copyFrom(point); + _this.eventMode = 'static'; + _this.draggable = true; + _this.cursor = 'crosshair'; + VectorGraphicUtil.handle(_this); + return _this; + } + DraggablePoint.prototype.updateOnScaled = function () { + var scaled = this.getAllParentScaled(); + var scale = Math.max(scaled.x, scaled.y); + this.scale.set(1 / scale, 1 / scale); + }; + return DraggablePoint; +}(pixi_js.Graphics)); + +/** + * 浮点数相等判断误差值 + */ +var epsilon = 0.00001; +/** + * 判断浮点数是不是0 + * @param v + * @returns + */ +function isZero(v) { + if (Math.abs(v) < epsilon) { + return true; + } + return false; +} +/** + * 两浮点数是否相等 + * @param f1 + * @param f2 + * @returns + */ +function floatEquals(f1, f2) { + return isZero(f1 - f2); +} + +/* eslint-disable @typescript-eslint/no-this-alias */ +var Vector2 = /** @class */ (function () { + function Vector2(values) { + this.values = new Float32Array(2); + if (values !== undefined) { + this.xy = values; + } + } + Vector2.from = function (p) { + return new Vector2([p.x, p.y]); + }; + Object.defineProperty(Vector2.prototype, "x", { + get: function () { + return this.values[0]; + }, + set: function (value) { + this.values[0] = value; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Vector2.prototype, "y", { + get: function () { + return this.values[1]; + }, + set: function (value) { + this.values[1] = value; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Vector2.prototype, "xy", { + get: function () { + return [this.values[0], this.values[1]]; + }, + set: function (values) { + this.values[0] = values[0]; + this.values[1] = values[1]; + }, + enumerable: false, + configurable: true + }); + Vector2.prototype.at = function (index) { + return this.values[index]; + }; + Vector2.prototype.reset = function () { + this.x = 0; + this.y = 0; + }; + Vector2.prototype.copy = function (dest) { + if (!dest) { + dest = new Vector2(); + } + dest.x = this.x; + dest.y = this.y; + return dest; + }; + Vector2.prototype.negate = function (dest) { + if (!dest) { + dest = this; + } + dest.x = -this.x; + dest.y = -this.y; + return dest; + }; + Vector2.prototype.equals = function (vector, threshold) { + if (threshold === void 0) { threshold = epsilon; } + if (Math.abs(this.x - vector.x) > threshold) { + return false; + } + if (Math.abs(this.y - vector.y) > threshold) { + return false; + } + return true; + }; + Vector2.prototype.length = function () { + return Math.sqrt(this.squaredLength()); + }; + Vector2.prototype.squaredLength = function () { + var x = this.x; + var y = this.y; + return x * x + y * y; + }; + Vector2.prototype.add = function (vector) { + this.x += vector.x; + this.y += vector.y; + return this; + }; + Vector2.prototype.subtract = function (vector) { + this.x -= vector.x; + this.y -= vector.y; + return this; + }; + Vector2.prototype.multiply = function (vector) { + this.x *= vector.x; + this.y *= vector.y; + return this; + }; + Vector2.prototype.divide = function (vector) { + this.x /= vector.x; + this.y /= vector.y; + return this; + }; + Vector2.prototype.scale = function (value, dest) { + if (!dest) { + dest = this; + } + dest.x *= value; + dest.y *= value; + return dest; + }; + Vector2.prototype.normalize = function (dest) { + if (!dest) { + dest = this; + } + var length = this.length(); + if (length === 1) { + return this; + } + if (length === 0) { + dest.x = 0; + dest.y = 0; + return dest; + } + length = 1.0 / length; + dest.x *= length; + dest.y *= length; + return dest; + }; + // multiplyMat2(matrix: mat2, dest?: Vector2): Vector2 { + // if (!dest) { + // dest = this; + // } + // return matrix.multiplyVec2(this, dest); + // } + // multiplyMat3(matrix: mat3, dest?: Vector2): Vector2 { + // if (!dest) { + // dest = this; + // } + // return matrix.multiplyVec2(this, dest); + // } + // static cross(vector: Vector2, vector2: Vector2, dest?: vec3): vec3 { + // if (!dest) { + // dest = new vec3(); + // } + // const x = vector.x; + // const y = vector.y; + // const x2 = vector2.x; + // const y2 = vector2.y; + // const z = x * y2 - y * x2; + // dest.x = 0; + // dest.y = 0; + // dest.z = z; + // return dest; + // } + /** + * 向量点乘 + * @param vector + * @param vector2 + * @returns + */ + Vector2.dot = function (vector, vector2) { + return vector.x * vector2.x + vector.y * vector2.y; + }; + /** + * 向量长度 + * @param vector + * @param vector2 + * @returns + */ + Vector2.distance = function (vector, vector2) { + return Math.sqrt(this.squaredDistance(vector, vector2)); + }; + /** + * 向量长度平方 + * @param vector + * @param vector2 + * @returns + */ + Vector2.squaredDistance = function (vector, vector2) { + var x = vector2.x - vector.x; + var y = vector2.y - vector.y; + return x * x + y * y; + }; + /** + * v2->v1的方向的单位向量 + * @param v1 + * @param v2 + * @param dest + * @returns + */ + Vector2.direction = function (v1, v2, dest) { + if (!dest) { + dest = new Vector2(); + } + var x = v1.x - v2.x; + var y = v1.y - v2.y; + var length = Math.sqrt(x * x + y * y); + if (length === 0) { + dest.x = 0; + dest.y = 0; + return dest; + } + length = 1 / length; + dest.x = x * length; + dest.y = y * length; + return dest; + }; + Vector2.mix = function (vector, vector2, time, dest) { + if (!dest) { + dest = new Vector2(); + } + var x = vector.x; + var y = vector.y; + var x2 = vector2.x; + var y2 = vector2.y; + dest.x = x + time * (x2 - x); + dest.y = y + time * (y2 - y); + return dest; + }; + /** + * 向量加法 + * @param vector + * @param vector2 + * @param dest + * @returns + */ + Vector2.sum = function (vector, vector2, dest) { + if (!dest) { + dest = new Vector2(); + } + dest.x = vector.x + vector2.x; + dest.y = vector.y + vector2.y; + return dest; + }; + /** + * 向量减法 + * @param vector + * @param vector2 + * @param dest + * @returns + */ + Vector2.difference = function (vector, vector2, dest) { + if (!dest) { + dest = new Vector2(); + } + dest.x = vector.x - vector2.x; + dest.y = vector.y - vector2.y; + return dest; + }; + /** + * 向量乘法 + * @param vector + * @param vector2 + * @param dest + * @returns + */ + Vector2.product = function (vector, vector2, dest) { + if (!dest) { + dest = new Vector2(); + } + dest.x = vector.x * vector2.x; + dest.y = vector.y * vector2.y; + return dest; + }; + /** + * 向量除法 + * @param vector + * @param vector2 + * @param dest + * @returns + */ + Vector2.quotient = function (vector, vector2, dest) { + if (!dest) { + dest = new Vector2(); + } + dest.x = vector.x / vector2.x; + dest.y = vector.y / vector2.y; + return dest; + }; + Vector2.zero = new Vector2([0, 0]); + Vector2.one = new Vector2([1, 1]); + return Vector2; +}()); + +/** + * 递归父节点执行逻辑 + * @param obj + * @param handler + */ +function recursiveParents(obj, handler) { + if (obj.parent) { + handler(obj.parent); + recursiveParents(obj.parent, handler); + } +} +/** + * 递归父节点查询父节点对象 + * @param obj + * @param finder + * @returns + */ +function recursiveFindParent(obj, finder) { + if (obj.parent) { + if (finder(obj.parent)) { + return obj.parent; + } + else { + return recursiveFindParent(obj.parent, finder); + } + } + return null; +} +/** + * 递归子节点执行逻辑 + * @param container + * @param handler + */ +function recursiveChildren(container, handler) { + container.children.forEach(function (child) { + handler(child); + if (child.children) { + recursiveChildren(child, handler); + } + }); +} +/** + * 递归子节点查询子节点对象 + */ +function recursiveFindChild(container, finder) { + var result = null; + for (var i = 0; i < container.children.length; i++) { + var child = container.children[i]; + if (finder(child)) { + return child; + } + else if (child.children) { + result = recursiveFindChild(child, finder); + } + } + return result; +} +/** + * 判断贝塞尔曲线数据是否正确 + * @param points + */ +function assertBezierPoints(points) { + if (points.length < 4 || points.length % 3 !== 1) { + throw new Error("bezierCurve \u6570\u636E\u9519\u8BEF: ".concat(points)); + } +} +/** + * 转换为贝塞尔曲线参数 + * @param points + * @returns + */ +function convertToBezierParams(points) { + assertBezierPoints(points); + var bps = []; + for (var i = 0; i < points.length - 3; i += 3) { + var p1 = new pixi_js.Point(points[i].x, points[i].y); + var p2 = new pixi_js.Point(points[i + 3].x, points[i + 3].y); + var cp1 = new pixi_js.Point(points[i + 1].x, points[i + 1].y); + var cp2 = new pixi_js.Point(points[i + 2].x, points[i + 2].y); + bps.push({ + p1: p1, + p2: p2, + cp1: cp1, + cp2: cp2, + }); + } + return bps; +} +/** + * 根据分段数计算贝塞尔曲线所有点坐标 + * @param basePoints + * @param segmentsCount + * @returns + */ +function calculateBezierPoints(basePoints, segmentsCount) { + var bps = convertToBezierParams(basePoints); + var points = []; + bps.forEach(function (bp) { + points.push.apply(points, calculateOneBezierPoints(bp.p1, bp.p2, bp.cp1, bp.cp2, segmentsCount)); + }); + return points; +} +/** + * 根据分段数计算贝塞尔曲线所有点坐标 + * @param basePoints + * @param segmentsCount + * @returns + */ +function calculateOneBezierPoints(p1, p2, cp1, cp2, segmentsCount) { + var points = []; + var fromX = p1.x; + var fromY = p1.y; + var n = segmentsCount; + var dt = 0; + var dt2 = 0; + var dt3 = 0; + var t2 = 0; + var t3 = 0; + var cpX = cp1.x; + var cpY = cp1.y; + var cpX2 = cp2.x; + var cpY2 = cp2.y; + var toX = p2.x; + var toY = p2.y; + points.push(new pixi_js.Point(p1.x, p1.y)); + for (var i = 1, j = 0; i <= n; ++i) { + j = i / n; + dt = 1 - j; + dt2 = dt * dt; + dt3 = dt2 * dt; + t2 = j * j; + t3 = t2 * j; + var px = dt3 * fromX + 3 * dt2 * j * cpX + 3 * dt * t2 * cpX2 + t3 * toX; + var py = dt3 * fromY + 3 * dt2 * j * cpY + 3 * dt * t2 * cpY2 + t3 * toY; + points.push(new pixi_js.Point(px, py)); + } + return points; +} +/** + * 计算矩形中点 + */ +function getRectangleCenter(rectangle) { + return new pixi_js.Point(rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height / 2); +} +/** + * 计算两个矩形中心对齐的坐标, PS: 计算的是较大包围框的中心 + * @param rect1 + * @param rect2 + * @returns + */ +function getCenterOfTwoRectangle(rect1, rect2) { + var x = Math.abs(rect1.width - rect2.width) / 2; + var y = Math.abs(rect1.height - rect2.height) / 2; + return new pixi_js.Point(x, y); +} +/** + * 序列化图形变换 + * @param obj + * @returns + */ +function serializeTransform(obj) { + var position = obj.position; + var scale = obj.scale; + var angle = obj.angle; + var skew = obj.skew; + return [position.x, position.y, scale.x, scale.y, angle, skew.x, skew.y]; +} +/** + * 反序列化变换数据到图形对象 + * @param obj + * @param transform + */ +function deserializeTransformInto(obj, transform) { + if (transform.length === 7) { + obj.position.set(transform[0], transform[1]); + obj.scale.set(transform[2], transform[3]); + obj.angle = transform[4]; + obj.skew.set(transform[5], transform[6]); + } + else if (transform.length > 0) { + console.warn('错误的变换数据', transform); + } +} +/** + * 将直线转换为多边形 + * @param p1 + * @param p2 + * @param thick + * @returns + */ +function convertLineToPolygonPoints(p1, p2, thick) { + var angle = Math.atan2(p2.y - p1.y, p2.x - p1.x) - Math.PI / 2; + var half = thick / 2; + var cos = Math.cos(angle) * half; + var sin = Math.sin(angle) * half; + return [ + new pixi_js.Point(p1.x - cos, p1.y - sin), + new pixi_js.Point(p2.x - cos, p2.y - sin), + new pixi_js.Point(p2.x + cos, p2.y + sin), + new pixi_js.Point(p1.x + cos, p1.y + sin), + ]; +} +/** + * 转换矩形为多边形点坐标 + * @param rect 矩形 + * @returns + */ +function convertRectangleToPolygonPoints(rect) { + return [ + new pixi_js.Point(rect.x, rect.y), + new pixi_js.Point(rect.x + rect.width, rect.y), + new pixi_js.Point(rect.x + rect.width, rect.y + rect.height), + new pixi_js.Point(rect.x, rect.y + rect.height), + ]; +} +/** + * 计算线段中点坐标 + * @param p1 + * @param p2 + * @returns + */ +function calculateLineMidpoint(p1, p2) { + var x = (p1.x + p2.x) / 2; + var y = (p1.y + p2.y) / 2; + return new pixi_js.Point(x, y); +} +/** + * 计算线段细分坐标--线段分成几份 + * @param p1 + * @param p2 + * @param knife + * @returns + */ +function calculateLineSegmentingPoint(p1, p2, knife) { + var segmentingPoints = []; + var x = p1.x < p2.x ? p1.x : p2.x; + var y = p1.y < p2.y ? p1.y : p2.y; + var w = Math.abs(p1.x - p2.x); + var h = Math.abs(p1.y - p2.y); + for (var i = 0; i < knife - 1; i++) { + var pointX = x + (w * (i + 1)) / knife; + var pointy = y + (h * (i + 1)) / knife; + segmentingPoints.push(new pixi_js.Point(pointX, pointy)); + } + return segmentingPoints; +} +/** + * 计算点到直线距离 + * @param p1 + * @param p2 + * @param p + */ +function calculateDistanceFromPointToLine(p1, p2, p) { + // 求直线的一般方程参数ABC,直线的一般式方程AX+BY+C=0 + var A = p1.y - p2.y; + var B = p2.x - p1.x; + var C = p1.x * p2.y - p1.y * p2.x; + // 计算点到直线垂直距离: d = |Ax+By+C|/sqrt(A*A+B*B),其中x,y为点坐标 + var dl = Math.abs(A * p.x + B * p.y + C) / Math.sqrt(A * A + B * B); + return dl; +} +/** + * 计算点到直线的垂足坐标 + * @param p + * @param p1 + * @param p2 + */ +function calculateFootPointFromPointToLine(p1, p2, p) { + if (p1.x == p2.x && p1.y == p2.y) { + throw new Error("\u76F4\u7EBF\u4E24\u5750\u6807\u70B9\u76F8\u7B49:".concat(p1)); + } + var k = -(((p1.x - p.x) * (p2.x - p1.x) + (p1.y - p.y) * (p2.y - p1.y)) / + (Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2))); + if (isZero(k)) { + return new pixi_js.Point(p.x, p.y); + } + var xf = k * (p2.x - p1.x) + p1.x; + var yf = k * (p2.y - p1.y) + p1.y; + return new pixi_js.Point(xf, yf); +} +/** + * 计算直线与圆的交点 + * 1用直线到圆心的距离和半径相比,判断是否和圆有交点; + * 2求出圆心在直线上面的垂点; + * 3算出直线的单位向量e; + * 4求出一侧交点(Intersection)到projectPoint的长度(sideLength); + * 5求出sideLength和这侧端点到projectPoint距离的比例(ratio); + * 6projectPoint +/- ratio * e = 两侧交点; + * @param p0 圆心坐标 + * @param radius 圆半径 + * @param p1 直线坐标1 + * @param p2 直线坐标2 + * @returns 交点坐标,可能2/1/0个 + */ +function calculateIntersectionPointOfCircleAndLine(p0, radius, p1, p2) { + var distance = calculateDistanceFromPointToLine(p1, p2, p0); + if (distance <= radius) { + // 有交点 + // 计算垂点 + var pr = calculateFootPointFromPointToLine(p1, p2, p0); + if (floatEquals(distance, radius)) { + // 切线 + return [pr]; + } + var vpr = new Vector2([pr.x, pr.y]); + var vc = new Vector2([p0.x, p0.y]); + // 计算直线单位向量 + var v1 = new Vector2([p1.x, p1.y]); + var v2 = new Vector2([p2.x, p2.y]); + var ve = Vector2.direction(v2, v1); + var base = Math.sqrt(Math.abs(radius * radius - Vector2.difference(vpr, vc).squaredLength())); + var vl = ve.scale(base); + var ip1 = Vector2.sum(vpr, vl); + var ip2 = Vector2.difference(vpr, vl); + return [new pixi_js.Point(ip1.x, ip1.y), new pixi_js.Point(ip2.x, ip2.y)]; + } + else { + // 无交点 + return []; + } +} +/** + * 计算圆心与圆心外一点与圆的交点(取圆心到点的向量与圆的交点) + * @param p0 圆心坐标 + * @param radius 圆半径 + * @param p 点坐标 + * @returns + */ +function calculateIntersectionPointOfCircleAndPoint(p0, radius, p) { + var points = calculateIntersectionPointOfCircleAndLine(p0, radius, p0, p); + var vc = new Vector2([p0.x, p0.y]); + var vp = new Vector2([p.x, p.y]); + var vecp = Vector2.direction(vp, vc); + for (var i = 0; i < points.length; i++) { + var ip = points[i]; + var ve = Vector2.direction(new Vector2([ip.x, ip.y]), vc); + if (ve.equals(vecp)) { + return ip; + } + } + throw new Error('计算圆心与圆心外一点与圆的交点逻辑错误'); +} +/** + * 计算点基于点的镜像点坐标 + * @param bp 基准点 + * @param p 待镜像的点坐标 + * @param distance 镜像点到基准点的距离,默认为p到基准点的距离,即对称 + * @returns + */ +function calculateMirrorPoint(bp, p, distance) { + var vbp = Vector2.from(bp); + var vp = Vector2.from(p); + var direction = Vector2.direction(vbp, vp); + if (distance == undefined) { + distance = Vector2.distance(vbp, vp); + } + var vmp = Vector2.sum(vbp, direction.scale(distance)); + return new pixi_js.Point(vmp.x, vmp.y); +} +/** + * 计算基于给定轴的给定点的镜像点坐标 + * @param pa 给定轴线的坐标 + * @param pb 给定轴线的坐标 + * @param p 待镜像点坐标 + * @param distance + * @returns + */ +function calculateMirrorPointBasedOnAxis(pa, pb, p, distance) { + var fp = calculateFootPointFromPointToLine(pa, pb, p); + if (fp.equals(p)) { + return fp; + } + else { + return calculateMirrorPoint(fp, p, distance); + } +} +/** + * 计算直线与水平夹角,角度按顺时针,从0开始 + * @param p1 + * @param p2 + * @returns 角度,范围[0, 360) + */ +function angleToAxisx(p1, p2) { + if (p1.x == p2.x && p1.y == p2.y) { + throw new Error('一个点无法计算角度'); + } + var dx = Math.abs(p1.x - p2.x); + var dy = Math.abs(p1.y - p2.y); + if (p2.x == p1.x) { + if (p2.y > p1.y) { + return 90; + } + else { + return 270; + } + } + if (p2.y == p1.y) { + if (p2.x > p1.x) { + return 0; + } + else { + return 180; + } + } + var angle = (Math.atan2(dy, dx) * 180) / Math.PI; + if (p2.x > p1.x) { + if (p2.y > p1.y) { + return angle; + } + else if (p2.y < p1.y) { + return 360 - angle; + } + } + else if (p2.x < p1.x) { + if (p2.y > p1.y) { + return 180 - angle; + } + else { + return 180 + angle; + } + } + return angle; +} +/** + * 计算两线夹角,pc与pa,pb的夹角,顺时针为正,逆时针为负 + * @param pa 交点 + * @param pb 锚定 + * @param pc + * @returns 夹角, [-180, 180] + */ +function angleOfIncludedAngle(pa, pb, pc) { + var abAngle = angleToAxisx(pa, pb); + var acAngle = angleToAxisx(pa, pc); + var angle = acAngle - abAngle; + if (angle < -180) { + angle = 360 + angle; + } + else if (angle > 180) { + angle = -(360 - angle); + } + return angle; +} +/** + * 计算两点连线的法向量 + * @param point1 + * @param point2 + * @returns 单位法向量 + */ +function getNormalVector(point1, point2) { + var x1 = point1.x, y1 = point1.y; + var x2 = point2.x, y2 = point2.y; + var length = Math.sqrt(Math.pow((y2 - y1), 2) + Math.pow((x2 - x1), 2)); + return [(y2 - y1) / length, (x1 - x2) / length]; +} +/** + * 点延向量方向移动 + * @param point + * @param normal 单位向量 + * @param length 平移长度 + * @returns 移动后的点 + */ +function movePointAlongNormal(point, normal, length) { + var newPoint = new pixi_js.Point(point.x + length * normal[0], point.y + length * normal[1]); + return newPoint; +} +/** + * 计算两组点各自组成直线的相交点(若两线平行 返回第一组坐标第一个点) + * @param line1 两点坐标列表 + * @param line2 两点坐标列表 + * @returns 相交点 + */ +function getIntersectionPoint(line1, line2) { + var a1 = line1[0], b1 = line1[1]; + var a2 = line1[2], b2 = line1[3]; + var a3 = line2[0], b3 = line2[1]; + var a4 = line2[2], b4 = line2[3]; + var denominator = (a3 - a4) * (b1 - b2) - (a1 - a2) * (b3 - b4); + if (denominator === 0) { + return new pixi_js.Point(a1, b1); + } + var x = ((a3 - a4) * (a2 * b1 - a1 * b2) - (a1 - a2) * (a4 * b3 - a3 * b4)) / + denominator; + var y = ((b3 - b4) * (b2 * a1 - b1 * a2) - (b1 - b2) * (b4 * a3 - b3 * a4)) / + -denominator; + return new pixi_js.Point(x, y); +} +/** + * 是否平行线 + * @param p1 + * @param p2 + * @param pa + * @param pb + * @returns + */ +function isParallelLines(p1, p2, pa, pb) { + var vle1 = Vector2.direction(Vector2.from(p1), Vector2.from(p2)); + var vle2 = Vector2.direction(Vector2.from(pa), Vector2.from(pb)); + if (vle2.equals(vle1)) { + return true; + } + return vle1.equals(Vector2.direction(Vector2.from(pb), Vector2.from(pa))); +} +/** + * 点是否在线段上 + * @param p1 + * @param p2 + * @param p + * @returns + */ +function isPointOnLine(p1, p2, p) { + var vp1 = Vector2.from(p1); + var vp2 = Vector2.from(p2); + var vp = Vector2.from(p); + if (vp1.equals(vp) || vp2.equals(vp)) { + return true; + } + var vle = Vector2.direction(vp1, Vector2.from(p2)); + var vpe = Vector2.direction(vp1, vp); + if (vle.equals(vpe)) { + return (Vector2.difference(vp1, vp2).squaredLength() >= + Vector2.difference(vp1, vp).squaredLength()); + } + return false; +} +/** + * 两条线段是否存在包含关系 + * @param line1 + * @param line2 + * @returns + */ +function isLineContainOther(line1, line2) { + return ((isPointOnLine(line1.p1, line1.p2, line2.p1) && + isPointOnLine(line1.p1, line1.p2, line2.p2)) || + (isPointOnLine(line2.p1, line2.p2, line1.p1) && + isPointOnLine(line2.p1, line2.p2, line1.p2))); +} +/** 均分线段, 返回各线段端点 */ +function splitLineEvenly(p1, p2, count) { + var _a = [(p2.x - p1.x) / count, (p2.y - p1.y) / count], stepX = _a[0], stepY = _a[1]; + return Array(count) + .fill(1) + .map(function (_, i) { + return [ + { x: p1.x + stepX * i, y: p1.y + stepY * i }, + { x: p1.x + stepX * (i + 1), y: p1.y + stepY * (i + 1) }, + ]; + }); +} +function splitPolyline(points, count) { + if (points.length !== 2) { + var totalLen_1 = 0; + var lengths = []; + for (var i = 1; i < points.length; i++) { + var _a = points[i - 1], x1 = _a.x, y1 = _a.y, _b = points[i], x2 = _b.x, y2 = _b.y; + var len = new Vector2([x2 - x1, y2 - y1]).length(); + totalLen_1 += len; + lengths.push(len); + } + var counts = lengths.map(function (length) { + return Math.round((count * length) / totalLen_1); + }); + if (counts.reduce(function (p, c) { return p + c; }, 0) !== count) { + var intersection = counts.reduce(function (p, c) { return p + c; }, 0) - count; + var maxCountIndex_1 = 0, maxCount_1 = 0; + counts.forEach(function (c, i) { + if (c > maxCount_1) { + maxCount_1 = c; + maxCountIndex_1 = i; + } + }); + counts[maxCountIndex_1] + intersection; + } + return counts + .map(function (count, i) { + return splitLineEvenly(points[i], points[i + 1], count); + }) + .flat(); + } + else { + return splitLineEvenly(points[0], points[points.length - 1], count); + } +} +function getParallelOfPolyline(points, offset, side) { + var PI = Math.PI, cos = Math.cos, acos = Math.acos; + var angleBase = side === 'L' ? -PI / 2 : PI / 2; + return points.map(function (p, i) { + var baseUnitVec; //上一段的基准单位向量 + var angle; //偏转角度 + var len; //结合偏转角度的实际偏移量 + if (!points[i - 1] || !points[i + 1]) { + angle = angleBase; + len = offset; + baseUnitVec = points[i - 1] + ? new Vector2([ + p.x - points[i - 1].x, + p.y - points[i - 1].y, + ]).normalize() + : new Vector2([ + points[i + 1].x - p.x, + points[i + 1].y - p.y, + ]).normalize(); + } + else { + var vp = new Vector2([p.x - points[i - 1].x, p.y - points[i - 1].y]); + var vn = new Vector2([points[i + 1].x - p.x, points[i + 1].y - p.y]); + var cosTheta = Vector2.dot(vn, vp) / (vp.length() * vn.length()); + var direction = vp.x * vn.y - vp.y * vn.x > 0; //det(vp|vn)>0? + var theta = direction ? acos(cosTheta) : -acos(cosTheta); + angle = angleBase + theta / 2; + len = offset / cos(theta / 2); + baseUnitVec = Vector2.from(vp).normalize(); + } + return new pixi_js.Matrix() + .scale(len, len) + .rotate(angle) + .translate(p.x, p.y) + .apply(baseUnitVec); + }); +} + +// /** +// * 点线碰撞检测 +// * @param pa 线段a端坐标 +// * @param pb 线段b端坐标 +// * @param p 点坐标 +// * @param tolerance 容忍度,越大检测范围越大 +// * @returns +// */ +// export function linePoint(pa: Point, pb: Point, p: Point, tolerance: number): boolean { +// return (Math.abs(distanceSquared(pa.x, pa.y, pb.x, pb.y) - (distanceSquared(pa.x, pa.y, p.x, p.y) + distanceSquared(pb.x, pb.y, p.x, p.y))) <= tolerance) +// } +/** + * 根据点到直线的垂直距离计算碰撞 + * @param pa 线段a端坐标 + * @param pb 线段b端坐标 + * @param p 点坐标 + * @param lineWidth 线宽 + * @param exact 是否精确(使用给定线宽,否则线宽会设置为8) + * @returns + */ +function linePoint(pa, pb, p, lineWidth, exact) { + if (exact === void 0) { exact = false; } + if (!exact && lineWidth < 6) { + lineWidth = 6; + } + // 求直线的一般方程参数ABC,直线的一般式方程AX+BY+C=0 + var A = pa.y - pb.y; + var B = pb.x - pa.x; + var C = pa.x * pb.y - pa.y * pb.x; + // 计算点到直线垂直距离: d = |Ax+By+C|/sqrt(A*A+B*B),其中x,y为点坐标 + var dl = Math.abs(A * p.x + B * p.y + C) / Math.sqrt(A * A + B * B); + var intersect = dl <= lineWidth / 2; + if (intersect) { + // 距离在线宽范围内,再判断点是否超过线段两端点范围外(两端点外会有一点误差,两端点线宽一半半径的圆范围内) + var da = distance(pa.x, pa.y, p.x, p.y); + var db = distance(pb.x, pb.y, p.x, p.y); + var dab = distance(pa.x, pa.y, pb.x, pb.y); + return da <= dl + dab && db <= dl + dab; + } + return false; +} +/** + * 折线与点碰撞 + * @param points 折线端点列表 + * @param p 点座标 + * @param lineWidth 线宽 + */ +function polylinePoint(points, p, lineWidth) { + var len = points.length; + for (var i = 0; i < len - 1; i++) { + if (linePoint(points[i], points[i + 1], p, lineWidth)) { + return true; + } + } + return false; +} +/** + * 线线碰撞检测 + * @param pa 线段1a端坐标 + * @param pb 线段1b端坐标 + * @param p1 线段2a端坐标 + * @param p2 线段2b端坐标 + * @returns + */ +function lineLine(pa, pb, p1, p2) { + var x1 = pa.x; + var y1 = pa.y; + var x2 = pb.x; + var y2 = pb.y; + var x3 = p1.x; + var y3 = p1.y; + var x4 = p2.x; + var y4 = p2.y; + var s1_x = x2 - x1; + var s1_y = y2 - y1; + var s2_x = x4 - x3; + var s2_y = y4 - y3; + var s = (-s1_y * (x1 - x3) + s1_x * (y1 - y3)) / (-s2_x * s1_y + s1_x * s2_y); + var t = (s2_x * (y1 - y3) - s2_y * (x1 - x3)) / (-s2_x * s1_y + s1_x * s2_y); + return s >= 0 && s <= 1 && t >= 0 && t <= 1; +} +/** + * 点和矩形碰撞检测 + * @param p 点作弊 + * @param rect 矩形 + * @returns + */ +function pointBox(p, rect) { + var x = rect.x, y = rect.y, width = rect.width, height = rect.height; + var x2 = p.x; + var y2 = p.y; + return x2 >= x && x2 <= x + width && y2 >= y && y2 <= y + height; +} +/** + * 线和矩形碰撞检测 + * @param pa 线段a端坐标 + * @param pb 线段b端坐标 + * @param rect 矩形 + * @returns + */ +function lineBox(pa, pb, rect) { + if (pointBox(pa, rect) || pointBox(pb, rect)) { + return true; + } + var x = rect.x, y = rect.y, width = rect.width, height = rect.height; + var rp1 = new pixi_js.Point(x, y); + var rp2 = new pixi_js.Point(x + width, y); + var rp3 = new pixi_js.Point(x + width, y + height); + var rp4 = new pixi_js.Point(x, y + height); + return (lineLine(pa, pb, rp1, rp2) || + lineLine(pa, pb, rp2, rp3) || + lineLine(pa, pb, rp3, rp4) || + lineLine(pa, pb, rp1, rp4)); +} +/** + * 多线段和矩形碰撞检测 + * @param points + * @param rect + * @returns false / 碰撞的线段序号 + */ +function polylineBox(points, rect) { + if (points.length < 2) { + return false; + } + for (var i = 0; i < points.length - 1; i++) { + var p1 = points[i]; + var p2 = points[i + 1]; + if (lineBox(p1, p2, rect)) { + return true; + } + } + return false; +} +/** + * 两点碰撞检测 + * @param p1 + * @param p2 + * @param tolerance + * @returns + */ +function pointPoint2(p1, p2, tolerance) { + return pointPoint(p1.x, p1.y, p2.x, p2.y, tolerance); +} +/** + * 两点碰撞检测 + * @param x1 + * @param y1 + * @param x2 + * @param y2 + * @param tolerance 容忍度/两点半径和 + * @returns + */ +function pointPoint(x1, y1, x2, y2, tolerance) { + return distance(x1, y1, x2, y2) <= tolerance; +} +/** + * 两点距离 + * @param x1 + * @param y1 + * @param x2 + * @param y2 + * @returns + */ +function distance(x1, y1, x2, y2) { + return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)); +} +/** + * 两点距离 + * @param p1 + * @param p2 + * @returns + */ +function distance2(p1, p2) { + return distance(p1.x, p1.y, p2.x, p2.y); +} +/** + * 圆和点的碰撞检测 + * @param x1 圆心x + * @param y1 圆心y + * @param r1 圆半径 + * @param x2 点x + * @param y2 点y + * @returns + */ +function circlePoint(x1, y1, r1, x2, y2) { + var x = x2 - x1; + var y = y2 - y1; + return x * x + y * y <= r1 * r1; +} +/** + * 圆和点的碰撞检测--不包括圆内部 + */ +function circlePoint2(x1, y1, r1, x2, y2, tolerance) { + var x = x2 - x1; + var y = y2 - y1; + return (x * x + y * y <= (r1 + tolerance) * (r1 + tolerance) && + x * x + y * y >= (r1 - tolerance) * (r1 - tolerance)); +} +/** + * 点和多边形碰撞检测 + */ +function pointPolygon(p, points, lineWidth) { + var x = p.x, y = p.y; + var length = points.length; + var c = false; + var i, j; + for (i = 0, j = length - 1; i < length; i++) { + if (points[i].y > y !== points[j].y > y && + x < + ((points[j].x - points[i].x) * (y - points[i].y)) / + (points[j].y - points[i].y) + + points[i].x) { + c = !c; + } + j = i; + } + if (c) { + return true; + } + for (i = 0; i < length - 1; i++) { + var p1 = void 0, p2 = void 0; + if (i === length - 1) { + p1 = points[i]; + p2 = points[0]; + } + else { + p1 = points[i]; + p2 = points[i + 1]; + } + if (linePoint(p1, p2, p, lineWidth)) { + return true; + } + } + return false; +} +/** + * 线和多边形碰撞检测 + * @param p1 + * @param p2 + * @param points + * @param tolerance 多边形包围线宽 + * @returns + */ +function linePolygon(p1, p2, points, lineWidth, polygonWidth) { + if (pointPolygon(p1, points, polygonWidth)) { + return true; + } + var length = points.length; + for (var i = 0; i < length; i++) { + var pa = void 0, pb = void 0; + if (i === length - 1) { + pa = points[i]; + pb = points[0]; + } + else { + pa = points[i]; + pb = points[i + 1]; + } + // TODO:此处后续需考虑有线宽的情况 + if (lineLine(pa, pb, p1, p2)) { + return true; + } + } + return false; +} +/** + * 多边线与多边形碰撞检测 + * @param polylinePoints 多边线所有点坐标 + * @param polygonPoints 多边形所有点坐标 + * @param polylineWidth 多边线的线宽 + * @param polygonWidth 多边形线宽 + * @returns + */ +function polylinePolygon(polylinePoints, polygonPoints, polylineWidth, polygonWidth) { + var length = polylinePoints.length; + for (var i = 0; i < length - 1; i++) { + var p1 = polylinePoints[i]; + var p2 = polylinePoints[i + 1]; + if (linePolygon(p1, p2, polygonPoints, polylineWidth, polygonWidth)) { + return true; + } + } + return false; +} + +function debounce(fn, waitMs) { + if (waitMs === void 0) { waitMs = 250; } + var timeoutId; + var debouncedFunction = function (context) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + var invokeFunction = function () { + timeoutId = undefined; + fn.apply(context, args); + }; + if (timeoutId !== undefined) { + console.debug('debounce clear timeout', fn); + clearTimeout(timeoutId); + } + timeoutId = setTimeout(invokeFunction, waitMs); + }; + debouncedFunction.cancel = function () { + if (timeoutId !== undefined) { + clearTimeout(timeoutId); + } + }; + return debouncedFunction; +} + +var UP = new pixi_js.Point(0, -1); +var DOWN = new pixi_js.Point(0, 1); +var LEFT = new pixi_js.Point(-1, 0); +var RIGHT = new pixi_js.Point(1, 0); +/** + * 越界结果 + */ +var OutOfBound = /** @class */ (function () { + function OutOfBound(left, top, right, bottom) { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + } + OutOfBound.check = function (rect, bound) { + var left = rect.left < bound.left; + var top = rect.top < bound.top; + var right = rect.right > bound.right; + var bottom = rect.bottom > bound.bottom; + return new OutOfBound(left, top, right, bottom); + }; + OutOfBound.none = function () { + return new OutOfBound(false, false, false, false); + }; + OutOfBound.leftOut = function () { + return new OutOfBound(true, false, false, false); + }; + OutOfBound.topOut = function () { + return new OutOfBound(false, true, false, false); + }; + OutOfBound.rightOut = function () { + return new OutOfBound(false, false, true, false); + }; + OutOfBound.bottomOut = function () { + return new OutOfBound(false, false, false, true); + }; + OutOfBound.leftTopOut = function () { + return new OutOfBound(true, true, false, false); + }; + OutOfBound.rightBottomOut = function () { + return new OutOfBound(false, false, true, true); + }; + return OutOfBound; +}()); + +/** + * 可吸附点图形参数 + */ +var AbsorbablePointParam = { + lineWidth: 1, + lineColor: '#000000', + fillColor: '#E77E0E', + radius: 5, // 半径 +}; +var AbsorbablePointGraphic = new pixi_js.Graphics(); +// AbsorbablePointGraphic.lineStyle( +// AbsorbablePointParam.lineWidth, +// AbsorbablePointParam.lineColor +// ); +AbsorbablePointGraphic.beginFill(AbsorbablePointParam.fillColor); +AbsorbablePointGraphic.drawCircle(0, 0, AbsorbablePointParam.radius); +AbsorbablePointGraphic.endFill(); +/** + * 可吸附点 + */ +/** @class */ ((function (_super) { + __extends(AbsorbablePoint, _super); + /** + * + * @param point 画布坐标 + * @param absorbRange + */ + function AbsorbablePoint(point, absorbRange) { + if (absorbRange === void 0) { absorbRange = 10; } + var _this = _super.call(this, AbsorbablePointGraphic.geometry) || this; + _this.scaledListenerOn = false; + _this._point = new pixi_js.Point(point.x, point.y); + _this.absorbRange = absorbRange; + _this.position.copyFrom(_this._point); + _this.interactive; + VectorGraphicUtil.handle(_this); + return _this; + } + AbsorbablePoint.prototype.compareTo = function (other) { + if (other instanceof AbsorbablePoint) { + return this.absorbRange - other.absorbRange; + } + throw new Error('非可吸附点'); + }; + AbsorbablePoint.prototype.isOverlapping = function (other) { + if (other instanceof AbsorbablePoint) { + return (this._point.equals(other._point) && + this.absorbRange === other.absorbRange); + } + return false; + }; + AbsorbablePoint.prototype.tryAbsorb = function () { + var objs = []; + for (var _i = 0; _i < arguments.length; _i++) { + objs[_i] = arguments[_i]; + } + for (var i = 0; i < objs.length; i++) { + var obj = objs[i]; + var canvasPosition = obj.getPositionOnCanvas(); + if (distance(this._point.x, this._point.y, canvasPosition.x, canvasPosition.y) < this.absorbRange) { + obj.updatePositionByCanvasPosition(this._point); + } + } + }; + AbsorbablePoint.prototype.updateOnScaled = function () { + var scaled = this.getAllParentScaled(); + var scale = Math.max(scaled.x, scaled.y); + this.scale.set(1 / scale, 1 / scale); + }; + return AbsorbablePoint; +})(pixi_js.Graphics)); +/** + * 可吸附线 + */ +var AbsorbableLine = /** @class */ (function (_super) { + __extends(AbsorbableLine, _super); + /** + * + * @param p1 画布坐标 + * @param p2 画布坐标 + * @param absorbRange + */ + function AbsorbableLine(p1, p2, absorbRange) { + if (absorbRange === void 0) { absorbRange = 20; } + var _this = _super.call(this) || this; + _this._color = '#E77E0E'; + _this.p1 = new pixi_js.Point(p1.x, p1.y); + _this.p2 = new pixi_js.Point(p2.x, p2.y); + _this.absorbRange = absorbRange; + _this.redraw(); + return _this; + } + AbsorbableLine.prototype.isOverlapping = function (other) { + if (other instanceof AbsorbableLine) { + var contain = isLineContainOther({ p1: this.p1, p2: this.p2 }, { p1: other.p1, p2: other.p2 }); + return contain; + } + return false; + }; + AbsorbableLine.prototype.compareTo = function (other) { + if (other instanceof AbsorbableLine) { + return distance2(this.p1, this.p2) - distance2(other.p1, other.p2); + } + throw new Error('非可吸附线'); + }; + AbsorbableLine.prototype.redraw = function () { + this.clear(); + this.lineStyle(1, new pixi_js.Color(this._color)); + this.moveTo(this.p1.x, this.p1.y); + this.lineTo(this.p2.x, this.p2.y); + }; + AbsorbableLine.prototype.tryAbsorb = function () { + var objs = []; + for (var _i = 0; _i < arguments.length; _i++) { + objs[_i] = arguments[_i]; + } + for (var i = 0; i < objs.length; i++) { + var obj = objs[i]; + var canvasPosition = obj.getPositionOnCanvas(); + if (linePoint(this.p1, this.p2, canvasPosition, this.absorbRange, true)) { + var fp = calculateFootPointFromPointToLine(this.p1, this.p2, canvasPosition); + obj.updatePositionByCanvasPosition(fp); + } + } + }; + return AbsorbableLine; +}(pixi_js.Graphics)); +/** + * 可吸附圆 + */ +var AbsorbableCircle = /** @class */ (function (_super) { + __extends(AbsorbableCircle, _super); + /** + * + * @param p 画布坐标 + * @param radius + * @param absorbRange + */ + function AbsorbableCircle(p, radius, absorbRange) { + if (absorbRange === void 0) { absorbRange = 10; } + var _this = _super.call(this) || this; + _this._color = '#E77E0E'; + _this.p0 = new pixi_js.Point(p.x, p.y); + _this.radius = radius; + _this.absorbRange = absorbRange; + _this.redraw(); + return _this; + } + AbsorbableCircle.prototype.isOverlapping = function (other) { + if (other instanceof AbsorbableCircle) { + return this.p0.equals(other.p0) && this.radius === other.radius; + } + return false; + }; + AbsorbableCircle.prototype.compareTo = function (other) { + if (other instanceof AbsorbableCircle) { + return this.absorbRange - other.absorbRange; + } + throw new Error('非可吸附圆'); + }; + AbsorbableCircle.prototype.redraw = function () { + this.clear(); + this.lineStyle(1, new pixi_js.Color(this._color)); + this.drawCircle(this.p0.x, this.p0.y, this.radius); + }; + AbsorbableCircle.prototype.tryAbsorb = function () { + var objs = []; + for (var _i = 0; _i < arguments.length; _i++) { + objs[_i] = arguments[_i]; + } + for (var i = 0; i < objs.length; i++) { + var obj = objs[i]; + var canvasPosition = obj.getPositionOnCanvas(); + var len = distance(this.p0.x, this.p0.y, canvasPosition.x, canvasPosition.y); + if (len > this.radius - this.absorbRange && + len < this.radius + this.absorbRange) { + // 吸附,计算直线与圆交点,更新对象坐标 + var p = calculateIntersectionPointOfCircleAndPoint(this.p0, this.radius, canvasPosition); + obj.updatePositionByCanvasPosition(p); + } + } + }; + return AbsorbableCircle; +}(pixi_js.Graphics)); + +var DefaultDashedLineOptions = { + length: 4, + startSpace: 0, + space: 4, + lineWidth: 1, + color: '#0000ff', +}; +var DashedLine = /** @class */ (function (_super) { + __extends(DashedLine, _super); + function DashedLine(p1, p2, options) { + var _this = _super.call(this) || this; + var config = Object.assign({}, DefaultDashedLineOptions, options); + _this._options = config; + _this.p1 = new pixi_js.Point(p1.x, p1.y); + _this.p2 = new pixi_js.Point(p2.x, p2.y); + _this.redraw(); + return _this; + } + DashedLine.prototype.setOptions = function (options) { + if (options.startSpace != undefined) { + this._options.startSpace = options.startSpace; + } + if (options.length != undefined) { + this._options.length = options.length; + } + if (options.space != undefined) { + this._options.space = options.space; + } + if (options.lineWidth != undefined) { + this._options.lineWidth = options.lineWidth; + } + if (options.color != undefined) { + this._options.color = options.color; + } + this.redraw(); + }; + DashedLine.prototype.redraw = function () { + this.removeChildren(); + var p1 = this.p1; + var p2 = this.p2; + var option = this._options; + var total = Math.pow(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2), 0.5); + var len = option.startSpace; + while (len < total) { + var dashedLen = option.length; + if (len + option.length > total) { + dashedLen = total - len; + } + var line = new pixi_js.Graphics(); + line.lineStyle(option.lineWidth, option.color); + line.moveTo(len, 0); + line.lineTo(len + dashedLen, 0); + this.addChild(line); + len = len + dashedLen + option.space; + } + this.pivot.set(0, option.lineWidth / 2); + this.position.set(p1.x, p1.y); + this.angle = angleToAxisx(p1, p2); + }; + return DashedLine; +}(pixi_js.Container)); + +var ShiftData = /** @class */ (function () { + function ShiftData(startPosition, currentPosition, lastPosition) { + this.startPosition = startPosition; + this.lastPosition = lastPosition; + this.currentPosition = currentPosition; + } + ShiftData.new = function (startPosition, currentPosition, lastPosition) { + return new ShiftData(startPosition, currentPosition, lastPosition); + }; + Object.defineProperty(ShiftData.prototype, "dx", { + get: function () { + if (!this.lastPosition || !this.currentPosition) { + throw new Error('错误的位移数据或阶段'); + } + return this.currentPosition.x - this.lastPosition.x; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ShiftData.prototype, "dy", { + get: function () { + if (!this.lastPosition || !this.currentPosition) { + throw new Error('错误的位移数据或阶段'); + } + return this.currentPosition.y - this.lastPosition.y; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ShiftData.prototype, "dsx", { + get: function () { + if (!this.currentPosition) { + throw new Error('错误的位移数据或阶段'); + } + return this.currentPosition.x - this.startPosition.x; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ShiftData.prototype, "dsy", { + get: function () { + if (!this.currentPosition) { + throw new Error('错误的位移数据或阶段'); + } + return this.currentPosition.y - this.startPosition.y; + }, + enumerable: false, + configurable: true + }); + return ShiftData; +}()); +var ScaleData = /** @class */ (function () { + function ScaleData(start, current, last) { + this.start = start; + this.current = current; + this.last = last; + } + ScaleData.new = function (start, current, last) { + return new ScaleData(start, current, last); + }; + return ScaleData; +}()); +/** + * 图形平移事件 + */ +var GraphicTransformEvent = /** @class */ (function () { + function GraphicTransformEvent(target, type, data) { + this.target = target; + this.type = type; + this.data = data; + } + GraphicTransformEvent.prototype.getData = function () { + return this.data; + }; + GraphicTransformEvent.shift = function (target, data) { + return new GraphicTransformEvent(target, 'shift', data); + }; + GraphicTransformEvent.scale = function (target) { + return new GraphicTransformEvent(target, 'scale', null); + }; + GraphicTransformEvent.rotate = function (target) { + return new GraphicTransformEvent(target, 'rotate', null); + }; + GraphicTransformEvent.skew = function (target) { + return new GraphicTransformEvent(target, 'skew', null); + }; + GraphicTransformEvent.prototype.isShift = function () { + return this.type === 'shift'; + }; + GraphicTransformEvent.prototype.isRotate = function () { + return this.type === 'rotate'; + }; + GraphicTransformEvent.prototype.isScale = function () { + return this.type === 'scale'; + }; + GraphicTransformEvent.prototype.isSkew = function () { + return this.type === 'skew'; + }; + return GraphicTransformEvent; +}()); +var GraphicTransformPlugin = /** @class */ (function (_super) { + __extends(GraphicTransformPlugin, _super); + function GraphicTransformPlugin(app) { + var _this = _super.call(this, app, GraphicTransformPlugin.Name, exports.InteractionPluginType.Other) || this; + _this.apContainer = new pixi_js.Container(); + _this.apContainer.name = GraphicTransformPlugin.AbsorbablePosisiontsName; + _this.app.canvas.addAssistantAppend(_this.apContainer); + app.on('options-update', function (options) { + if (options.absorbablePositions) { + _this.absorbablePositions = _this.filterAbsorbablePositions(options.absorbablePositions); + } + }); + return _this; + } + /** + * 过滤重复的吸附位置 + * @param positions + * @returns + */ + GraphicTransformPlugin.prototype.filterAbsorbablePositions = function (positions) { + var aps = []; + for (var i = 0; i < positions.length; i++) { + var ap1 = positions[i]; + var ap = ap1; + for (var j = positions.length - 1; j > i; j--) { + var ap2 = positions[j]; + if (ap.isOverlapping(ap2) && ap.compareTo(ap2) <= 0) { + ap = null; + break; + } + } + if (ap != null) { + aps.push(ap); + } + } + // console.log(positions, aps); + return aps; + }; + GraphicTransformPlugin.new = function (app) { + return new GraphicTransformPlugin(app); + }; + GraphicTransformPlugin.prototype.bind = function () { + this.app.on('drag_op_start', this.onDragStart, this); + this.app.on('drag_op_move', this.onDragMove, this); + this.app.on('drag_op_end', this.onDragEnd, this); + this.app.on('graphicselectedchange', this.onGraphicSelectedChange, this); + this.app.on('graphicchildselectedchange', this.onGraphicSelectedChange, this); + }; + GraphicTransformPlugin.prototype.unbind = function () { + this.app.off('drag_op_start', this.onDragStart, this); + this.app.off('drag_op_move', this.onDragMove, this); + this.app.off('drag_op_end', this.onDragEnd, this); + this.app.off('graphicselectedchange', this.onGraphicSelectedChange, this); + this.app.off('graphicchildselectedchange', this.onGraphicSelectedChange, this); + }; + GraphicTransformPlugin.prototype.getDraggedTargets = function (e) { + var _a; + var targets = []; + if (e.target.isGraphicChild() && e.target.selected && e.target.draggable) { + var graphic = e.target.getGraphic(); + // 图形子元素 + recursiveChildren(graphic, function (child) { + if (child.selected && child.draggable) { + targets.push(child); + } + }); + } + else if ((e.target.isGraphic() || e.target.isGraphicChild()) && + ((_a = e.target.getGraphic()) === null || _a === void 0 ? void 0 : _a.draggable)) { + // 图形对象 + targets.push.apply(targets, this.app.selectedGraphics); + } + else if (e.target.draggable) { + targets.push(e.target); + } + return targets; + }; + GraphicTransformPlugin.prototype.onDragStart = function (e) { + var _a; + if (!e.target.isCanvas() && e.isLeftButton) { + var targets = this.getDraggedTargets(e); + if (targets.length > 0) { + targets.forEach(function (target) { + target.shiftStartPoint = target.position.clone(); + target.emit('transformstart', GraphicTransformEvent.shift(target, ShiftData.new(target.shiftStartPoint))); + }); + // 显示吸附图形 + if (this.absorbablePositions && this.absorbablePositions.length > 0) { + this.apContainer.removeChildren(); + (_a = this.apContainer).addChild.apply(_a, this.absorbablePositions); + } + } + } + }; + GraphicTransformPlugin.prototype.onDragMove = function (e) { + if (!e.target.isCanvas() && e.isLeftButton) { + var targets = this.getDraggedTargets(e); + if (targets.length > 0) { + // 处理位移 + targets.forEach(function (target) { + if (target.shiftStartPoint) { + target.shiftLastPoint = target.position.clone(); + var _a = e.toTargetShiftLen(target.parent), dx = _a.dx, dy = _a.dy; + target.position.set(target.shiftStartPoint.x + dx, target.shiftStartPoint.y + dy); + } + }); + // 处理吸附 + if (this.absorbablePositions) { + for (var i = 0; i < this.absorbablePositions.length; i++) { + var ap = this.absorbablePositions[i]; + ap.tryAbsorb.apply(ap, targets); + } + } + // const start = new Date().getTime(); + // 事件发布 + targets.forEach(function (target) { + if (target.shiftStartPoint && target.shiftLastPoint) { + target.emit('transforming', GraphicTransformEvent.shift(target, ShiftData.new(target.shiftStartPoint, target.position.clone(), target.shiftLastPoint))); + } + }); + // const dt = new Date().getTime() - start; + // console.log('拖拽耗时', `${dt}ms`, targets); + } + } + }; + GraphicTransformPlugin.prototype.onDragEnd = function (e) { + if (!e.target.isCanvas() && e.isLeftButton) { + var targets = this.getDraggedTargets(e); + targets.forEach(function (target) { + if (target.shiftStartPoint) { + target.emit('transformend', GraphicTransformEvent.shift(target, ShiftData.new(target.shiftStartPoint, target.position.clone()))); + } + target.shiftStartPoint = null; + }); + } + this.clearCache(); + }; + /** + * 清理缓存 + */ + GraphicTransformPlugin.prototype.clearCache = function () { + // 移除吸附图形 + this.absorbablePositions = []; + this.apContainer.removeChildren(); + }; + GraphicTransformPlugin.prototype.onGraphicSelectedChange = function (g, selected) { + var br = g.getAssistantAppend(BoundsGraphic.Name); + if (!br) { + // 绘制辅助包围框 + br = new BoundsGraphic(g); + } + if (selected) { + if (br) { + br.redraw(); + br.visible = true; + } + } + else { + if (br) { + br.visible = false; + } + } + if (g.scalable || g.rotatable) { + // 缩放点 + var sp = g.getAssistantAppend(TransformPoints.Name); + if (!sp) { + sp = new TransformPoints(g); + } + if (selected) { + sp.update(); + sp.visible = true; + } + else { + sp.visible = false; + } + } + }; + GraphicTransformPlugin.Name = '__graphic_transform_plugin'; + GraphicTransformPlugin.AbsorbablePosisiontsName = '__AbsorbablePosisionts'; + return GraphicTransformPlugin; +}(InteractionPluginBase)); +/** + * 缩放、旋转辅助 + */ +var TransformPoints = /** @class */ (function (_super) { + __extends(TransformPoints, _super); + function TransformPoints(obj) { + var _this = _super.call(this) || this; + _this.ltLocal = new pixi_js.Point(); + _this.tLocal = new pixi_js.Point(); + _this.tCanvas = new pixi_js.Point(); + _this.rtLocal = new pixi_js.Point(); + _this.rLocal = new pixi_js.Point(); + _this.rbLocal = new pixi_js.Point(); + _this.bLocal = new pixi_js.Point(); + _this.lbLocal = new pixi_js.Point(); + _this.lLocal = new pixi_js.Point(); + _this.originScale = new pixi_js.Point(); + _this.scalePivot = new pixi_js.Point(); + /** + * 起始图形角度 + */ + _this.startAngle = 0; + /** + * 旋转角度步长 + */ + _this.angleStep = 1; + /** + * 修改旋转步长键盘监听 + */ + _this.rotateAngleStepKeyListeners = []; + _this.obj = obj; + _this.name = TransformPoints.Name; + _this.angleAssistantText = new VectorText('', { + fill: AppConsts.assistantElementColor, + }); + _this.angleAssistantText.setVectorFontSize(16); + _this.angleAssistantText.anchor.set(0.5); + // 创建缩放拖拽点 + _this.ltScalePoint = new DraggablePoint(new pixi_js.Point()); + _this.ltScalePoint.name = TransformPoints.LeftTopName; + _this.addChild(_this.ltScalePoint); + _this.tScalePoint = new DraggablePoint(new pixi_js.Point()); + _this.tScalePoint.name = TransformPoints.TopName; + _this.addChild(_this.tScalePoint); + _this.rtScalePoint = new DraggablePoint(new pixi_js.Point()); + _this.rtScalePoint.name = TransformPoints.RightTopName; + _this.addChild(_this.rtScalePoint); + _this.rScalePoint = new DraggablePoint(new pixi_js.Point()); + _this.rScalePoint.name = TransformPoints.RightName; + _this.addChild(_this.rScalePoint); + _this.rbScalePoint = new DraggablePoint(new pixi_js.Point()); + _this.rbScalePoint.name = TransformPoints.RightBottomName; + _this.addChild(_this.rbScalePoint); + _this.bScalePoint = new DraggablePoint(new pixi_js.Point()); + _this.bScalePoint.name = TransformPoints.BottomName; + _this.addChild(_this.bScalePoint); + _this.lbScalePoint = new DraggablePoint(new pixi_js.Point()); + _this.lbScalePoint.name = TransformPoints.LeftBottomName; + _this.addChild(_this.lbScalePoint); + _this.lScalePoint = new DraggablePoint(new pixi_js.Point()); + _this.lScalePoint.name = TransformPoints.LeftName; + _this.addChild(_this.lScalePoint); + _this.obj.on('transformstart', _this.onObjTransformStart, _this); + _this.obj.on('transformend', _this.onObjTransformEnd, _this); + if (_this.obj.children && _this.obj.children.length > 0) { + recursiveChildren(_this.obj, function (child) { + child.on('transformstart', _this.onObjTransformStart, _this); + child.on('transformend', _this.onObjTransformEnd, _this); + }); + } + var pg = _this.obj.getGraphic(); + if (pg != null) { + pg.on('transformstart', _this.onObjTransformStart, _this); + pg.on('transformend', _this.onObjTransformEnd, _this); + } + _this.obj.on('repaint', _this.onGraphicRepaint, _this); + _this.children.forEach(function (dp) { + dp.on('transformstart', _this.onScaleDragStart, _this); + dp.on('transforming', _this.onScaleDragMove, _this); + dp.on('transformend', _this.onScaleDragEnd, _this); + }); + // 创建旋转拖拽点 + _this.rotatePoint = new DraggablePoint(new pixi_js.Point()); + _this.addChild(_this.rotatePoint); + _this.rotatePoint.on('transformstart', _this.onRotateStart, _this); + _this.rotatePoint.on('transforming', _this.onRotateMove, _this); + _this.rotatePoint.on('transformend', _this.onRotateEnd, _this); + _this.rotatePivot = new pixi_js.Point(); + _this.rotateLastPoint = new pixi_js.Point(); + var _loop_1 = function (i) { + this_1.rotateAngleStepKeyListeners.push(KeyListener.create({ + value: '' + i, + onPress: function () { + // console.log('修改角度step'); + _this.angleStep = i; + }, + })); + }; + var this_1 = this; + // 初始化旋转角度修改键盘监听器 + for (var i = 1; i < 10; i++) { + _loop_1(i); + } + _this.obj.addAssistantAppend(_this); + return _this; + } + TransformPoints.prototype.onObjTransformStart = function () { + this.visible = false; + }; + TransformPoints.prototype.onObjTransformEnd = function () { + this.update(); + this.visible = true; + }; + TransformPoints.prototype.onGraphicRepaint = function () { + if (this.visible) { + this.update(); + } + }; + /** + * 旋转开始 + * @param de + */ + TransformPoints.prototype.onRotateStart = function (de) { + this.hideAll(); + var assistantPoint = this.obj.localToCanvasPoint(this.obj.pivot); + this.rotatePivot.copyFrom(assistantPoint); + this.rotateLastPoint.copyFrom(de.target.position); + this.startAngle = this.obj.angle; + var app = this.obj.getGraphicApp(); + this.rotateAngleStepKeyListeners.forEach(function (listener) { + return app.addKeyboardListener(listener); + }); + this.obj.emit('transformstart', GraphicTransformEvent.rotate(this.obj)); + // app.emit('transformstart', app.selectedGraphics); + this.obj.getCanvas().addAssistantAppends(this.angleAssistantText); + this.updateAngleAssistantText(de); + }; + TransformPoints.prototype.updateAngleAssistantText = function (de) { + var _a, _b, _c; + this.angleAssistantText.text = this.obj.angle + '°'; + var cursorPoint = (_a = de.data) === null || _a === void 0 ? void 0 : _a.startPosition; + if ((_b = de.data) === null || _b === void 0 ? void 0 : _b.currentPosition) { + cursorPoint = (_c = de.data) === null || _c === void 0 ? void 0 : _c.currentPosition; + } + if (cursorPoint) { + this.angleAssistantText.position.x = cursorPoint.x; + this.angleAssistantText.position.y = cursorPoint.y - 10; + } + }; + /** + * 旋转移动 + * @param de + */ + TransformPoints.prototype.onRotateMove = function (de) { + // 旋转角度计算逻辑:取锚点y负方向一点作为旋转点,求旋转点和锚点所形成的直线与x轴角度,此角度+90°即为最终旋转角度,再将旋转角度限制到(-180,180]之间 + var angle = angleToAxisx(this.rotatePivot, de.target.position); + angle = Math.floor(angle / this.angleStep) * this.angleStep; + var parentAngle = this.obj.parent.worldAngle; + angle = (angle + 90 - parentAngle) % 360; + if (angle > 180) { + angle = angle - 360; + } + this.obj.angle = angle; + this.updateAngleAssistantText(de); + // this.obj.emit('rotatemove', this.obj); + }; + /** + * 旋转结束 + * @param de + */ + TransformPoints.prototype.onRotateEnd = function () { + var _this = this; + this.showAll(); + this.obj.getCanvas().removeAssistantAppends(this.angleAssistantText); + this.rotateAngleStepKeyListeners.forEach(function (listener) { + return _this.obj.getGraphicApp().removeKeyboardListener(listener); + }); + this.obj.emit('transformend', GraphicTransformEvent.rotate(this.obj)); + }; + /** + * 缩放开始 + */ + TransformPoints.prototype.onScaleDragStart = function () { + this.hideAll(); + var points = convertRectangleToPolygonPoints(this.obj.getLocalBounds()); + var p0 = points[0]; + var p1 = points[1]; + var p2 = points[2]; + var p3 = points[3]; + this.scalePivot = this.obj.pivot.clone(); + this.ltLocal.copyFrom(p0); + this.tCanvas.copyFrom(this.obj.localToCanvasPoint(calculateLineMidpoint(p0, p1))); + this.tLocal.copyFrom(calculateLineMidpoint(p0, p1)); + this.rtLocal.copyFrom(p1); + this.rLocal.copyFrom(calculateLineMidpoint(p1, p2)); + this.rbLocal.copyFrom(p2); + this.bLocal.copyFrom(calculateLineMidpoint(p2, p3)); + this.lbLocal.copyFrom(p3); + this.lLocal.copyFrom(calculateLineMidpoint(p0, p3)); + this.originScale = this.obj.scale.clone(); + this.obj.emit('transformstart', GraphicTransformEvent.scale(this.obj)); + }; + TransformPoints.prototype.onScaleDragMove = function (e) { + // 缩放计算逻辑:共8个方向缩放点,根据所拖拽的方向: + // 1,计算缩放为1时的此点在拖拽开始时的位置到锚点x、y距离, + // 2,计算拖拽点的当前位置到锚点的x、y方向距离, + // PS:以上两个计算都是在local(也就是图形对象本地)坐标系, + // 用当前距离除以原始距离即为缩放比例 + var defaultScale = new pixi_js.Point(1, 1); + var originWidth = 0; + var originHeight = 0; + var width = 0; + var height = 0; + this.obj.scale.copyFrom(defaultScale); + var point = this.obj.toLocal(e.target.parent.localToScreenPoint(e.target.position)); + if (e.target === this.ltScalePoint) { + // 左上角 + originWidth = Math.abs(this.ltLocal.x - this.scalePivot.x); + originHeight = Math.abs(this.ltLocal.y - this.scalePivot.y); + width = Math.abs(point.x - this.scalePivot.x); + height = Math.abs(point.y - this.scalePivot.y); + } + else if (e.target == this.tScalePoint) { + // 上 + originHeight = Math.abs(this.tLocal.y - this.scalePivot.y); + height = Math.abs(point.y - this.scalePivot.y); + } + else if (e.target == this.rtScalePoint) { + // 右上 + originWidth = Math.abs(this.rtLocal.x - this.scalePivot.x); + originHeight = Math.abs(this.rtLocal.y - this.scalePivot.y); + width = Math.abs(point.x - this.scalePivot.x); + height = Math.abs(point.y - this.scalePivot.y); + } + else if (e.target == this.rScalePoint) { + // 右 + originWidth = Math.abs(this.rLocal.x - this.scalePivot.x); + width = Math.abs(point.x - this.scalePivot.x); + } + else if (e.target == this.rbScalePoint) { + // 右下 + originWidth = Math.abs(this.rbLocal.x - this.scalePivot.x); + originHeight = Math.abs(this.rbLocal.y - this.scalePivot.y); + width = Math.abs(point.x - this.scalePivot.x); + height = Math.abs(point.y - this.scalePivot.y); + } + else if (e.target == this.bScalePoint) { + // 下 + originHeight = Math.abs(this.bLocal.y - this.scalePivot.y); + height = Math.abs(point.y - this.scalePivot.y); + } + else if (e.target == this.lbScalePoint) { + // 左下 + originWidth = Math.abs(this.lbLocal.x - this.scalePivot.x); + originHeight = Math.abs(this.lbLocal.y - this.scalePivot.y); + width = Math.abs(point.x - this.scalePivot.x); + height = Math.abs(point.y - this.scalePivot.y); + } + else { + // 左 + originWidth = Math.abs(this.lLocal.x - this.scalePivot.x); + width = Math.abs(point.x - this.scalePivot.x); + } + // 计算缩放比例,并根据是否保持纵横比两种情况进行缩放处理 + var sx = originWidth == 0 ? this.originScale.x : width / originWidth; + var sy = originHeight == 0 ? this.originScale.y : height / originHeight; + // console.log(originWidth, originHeight, width, height, sx, sy); + if (this.obj.keepAspectRatio) { + var max = Math.max(sx, sy); + if (originWidth == 0) { + max = sy; + } + else if (originHeight == 0) { + max = sx; + } + this.obj.scale.set(max, max); + } + else { + this.obj.scale.x = sx; + this.obj.scale.y = sy; + } + }; + TransformPoints.prototype.onScaleDragEnd = function () { + this.showAll(); + this.obj.emit('transformend', GraphicTransformEvent.scale(this.obj)); + }; + TransformPoints.prototype.hideOthers = function (dg) { + this.children.forEach(function (child) { + if (child.name !== dg.name) { + child.visible = false; + } + }); + }; + TransformPoints.prototype.hideAll = function () { + this.children.forEach(function (child) { return (child.visible = false); }); + }; + TransformPoints.prototype.showAll = function () { + this.update(); + this.children.forEach(function (child) { return (child.visible = true); }); + }; + TransformPoints.prototype.getObjBounds = function () { + var points = this.obj.localBoundsToCanvasPoints(); + var p0 = points[0]; + var p1 = points[1]; + var p3 = points[3]; + var width = distance(p0.x, p0.y, p1.x, p1.y); + var height = distance(p0.x, p0.y, p3.x, p3.y); + return { width: width, height: height }; + }; + /** + * 更新位置和cursor + * @returns + */ + TransformPoints.prototype.update = function () { + if (this.obj.scalable) { + this.updateScalePoints(); + } + if (this.obj.rotatable) { + this.updateRotatePoint(); + } + }; + TransformPoints.prototype.updateRotatePoint = function () { + var rect = this.obj.getLocalBounds(); + var lp = this.obj.pivot.clone(); + var dy = 10 / this.obj.scale.y; + lp.y = rect.y - dy; + var p = this.obj.localToCanvasPoint(lp); + this.rotatePoint.position.copyFrom(p); + }; + TransformPoints.prototype.updateScalePoints = function () { + var points = this.obj.localBoundsToCanvasPoints(); + this.ltScalePoint.position.copyFrom(points[0]); + this.tScalePoint.position.copyFrom(calculateLineMidpoint(points[0], points[1])); + this.rtScalePoint.position.copyFrom(points[1]); + this.rScalePoint.position.copyFrom(calculateLineMidpoint(points[1], points[2])); + this.rbScalePoint.position.copyFrom(points[2]); + this.bScalePoint.position.copyFrom(calculateLineMidpoint(points[2], points[3])); + this.lbScalePoint.position.copyFrom(points[3]); + this.lScalePoint.position.copyFrom(calculateLineMidpoint(points[3], points[0])); + var angle = this.obj.worldAngle; + var angle360 = (360 + angle) % 360; + if ((angle >= -22.5 && angle <= 22.5) || + (angle360 >= 180 - 22.5 && angle360 <= 180 + 22.5)) { + this.ltScalePoint.cursor = 'nw-resize'; + this.tScalePoint.cursor = 'n-resize'; + this.rtScalePoint.cursor = 'ne-resize'; + this.rScalePoint.cursor = 'e-resize'; + this.rbScalePoint.cursor = 'se-resize'; + this.bScalePoint.cursor = 's-resize'; + this.lbScalePoint.cursor = 'sw-resize'; + this.lScalePoint.cursor = 'w-resize'; + } + else if ((angle >= 22.5 && angle <= 67.5) || + (angle360 >= 180 + 22.5 && angle360 <= 180 + 67.5)) { + this.ltScalePoint.cursor = 'n-resize'; + this.tScalePoint.cursor = 'ne-resize'; + this.rtScalePoint.cursor = 'e-resize'; + this.rScalePoint.cursor = 'se-resize'; + this.rbScalePoint.cursor = 's-resize'; + this.bScalePoint.cursor = 'sw-resize'; + this.lbScalePoint.cursor = 'w-resize'; + this.lScalePoint.cursor = 'nw-resize'; + } + else if ((angle >= 67.5 && angle < 112.5) || + (angle360 >= 180 + 67.5 && angle360 <= 180 + 112.5)) { + this.ltScalePoint.cursor = 'ne-resize'; + this.tScalePoint.cursor = 'e-resize'; + this.rtScalePoint.cursor = 'se-resize'; + this.rScalePoint.cursor = 's-resize'; + this.rbScalePoint.cursor = 'sw-resize'; + this.bScalePoint.cursor = 'w-resize'; + this.lbScalePoint.cursor = 'nw-resize'; + this.lScalePoint.cursor = 'n-resize'; + } + else { + this.ltScalePoint.cursor = 'e-resize'; + this.tScalePoint.cursor = 'se-resize'; + this.rtScalePoint.cursor = 's-resize'; + this.rScalePoint.cursor = 'sw-resize'; + this.rbScalePoint.cursor = 'w-resize'; + this.bScalePoint.cursor = 'nw-resize'; + this.lbScalePoint.cursor = 'n-resize'; + this.lScalePoint.cursor = 'ne-resize'; + } + }; + TransformPoints.Name = 'transformPoints'; + TransformPoints.MinLength = 40; + TransformPoints.LeftTopName = 'lt-scale-point'; + TransformPoints.TopName = 't-scale-point'; + TransformPoints.RightTopName = 'rt-scale-point'; + TransformPoints.RightName = 'r-scale-point'; + TransformPoints.RightBottomName = 'rb-scale-point'; + TransformPoints.BottomName = 'b-scale-point'; + TransformPoints.LeftBottomName = 'lb-scale-point'; + TransformPoints.LeftName = 'l-scale-point'; + TransformPoints.RotateName = 'rotate-point'; + return TransformPoints; +}(pixi_js.Container)); +/** + * 包围盒矩形图形,现使用外边框转画布多边形实现 + */ +var BoundsGraphic = /** @class */ (function (_super) { + __extends(BoundsGraphic, _super); + function BoundsGraphic(graphic) { + var _this = _super.call(this) || this; + _this.obj = graphic; + _this.name = BoundsGraphic.Name; + _this.visible = false; + _this.debouncedRedraw = debounce(_this.doRedraw, 50); + _this.obj.on('transformstart', _this.onObjTransformStart, _this); + _this.obj.on('transformend', _this.onObjTransformEnd, _this); + if (_this.obj.children && _this.obj.children.length > 0) { + recursiveChildren(_this.obj, function (child) { + child.on('transformstart', _this.onObjTransformStart, _this); + child.on('transformend', _this.onObjTransformEnd, _this); + }); + } + var pg = _this.obj.getGraphic(); + if (pg != null) { + pg.on('transformstart', _this.onObjTransformStart, _this); + pg.on('transformend', _this.onObjTransformEnd, _this); + } + _this.obj.on('repaint', _this.onGraphicRepaint, _this); + graphic.addAssistantAppend(_this); + return _this; + } + BoundsGraphic.prototype.onObjTransformStart = function () { + this.visible = false; + }; + BoundsGraphic.prototype.onObjTransformEnd = function () { + this.redraw(); + this.visible = true; + }; + BoundsGraphic.prototype.onGraphicRepaint = function () { + if (this.visible) { + this.redraw(); + } + }; + BoundsGraphic.prototype.destroy = function (options) { + if (this.obj.isGraphic()) { + this.obj.off('repaint', this.onGraphicRepaint, this); + } + _super.prototype.destroy.call(this, options); + }; + BoundsGraphic.prototype.redraw = function () { + this.debouncedRedraw(this); + }; + BoundsGraphic.prototype.doRedraw = function () { + var visible = this.visible; + this.visible = false; // 屏蔽包围框本身 + var bounds = new pixi_js.Polygon(this.obj.localBoundsToCanvasPoints()); + this.clear().lineStyle(BoundsGraphic.BoundsLineStyle).drawShape(bounds); + this.visible = visible; + }; + BoundsGraphic.Name = '_BoundsRect'; + BoundsGraphic.BoundsLineStyle = { + width: 1, + color: '#1976d2', + alpha: 1, + }; + return BoundsGraphic; +}(pixi_js.Graphics)); + +/** + * 图形动画管理 + */ +var AnimationManager = /** @class */ (function () { + function AnimationManager(app) { + this.app = app; + this._pause = false; + this.graphicAnimationMap = new Map(); + // 动画控制 + app.pixi.ticker.add(this.run, this); + } + AnimationManager.prototype.run = function (dt) { + if (this._pause) { + // 暂停 + return; + } + this.graphicAnimationMap.forEach(function (map) { + map.forEach(function (animation) { + if (animation.running) { + animation.run(dt); + } + }); + }); + }; + AnimationManager.prototype.pause = function () { + this._pause = true; + }; + AnimationManager.prototype.resume = function () { + this._pause = false; + }; + AnimationManager.prototype.destroy = function () { + this.app.pixi.ticker.remove(this.run, this); + }; + /** + * 图形对象的所有动画map + * @param graphic + * @returns + */ + AnimationManager.prototype.animationMap = function (graphic) { + var map = this.graphicAnimationMap.get(graphic.id); + if (!map) { + map = new Map(); + this.graphicAnimationMap.set(graphic.id, map); + } + return map; + }; + /** + * 注册图形动画 + * @param graphic + * @param animation + */ + AnimationManager.prototype.registerAnimation = function (graphic, animation) { + this.animationMap(graphic).set(animation.name, animation); + }; + /** + * 删除图形动画 + * @param graphic + * @param name + */ + AnimationManager.prototype.unregisterAnimation = function (graphic, name) { + this.animationMap(graphic).delete(name); + }; + /** + * 删除所有图形动画 + * @param graphic + */ + AnimationManager.prototype.unregisterGraphicAnimations = function (graphic) { + this.animationMap(graphic).clear(); + }; + /** + * 获取图形指定名称动画 + * @param graphic + * @param name + * @returns + */ + AnimationManager.prototype.animation = function (graphic, name) { + return this.animationMap(graphic).get(name); + }; + return AnimationManager; +}()); + +/** + * 操作 + */ +var JlOperation = /** @class */ (function () { + function JlOperation(app, type) { + this.description = ''; // 操作描述 + this.app = app; + this.type = type; + } + JlOperation.prototype.undo1 = function () { + var _a; + var updates = this.undo(); + if (updates) { + (_a = this.app).updateSelected.apply(_a, updates); + } + }; + JlOperation.prototype.redo1 = function () { + var _a; + var updates = this.redo(); + if (updates) { + (_a = this.app).updateSelected.apply(_a, updates); + } + }; + return JlOperation; +}()); +/** + * 操作记录 + */ +var OperationRecord = /** @class */ (function () { + function OperationRecord(maxLen) { + if (maxLen === void 0) { maxLen = 100; } + this.undoStack = []; + this.redoStack = []; + this.maxLen = maxLen; + } + Object.defineProperty(OperationRecord.prototype, "hasUndo", { + get: function () { + return this.undoStack.length > 0; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(OperationRecord.prototype, "hasRedo", { + get: function () { + return this.redoStack.length > 0; + }, + enumerable: false, + configurable: true + }); + OperationRecord.prototype.setMaxLen = function (v) { + this.maxLen = v; + var len = this.undoStack.length; + if (len > v) { + var removeCount = len - v; + this.undoStack.splice(0, removeCount); + } + }; + /** + * 记录 + * @param op + */ + OperationRecord.prototype.record = function (op) { + if (this.undoStack.length >= this.maxLen) { + this.undoStack.shift(); + } + // console.log('operation record', op) + this.undoStack.push(op); + this.redoStack.splice(0, this.redoStack.length); + }; + /** + * 撤销 + */ + OperationRecord.prototype.undo = function () { + var op = this.undoStack.pop(); + // console.log('撤销', op); + if (op) { + op.undo1(); + this.redoStack.push(op); + } + }; + /** + * 重做 + */ + OperationRecord.prototype.redo = function () { + var op = this.redoStack.pop(); + // console.log('重做', op); + if (op) { + op.redo1(); + this.undoStack.push(op); + } + }; + return OperationRecord; +}()); + +/** + * 更新画布操作 + */ +var UpdateCanvasOperation = /** @class */ (function (_super) { + __extends(UpdateCanvasOperation, _super); + function UpdateCanvasOperation(app, obj, old, data) { + var _this = _super.call(this, app, 'update-canvas') || this; + _this.description = ''; + _this.app = app; + _this.obj = obj; + _this.old = old; + _this.data = data; + return _this; + } + UpdateCanvasOperation.prototype.undo = function () { + this.obj.update(this.old); + return []; + }; + UpdateCanvasOperation.prototype.redo = function () { + this.obj.update(this.data); + return []; + }; + return UpdateCanvasOperation; +}(JlOperation)); +/** + * 创建图形操作 + */ +var GraphicCreateOperation = /** @class */ (function (_super) { + __extends(GraphicCreateOperation, _super); + function GraphicCreateOperation(app, obj) { + var _this = _super.call(this, app, 'graphic-create') || this; + _this.description = ''; + _this.app = app; + _this.obj = obj; + return _this; + } + GraphicCreateOperation.prototype.undo = function () { + var _a; + (_a = this.app).deleteGraphics.apply(_a, this.obj); + }; + GraphicCreateOperation.prototype.redo = function () { + var _a; + (_a = this.app).addGraphics.apply(_a, this.obj); + return this.obj; + }; + return GraphicCreateOperation; +}(JlOperation)); +/** + * 删除图形操作 + */ +var GraphicDeleteOperation = /** @class */ (function (_super) { + __extends(GraphicDeleteOperation, _super); + function GraphicDeleteOperation(app, obj) { + var _this = _super.call(this, app, 'graphic-delete') || this; + _this.app = app; + _this.obj = obj; + return _this; + } + GraphicDeleteOperation.prototype.undo = function () { + var _a; + (_a = this.app).addGraphics.apply(_a, this.obj); + return this.obj; + }; + GraphicDeleteOperation.prototype.redo = function () { + var _a; + (_a = this.app).deleteGraphics.apply(_a, this.obj); + }; + return GraphicDeleteOperation; +}(JlOperation)); +var GraphicDataUpdateOperation = /** @class */ (function (_super) { + __extends(GraphicDataUpdateOperation, _super); + function GraphicDataUpdateOperation(app, obj, oldData, newData) { + var _this = _super.call(this, app, 'graphic-drag') || this; + _this.obj = __spreadArray([], obj, true); + _this.oldData = oldData; + _this.newData = newData; + return _this; + } + GraphicDataUpdateOperation.prototype.undo = function () { + for (var i = 0; i < this.obj.length; i++) { + var g = this.obj[i]; + // g.exitChildEdit(); + g.updateData(this.oldData[i]); + } + return this.obj; + }; + GraphicDataUpdateOperation.prototype.redo = function () { + for (var i = 0; i < this.obj.length; i++) { + var g = this.obj[i]; + // g.exitChildEdit(); + g.updateData(this.newData[i]); + } + return this.obj; + }; + return GraphicDataUpdateOperation; +}(JlOperation)); + +/** + * 图形关系数据 + */ +var GraphicRelationParam = /** @class */ (function () { + function GraphicRelationParam(g, param) { + if (param === void 0) { param = null; } + this.g = g; + this.param = param; + } + GraphicRelationParam.prototype.isTheGraphic = function (g) { + return this.g.id === g.id; + }; + GraphicRelationParam.prototype.getGraphic = function () { + return this.g; + }; + GraphicRelationParam.prototype.getParam = function () { + return this.param; + }; + GraphicRelationParam.prototype.equals = function (other) { + return this.isTheGraphic(other.g) && this.param === other.param; + }; + return GraphicRelationParam; +}()); +/** + * 图形关系 + */ +var GraphicRelation = /** @class */ (function () { + function GraphicRelation(rp1, rp2) { + this.rp1 = rp1; + this.rp2 = rp2; + } + GraphicRelation.prototype.contains = function (g) { + return this.rp1.isTheGraphic(g) || this.rp2.isTheGraphic(g); + }; + /** + * 获取给定图形的关系参数 + * @param g + * @returns + */ + GraphicRelation.prototype.getRelationParam = function (g) { + if (!this.contains(g)) { + throw new Error("\u56FE\u5F62\u5173\u7CFB".concat(this.rp1.g.id, "-").concat(this.rp2.g.id, "\u4E2D\u4E0D\u5305\u542B\u7ED9\u5B9A\u56FE\u5F62").concat(g.id)); + } + if (this.rp1.isTheGraphic(g)) { + return this.rp1; + } + else { + return this.rp2; + } + }; + /** + * 获取关联的另一个图形的关系参数 + * @param g + * @returns + */ + GraphicRelation.prototype.getOtherRelationParam = function (g) { + if (!this.contains(g)) { + throw new Error("\u56FE\u5F62\u5173\u7CFB".concat(this.rp1.g.id, "-").concat(this.rp2.g.id, "\u4E2D\u4E0D\u5305\u542B\u7ED9\u5B9A\u56FE\u5F62").concat(g.id)); + } + if (this.rp1.isTheGraphic(g)) { + return this.rp2; + } + else { + return this.rp1; + } + }; + /** + * 获取关联的另一个图形对象 + * @param g + * @returns graphic + */ + GraphicRelation.prototype.getOtherGraphic = function (g) { + return this.getOtherRelationParam(g).g; + }; + GraphicRelation.prototype.equals = function (orp1, orp2) { + if (this.rp1.isTheGraphic(orp1.g)) { + return this.rp1.equals(orp1) && this.rp2.equals(orp2); + } + else if (this.rp1.isTheGraphic(orp2.g)) { + return this.rp1.equals(orp2) && this.rp2.equals(orp1); + } + return false; + }; + GraphicRelation.prototype.isEqualOther = function (other) { + return this.equals(other.rp1, other.rp2); + }; + return GraphicRelation; +}()); +/** + * 图形关系管理 + */ +var RelationManage = /** @class */ (function () { + function RelationManage() { + this.relations = []; + } + RelationManage.prototype.isContainsRelation = function (rp1, rp2) { + var relation = this.relations.find(function (relation) { + return relation.equals(rp1, rp2); + }); + return !!relation; + }; + RelationManage.prototype.addRelation = function (rp1, rp2) { + if (!(rp1 instanceof GraphicRelationParam)) { + rp1 = new GraphicRelationParam(rp1); + } + if (!(rp2 instanceof GraphicRelationParam)) { + rp2 = new GraphicRelationParam(rp2); + } + if (!this.isContainsRelation(rp1, rp2)) { + var relation = new GraphicRelation(rp1, rp2); + this.relations.push(relation); + } + }; + /** + * 获取图形的所有关系 + * @param g + * @returns + */ + RelationManage.prototype.getRelationsOfGraphic = function (g) { + return this.relations.filter(function (rl) { return rl.contains(g); }); + }; + /** + * 获取指定图形的指定关系图形类型的所有关系 + * @param g 指定图形 + * @param type 关联图形的类型 + * @returns + */ + RelationManage.prototype.getRelationsOfGraphicAndOtherType = function (g, type) { + return this.relations.filter(function (rl) { return rl.contains(g) && rl.getOtherGraphic(g).type === type; }); + }; + /** + * 删除关系 + * @param relation + */ + RelationManage.prototype.deleteRelation = function (relation) { + var index = this.relations.findIndex(function (rl) { return rl.isEqualOther(relation); }); + if (index >= 0) { + this.relations.splice(index, 1); + } + }; + /** + * 删除指定图形的所有关系 + * @param g + */ + RelationManage.prototype.deleteRelationOfGraphic = function (g) { + var _this = this; + var relations = this.getRelationsOfGraphic(g); + relations.forEach(function (rl) { return _this.deleteRelation(rl); }); + }; + /** + * 删除指定图形的所有关系 + * @param g + */ + RelationManage.prototype.deleteRelationOfGraphicAndOtherType = function (g, type) { + var _this = this; + var relations = this.getRelationsOfGraphicAndOtherType(g, type); + relations.forEach(function (rl) { return _this.deleteRelation(rl); }); + }; + /** + * 清空 + */ + RelationManage.prototype.clear = function () { + this.relations.splice(0, this.relations.length); + }; + return RelationManage; +}()); + +/** + * 图形存储 + */ +var GraphicStore = /** @class */ (function () { + function GraphicStore() { + this.store = new Map(); + this.relationManage = new RelationManage(); + } + /** + * 获取所有图形对象 + */ + GraphicStore.prototype.getAllGraphics = function () { + return __spreadArray([], this.store.values(), true); + }; + GraphicStore.prototype.queryById = function (id) { + var graphic = this.store.get(id); + if (!graphic) + throw Error("\u672A\u627E\u5230id\u4E3A [".concat(id, "] \u7684\u56FE\u5F62.")); + return this.store.get(id); + }; + GraphicStore.prototype.queryByIdAmbiguous = function (id) { + var list = []; + this.store.forEach(function (g) { + if (g.id.search(id) >= 0) { + list.push(g); + } + }); + return list; + }; + GraphicStore.prototype.queryByType = function (type) { + var list = []; + this.store.forEach(function (g) { + if (g.type === type) { + list.push(g); + } + }); + return list; + }; + GraphicStore.prototype.queryByCode = function (code) { + var list = []; + this.store.forEach(function (g) { + if (g.code === code) { + list.push(g); + } + }); + return list; + }; + GraphicStore.prototype.queryByCodeAmbiguous = function (code) { + var list = []; + this.store.forEach(function (g) { + if (g.code.search(code) >= 0) { + list.push(g); + } + }); + return list; + }; + GraphicStore.prototype.queryByIdOrCode = function (s) { + var list = []; + this.store.forEach(function (g) { + if (g.isIdOrCode(s)) { + list.push(g); + } + }); + return list; + }; + GraphicStore.prototype.queryByIdOrCodeAndType = function (s, type) { + var list = []; + this.store.forEach(function (g) { + if (g.isIdOrCode(s) && g.type === type) { + list.push(g); + } + }); + return list; + }; + GraphicStore.prototype.queryByCodeAndType = function (code, type) { + for (var _i = 0, _a = this.store.values(); _i < _a.length; _i++) { + var item = _a[_i]; + if (item.code === code && item.type === type) { + return item; + } + } + }; + GraphicStore.prototype.queryByCodeAndTypeAmbiguous = function (code, type) { + var list = []; + this.store.forEach(function (g) { + if (g.type === type && g.code.search(code) >= 0) { + list.push(g); + } + }); + return list; + }; + /** + * 存储图形对象 + * @param graphics 要存储的图形 + */ + GraphicStore.prototype.storeGraphics = function (graphic) { + if (!graphic.id || graphic.id.trim() === '') { + throw new Error("\u5B58\u50A8\u56FE\u5F62\u5BF9\u8C61\u5F02\u5E38: id\u4E3A\u7A7A, ".concat(graphic)); + } + if (this.store.has(graphic.id)) { + // 已经存在 + var exist = this.store.get(graphic.id); + console.error("\u5DF2\u7ECF\u5B58\u5728id=".concat(graphic.id, "\u7684\u8BBE\u5907").concat(exist)); + return false; + } + else { + this.store.set(graphic.id, graphic); + graphic.queryStore = this; + graphic.relationManage = this.relationManage; + return true; + } + }; + /** + * 删除图形 + * @param graph 要删除的图形 + */ + GraphicStore.prototype.deleteGraphics = function (graphic) { + var id = graphic.id; + var remove = this.store.get(id); + if (remove) { + this.store.delete(id); + // 删除图形关系 + this.relationManage.deleteRelationOfGraphic(remove); + } + return remove; + }; + /** + * 清空 + */ + GraphicStore.prototype.clear = function () { + this.relationManage.clear(); + this.store.clear(); + }; + return GraphicStore; +}()); + +var MessageClient = /** @class */ (function (_super) { + __extends(MessageClient, _super); + function MessageClient(options) { + var _this = _super.call(this) || this; + _this.subClients = []; // 订阅客户端 + _this.options = options; + return _this; + } + MessageClient.prototype.unsubscribe = function (destination) { + this.unsubscribe0(destination); + var idx = this.subClients.findIndex(function (cli) { return cli.destination === destination; }); + if (idx >= 0) { + this.subClients.splice(idx, 1); + } + }; + MessageClient.prototype.getOrNewSubClient = function (destination) { + var cli = this.subClients.find(function (cli) { return cli.destination === destination; }); + if (!cli) { + // 不存在,新建 + cli = new SubscriptionClient(this, destination, this.options.protocol); + this.subClients.push(cli); + } + return cli; + }; + MessageClient.prototype.addSubscription = function (destination, handler) { + var cli = this.getOrNewSubClient(destination); + cli.addHandler(handler); + }; + MessageClient.prototype.removeSubscription = function (destination, handle) { + this.getOrNewSubClient(destination).removeHandler(handle); + }; + return MessageClient; +}(EventEmitter)); +var SubscriptionClient = /** @class */ (function () { + function SubscriptionClient(mc, destination, protocal) { + this.handlers = []; + this.subscripted = false; + this.mc = mc; + this.destination = destination; + this.protocol = protocal; + this.mc.on('disconnected', this.onDisconnect, this); + this.mc.on('connected', this.trySubscribe, this); + } + SubscriptionClient.prototype.addHandler = function (handler) { + if (this.handlers.filter(function (h) { return h.App === handler.App; }).length == 0) { + this.handlers.push(handler); + } + if (!this.subscripted) { + this.trySubscribe(); + } + }; + SubscriptionClient.prototype.removeHandler = function (handler) { + var idx = this.handlers.findIndex(function (h) { return h.App === handler.App; }); + if (idx >= 0) { + this.handlers.splice(idx, 1); + } + if (this.handlers.length == 0) { + console.log("\u8BA2\u9605".concat(this.destination, "\u6CA1\u6709\u6D88\u606F\u76D1\u542C\u5904\u7406,\u79FB\u9664\u8BA2\u9605")); + this.unsubscribe(); + } + }; + SubscriptionClient.prototype.trySubscribe = function () { + var _this = this; + if (this.mc.connected) { + this.subscripted = this.mc.subscribe(this.destination, function (data) { + _this.handleMessage(data); + }); + } + }; + SubscriptionClient.prototype.unsubscribe = function () { + this.mc.unsubscribe(this.destination); + }; + SubscriptionClient.prototype.handleMessage = function (data) { + if (this.protocol === 'json') { + console.debug('收到消息:', data); + } + this.handlers.forEach(function (handler) { + try { + handler.handle(data); + } + catch (error) { + console.error('图形应用状态消息处理异常', error); + } + }); + }; + SubscriptionClient.prototype.onDisconnect = function () { + this.subscripted = false; + }; + return SubscriptionClient; +}()); + +var ReconnectDelay = 3000; +var HeartbeatIncoming = 30000; +var HeartbeatOutgoing = 30000; +var StompMessagingClient = /** @class */ (function (_super) { + __extends(StompMessagingClient, _super); + function StompMessagingClient(options) { + var _this = _super.call(this, options) || this; + _this.options = options; + _this.cli = new stompjs.Client({ + brokerURL: options.wsUrl, + connectHeaders: { + Authorization: options.token ? options.token : '', + }, + reconnectDelay: ReconnectDelay, + heartbeatIncoming: HeartbeatIncoming, + heartbeatOutgoing: HeartbeatOutgoing, + }); + _this.cli.onConnect = function () { + // this.subClients.forEach((cli) => { + // this.subscribe(cli.destination, cli.handleMessage); + // }); + _this.emit('connected', ''); + }; + _this.cli.onStompError = function (frame) { + var errMsg = frame.headers['message']; + if (errMsg === '401') { + console.warn('认证失败,断开WebSocket连接'); + _this.cli.deactivate(); + } + else { + console.error('收到Stomp错误消息', frame); + } + }; + _this.cli.onDisconnect = function (frame) { + console.log('Stomp 断开连接', frame); + _this.emit('disconnected', frame); + }; + // websocket错误处理 + _this.cli.onWebSocketError = function (err) { + console.error('websocket错误', err); + }; + _this.cli.activate(); + return _this; + } + Object.defineProperty(StompMessagingClient.prototype, "connected", { + get: function () { + return this.cli.connected; + }, + enumerable: false, + configurable: true + }); + StompMessagingClient.prototype.subscribe = function (destination, handle) { + var _this = this; + this.cli.subscribe(destination, function (frame) { + if (_this.options.protocol === 'json') { + var data = JSON.parse(frame.body); + handle(data); + } + else { + handle(frame.binaryBody); + } + }, { + id: destination, + }); + return true; + }; + StompMessagingClient.prototype.unsubscribe0 = function (destination) { + this.cli.unsubscribe(destination); + }; + StompMessagingClient.prototype.close = function () { + this.cli.deactivate(); + }; + return StompMessagingClient; +}(MessageClient)); + +var MqttMsgClient = /** @class */ (function (_super) { + __extends(MqttMsgClient, _super); + function MqttMsgClient(options) { + var _this = _super.call(this, options) || this; + _this.retryTimes = 0; + _this.subMsgHandler = new Map(); + _this.options = options; + try { + _this.cli = mqtt.connect(options.wsUrl, { + protocolVersion: 5, + clean: true, + resubscribe: false, + keepalive: options.heartbeat, //ms,心跳 + connectTimeout: options.connectTimeout, // ms,连接超时 + reconnectPeriod: options.retryPeriod, // ms,重连间隔 + username: options.clientName || '', + password: options.token, + }); + _this.cli.on('connect', function (packet) { + console.log('MQTT 连接成功!'); + _this.retryTimes = 0; // 连接成功,重置 + _this.emit('connected', packet); + }); + _this.cli.on('disconnect', function (packet) { + console.log('MQTT 连接断开!'); + _this.emit('disconnected', packet); + }); + _this.cli.on('close', function () { + console.log('MQTT 关闭!'); + _this.emit('disconnected', 'close'); + }); + _this.cli.on('reconnect', function () { + _this.retryTimes += 1; + console.log("MQTT\u7B2C ".concat(_this.retryTimes, " \u6B21\u5C1D\u8BD5\u91CD\u8FDE")); + if (_this.retryTimes > options.retryTimes) { + try { + _this.cli.end(); + console.error('MQTT 达到重连最大尝试次数,停止重试'); + } + catch (error) { + console.error(error); + } + } + }); + _this.cli.on('error', function (error) { + console.log('MQTT 出现错误', error); + console.warn(error); + _this.emit('error', error); + }); + _this.cli.on('message', function (topic, message) { + var handle = _this.subMsgHandler.get(topic); + if (handle) { + if (_this.options.protocol === 'json') { + var data = JSON.parse(message.toString()); + handle(data); + } + else { + // 字节流 + handle(message); + } + } + }); + } + catch (err) { + console.error('MQTT connect error', err); + _this.emit('error', err); + throw err; + } + return _this; + } + MqttMsgClient.prototype.subscribe = function (destination, handle) { + console.debug('MQTT订阅执行', destination); + this.cli.subscribe(destination, { qos: 0 }, function (error, res) { + if (error) { + console.warn('MQTT 订阅失败', error); + return; + } + console.debug('MQTT 订阅成功', res); + return false; + }); + this.subMsgHandler.set(destination, handle); + return true; + }; + MqttMsgClient.prototype.unsubscribe0 = function (destination) { + var _this = this; + console.debug('MQTT取消订阅执行', destination); + this.cli.unsubscribe(destination, function (error, packet) { + if (error) { + console.warn('MQTT 取消订阅失败', error); + } + else { + console.debug('MQTT 取消订阅成功', packet); + _this.subMsgHandler.delete(destination); + } + }); + }; + Object.defineProperty(MqttMsgClient.prototype, "connected", { + get: function () { + return this.cli.connected; + }, + enumerable: false, + configurable: true + }); + MqttMsgClient.prototype.close = function () { + var _this = this; + try { + console.debug('MQTT关闭执行'); + this.cli.end(true, function () { + console.debug('MQTT 消息客户端关闭成功'); + _this.subMsgHandler.clear(); + }); + } + catch (error) { + console.warn('MQTT 消息客户端关闭失败', error); + } + }; + return MqttMsgClient; +}(MessageClient)); + +exports.ClientEngine = void 0; +(function (ClientEngine) { + ClientEngine[ClientEngine["Stomp"] = 0] = "Stomp"; + // Centrifugo, + ClientEngine[ClientEngine["MQTT"] = 1] = "MQTT"; +})(exports.ClientEngine || (exports.ClientEngine = {})); +var DefaultStompOption = { + engine: exports.ClientEngine.Stomp, + protocol: 'protobuf', + wsUrl: '', + token: '', + connectTimeout: 30 * 1000, + heartbeat: 60, + retryPeriod: 2 * 1000, + retryTimes: 100, +}; +var WsMsgCli = /** @class */ (function () { + function WsMsgCli() { + } + WsMsgCli.new = function (options) { + if (WsMsgCli.client) { + // 已经创建 + return; + } + WsMsgCli.options = Object.assign({}, DefaultStompOption, options); + switch (WsMsgCli.options.engine) { + // case ClientEngine.Centrifugo: { + // WsMsgCli.client = new CentrifugeMessagingClient(WsMsgCli.options); + // break; + // } + case exports.ClientEngine.MQTT: { + WsMsgCli.client = new MqttMsgClient(WsMsgCli.options); + break; + } + case exports.ClientEngine.Stomp: { + WsMsgCli.client = new StompMessagingClient(WsMsgCli.options); + break; + } + default: { + throw new Error('未知的消息客户端引擎类型', WsMsgCli.options.engine); + } + } + var cli = WsMsgCli.client; + cli.on('connected', function () { + WsMsgCli.emitConnectStateChangeEvent(true); + }); + cli.on('disconnected', function () { + WsMsgCli.emitConnectStateChangeEvent(false); + }); + cli.on('error', function (err) { + console.warn('websocket 客户端错误消息发布', err); + WsMsgCli.appMsgBroker.forEach(function (broker) { + broker.app.emit('websocket-error', err); + }); + }); + }; + WsMsgCli.isInitiated = function () { + return !!WsMsgCli.client; + }; + WsMsgCli.emitConnectStateChangeEvent = function (connected) { + WsMsgCli.appMsgBroker.forEach(function (broker) { + broker.app.emit('websocket-connect-state-change', connected); + }); + }; + WsMsgCli.isConnected = function () { + return WsMsgCli.client && WsMsgCli.client.connected; + }; + WsMsgCli.registerSubscription = function (destination, handler) { + WsMsgCli.client.addSubscription(destination, handler); + }; + WsMsgCli.unregisterSubscription = function (destination, handler) { + WsMsgCli.client.removeSubscription(destination, handler); + }; + WsMsgCli.registerAppMsgBroker = function (broker) { + WsMsgCli.appMsgBroker.push(broker); + }; + WsMsgCli.removeAppMsgBroker = function (broker) { + var index = WsMsgCli.appMsgBroker.findIndex(function (mb) { return mb == broker; }); + if (index >= 0) { + WsMsgCli.appMsgBroker.splice(index, 1); + } + }; + WsMsgCli.hasAppMsgBroker = function () { + return WsMsgCli.appMsgBroker.length > 0; + }; + /** + * 关闭websocket连接 + */ + WsMsgCli.close = function () { + if (WsMsgCli.client) { + WsMsgCli.client.close(); + } + }; + WsMsgCli.appMsgBroker = []; + return WsMsgCli; +}()); +var AppMessageHandler = /** @class */ (function () { + function AppMessageHandler(app, subOptions) { + this.app = app; + if (!subOptions.messageConverter && !subOptions.messageHandle) { + throw new Error("\u6CA1\u6709\u6D88\u606F\u5904\u7406\u5668\u6216\u56FE\u5F62\u72B6\u6001\u6D88\u606F\u8F6C\u6362\u5668: ".concat(subOptions)); + } + this.sub = subOptions; + } + Object.defineProperty(AppMessageHandler.prototype, "App", { + get: function () { + return this.app; + }, + enumerable: false, + configurable: true + }); + AppMessageHandler.prototype.handle = function (data) { + var sub = this.sub; + if (sub.messageConverter) { + var graphicStates = sub.messageConverter(data); + this.app.handleGraphicStates(graphicStates, sub.graphicQueryer, sub.createOnNotFound); + } + else if (sub.messageHandle) { + sub.messageHandle(data); + } + }; + return AppMessageHandler; +}()); +/** + * 图形APP的websocket消息代理 + */ +var AppWsMsgBroker = /** @class */ (function () { + function AppWsMsgBroker(app) { + this.subscriptions = new Map(); + this.app = app; + WsMsgCli.registerAppMsgBroker(this); + } + AppWsMsgBroker.prototype.subscribe = function (sub) { + var handler = new AppMessageHandler(this.app, sub); + WsMsgCli.registerSubscription(sub.destination, handler); + this.subscriptions.set(sub.destination, handler); + }; + AppWsMsgBroker.prototype.unsbuscribe = function (destination) { + var oldSub = this.subscriptions.get(destination); + if (oldSub) { + WsMsgCli.unregisterSubscription(destination, oldSub); + } + }; + AppWsMsgBroker.prototype.unsubscribeAll = function () { + var _this = this; + this.subscriptions.forEach(function (record, destination) { + _this.unsbuscribe(destination); + }); + }; + AppWsMsgBroker.prototype.resubscribeAll = function () { + this.subscriptions.forEach(function (handler, destination) { + WsMsgCli.registerSubscription(destination, handler); + }); + }; + /** + * 取消所有订阅,从通用Stomp客户端移除此消息代理 + */ + AppWsMsgBroker.prototype.close = function () { + WsMsgCli.removeAppMsgBroker(this); + this.unsubscribeAll(); + }; + return AppWsMsgBroker; +}()); + +/** + * 默认的白色样式 + */ +var DefaultWhiteStyleOptions = { + titleStyle: { + fontSize: 16, + fontColor: '#000000', + padding: [5, 15], + }, + backgroundColor: '#ffffff', + border: true, + borderWidth: 1, + borderColor: '#4C4C4C', + /** + * 默认圆角 + */ + borderRoundRadius: 5, + itemStyle: { + fontSize: 16, + fontColor: '#000000', + padding: [5, 25], + hoverColor: '#1E78DB', + disabledFontColor: '#9D9D9D', + }, +}; +/** + * 默认的白色菜单配置 + */ +var DefaultWhiteMenuOptions = { + name: '', + style: DefaultWhiteStyleOptions, + groups: [], +}; + +var ContextMenuPlugin = /** @class */ (function () { + function ContextMenuPlugin(app) { + var _this = this; + this.contextMenuMap = new Map(); + this.app = app; + var canvas = this.app.canvas; + canvas.on('pointerdown', function () { + _this.contextMenuMap.forEach(function (menu) { + menu.close(); + }); + }); + } + ContextMenuPlugin.prototype.registerMenu = function (menu) { + this.contextMenuMap.set(menu.menuName, menu); + menu.plugin = this; + }; + Object.defineProperty(ContextMenuPlugin.prototype, "screenWidth", { + /** + * 获取视口屏幕宽度 + */ + get: function () { + return this.app.viewport.screenWidth; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenuPlugin.prototype, "screenHeight", { + /** + * 获取视口屏幕高度 + */ + get: function () { + return this.app.viewport.screenHeight; + }, + enumerable: false, + configurable: true + }); + /** + * 打开菜单 + * @param menu + * @param global + */ + ContextMenuPlugin.prototype.open = function (menu, global) { + if (!menu.opened) { + menu.opened = true; + this.app.pixi.stage.addChild(menu); + } + // 处理超出显示范围 + var screenHeight = this.screenHeight; + var bottomY = global.y + menu.height; + var oob = this.oob(menu, global); + var pos = global.clone(); + if (oob.right) { + pos.x = global.x - menu.width; + } + if (oob.bottom) { + var py = global.y - menu.height; + if (py > 0) { + pos.y = py; + } + else { + pos.y = global.y - (bottomY - screenHeight); + } + } + // 移动后是否左上超出 + oob = this.oob(menu, pos); + if (oob.left) { + pos.x = 0; + } + if (oob.top) { + pos.y = 0; + } + menu.position.copyFrom(pos); + }; + /** + * 关闭菜单 + * @param menu + */ + ContextMenuPlugin.prototype.close = function (menu) { + if (menu.opened) { + menu.opened = false; + this.app.pixi.stage.removeChild(menu); + } + }; + /** + * 关闭所有菜单 + */ + ContextMenuPlugin.prototype.closeAll = function () { + var _this = this; + this.contextMenuMap.forEach(function (cm) { + _this.close(cm); + }); + }; + /** + * 越界检查 + * @param menu + * @param global + * @returns + */ + ContextMenuPlugin.prototype.oob = function (menu, global) { + var screenWidth = this.screenWidth; + var screenHeight = this.screenHeight; + var bound = new pixi_js.Rectangle(0, 0, screenWidth, screenHeight); + var menuRect = new pixi_js.Rectangle(global.x, global.y, menu.width, menu.height); + return OutOfBound.check(menuRect, bound); + }; + return ContextMenuPlugin; +}()); +/** + * 上下文菜单,多级嵌套 + */ +var ContextMenu = /** @class */ (function (_super) { + __extends(ContextMenu, _super); + function ContextMenu(menuOptions, parentMenuItem) { + var _this = _super.call(this) || this; + _this.opened = false; + _this.padding = 5; + _this._active = false; // 激活状态 + _this.menuOptions = Object.assign({}, DefaultWhiteMenuOptions, menuOptions); + _this.name = _this.menuOptions.name; + _this.bg = new pixi_js.Graphics(); + _this.addChild(_this.bg); + _this.groups = []; + _this.init(); + _this.parentMenuItem = parentMenuItem; + return _this; + } + ContextMenu.init = function (options) { + return new ContextMenu(options); + }; + Object.defineProperty(ContextMenu.prototype, "style", { + get: function () { + return this.menuOptions.style; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenu.prototype, "parentMenu", { + /** + * 父级菜单 + */ + get: function () { + var _a; + return (_a = this.parentMenuItem) === null || _a === void 0 ? void 0 : _a.menu; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenu.prototype, "rootMenu", { + /** + * 最顶级菜单 + */ + get: function () { + if (this.parentMenu) { + return this.parentMenu.rootMenu; + } + return this; + }, + enumerable: false, + configurable: true + }); + /** + * 是否存在激活的菜单项 + * @returns + */ + ContextMenu.prototype.hasActiveItem = function () { + for (var i = 0; i < this.groups.length; i++) { + var group = this.groups[i]; + if (group.hasActiveItem()) { + return true; + } + } + return false; + }; + Object.defineProperty(ContextMenu.prototype, "active", { + get: function () { + return (this._active || + this.hasActiveItem() || + (this.parentMenuItem != undefined && this.parentMenuItem._active)); + }, + set: function (v) { + this._active = v; + this.onActiveChanged(); + }, + enumerable: false, + configurable: true + }); + ContextMenu.prototype.onActiveChanged = function () { + var _this = this; + if (this.parentMenuItem) { + this.parentMenuItem.onActiveChanged(); + if (!this.active) { + this.timeoutCloseHandle = setTimeout(function () { + _this.close(); + }, 500); + } + else { + if (this.timeoutCloseHandle) { + clearTimeout(this.timeoutCloseHandle); + } + } + } + }; + ContextMenu.prototype.setOptions = function (menuOptions) { + this.menuOptions = Object.assign({}, DefaultWhiteMenuOptions, menuOptions); + this.init(); + }; + /** + * 初始化 + */ + ContextMenu.prototype.init = function () { + var _this = this; + // this.initTitle(); + this.groups = []; + var options = this.menuOptions; + options.groups.forEach(function (group) { + var menuGroup = new MenuGroup(_this, group); + _this.groups.push(menuGroup); + }); + var _a = this.calculateBorderInfo(), borderHeight = _a.borderHeight, maxItemWidth = _a.maxItemWidth; + var splitLineWidth = 1; + var bgWidth = maxItemWidth + this.padding * 2; + var bgHeight = borderHeight + + this.groups.length * this.padding * 2 + + (this.groups.length - 1) * splitLineWidth; + if (options.style.border) { + this.bg.lineStyle(options.style.borderWidth, new pixi_js.Color(options.style.borderColor)); + } + this.bg.beginFill(new pixi_js.Color(options.style.backgroundColor)); + if (options.style.borderRoundRadius > 0) { + this.bg.drawRoundedRect(0, 0, bgWidth, bgHeight, options.style.borderRoundRadius); + } + else { + this.bg.drawRect(0, 0, bgWidth, bgHeight); + } + this.bg.endFill(); + var groupHeight = 0; + this.bg.lineStyle(splitLineWidth, new pixi_js.Color(options.style.borderColor)); + for (var i = 0; i < this.groups.length; i++) { + var group = this.groups[i]; + group.updateItemBox(maxItemWidth); + group.position.set(this.padding, groupHeight + this.padding); + if (i === this.groups.length - 1) { + // 最后一个 + break; + } + var splitLineY = groupHeight + group.height + this.padding * 2; + this.bg.moveTo(0, splitLineY); + this.bg.lineTo(bgWidth, splitLineY); + groupHeight = splitLineY + splitLineWidth; + } + this.addChild.apply(this, this.groups); + this.eventMode = 'static'; + this.on('pointerover', function () { + _this.active = true; + }); + this.on('pointerout', function () { + _this.active = false; + }); + }; + ContextMenu.prototype.initGroups = function () { + var _this = this; + this.groups = []; + var options = this.menuOptions; + options.groups.forEach(function (group) { + var menuGroup = new MenuGroup(_this, group); + _this.groups.push(menuGroup); + }); + this.addChild.apply(this, this.groups); + }; + ContextMenu.prototype.initTitle = function () { + if (this.menuOptions.title) { + this.title = new pixi_js.Text(this.menuOptions.title, { align: 'left' }); + } + }; + ContextMenu.prototype.calculateBorderInfo = function () { + var maxItemNameWidth = 0; + var maxShortcutWidth = 0; + var maxGutter = 0; + var borderHeight = 0; + this.groups.forEach(function (menuGroup) { + borderHeight += menuGroup.totalHeight; + var maxInw = menuGroup.maxItemNameWidth; + if (maxInw > maxItemNameWidth) { + maxItemNameWidth = maxInw; + } + var maxSw = menuGroup.maxShortcutWidth; + if (maxSw > maxShortcutWidth) { + maxShortcutWidth = maxSw; + } + var gutter = menuGroup.totalGutter; + if (gutter > maxGutter) { + maxGutter = gutter; + } + }); + var maxItemWidth = maxItemNameWidth + maxShortcutWidth + maxGutter; + return { borderHeight: borderHeight, maxItemWidth: maxItemWidth }; + }; + ContextMenu.prototype.updateBg = function () { + this.bg.clear(); + var options = this.menuOptions; + var _a = this.calculateBorderInfo(), borderHeight = _a.borderHeight, maxItemWidth = _a.maxItemWidth; + var splitLineWidth = 1; + var bgWidth = maxItemWidth + this.padding * 2; + var bgHeight = borderHeight + + this.groups.length * this.padding * 2 + + (this.groups.length - 1) * splitLineWidth; + if (options.style.border) { + this.bg.lineStyle(options.style.borderWidth, new pixi_js.Color(options.style.borderColor)); + } + this.bg.beginFill(new pixi_js.Color(options.style.backgroundColor)); + if (options.style.borderRoundRadius > 0) { + this.bg.drawRoundedRect(0, 0, bgWidth, bgHeight, options.style.borderRoundRadius); + } + else { + this.bg.drawRect(0, 0, bgWidth, bgHeight); + } + this.bg.endFill(); + var groupHeight = 0; + this.bg.lineStyle(splitLineWidth, new pixi_js.Color(options.style.borderColor)); + for (var i = 0; i < this.groups.length; i++) { + var group = this.groups[i]; + group.updateItemBox(maxItemWidth); + group.position.set(this.padding, groupHeight + this.padding); + if (i === this.groups.length - 1) { + // 最后一个 + break; + } + var splitLineY = groupHeight + group.height + this.padding * 2; + this.bg.moveTo(0, splitLineY); + this.bg.lineTo(bgWidth, splitLineY); + groupHeight = splitLineY + splitLineWidth; + } + }; + ContextMenu.prototype.update = function () { + if (this.menuOptions.groups.length !== this.groups.length) { + this.init(); + } + else { + this.groups.forEach(function (group) { return group.update(); }); + this.updateBg(); + } + }; + Object.defineProperty(ContextMenu.prototype, "menuName", { + get: function () { + return this.menuOptions.name; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenu.prototype, "plugin", { + get: function () { + if (this.parentMenu) { + return this.parentMenu.plugin; + } + if (this._plugin) { + return this._plugin; + } + throw new Error("\u4E0A\u4E0B\u6587\u83DC\u5355name=".concat(this.menuOptions.name, "\u6CA1\u6709\u6DFB\u52A0\u5230\u63D2\u4EF6\u4E2D")); + }, + set: function (v) { + this._plugin = v; + }, + enumerable: false, + configurable: true + }); + /** + * 显示菜单 + */ + ContextMenu.prototype.open = function (global) { + if (this.parentMenu) { + this.parentMenu.openSub(this, global); + } + else { + this.update(); + this.plugin.open(this, global); + } + }; + /** + * 关闭菜单 + */ + ContextMenu.prototype.close = function () { + if (this.openedSubMenu) { + this.openedSubMenu.close(); + this.openedSubMenu = undefined; + } + this.plugin.close(this); + }; + /** + * 打开子菜单 + * @param subMenu + * @param global + */ + ContextMenu.prototype.openSub = function (subMenu, global) { + if (this.openedSubMenu) { + this.openedSubMenu.close(); + } + var pos = global.clone(); + var oob = this.plugin.oob(subMenu, global); + if (oob.right) { + pos.x = this.position.x - subMenu.width + this.padding; + } + if (oob.bottom) { + pos.y = this.plugin.screenHeight - subMenu.height - this.padding; + } + this.plugin.open(subMenu, pos); + this.openedSubMenu = subMenu; + }; + return ContextMenu; +}(pixi_js.Container)); +var MenuGroup = /** @class */ (function (_super) { + __extends(MenuGroup, _super); + function MenuGroup(menu, config) { + var _this = _super.call(this) || this; + _this.gutter = 3; // 名称、快捷键、箭头文本间隙 + _this.items = []; + _this.config = config; + _this.menu = menu; + _this.init(); + return _this; + } + MenuGroup.prototype.init = function () { + var _this = this; + this.items = []; // 清空 + this.config.items.forEach(function (item) { + _this.items.push(new ContextMenuItem(_this.menu, item)); + }); + if (this.items.length === 0) { + console.error('菜单group为空', this.config, this.menu); + throw new Error("{name=".concat(this.menu.name, "}\u7684\u83DC\u5355\u7684group\u4E3A{name=").concat(this.config.name, "}\u7684\u6761\u76EE\u4E3A\u7A7A!")); + } + this.addChild.apply(this, this.items); + }; + MenuGroup.prototype.hasActiveItem = function () { + for (var i = 0; i < this.items.length; i++) { + var item = this.items[i]; + if (item.active) { + return true; + } + } + return false; + }; + Object.defineProperty(MenuGroup.prototype, "maxItemNameWidth", { + get: function () { + var maxNameWidth = this.items + .map(function (item) { return item.nameBounds.width; }) + .sort(function (a, b) { return a - b; }) + .reverse()[0]; + return maxNameWidth; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(MenuGroup.prototype, "maxShortcutWidth", { + get: function () { + var maxShortcutWidth = this.items + .map(function (item) { return item.shortcutKeyBounds.width; }) + .sort(function (a, b) { return a - b; }) + .reverse()[0]; + return maxShortcutWidth; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(MenuGroup.prototype, "totalGutter", { + get: function () { + return this.gutter + this.items[0].paddingLeft + this.items[0].paddingRight; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(MenuGroup.prototype, "totalHeight", { + get: function () { + var total = 0; + this.items.forEach(function (item) { return (total += item.totalHeight); }); + return total; + }, + enumerable: false, + configurable: true + }); + MenuGroup.prototype.update = function () { + if (this.items.length !== this.config.items.length) { + this.init(); + } + else { + var i_1 = 0; + this.items.forEach(function (item) { + item.update(); + if (item.visible) { + item.position.y = i_1 * item.totalHeight; + i_1++; + } + }); + } + }; + MenuGroup.prototype.updateItemBox = function (maxItemWidth) { + this.items.forEach(function (item) { + return item.updateBox(maxItemWidth, item.totalHeight); + }); + }; + return MenuGroup; +}(pixi_js.Container)); +/** + * 菜单项 + */ +var ContextMenuItem = /** @class */ (function (_super) { + __extends(ContextMenuItem, _super); + function ContextMenuItem(menu, config) { + var _this = _super.call(this) || this; + _this.gutter = 3; // 名称、快捷键、箭头文本间隙 + _this._active = false; // 激活状态 + _this.menu = menu; + _this.config = config; + _this.box = new pixi_js.Graphics(); + _this.addChild(_this.box); + _this.nameText = new pixi_js.Text(_this.config.name, { + fontSize: _this.fontSize, + fill: _this.fontColor, + }); + _this.addChild(_this.nameText); + _this.initShortcutKeyText(); + _this.initSubMenu(); + return _this; + } + ContextMenuItem.prototype.registerEventHandler = function () { + var _this = this; + this.eventMode = 'static'; + this.cursor = 'pointer'; + this.on('pointerover', function () { + _this.active = true; + if (_this.config.disabled) { + _this.cursor = 'not-allowed'; + } + else { + _this.cursor = 'pointer'; + } + if (_this.subMenu) { + var p = _this.toGlobal(new pixi_js.Point(_this.width)); + _this.subMenu.open(p); + } + }); + this.on('pointerout', function () { + _this.active = false; + }); + this.on('pointertap', function () { + if (_this.config.disabled) { + // 禁用,不处理 + return; + } + if (_this.config.handler) { + _this.menu.plugin.app.emit('pre-menu-handle', _this.config); + _this.config.handler(); + _this.menu.plugin.app.emit('post-menu-handle', _this.config); + } + if (!_this.config.subMenu || _this.config.subMenu.groups.length === 0) { + _this.active = false; + _this.menu.active = false; + _this.menu.rootMenu.close(); + } + }); + }; + Object.defineProperty(ContextMenuItem.prototype, "active", { + get: function () { + return this._active || (this.subMenu != undefined && this.subMenu.active); + }, + set: function (v) { + this._active = v; + if (this.subMenu) { + this.subMenu.onActiveChanged(); + } + this.onActiveChanged(); + }, + enumerable: false, + configurable: true + }); + ContextMenuItem.prototype.onActiveChanged = function () { + if (this.active) { + this.box.alpha = 1; + } + else { + this.box.alpha = 0; + } + }; + Object.defineProperty(ContextMenuItem.prototype, "textWidth", { + get: function () { + return this.nameBounds.width + this.shortcutKeyBounds.width + this.gutter; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenuItem.prototype, "nameGraphic", { + get: function () { + if (this.nameText) { + return this.nameText; + } + throw new Error("\u83DC\u5355\u9879name=".concat(this.config.name, "\u6CA1\u6709\u521D\u59CB\u5316\u540D\u79F0\u56FE\u5F62\u5BF9\u8C61")); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenuItem.prototype, "totalHeight", { + get: function () { + if (this.config.visible === false) { + return 0; + } + else { + return this.paddingTop + this.paddingBottom + this.nameGraphic.height; + } + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenuItem.prototype, "nameBounds", { + get: function () { + return this.nameGraphic.getLocalBounds(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenuItem.prototype, "shortcutKeyBounds", { + get: function () { + if (this.shortcutKeyText) { + return this.shortcutKeyText.getLocalBounds(); + } + else { + return new pixi_js.Rectangle(0, 0, 0, 0); + } + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenuItem.prototype, "style", { + get: function () { + return this.menu.style.itemStyle; + }, + enumerable: false, + configurable: true + }); + ContextMenuItem.prototype.checkPadding = function (padding) { + if (Array.isArray(padding)) { + if (padding.length !== 2 && padding.length !== 4) { + throw new Error('错误的padding数据'); + } + } + }; + ContextMenuItem.prototype.toWholePadding = function (padding) { + this.checkPadding(padding); + if (Array.isArray(padding)) { + if (padding.length == 2) { + return [padding[0], padding[1], padding[0], padding[1]]; + } + else { + return padding; + } + } + else { + return [padding, padding, padding, padding]; + } + }; + Object.defineProperty(ContextMenuItem.prototype, "paddingTop", { + get: function () { + return this.toWholePadding(this.menu.style.itemStyle.padding)[0]; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenuItem.prototype, "paddingBottom", { + get: function () { + return this.toWholePadding(this.menu.style.itemStyle.padding)[2]; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenuItem.prototype, "paddingLeft", { + get: function () { + return this.toWholePadding(this.menu.style.itemStyle.padding)[3]; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenuItem.prototype, "paddingRight", { + get: function () { + return this.toWholePadding(this.menu.style.itemStyle.padding)[1]; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenuItem.prototype, "hoverColor", { + get: function () { + return this.style.hoverColor; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenuItem.prototype, "fontSize", { + get: function () { + return this.style.fontSize; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ContextMenuItem.prototype, "fontColor", { + get: function () { + if (this.config.disabled) { + return this.style.disabledFontColor; + } + else if (this.config.fontColor) { + return this.config.fontColor; + } + return this.style.fontColor; + }, + enumerable: false, + configurable: true + }); + ContextMenuItem.prototype.initShortcutKeyText = function () { + if (this.config.shortcutKeys && this.config.shortcutKeys.length > 0) { + this.shortcutKeyText = new pixi_js.Text(this.config.shortcutKeys.join('+'), { + fontSize: this.fontSize, + fill: this.fontColor, + }); + this.addChild(this.shortcutKeyText); + return this.shortcutKeyText; + } + return undefined; + }; + ContextMenuItem.prototype.initSubMenu = function () { + if (this.config.subMenu && this.config.subMenu.groups.length > 0) { + this.arrowText = new pixi_js.Text('>', { + fontSize: this.fontSize, + fill: this.fontColor, + }); + this.addChild(this.arrowText); + this.subMenu = new ContextMenu(this.config.subMenu, this); + } + }; + ContextMenuItem.prototype.updateBackground = function (width, height) { + this.box.clear(); + var box = this.box; + var style = this.menu.style; + if (!style.itemStyle.hoverColor) { + throw new Error('未设置菜单项的hoverColor'); + } + var hoverColor = style.itemStyle.hoverColor; + if (this.style && this.style.hoverColor) { + hoverColor = this.style.hoverColor; + } + box.beginFill(new pixi_js.Color(hoverColor)); + if (style.borderRoundRadius > 0) { + box.drawRoundedRect(0, 0, width, height, style.borderRoundRadius); + } + else { + box.drawRect(0, 0, width, height); + } + box.endFill(); + box.alpha = 0; + }; + ContextMenuItem.prototype.updateBox = function (width, height) { + var _a; + this.removeAllListeners(); + this.updateBackground(width, height); + (_a = this.nameText) === null || _a === void 0 ? void 0 : _a.position.set(this.paddingLeft, this.paddingTop); + if (this.shortcutKeyText) { + var skTextWidth = this.shortcutKeyBounds.width; + this.shortcutKeyText.position.set(width - skTextWidth - this.paddingRight, this.paddingTop); + } + if (this.arrowText) { + this.arrowText.position.set(width - this.paddingRight - this.gutter, this.paddingTop); + } + // 事件监听 + this.hitArea = new pixi_js.Rectangle(0, 0, width, height); + this.registerEventHandler(); + }; + ContextMenuItem.prototype.update = function () { + if (this.config.visible === false) { + this.visible = false; + return; + } + this.visible = true; + this.nameText.text = this.config.name; + this.nameText.style.fontSize = this.fontSize; + this.nameText.style.fill = this.fontColor; + if (this.shortcutKeyText) { + if (this.config.shortcutKeys && this.config.shortcutKeys.length > 0) { + this.shortcutKeyText.text = this.config.shortcutKeys.join('+'); + this.shortcutKeyText.style.fontSize = this.fontSize; + this.shortcutKeyText.style.fill = this.fontColor; + } + else { + this.shortcutKeyText.visible = false; + } + } + else { + this.initShortcutKeyText(); + } + if (this.config.subMenu == undefined && this.subMenu) { + this.subMenu = undefined; + } + else if (this.config.subMenu && this.subMenu == undefined) { + this.initSubMenu(); + } + if (this.subMenu) { + this.subMenu.update(); + } + }; + return ContextMenuItem; +}(pixi_js.Container)); + +var AppConsts = { + viewportname: '__viewport', + canvasname: '__jlcanvas', + AssistantAppendsName: '__assistantAppends', + // 辅助元素默认颜色 + assistantElementColor: '#1976d2', +}; +var CanvasData = /** @class */ (function () { + function CanvasData(properties) { + if (properties === void 0) { properties = { + width: 1920, + height: 1080, + backgroundColor: '#ffffff', + viewportTransform: GraphicTransform.default(), + }; } + this.width = properties.width; + this.height = properties.height; + this.backgroundColor = properties.backgroundColor; + this.viewportTransform = properties.viewportTransform; + } + CanvasData.prototype.copyFrom = function (properties) { + var sizeChange = false; + if (properties.width <= 0 || properties.height <= 0) { + console.error('画布宽度/高度不能小于等于0'); + } + else { + var width = Math.floor(properties.width); + var height = Math.floor(properties.height); + if (this.width != width) { + this.width = width; + sizeChange = true; + } + if (this.height != height) { + this.height = height; + sizeChange = true; + } + } + this.backgroundColor = properties.backgroundColor; + this.viewportTransform = properties.viewportTransform; + return sizeChange; + }; + CanvasData.prototype.clone = function () { + var cp = new CanvasData(this); + return cp; + }; + return CanvasData; +}()); +var JlCanvas = /** @class */ (function (_super) { + __extends(JlCanvas, _super); + function JlCanvas(scene, properties) { + if (properties === void 0) { properties = new CanvasData(); } + var _this = _super.call(this) || this; + _this.__JlCanvas = true; + _this.type = 'Canvas'; + _this.bg = new pixi_js.Graphics(); // 背景 + _this.scene = scene; + _this._properties = properties; + _this.eventMode = 'static'; + _this.nonInteractiveContainer = new pixi_js.Container(); + _this.nonInteractiveContainer.name = 'non-interactives'; + _this.nonInteractiveContainer.eventMode = 'none'; + _this.addChild(_this.bg); + _this.addChild(_this.nonInteractiveContainer); + _this.sortableChildren = true; + _this.assistantAppendContainer = new pixi_js.Container(); + _this.assistantAppendContainer.eventMode = 'static'; + _this.assistantAppendContainer.name = AppConsts.AssistantAppendsName; + _this.assistantAppendContainer.zIndex = 999; + _this.assistantAppendContainer.sortableChildren = true; + _this.addChild(_this.assistantAppendContainer); + _this.repaint(); + return _this; + } + /** + * 图形重绘(数据/状态变化时触发) + */ + JlCanvas.prototype.repaint = function () { + this.doRepaint(); + }; + Object.defineProperty(JlCanvas.prototype, "width", { + get: function () { + return this._properties.width; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JlCanvas.prototype, "height", { + get: function () { + return this._properties.height; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JlCanvas.prototype, "backgroundColor", { + get: function () { + return this._properties.backgroundColor; + }, + enumerable: false, + configurable: true + }); + JlCanvas.prototype.doRepaint = function () { + this.bg.clear(); + this.bg + .beginFill(new pixi_js.Color(this.backgroundColor)) + .drawRect(0, 0, this._properties.width, this._properties.height) + .endFill(); + }; + Object.defineProperty(JlCanvas.prototype, "properties", { + get: function () { + return this._properties; + }, + enumerable: false, + configurable: true + }); + JlCanvas.prototype.saveData = function () { + var vp = this.getViewport(); + this.properties.viewportTransform = vp.saveTransform(); + return this.properties.clone(); + }; + JlCanvas.prototype.update = function (properties) { + // 更新画布 + var old = this.properties.clone(); + this._properties.copyFrom(properties); + this.repaint(); + var vp = this.getViewport(); + vp.loadTransform(properties.viewportTransform); + this.emit('dataupdate', this.properties, old); + }; + JlCanvas.prototype.addChild = function () { + var _this = this; + var children = []; + for (var _i = 0; _i < arguments.length; _i++) { + children[_i] = arguments[_i]; + } + var rt = _super.prototype.addChild.apply(this, children); + children.forEach(function (g) { + g.onAddToCanvas(_this); + recursiveChildren(g, function (child) { return child.onAddToCanvas(_this); }); + }); + return rt; + }; + JlCanvas.prototype.removeChild = function () { + var _this = this; + var children = []; + for (var _i = 0; _i < arguments.length; _i++) { + children[_i] = arguments[_i]; + } + children.forEach(function (g) { + g.onRemoveFromCanvas(_this); + recursiveChildren(g, function (child) { + return child.onRemoveFromCanvas(_this); + }); + }); + return _super.prototype.removeChild.apply(this, children); + }; + /** + * 添加无交互Child + */ + JlCanvas.prototype.addNonInteractiveChild = function () { + var _a; + var _this = this; + var obj = []; + for (var _i = 0; _i < arguments.length; _i++) { + obj[_i] = arguments[_i]; + } + (_a = this.nonInteractiveContainer).addChild.apply(_a, obj); + obj.forEach(function (g) { + g.onAddToCanvas(_this); + recursiveChildren(g, function (child) { return child.onAddToCanvas(_this); }); + }); + }; + JlCanvas.prototype.removeGraphic = function () { + var _a; + var _this = this; + var obj = []; + for (var _i = 0; _i < arguments.length; _i++) { + obj[_i] = arguments[_i]; + } + obj.forEach(function (g) { + g.onRemoveFromCanvas(_this); + recursiveChildren(g, function (child) { + return child.onRemoveFromCanvas(_this); + }); + }); + this.removeChild.apply(this, obj); + (_a = this.nonInteractiveContainer).removeChild.apply(_a, obj); + }; + /** + * 移除无交互Child + */ + JlCanvas.prototype.removeNonInteractiveChild = function () { + var _a; + var _this = this; + var obj = []; + for (var _i = 0; _i < arguments.length; _i++) { + obj[_i] = arguments[_i]; + } + obj.forEach(function (g) { + g.onRemoveFromCanvas(_this); + recursiveChildren(g, function (child) { + return child.onRemoveFromCanvas(_this); + }); + }); + (_a = this.nonInteractiveContainer).removeChild.apply(_a, obj); + }; + JlCanvas.prototype.addAssistantAppends = function () { + var _a; + var _this = this; + var appends = []; + for (var _i = 0; _i < arguments.length; _i++) { + appends[_i] = arguments[_i]; + } + (_a = this.assistantAppendContainer).addChild.apply(_a, appends); + appends.forEach(function (g) { + g.onAddToCanvas(_this); + recursiveChildren(g, function (child) { return child.onAddToCanvas(_this); }); + }); + }; + JlCanvas.prototype.removeAssistantAppends = function () { + var _a; + var _this = this; + var appends = []; + for (var _i = 0; _i < arguments.length; _i++) { + appends[_i] = arguments[_i]; + } + appends.forEach(function (g) { + g.onRemoveFromCanvas(_this); + recursiveChildren(g, function (child) { return child.onAddToCanvas(_this); }); + }); + (_a = this.assistantAppendContainer).removeChild.apply(_a, appends); + }; + /** + * 暂停所有可交互对象 + */ + JlCanvas.prototype.pauseInteractiveChildren = function () { + this.interactiveChildren = false; + }; + /** + * 恢复所有可交互对象 + */ + JlCanvas.prototype.resumeInteractiveChildren = function () { + this.interactiveChildren = true; + }; + return JlCanvas; +}(pixi_js.Container)); +var GraphicSceneBase = /** @class */ (function (_super) { + __extends(GraphicSceneBase, _super); + function GraphicSceneBase(options) { + var _this = _super.call(this) || this; + _this._loaded = false; // 是否已经加载 + _this.graphicTemplateMap = new Map(); // 图形对象模板 + _this.interactionPluginMap = new Map(); // 交互插件 + _this.graphicStore = new GraphicStore(); + _this._options = options; + // 创建pixi渲染app + _this.pixi = new pixi_js.Application({ + antialias: true, + }); + // 创建画布 + _this.canvas = new JlCanvas(_this); + _this.canvas.name = AppConsts.canvasname; + // 创建相机 + _this.viewport = new pixiViewport.Viewport({ + screenWidth: window.innerWidth, + screenHeight: window.innerHeight, + worldWidth: _this.canvas._properties.width, + worldHeight: _this.canvas._properties.height, + passiveWheel: true, + events: _this.pixi.renderer.events, + disableOnContextMenu: true, + }); + // 设置视口操作方式 + _this.viewport + .wheel({ + percent: 1, + }) + .pinch() + .clampZoom({ + minScale: 0.1, + maxScale: 8, + }) + .clamp({ + direction: 'all', + }); + _this.viewport.name = AppConsts.viewportname; + _this.viewport.interactiveChildren = true; + // 添加视口到渲染器舞台 + _this.pixi.stage.addChild(_this.viewport); + // 将画布置于视口 + _this.viewport.addChild(_this.canvas); + // 监听并通知缩放变化事件 + _this.viewport.on('zoomed-end', function () { + _this.emit('viewport-scaled', _this.viewport); + }); + _this.graphicCopyPlugin = new GraphicCopyPlugin(_this); + // 添加通用交互插件 + CommonMouseTool.new(_this).resume(); + // drag插件 + DragPlugin.new(_this).resume(); + // 视口移动插件 + ViewportMovePlugin.new(_this); + // 图形变换插件 + GraphicTransformPlugin.new(_this).resume(); + // 动画管理 + _this.animationManager = new AnimationManager(_this); + _this.menuPlugin = new ContextMenuPlugin(_this); + _this.wsMsgBroker = new AppWsMsgBroker(_this); + _this.debounceEmitFunc = debounce(_this.doEmitAppGraphicSelected, 50); + _this.on('graphicselectedchange', function () { + _this.debounceEmitFunc(_this); + }); + // 发布选项更新事件 + _this.emit('options-update', _this._options); + return _this; + } + Object.defineProperty(GraphicSceneBase.prototype, "appOptions", { + get: function () { + return this._options; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(GraphicSceneBase.prototype, "dom", { + get: function () { + return this._dom; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(GraphicSceneBase.prototype, "queryStore", { + get: function () { + return this.graphicStore; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(GraphicSceneBase.prototype, "selectedGraphics", { + get: function () { + return this.queryStore.getAllGraphics().filter(function (g) { return g.selected; }); + }, + enumerable: false, + configurable: true + }); + GraphicSceneBase.prototype.load = function () { + return __awaiter(this, void 0, void 0, function () { + var storage; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!this._options.dataLoader) return [3 /*break*/, 3]; + return [4 /*yield*/, this._options.dataLoader()]; + case 1: + storage = _a.sent(); + if (storage.canvasProperty) { + this.canvas.update(storage.canvasProperty); + } + if (!storage.datas) return [3 /*break*/, 3]; + return [4 /*yield*/, this.loadGraphic(storage.datas)]; + case 2: + _a.sent(); + _a.label = 3; + case 3: + this._loaded = true; + return [2 /*return*/]; + } + }); + }); + }; + /** + * 重新加载数据 + */ + GraphicSceneBase.prototype.reload = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!!this._loaded) return [3 /*break*/, 2]; + this.graphicStore.clear(); + return [4 /*yield*/, this.load()]; + case 1: + _a.sent(); + return [3 /*break*/, 3]; + case 2: + console.debug('场景已经加载过数据,不重新加载', this); + _a.label = 3; + case 3: return [2 /*return*/]; + } + }); + }); + }; + GraphicSceneBase.prototype.forceReload = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + console.debug('场景强制重新加载数据', this); + this.graphicStore.clear(); + return [4 /*yield*/, this.load()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * 更新选项 + * @param options + */ + GraphicSceneBase.prototype.setOptions = function (options) { + // console.log('更新选项', options); + if (this._options) { + this._options = Object.assign(this._options, options); + } + else { + this._options = options; + } + this.emit('options-update', options); + }; + GraphicSceneBase.prototype.toCanvasCoordinates = function (p) { + return this.viewport.toWorld(p); + }; + /** + * 注册菜单 + * @param menu + */ + GraphicSceneBase.prototype.registerMenu = function (menu) { + this.menuPlugin.registerMenu(menu); + }; + /** + * 注册图形对象模板 + * @param graphicTemplates + */ + GraphicSceneBase.prototype.registerGraphicTemplates = function () { + var _this = this; + var graphicTemplates = []; + for (var _i = 0; _i < arguments.length; _i++) { + graphicTemplates[_i] = arguments[_i]; + } + graphicTemplates.forEach(function (graphicTemplate) { + _this.graphicTemplateMap.set(graphicTemplate.type, graphicTemplate); + }); + }; + GraphicSceneBase.prototype.getGraphicTemplatesByType = function (type) { + var template = this.graphicTemplateMap.get(type); + if (!template) { + throw new Error("\u4E0D\u5B58\u5728type=".concat(type, "\u7684\u56FE\u5F62\u5BF9\u8C61\u6A21\u677F")); + } + return template; + }; + GraphicSceneBase.prototype.updateViewport = function (domWidth, domHeight) { + var screenWidth = this.viewport.screenWidth; + var screenHeight = this.viewport.screenHeight; + if (domWidth) { + screenWidth = domWidth; + } + if (domHeight) { + screenHeight = domHeight; + } + var worldWidth = this.canvas._properties.width; + var worldHeight = this.canvas._properties.height; + this.pixi.resize(); + this.viewport.resize(screenWidth, screenHeight, worldWidth, worldHeight); + if (this.viewport.OOB().right) { + this.viewport.right = this.viewport.right + 1; + } + else if (this.viewport.OOB().left) { + this.viewport.left = this.viewport.left - 1; + } + else if (this.viewport.OOB().top) { + this.viewport.top = this.viewport.top - 1; + } + else if (this.viewport.OOB().bottom) { + this.viewport.bottom = this.viewport.bottom + 1; + } + }; + /** + * 暂停 + */ + GraphicSceneBase.prototype.pause = function () { + // 暂停动画 + this.animationManager.pause(); + // 取消消息订阅 + this.wsMsgBroker.unsubscribeAll(); + // 关闭所有上下文菜单 + this.menuPlugin.closeAll(); + }; + /** + * 恢复 + */ + GraphicSceneBase.prototype.resume = function () { + // 恢复动画 + this.animationManager.resume(); + // 重新订阅 + this.wsMsgBroker.resubscribeAll(); + }; + GraphicSceneBase.prototype.bindDom = function (dom) { + var _this = this; + this._dom = dom; + this.pixi.resizeTo = dom; + dom.appendChild(this.pixi.view); + this._viewportResizer = setInterval(function () { + // console.log( + // 'dom resize ', + // dom.style.width, + // dom.style.height, + // dom.clientWidth, + // dom.clientHeight + // ); + _this.updateViewport(dom.clientWidth, dom.clientHeight); + }, 1000); + // 恢复 + this.resume(); + }; + GraphicSceneBase.prototype.unbindDom = function () { + if (this._dom) { + clearInterval(this._viewportResizer); + this._dom.removeChild(this.pixi.view); + this._dom = undefined; + // 暂停 + this.pause(); + } + }; + /** + * 加载图形,GraphicApp默认添加到无交互容器,DrawApp默认添加到交互容器,如需定制,提供选项配置 + * @param protos + * @param options 添加到可交互/不可交互容器选项配置 + */ + GraphicSceneBase.prototype.loadGraphic = function (protos) { + var _a; + return __awaiter(this, void 0, void 0, function () { + var _i, _b, item, max; + var _this = this; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + _i = 0, _b = this.graphicTemplateMap; + _c.label = 1; + case 1: + if (!(_i < _b.length)) return [3 /*break*/, 4]; + item = _b[_i]; + return [4 /*yield*/, item[1].loadAssets()]; + case 2: + _c.sent(); + _c.label = 3; + case 3: + _i++; + return [3 /*break*/, 1]; + case 4: + // console.log('开始加载proto数据', protos); + // 加载数据到图形存储 + protos.forEach(function (proto) { + var template = _this.getGraphicTemplatesByType(proto.graphicType); + var g = template.new(); + g.loadData(proto); + _this.addGraphics(g); + }); + // 加载数据关系 + this.queryStore.getAllGraphics().forEach(function (g) { return g.loadRelations(); }); + max = (_a = this.queryStore + .getAllGraphics() + .filter(function (g) { return !isNaN(parseInt(g.id)); }) + .map(function (g) { return parseInt(g.id); }) + .sort(function (a, b) { return a - b; }) + .pop()) !== null && _a !== void 0 ? _a : 0; + // console.log('最大值', max) + GraphicIdGenerator.initSerial(max); + // 数据加载完成后 + this.emit('postdataloaded'); + // 加载完成通知 + this.emit('loadfinish'); + return [2 /*return*/]; + } + }); + }); + }; + /** + * 添加图形前处理 + * @param graphic + */ + GraphicSceneBase.prototype.beforeGraphicStore = function (graphic) { + var interactiveGraphicTypeIncludes = this._options.interactiveGraphicTypeIncludes || []; + var interactiveGraphicTypeExcludes = this._options.interactiveGraphicTypeExcludes || []; + // 默认无交互 + graphic.eventMode = 'auto'; + if (interactiveGraphicTypeIncludes.findIndex(function (type) { return type === graphic.type; }) >= 0) { + graphic.eventMode = 'static'; + } + else if (interactiveGraphicTypeExcludes.findIndex(function (type) { return type === graphic.type; }) < 0) { + graphic.eventMode = 'static'; + } + }; + /** + * 执行添加图形对象 + * @param graphic + */ + GraphicSceneBase.prototype.doAddGraphics = function (graphic) { + var _this = this; + this.beforeGraphicStore(graphic); + if (this.graphicStore.storeGraphics(graphic)) { + // cullable,默认设置剪裁,如果图形包围框不在屏幕内,则不渲染,增加效率用 + if (!this._options || this._options.cullable !== false) { + graphic.cullable = true; + } + if (graphic.eventMode == 'static' || graphic.eventMode == 'dynamic') { + // 添加为可交互 + // console.log(`type=${graphic.type}的图形添加到交互容器`); + this.canvas.addChild(graphic); + } + else { + // 添加到不可交互容器 + // console.log(`type=${graphic.type}的图形添加到无交互容器`); + this.canvas.addNonInteractiveChild(graphic); + } + graphic.repaint(); + this.emit('graphicstored', graphic); + graphic.on('childselected', function (child) { + _this.emit('graphicchildselectedchange', child, true); + }); + graphic.on('childunselected', function (child) { + _this.emit('graphicchildselectedchange', child, false); + }); + } + }; + GraphicSceneBase.prototype.doDeleteGraphics = function (graphic) { + // 从store中删除 + var g = this.graphicStore.deleteGraphics(graphic); + if (g) { + // 清除选中 + g.updateSelected(false); + // 从画布移除 + this.canvas.removeGraphic(g); + // 对象删除处理 + g.onDelete(); + this.emit('graphicdeleted', g); + } + }; + /** + * 存储图形 + * @param graphics 图形对象 + */ + GraphicSceneBase.prototype.addGraphics = function () { + var _this = this; + var graphics = []; + for (var _i = 0; _i < arguments.length; _i++) { + graphics[_i] = arguments[_i]; + } + graphics.forEach(function (g) { return _this.doAddGraphics(g); }); + }; + /** + * 删除图形 + * @param graphics 图形对象 + */ + GraphicSceneBase.prototype.deleteGraphics = function () { + var _this = this; + var graphics = []; + for (var _i = 0; _i < arguments.length; _i++) { + graphics[_i] = arguments[_i]; + } + var dels = graphics.filter(function (g) { + var _a; + if (((_a = _this._options) === null || _a === void 0 ? void 0 : _a.isSupportDeletion) == undefined || + _this._options.isSupportDeletion(g)) { + _this.doDeleteGraphics(g); + return true; + } + console.debug("type=".concat(g.type, ",id=").concat(g.id, "\u7684\u56FE\u5F62\u4E0D\u652F\u6301\u5220\u9664")); + return false; + }); + return dels; + }; + /** + * 检测并构建关系 + */ + GraphicSceneBase.prototype.detectRelations = function () { + this.queryStore.getAllGraphics().forEach(function (g) { return g.buildRelation(); }); + }; + /** + * 全选 + */ + GraphicSceneBase.prototype.selectAllGraphics = function (filter) { + if (filter == undefined) { + filter = function (g) { return g.visible; }; + } + this.updateSelected.apply(this, this.queryStore.getAllGraphics().filter(filter)); + }; + /** + * 更新选中 + */ + GraphicSceneBase.prototype.updateSelected = function () { + var graphics = []; + for (var _i = 0; _i < arguments.length; _i++) { + graphics[_i] = arguments[_i]; + } + this.selectedGraphics.forEach(function (graphic) { + if (graphics.findIndex(function (g) { return g.id === graphic.id; }) >= 0) { + return; + } + if (graphic.selected) { + graphic.updateSelected(false); + } + }); + graphics.forEach(function (graphic) { + graphic.updateSelected(true); + }); + }; + GraphicSceneBase.prototype.doEmitAppGraphicSelected = function () { + // 场景发布图形选中 + this.emit('graphicselected', this.selectedGraphics); + // this.app.emit('graphicselected', this.selectedGraphics); + }; + /** + * 更新画布 + * @param param + */ + GraphicSceneBase.prototype.updateCanvas = function (param) { + this.canvas.update(param); + }; + /** + * 使图形居中显示(所有图形的外包围盒) + */ + GraphicSceneBase.prototype.makeGraphicCenterShow = function () { + var group = []; + for (var _i = 0; _i < arguments.length; _i++) { + group[_i] = arguments[_i]; + } + if (group.length > 0) { + var bounds0 = group[0].getBounds(); + var lx = bounds0.x; + var ly = bounds0.y; + var rx = bounds0.x + bounds0.width; + var ry = bounds0.y + bounds0.height; + if (group.length > 1) { + for (var i = 1; i < group.length; i++) { + var g = group[i]; + var bound = g.getBounds(); + if (bound.x < lx) { + lx = bound.x; + } + if (bound.y < ly) { + ly = bound.y; + } + var brx = bound.x + bound.width; + if (brx > rx) { + rx = brx; + } + var bry = bound.y + bound.height; + if (bry > ry) { + ry = bry; + } + } + } + var _a = getRectangleCenter(new pixi_js.Rectangle(lx, ly, rx - lx, ry - ly)), x = _a.x, y = _a.y; + var p = this.viewport.toWorld(x, y); + this.viewport.moveCenter(p.x, p.y); + } + }; + /** + * 注册交互插件,会替换旧的 + */ + GraphicSceneBase.prototype.registerInteractionPlugin = function () { + var _this = this; + var plugins = []; + for (var _i = 0; _i < arguments.length; _i++) { + plugins[_i] = arguments[_i]; + } + plugins.forEach(function (plugin) { + var old = _this.interactionPluginMap.get(plugin.name); + if (old) { + console.warn("\u5DF2\u7ECF\u5B58\u5728name=".concat(plugin.name, "\u7684\u4EA4\u4E92\u63D2\u4EF6,\u5FFD\u7565\u6B64\u63D2\u4EF6\u6CE8\u518C!")); + return; + } + _this.interactionPluginMap.set(plugin.name, plugin); + }); + }; + /** + * 根据名称获取交互插件 + * @param name + * @returns + */ + GraphicSceneBase.prototype.interactionPlugin = function (name) { + var plugin = this.interactionPluginMap.get(name); + if (!plugin) { + throw new Error("\u672A\u627E\u5230name=".concat(name, "\u7684\u4EA4\u4E92\u63D2\u4EF6")); + } + return plugin; + }; + /** + * 停止应用交互插件 + */ + GraphicSceneBase.prototype.pauseAppInteractionPlugins = function () { + var _this = this; + this.interactionPluginMap.forEach(function (plugin) { + if (plugin.isActive() && plugin._type === exports.InteractionPluginType.App) { + _this.doPauseInteractionPlugin(plugin); + } + }); + }; + GraphicSceneBase.prototype.doPauseInteractionPlugin = function (plugin) { + if (plugin && plugin.isActive()) { + plugin.pause(); + this.emit('interaction-plugin-pause', plugin); + } + }; + /** + * 移除交互插件 + */ + GraphicSceneBase.prototype.removeInteractionPlugin = function (plugin) { + this.interactionPluginMap.delete(plugin.name); + }; + GraphicSceneBase.prototype.checkWsMsgCli = function () { + if (!WsMsgCli.isInitiated()) { + throw new Error('订阅消息需先启动消息代理, 执行app.enableWebsocket()'); + } + }; + /** + * 订阅websocket消息 + */ + GraphicSceneBase.prototype.subscribe = function (sub) { + this.checkWsMsgCli(); + this.wsMsgBroker.subscribe(sub); + }; + /** + * 取消websocket订阅 + */ + GraphicSceneBase.prototype.unsubscribe = function (destination) { + this.checkWsMsgCli(); + this.wsMsgBroker.unsbuscribe(destination); + }; + /** + * 处理图形状态 + * @param graphicStates + */ + GraphicSceneBase.prototype.handleGraphicStates = function (graphicStates, queryer, createOnNotFound) { + var _this = this; + graphicStates.forEach(function (state) { + var g; + if (queryer) { + g = queryer(state, _this.queryStore); + } + else { + g = _this.queryStore.queryByCodeAndType(state.code, state.graphicType); + } + try { + if (!g) { + // 未找到图形对象 + if (!state.remove && + createOnNotFound && + createOnNotFound.graphicTypes && + createOnNotFound.graphicTypes.findIndex(function (v) { return v === state.graphicType; }) >= 0) { + var template = _this.getGraphicTemplatesByType(state.graphicType); + var g_1 = template.new(); + g_1.loadState(state); + _this.addGraphics(g_1); + } + } + else { + // 找到 + if (state.remove) { + _this.deleteGraphics(g); + g.destroy({ children: true }); + } + else if (g.updateStates(state)) { + g.repaint(); + } + } + } + catch (err) { + console.error('图形状态处理异常', g, state, err); + // throw err; + } + }); + }; + /** + * 销毁 + */ + GraphicSceneBase.prototype.destroy = function () { + console.debug('场景销毁', this); + this.unbindDom(); + if (this.wsMsgBroker) { + this.wsMsgBroker.close(); + } + this.interactionPluginMap.forEach(function (plugin) { + plugin.pause(); + }); + this.animationManager.destroy(); + this.canvas.destroy(true); + this.viewport.destroy(); + this.pixi.destroy(true, true); + }; + return GraphicSceneBase; +}(EventEmitter)); +/** + * 图形app基类 + */ +var GraphicApp = /** @class */ (function (_super) { + __extends(GraphicApp, _super); + function GraphicApp(options) { + var _this = _super.call(this, options) || this; + /** + * 场景列表 + */ + _this.scenes = new Map(); + // console.log('创建图形App') + _this.opRecord = new OperationRecord(); + // 绑定键盘监听 + _this.keyboardPlugin = new JlGraphicAppKeyboardPlugin(_this); + return _this; + } + Object.defineProperty(GraphicApp.prototype, "app", { + get: function () { + return this; + }, + enumerable: false, + configurable: true + }); + GraphicApp.prototype.setOptions = function (options) { + // console.log('更新选项', options); + if (options.maxOperationRecords && options.maxOperationRecords > 0) { + this.opRecord.setMaxLen(options.maxOperationRecords); + } + _super.prototype.setOptions.call(this, options); + }; + GraphicApp.prototype.addGraphicAndRecord = function () { + var graphics = []; + for (var _i = 0; _i < arguments.length; _i++) { + graphics[_i] = arguments[_i]; + } + this.addGraphics.apply(this, graphics); + this.opRecord.record(new GraphicCreateOperation(this, graphics)); + }; + GraphicApp.prototype.deleteGraphicAndRecord = function () { + var graphics = []; + for (var _i = 0; _i < arguments.length; _i++) { + graphics[_i] = arguments[_i]; + } + this.deleteGraphics.apply(this, graphics); + this.opRecord.record(new GraphicDeleteOperation(this, graphics)); + }; + /** + * 实例化一个场景 + * @param code 场景标识 + * @returns + */ + GraphicApp.prototype.initScene = function (code, options) { + var scene = this.scenes.get(code); + if (!scene) { + scene = new JlScene(this, code, options); + this.scenes.set(code, scene); + } + return scene; + }; + /** + * 获取场景 + * @param code + * @returns + */ + GraphicApp.prototype.getScene = function (code) { + var scene = this.scenes.get(code); + if (!scene) { + throw new Error("\u4E0D\u5B58\u5728code=".concat(code, "\u7684\u573A\u666F")); + } + return scene; + }; + GraphicApp.prototype.switchScene = function (code, dom) { + var scene = this.getScene(code); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + for (var _i = 0, _a = this.scenes; _i < _a.length; _i++) { + var _b = _a[_i]; _b[0]; var pre = _b[1]; + if (pre.dom === dom) { + pre.unbindDom(); + break; + } + } + scene.bindDom(dom); + }; + GraphicApp.prototype.removeScene = function (code) { + var scene = this.scenes.get(code); + if (scene) { + this.scenes.delete(code); + scene.destroy(); + } + }; + /** + * 启动websocket消息客户端 + */ + GraphicApp.prototype.enableWsMassaging = function (options) { + WsMsgCli.new(options); + this.wsMsgBroker = new AppWsMsgBroker(this); + }; + /** + * 添加键盘监听器,如果是相同的按键,新注册的会覆盖旧的,当移除新的时,旧的自动生效 + * @param keyListeners + */ + GraphicApp.prototype.addKeyboardListener = function () { + var _this = this; + var keyListeners = []; + for (var _i = 0; _i < arguments.length; _i++) { + keyListeners[_i] = arguments[_i]; + } + keyListeners.forEach(function (keyListener) { + return _this.keyboardPlugin.addKeyListener(keyListener); + }); + }; + /** + * 移除键盘监听器 + * @param keyListeners + */ + GraphicApp.prototype.removeKeyboardListener = function () { + var _this = this; + var keyListeners = []; + for (var _i = 0; _i < arguments.length; _i++) { + keyListeners[_i] = arguments[_i]; + } + keyListeners.forEach(function (keyListener) { + return _this.keyboardPlugin.removeKeyListener(keyListener); + }); + }; + /** + * 销毁 + */ + GraphicApp.prototype.destroy = function () { + console.debug('图形应用销毁', this); + this.emit('destroy', this); + _super.prototype.destroy.call(this); + this.scenes.forEach(function (scene) { return scene.destroy(); }); + }; + return GraphicApp; +}(GraphicSceneBase)); +/** + * 场景 + */ +var JlScene = /** @class */ (function (_super) { + __extends(JlScene, _super); + function JlScene(app, code, options) { + var _this = _super.call(this, options) || this; + _this.code = code; + _this.app = app; + return _this; + } + return JlScene; +}(GraphicSceneBase)); + +/** + * 图形绘制助手 + */ +var GraphicDrawAssistant = /** @class */ (function (_super) { + __extends(GraphicDrawAssistant, _super); + function GraphicDrawAssistant(graphicApp, graphicTemplate, icon, description) { + var _this = _super.call(this, graphicTemplate.type, graphicApp) || this; + _this.__GraphicDrawAssistant = true; + _this.container = new pixi_js.Container(); + _this.escListener = new KeyListener({ + value: 'Escape', + onRelease: function () { + _this.onEsc(); + }, + }); + _this.app = graphicApp; + _this.type = graphicTemplate.type; + _this.graphicTemplate = graphicTemplate; + _this.icon = icon; + _this.description = description; + _this.app.registerGraphicTemplates(_this.graphicTemplate); + return _this; + } + GraphicDrawAssistant.prototype.onEsc = function () { + this.createAndStore(true); + }; + Object.defineProperty(GraphicDrawAssistant.prototype, "canvas", { + get: function () { + return this.app.canvas; + }, + enumerable: false, + configurable: true + }); + GraphicDrawAssistant.prototype.bind = function () { + this.app.drawing = true; + var canvas = this.canvas; + canvas.addChild(this.container); + canvas.on('mousedown', this.onLeftDown, this); + canvas.on('mousemove', this.onMouseMove, this); + canvas.on('mouseup', this.onLeftUp, this); + canvas.on('rightdown', this.onRightDown, this); + canvas.on('rightup', this.onRightUp, this); + canvas.on('_rightclick', this.onRightClick, this); + this.app.viewport.wheel({ + percent: 0.01, + }); + this.app.addKeyboardListener(this.escListener); + this.app.viewport.drag({ + mouseButtons: 'right', + }); + }; + GraphicDrawAssistant.prototype.unbind = function () { + var _a; + this.clearCache(); + var canvas = this.canvas; + if ((_a = this.container) === null || _a === void 0 ? void 0 : _a.parent) { + canvas.removeChild(this.container); + } + canvas.off('mousedown', this.onLeftDown, this); + canvas.off('mousemove', this.onMouseMove, this); + canvas.off('mouseup', this.onLeftUp, this); + canvas.off('rightdown', this.onRightDown, this); + canvas.off('rightup', this.onRightUp, this); + this.app.viewport.plugins.remove('wheel'); + this.app.removeKeyboardListener(this.escListener); + this.app.viewport.plugins.remove('drag'); + this.app.drawing = false; + }; + GraphicDrawAssistant.prototype.onLeftDown = function (e) { }; + GraphicDrawAssistant.prototype.onMouseMove = function (e) { + this.redraw(this.toCanvasCoordinates(e.global)); + }; + GraphicDrawAssistant.prototype.onLeftUp = function (e) { }; + GraphicDrawAssistant.prototype.onRightDown = function (e) { }; + GraphicDrawAssistant.prototype.onRightUp = function (e) { }; + GraphicDrawAssistant.prototype.onRightClick = function (e) { + this.finish(); + }; + /** + * 获取下一个id + */ + GraphicDrawAssistant.prototype.nextId = function () { + return GraphicIdGenerator.next(); + }; + GraphicDrawAssistant.prototype.clearCache = function () { }; + GraphicDrawAssistant.prototype.toCanvasCoordinates = function (p) { + return this.app.toCanvasCoordinates(p); + }; + /** + * 保存创建的图形对象 + */ + GraphicDrawAssistant.prototype.storeGraphic = function () { + var _a; + var graphics = []; + for (var _i = 0; _i < arguments.length; _i++) { + graphics[_i] = arguments[_i]; + } + (_a = this.app).addGraphicAndRecord.apply(_a, graphics); + }; + /** + * 创建并添加到图形App + */ + GraphicDrawAssistant.prototype.createAndStore = function (finish) { + var data = this.graphicTemplate.datas; + data.id = this.nextId(); + data.graphicType = this.graphicTemplate.type; + if (!this.prepareData(data)) { + if (finish) { + this.finish(); + } + return null; + } + var template = this.graphicTemplate; + var g = template.new(); + g.loadData(data); + this.storeGraphic(g); + if (finish) { + this.finish(g); + } + return g; + }; + /** + * 绘制完成 + */ + GraphicDrawAssistant.prototype.finish = function () { + var _a; + var graphics = []; + for (var _i = 0; _i < arguments.length; _i++) { + graphics[_i] = arguments[_i]; + } + this.clearCache(); + this.app.interactionPlugin(CommonMouseTool.Name).resume(); + (_a = this.app).updateSelected.apply(_a, graphics); + }; + return GraphicDrawAssistant; +}(AppInteractionPlugin)); +/** + * 绘制应用 + */ +var JlDrawApp = /** @class */ (function (_super) { + __extends(JlDrawApp, _super); + function JlDrawApp(options) { + var _this = _super.call(this, options) || this; + _this.font = pixi_js.BitmapFont.from('coordinates', { + fontFamily: 'Roboto', + fontSize: 16, + fill: '#ff2700', + }, { chars: ['画布坐标:() 屏幕坐标:() 缩放:.,', ['0', '9']] }); + _this.coordinates = new pixi_js.BitmapText('画布坐标: (0, 0) 屏幕坐标:(0, 0)', { + fontName: 'coordinates', + }); + _this.scaleText = new pixi_js.BitmapText('缩放: 1', { + fontName: 'coordinates', + }); + _this.drawAssistants = []; + _this._drawing = false; + _this.formData = undefined; + _this.appendDrawStatesDisplay(); + // 拖拽操作记录 + _this.appOperationRecord(); + // 绑定通用键盘操作 + _this.bindKeyboardOperation(); + _this.formDataSyncListen(); + _this.debouncedFormDataUpdator = debounce(_this.doFormDataUpdate, 60); + return _this; + } + Object.defineProperty(JlDrawApp.prototype, "drawing", { + get: function () { + return this._drawing; + }, + set: function (value) { + this._drawing = value; + }, + enumerable: false, + configurable: true + }); + JlDrawApp.prototype.setOptions = function (options) { + _super.prototype.setOptions.call(this, options); + }; + JlDrawApp.prototype.registerInteractionPlugin = function () { + var _this = this; + var plugins = []; + for (var _i = 0; _i < arguments.length; _i++) { + plugins[_i] = arguments[_i]; + } + plugins.forEach(function (plugin) { + if (plugin instanceof GraphicDrawAssistant) { + _this.drawAssistants.push(plugin); + } + _super.prototype.registerInteractionPlugin.call(_this, plugin); + }); + }; + JlDrawApp.prototype.getDrawAssistant = function (graphicType) { + var sda = this.drawAssistants + .filter(function (da) { return da.type === graphicType; }) + .pop(); + if (!sda) { + throw new Error("\u672A\u627E\u5230\u56FE\u5F62\u7ED8\u5236\u52A9\u624B: ".concat(graphicType)); + } + return sda; + }; + JlDrawApp.prototype.appOperationRecord = function () { + var _this = this; + var dragStartDatas = []; + this.on('drag_op_start', function (e) { + // 图形拖拽,记录初始数据 + if (!e.target.isCanvas()) { + dragStartDatas = _this.selectedGraphics.map(function (g) { return g.saveData(); }); + } + }); + // 图形拖拽操作监听 + this.on('drag_op_end', function () { + // 图形拖拽,记录操作 + if (dragStartDatas.length > 0) { + var newData = _this.selectedGraphics.map(function (g) { return g.saveData(); }); + _this.opRecord.record(new GraphicDataUpdateOperation(_this, _this.selectedGraphics, dragStartDatas, newData)); + dragStartDatas = []; + } + }); + // 菜单操作 + var preMenuHandleDatas = []; + this.on('pre-menu-handle', function (menu) { + if (menu.name === '撤销' || menu.name === '重做') { + return; + } + preMenuHandleDatas = _this.selectedGraphics.map(function (g) { return g.saveData(); }); + }); + this.on('post-menu-handle', function () { + if (preMenuHandleDatas.length > 0) { + var newData = _this.selectedGraphics.map(function (g) { return g.saveData(); }); + _this.opRecord.record(new GraphicDataUpdateOperation(_this, _this.selectedGraphics, preMenuHandleDatas, newData)); + preMenuHandleDatas = []; + } + }); + }; + /** + * 绘制状态信息显示 + */ + JlDrawApp.prototype.appendDrawStatesDisplay = function () { + var _this = this; + this.pixi.stage.addChild(this.coordinates); + this.pixi.stage.addChild(this.scaleText); + var bound = this.coordinates.getLocalBounds(); + this.scaleText.position.set(bound.width + 10, 0); + this.canvas.on('mousemove', function (e) { + if (e.target) { + var _a = _this.toCanvasCoordinates(e.global), x = _a.x, y = _a.y; + var cpTxt = "(".concat(x, ", ").concat(y, ")"); + var tp = e.global; + var tpTxt = "(".concat(tp.x, ", ").concat(tp.y, ")"); + _this.coordinates.text = "\u753B\u5E03\u5750\u6807:".concat(cpTxt, " \u5C4F\u5E55\u5750\u6807:").concat(tpTxt); + var bound_1 = _this.coordinates.getLocalBounds(); + _this.scaleText.position.set(bound_1.width + 10, 0); + } + }); + this.viewport.on('zoomed-end', function () { + _this.scaleText.text = "\u7F29\u653E: ".concat(_this.viewport.scaled); + }); + }; + JlDrawApp.prototype.bindKeyboardOperation = function () { + var _this = this; + this.addKeyboardListener( + // Ctrl + A + new KeyListener({ + value: 'KeyA', + combinations: [exports.CombinationKey.Ctrl], + onPress: function (e, app) { + if (e.ctrlKey) { + app.selectAllGraphics(); + } + }, + })); + // 复制功能 + this.addKeyboardListener(new KeyListener({ + value: 'KeyD', + combinations: [exports.CombinationKey.Shift], + onPress: function (e, app) { + _this.graphicCopyPlugin.init(); + }, + })); + this.addKeyboardListener(new KeyListener({ + // Ctrl + Z + value: 'KeyZ', + global: true, + combinations: [exports.CombinationKey.Ctrl], + onPress: function (e, app) { + app.opRecord.undo(); + }, + })); + this.addKeyboardListener(new KeyListener({ + // Ctrl + Shift + Z + value: 'KeyZ', + global: true, + combinations: [exports.CombinationKey.Ctrl, exports.CombinationKey.Shift], + onPress: function (e, app) { + app.opRecord.redo(); + }, + })); + this.addKeyboardListener(new KeyListener({ + value: 'Delete', + onPress: function (e, app) { + app.deleteGraphicAndRecord.apply(app, app.selectedGraphics); + }, + })); + this.addKeyboardListener(new KeyListener({ + value: 'ArrowUp', + pressTriggerAsOriginalEvent: true, + onPress: function (e, app) { + updateGraphicPositionOnKeyboardEvent(app, UP); + }, + onRelease: function (e, app) { + recordGraphicMoveOperation(app); + }, + })); + this.addKeyboardListener(new KeyListener({ + value: 'ArrowDown', + pressTriggerAsOriginalEvent: true, + onPress: function (e, app) { + updateGraphicPositionOnKeyboardEvent(app, DOWN); + }, + onRelease: function (e, app) { + recordGraphicMoveOperation(app); + }, + })); + this.addKeyboardListener(new KeyListener({ + value: 'ArrowLeft', + pressTriggerAsOriginalEvent: true, + onPress: function (e, app) { + updateGraphicPositionOnKeyboardEvent(app, LEFT); + }, + onRelease: function (e, app) { + recordGraphicMoveOperation(app); + }, + })); + this.addKeyboardListener(new KeyListener({ + value: 'ArrowRight', + pressTriggerAsOriginalEvent: true, + onPress: function (e, app) { + updateGraphicPositionOnKeyboardEvent(app, RIGHT); + }, + onRelease: function (e, app) { + recordGraphicMoveOperation(app); + }, + })); + }; + /** + * 图形对象存储处理,默认添加图形交互 + * @param graphic + */ + JlDrawApp.prototype.beforeGraphicStore = function (graphic) { + var _this = this; + graphic.eventMode = 'static'; + graphic.selectable = true; + graphic.draggable = true; + graphic.on('repaint', function () { + _this.handleFormDataUpdate(graphic); + }); + graphic.on('transformend', function () { + _this.handleFormDataUpdate(graphic); + }); + }; + /** + * 绑定form表单对象 + * @param form + */ + JlDrawApp.prototype.bindFormData = function (form) { + this.formData = form; + if (this.formData && this.selectedGraphics.length == 1) { + if (this.formData.graphicType == this.selectedGraphics[0].type) { + this.formData.copyFrom(this.selectedGraphics[0].saveData()); + } + else { + this.formData = undefined; + } + } + }; + /** + * 移除form绑定 + * @param form + */ + JlDrawApp.prototype.unbindFormData = function (form) { + if (this.formData == form) { + this.formData = undefined; + } + }; + JlDrawApp.prototype.formDataSyncListen = function () { + var _this = this; + this.on('graphicselected', function () { + if (_this.selectedGraphics.length == 1) { + _this.handleFormDataUpdate(_this.selectedGraphics[0]); + } + }); + }; + /** + * 处理表单数据更新(使用debounce限流) + */ + JlDrawApp.prototype.handleFormDataUpdate = function (g) { + this.debouncedFormDataUpdator(this, g); + }; + JlDrawApp.prototype.doFormDataUpdate = function (g) { + if (this.selectedGraphics.length > 1) + return; + if (this.formData && g.type === this.formData.graphicType) { + this.formData.copyFrom(g.saveData()); + } + }; + JlDrawApp.prototype.updateCanvasAndRecord = function (data) { + var old = this.canvas.properties.clone(); + this.canvas.update(data); + var newVal = this.canvas.properties.clone(); + this.opRecord.record(new UpdateCanvasOperation(this, this.canvas, old, newVal)); + }; + JlDrawApp.prototype.updateGraphicAndRecord = function (g, data) { + var old = g.saveData(); + g.updateData(data); + var newVal = g.saveData(); + this.opRecord.record(new GraphicDataUpdateOperation(this, [g], [old], [newVal])); + }; + return JlDrawApp; +}(GraphicApp)); +var dragStartDatas = []; +function handleArrowKeyMoveGraphics(app, handler) { + if (app.selectedGraphics.length === 1 && + app.selectedGraphics[0].hasSelectedChilds()) { + recursiveChildren(app.selectedGraphics[0], function (child) { + if (child.selected && child.draggable) { + handler(child); + } + }); + } + else { + app.selectedGraphics.forEach(function (g) { + handler(g); + }); + } +} +function updateGraphicPositionOnKeyboardEvent(app, dp) { + var dragStart = false; + if (dragStartDatas.length === 0) { + dragStartDatas = app.selectedGraphics.map(function (g) { return g.saveData(); }); + dragStart = true; + } + handleArrowKeyMoveGraphics(app, function (g) { + if (dragStart) { + g.shiftStartPoint = g.position.clone(); + g.emit('transformstart', GraphicTransformEvent.shift(g, ShiftData.new(g.shiftStartPoint))); + } + else { + g.shiftLastPoint = g.position.clone(); + } + g.position.x += dp.x; + g.position.y += dp.y; + if (!dragStart) { + if (g.shiftStartPoint && g.shiftLastPoint) { + g.emit('transforming', GraphicTransformEvent.shift(g, ShiftData.new(g.shiftStartPoint, g.position.clone(), g.shiftLastPoint))); + } + } + }); +} +function recordGraphicMoveOperation(app) { + if (dragStartDatas.length > 0 && + dragStartDatas.length === app.selectedGraphics.length) { + var newData = app.selectedGraphics.map(function (g) { return g.saveData(); }); + app.opRecord.record(new GraphicDataUpdateOperation(app, app.selectedGraphics, dragStartDatas, newData)); + handleArrowKeyMoveGraphics(app, function (g) { + if (g.shiftStartPoint) { + g.emit('transformend', GraphicTransformEvent.shift(g, ShiftData.new(g.shiftStartPoint, g.position.clone()))); + } + }); + } + dragStartDatas = []; +} + +/** + * 实例化图形app + * @param options + * @returns + */ +function newGraphicApp(options) { + return new GraphicApp(options); +} +/** + * 实例化绘图app + * @param options + * @returns + */ +function newDrawApp(options) { + return new JlDrawApp(options); +} + +//基础图形对象扩展 +pixi_js.DisplayObject.prototype._selectable = false; //是否可选中 +pixi_js.DisplayObject.prototype._selected = false; +pixi_js.DisplayObject.prototype._childEdit = false; +pixi_js.DisplayObject.prototype._transformSave = false; +pixi_js.DisplayObject.prototype._assistantAppendMap = null; +pixi_js.DisplayObject.prototype._draggable = false; +pixi_js.DisplayObject.prototype._shiftStartPoint = null; +pixi_js.DisplayObject.prototype._shiftLastPoint = null; +pixi_js.DisplayObject.prototype._scalable = false; +pixi_js.DisplayObject.prototype._keepAspectRatio = true; +pixi_js.DisplayObject.prototype._rotatable = false; +Object.defineProperties(pixi_js.DisplayObject.prototype, { + assistantAppendMap: { + get: function () { + if (this._assistantAppendMap == null) { + this._assistantAppendMap = new Map(); + } + return this._assistantAppendMap; + }, + }, + selectable: { + get: function () { + return this._selectable; + }, + set: function (value) { + this._selectable = value; + }, + }, + selected: { + get: function () { + return this._selected; + }, + set: function (v) { + this._selected = v; + }, + }, + childEdit: { + get: function () { + return this._childEdit; + }, + set: function (v) { + this._childEdit = v; + }, + }, + transformSave: { + get: function () { + return this._transformSave; + }, + set: function (v) { + this._transformSave = v; + }, + }, + draggable: { + get: function () { + return this._draggable; + }, + set: function (v) { + this._draggable = v; + }, + }, + shiftStartPoint: { + get: function () { + return this._shiftStartPoint; + }, + set: function (v) { + this._shiftStartPoint = v; + }, + }, + shiftLastPoint: { + get: function () { + return this._shiftLastPoint; + }, + set: function (v) { + this._shiftLastPoint = v; + }, + }, + scalable: { + get: function () { + return this._scalable; + }, + set: function (v) { + this._scalable = v; + }, + }, + keepAspectRatio: { + get: function () { + return this._keepAspectRatio; + }, + set: function (v) { + this._keepAspectRatio = v; + }, + }, + rotatable: { + get: function () { + return this._rotatable; + }, + set: function (v) { + this._rotatable = v; + }, + }, + worldAngle: { + get: function () { + var angle = this.angle; + var parent = this.parent; + while (parent != undefined && parent != null) { + angle += parent.angle; + parent = parent.parent; + } + angle = angle % 360; + if (angle > 180) { + angle = angle - 360; + } + return angle; + }, + }, +}); +pixi_js.DisplayObject.prototype.getAllParentScaled = + function getAllParentScaled() { + var scaled = new pixi_js.Point(1, 1); + recursiveParents(this, function (parent) { + scaled.x *= parent.scale.x; + scaled.y *= parent.scale.y; + }); + return scaled; + }; +pixi_js.DisplayObject.prototype.getPositionOnCanvas = + function getPositionOnCanvas() { + if (this.parent.isCanvas()) { + return this.position; + } + else { + return this.parent.localToCanvasPoint(this.position); + } + }; +pixi_js.DisplayObject.prototype.updatePositionByCanvasPosition = + function updatePositionByCanvasPosition(p) { + if (this.parent.isCanvas()) { + this.position.copyFrom(p); + } + else { + var localPosition = this.parent.canvasToLocalPoint(p); + this.position.copyFrom(localPosition); + } + }; +pixi_js.DisplayObject.prototype.saveTransform = function saveTransform() { + return GraphicTransform.fromObject(this); +}; +pixi_js.DisplayObject.prototype.loadTransform = function loadTransform(transfrom) { + this.position.copyFrom(transfrom.position); + this.scale.copyFrom(transfrom.scale); + this.rotation = transfrom.rotation; + this.skew.copyFrom(transfrom.skew); +}; +pixi_js.DisplayObject.prototype.isChild = function isChild(obj) { + return recursiveFindChild(this, function (child) { return child == obj; }) != null; +}; +pixi_js.DisplayObject.prototype.isParent = function isParent(obj) { + return recursiveFindParent(this, function (parent) { return parent == obj; }) != null; +}; +pixi_js.DisplayObject.prototype.isAssistantAppend = + function isAssistantAppend() { + return (recursiveFindParent(this, function (parent) { + return parent.name === AppConsts.AssistantAppendsName; + }) != null); + }; +pixi_js.DisplayObject.prototype.addAssistantAppend = function addAssistantAppend() { + var _this = this; + var appends = []; + for (var _i = 0; _i < arguments.length; _i++) { + appends[_i] = arguments[_i]; + } + appends.forEach(function (append) { + if (append.name == null || append.name.trim() == '') { + throw new Error('辅助附加name不能为空'); + } + _this.assistantAppendMap.set(append.name, append); + _this.getCanvas().addAssistantAppends(append); + }); +}; +pixi_js.DisplayObject.prototype.getAssistantAppend = function getAssistantAppend(name) { + return this.assistantAppendMap.get(name); +}; +pixi_js.DisplayObject.prototype.removeAssistantAppend = function removeAssistantAppend() { + var _this = this; + var appends = []; + for (var _i = 0; _i < arguments.length; _i++) { + appends[_i] = arguments[_i]; + } + appends.forEach(function (append) { + if (append.name) { + _this.removeAssistantAppendByName(append.name); + } + }); +}; +pixi_js.DisplayObject.prototype.removeAssistantAppendByName = + function removeAssistantAppendByName() { + var _this = this; + var names = []; + for (var _i = 0; _i < arguments.length; _i++) { + names[_i] = arguments[_i]; + } + names.forEach(function (name) { + var append = _this.getAssistantAppend(name); + if (append) { + _this.getCanvas().removeAssistantAppends(append); + _this.assistantAppendMap.delete(name); + append.destroy(); + } + }); + }; +pixi_js.DisplayObject.prototype.removeAllAssistantAppend = + function removeAllAssistantAppend() { + if (this._assistantAppendMap != null) { + this.assistantAppendMap.forEach(function (append) { + append.getCanvas().removeAssistantAppends(append); + }); + this.assistantAppendMap.clear(); + } + }; +pixi_js.DisplayObject.prototype.isGraphic = function isGraphic() { + return Object.hasOwn(this, '__JlGraphic'); +}; +pixi_js.DisplayObject.prototype.getGraphic = function getGraphic() { + var graphic = this; + while (graphic && !Object.hasOwn(graphic, '__JlGraphic')) { + graphic = graphic.parent; + } + if (graphic) { + return graphic; + } + return null; +}; +pixi_js.DisplayObject.prototype.isGraphicChild = function isGraphicChild() { + var g = this.getGraphic(); + return g != null && !this.isAssistantAppend() && g.isChild(this); +}; +pixi_js.DisplayObject.prototype.onAddToCanvas = function onAddToCanvas(_canvas) { }; +pixi_js.DisplayObject.prototype.onRemoveFromCanvas = function onRemoveFromCanvas(_canvas) { }; +pixi_js.DisplayObject.prototype.isInCanvas = function isInCanvas() { + var graphic = this; + while (graphic && !Object.hasOwn(graphic, '__JlCanvas')) { + graphic = graphic.parent; + } + if (graphic) { + return true; + } + return false; +}; +pixi_js.DisplayObject.prototype.getCanvas = function getCanvas() { + var graphic = this; + while (graphic && !Object.hasOwn(graphic, '__JlCanvas')) { + graphic = graphic.parent; + } + if (graphic) { + return graphic; + } + throw new Error("\u56FE\u5F62".concat(this.name, "\u4E0D\u5728\u753B\u5E03\u4E2D")); +}; +pixi_js.DisplayObject.prototype.isCanvas = function isCanvas() { + return Object.hasOwn(this, '__JlCanvas'); +}; +pixi_js.DisplayObject.prototype.getViewport = function getViewport() { + var canvas = this.getCanvas(); + return canvas.parent; +}; +pixi_js.DisplayObject.prototype.getGraphicApp = function getGraphicApp() { + var canvas = this.getCanvas(); + return canvas.scene.app; +}; +pixi_js.DisplayObject.prototype.localToCanvasPoint = function localToCanvasPoint(p) { + return this.getViewport().toWorld(this.toGlobal(p)); +}; +pixi_js.DisplayObject.prototype.localToCanvasPoints = function localToCanvasPoints() { + var _this = this; + var points = []; + for (var _i = 0; _i < arguments.length; _i++) { + points[_i] = arguments[_i]; + } + return points.map(function (p) { return _this.localToCanvasPoint(p); }); +}; +pixi_js.DisplayObject.prototype.canvasToLocalPoint = function canvasToLocalPoint(p) { + return this.toLocal(this.getViewport().toScreen(p)); +}; +pixi_js.DisplayObject.prototype.canvasToLocalPoints = function canvasToLocalPoints() { + var _this = this; + var points = []; + for (var _i = 0; _i < arguments.length; _i++) { + points[_i] = arguments[_i]; + } + return points.map(function (p) { return _this.canvasToLocalPoint(p); }); +}; +pixi_js.DisplayObject.prototype.localToScreenPoint = function localToScreenPoint(p) { + return this.toGlobal(p); +}; +pixi_js.DisplayObject.prototype.localToScreenPoints = function localToScreenPoints() { + var _this = this; + var points = []; + for (var _i = 0; _i < arguments.length; _i++) { + points[_i] = arguments[_i]; + } + return points.map(function (p) { return _this.toGlobal(p); }); +}; +pixi_js.DisplayObject.prototype.screenToLocalPoint = function screenToLocalPoint(p) { + return this.toLocal(p); +}; +pixi_js.DisplayObject.prototype.screenToLocalPoints = function screenToLocalPoints() { + var _this = this; + var points = []; + for (var _i = 0; _i < arguments.length; _i++) { + points[_i] = arguments[_i]; + } + return points.map(function (p) { return _this.toLocal(p); }); +}; +pixi_js.DisplayObject.prototype.localBoundsToCanvasPoints = + function localBoundsToCanvasPoints() { + var rect = this.getLocalBounds(); + var pps = convertRectangleToPolygonPoints(rect); + return this.localToCanvasPoints.apply(this, pps); + }; +// 扩展pixijs图形对象,添加自定义绘制贝塞尔曲线,可自定义分段数 +pixi_js.Graphics.prototype.drawBezierCurve = function drawBezierCurve(p1, p2, cp1, cp2, segmentsCount) { + var fromX = p1.x; + var fromY = p1.y; + var n = segmentsCount; + var dt = 0; + var dt2 = 0; + var dt3 = 0; + var t2 = 0; + var t3 = 0; + var cpX = cp1.x; + var cpY = cp1.y; + var cpX2 = cp2.x; + var cpY2 = cp2.y; + var toX = p2.x; + var toY = p2.y; + this.moveTo(p1.x, p1.y); + for (var i = 1, j = 0; i <= n; ++i) { + j = i / n; + dt = 1 - j; + dt2 = dt * dt; + dt3 = dt2 * dt; + t2 = j * j; + t3 = t2 * j; + var px = dt3 * fromX + 3 * dt2 * j * cpX + 3 * dt * t2 * cpX2 + t3 * toX; + var py = dt3 * fromY + 3 * dt2 * j * cpY + 3 * dt * t2 * cpY2 + t3 * toY; + this.lineTo(px, py); + } + return this; +}; +/** + * 图形变换数据 + */ +var GraphicTransform = /** @class */ (function () { + function GraphicTransform(position, scale, rotation, skew) { + this.position = position; + this.scale = scale; + this.rotation = rotation; + this.skew = skew; + } + GraphicTransform.default = function () { + return new GraphicTransform(new pixi_js.Point(0, 0), new pixi_js.Point(1, 1), 0, new pixi_js.Point(0, 0)); + }; + GraphicTransform.fromObject = function (obj) { + return new GraphicTransform(obj.position.clone(), obj.scale.clone(), obj.rotation, obj.skew.clone()); + }; + GraphicTransform.from = function (transform) { + if (transform) { + return new GraphicTransform(new pixi_js.Point(transform.position.x, transform.position.y), new pixi_js.Point(transform.scale.x, transform.scale.y), transform.rotation, new pixi_js.Point(transform.skew.x, transform.skew.y)); + } + return GraphicTransform.default(); + }; + return GraphicTransform; +}()); +/** + * 图形子元素变换 + */ +var ChildTransform = /** @class */ (function () { + function ChildTransform(name, transform) { + this.name = name; + this.transform = transform; + } + ChildTransform.fromChild = function (child) { + var _a; + if (child.name == null || + child.name == undefined || + child.name.trim() == '') { + throw new Error("\u56FE\u5F62type=".concat((_a = child.getGraphic()) === null || _a === void 0 ? void 0 : _a.type, "\u7684\u5B50\u5143\u7D20").concat(child, "name\u4E3A\u7A7A\uFF0C\u4F46\u8BBE\u7F6E\u4E3A\u9700\u8981\u4FDD\u5B58\u53D8\u6362\u6570\u636E")); + } + return new ChildTransform(child.name, GraphicTransform.fromObject(child)); + }; + ChildTransform.from = function (ct) { + return new ChildTransform(ct.name, GraphicTransform.from(ct.transform)); + }; + return ChildTransform; +}()); +var GraphicAnimation = /** @class */ (function () { + function GraphicAnimation(options) { + this.options = options; + this._running = false; + this._xSpeed = 1; + } + GraphicAnimation.init = function (options) { + return new GraphicAnimation(options); + }; + GraphicAnimation.prototype.pause = function () { + this._running = false; + return this; + }; + GraphicAnimation.prototype.resume = function () { + this._running = true; + return this; + }; + Object.defineProperty(GraphicAnimation.prototype, "name", { + get: function () { + return this.options.name; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(GraphicAnimation.prototype, "running", { + get: function () { + return this._running; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(GraphicAnimation.prototype, "xSpeed", { + get: function () { + return this._xSpeed; + }, + set: function (v) { + this._xSpeed = v; + }, + enumerable: false, + configurable: true + }); + GraphicAnimation.prototype.run = function (dt) { + if (this.options.run) { + this.options.run(dt * this.xSpeed); + } + return this; + }; + return GraphicAnimation; +}()); +/** + * 图形对象基类 + */ +var JlGraphic = /** @class */ (function (_super) { + __extends(JlGraphic, _super); + function JlGraphic(type) { + var _this = _super.call(this) || this; + _this.__JlGraphic = true; + _this._id = ''; // 图形的唯一标识,不具有业务意义,唯一,不可重复,可用做图形数据关联。 + _this._code = ''; // 业务编号/名称,用于标识图形对象,具有业务意义 + _this.type = type; + _this.draggable = false; + _this.filters; + return _this; + } + /** + * 添加图形动画,只有在画布上才能添加 + * @param animation + */ + JlGraphic.prototype.addAnimation = function (animation) { + var app = this.getGraphicApp(); + app.animationManager.registerAnimation(this, animation); + }; + JlGraphic.prototype.removeAnimation = function (name) { + var app = this.getGraphicApp(); + app.animationManager.unregisterAnimation(this, name); + }; + JlGraphic.prototype.animation = function (name) { + var app = this.getGraphicApp(); + return app.animationManager.animation(this, name); + }; + JlGraphic.prototype.removeAllAnimation = function () { + var app = this.getGraphicApp(); + app.animationManager.unregisterGraphicAnimations(this); + }; + /** + * 更新选中状态 + * @param selected + * @returns 是否更新 + */ + JlGraphic.prototype.updateSelected = function (selected) { + if (this.selected !== selected) { + this.selected = selected; + this.fireSelected(); + return true; + } + return false; + }; + JlGraphic.prototype.invertSelected = function () { + this.selected = !this.selected; + this.fireSelected(); + }; + JlGraphic.prototype.fireSelected = function () { + if (this.selected) { + this.emit('selected', this); + } + else { + this.exitChildEdit(); + this.removeAllChildSelected(); + this.emit('unselected', this); + } + var app = this.getGraphicApp(); + if (app) { + app.emit('graphicselectedchange', this, this.selected); + } + }; + JlGraphic.prototype.hasSelectedChilds = function () { + return (recursiveFindChild(this, function (child) { + if (child.selected) { + return true; + } + return false; + }) != null); + }; + JlGraphic.prototype.setChildSelected = function (child) { + if (child.isGraphicChild() && child.selectable) { + this.removeAllChildSelected(); + child.selected = true; + this.fireChildSelected(child); + } + return false; + }; + JlGraphic.prototype.invertChildSelected = function (child) { + if (child.isGraphicChild() && child.selectable) { + child.selected = !child.selected; + this.fireChildSelected(child); + } + return false; + }; + JlGraphic.prototype.removeAllChildSelected = function () { + var _this = this; + recursiveChildren(this, function (child) { + if (child.selected) { + child.selected = false; + _this.fireChildSelected(child); + } + }); + }; + JlGraphic.prototype.fireChildSelected = function (child) { + var selected = child.selected; + if (selected) { + this.emit('childselected', child); + } + else { + this.emit('childunselected', child); + } + var app = this.getGraphicApp(); + if (app) { + app.emit('graphicchildselectedchange', child, selected); + } + }; + JlGraphic.prototype.exitChildEdit = function () { + this.childEdit = false; + this.removeAllChildSelected(); + }; + /** + * 是否此对象id/code + */ + JlGraphic.prototype.isIdOrCode = function (s) { + return this.id === s || this.code === s; + }; + Object.defineProperty(JlGraphic.prototype, "id", { + /** + * 获取图形id,如果图形数据对象存在,则返回图形数据对象id + */ + get: function () { + if (this._datas) { + return this._datas.id; + } + return this._id; + }, + /** + * 设置图形id,如果图形数据存在,则同时设置图形数据id + */ + set: function (v) { + this._id = v; + if (this._datas) { + this._datas.id = v; + } + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JlGraphic.prototype, "code", { + /** + * 获取图形业务code,如果业务code在图形数据或图形状态中,则需要重写此方法 + */ + get: function () { + return this._code; + }, + /** + * 设置图形业务code,如果业务code在图形数据或图形状态中,则需要重写此方法 + */ + set: function (v) { + this._code = v; + }, + enumerable: false, + configurable: true + }); + JlGraphic.prototype.getDatas = function () { + if (this._datas) { + return this._datas; + } + throw new Error("id=".concat(this.id, ",type=").concat(this.type, "\u7684\u56FE\u5F62\u6CA1\u6709\u6570\u636E")); + }; + JlGraphic.prototype.getStates = function () { + if (this._states) { + return this._states; + } + throw new Error("id=".concat(this.id, ",type=").concat(this.type, "\u7684\u7684\u56FE\u5F62\u6CA1\u6709\u72B6\u6001")); + }; + Object.defineProperty(JlGraphic.prototype, "queryStore", { + get: function () { + if (this._queryStore) { + return this._queryStore; + } + throw new Error("type=".concat(this.type, "\u7684\u56FE\u5F62\u6CA1\u6709QueryStore")); + }, + set: function (v) { + this._queryStore = v; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JlGraphic.prototype, "relationManage", { + get: function () { + if (this._relationManage) { + return this._relationManage; + } + throw new Error("type=".concat(this.type, "\u7684\u56FE\u5F62\u6CA1\u6709\u5173\u7CFB\u7BA1\u7406")); + }, + set: function (v) { + this._relationManage = v; + }, + enumerable: false, + configurable: true + }); + /** + * 构建图形关系 + * @param g + */ + JlGraphic.prototype.buildRelation = function () { }; + /** + * 从数据加载恢复图形关系 + */ + JlGraphic.prototype.loadRelations = function () { }; + /** + * 获取当前图形的所有图形关系 + * @returns + */ + JlGraphic.prototype.getAllRelations = function () { + return this.relationManage.getRelationsOfGraphic(this); + }; + /** + * 获取当前图形的所有指定类型图形关系 + * @param type + * @returns + */ + JlGraphic.prototype.queryRelationByType = function (type) { + return this.relationManage.getRelationsOfGraphicAndOtherType(this, type); + }; + /** + * 删除当前图形关联的指定类型的关系 + * @param type + */ + JlGraphic.prototype.deleteRelationByType = function (type) { + this.relationManage.deleteRelationOfGraphicAndOtherType(this, type); + }; + /** + * 构建并保存关系数据到datas中 + */ + JlGraphic.prototype.saveRelations = function () { }; + /** + * 保存数据,复制,非原始数据 + * @returns + */ + JlGraphic.prototype.saveData = function () { + this.getDatas().graphicType = this.type; + this.getDatas().transform = GraphicTransform.fromObject(this); + this.getDatas().childTransforms = this.buildChildTransforms(); + this.saveRelations(); + return this.getDatas().clone(); + }; + /** + * 构建子元素变换列表 + * @returns + */ + JlGraphic.prototype.buildChildTransforms = function () { + var childTransforms = []; + recursiveChildren(this, function (child) { + if (child.transformSave) { + childTransforms.push(ChildTransform.fromChild(child)); + } + }); + return childTransforms; + }; + /** + * 加载数据 + * @param data + */ + JlGraphic.prototype.loadData = function (data) { + if (data.graphicType !== this.type) { + throw new Error("\u4E0D\u540C\u7684\u56FE\u5F62\u7C7B\u578B,\u8BF7\u68C0\u67E5\u6570\u636E\u662F\u5426\u6B63\u5E38: data.graphicType=\"".concat(data.graphicType, ", type=\"").concat(this.type)); + } + this._datas = data; + this.loadTransformFrom(data); + }; + JlGraphic.prototype.loadTransformFrom = function (data) { + var _this = this; + if (data.transform) { + this.loadTransform(data.transform); + } + if (data.childTransforms) { + data.childTransforms.forEach(function (ct) { + var child = _this.getChildByName(ct.name, true); + if (child) { + child.loadTransform(ct.transform); + } + }); + } + }; + /** + * 更新图形数据 + * @param data + * @returns + */ + JlGraphic.prototype.updateData = function (data) { + var update = false; + if (!this.getDatas().eq(data)) { + update = true; + var old = this.getDatas().clone(); + this.getDatas().copyFrom(data); + this.onDataChange(data, old); + this.loadTransformFrom(data); + this.emit('dataupdate', this.getDatas(), old); + this.repaint(); + } + return update; + }; + /** + * 图形数据更新 + */ + JlGraphic.prototype.onDataChange = function (newVal, old) { }; + /** + * 加载状态 + * @param state + */ + JlGraphic.prototype.loadState = function (state) { + if (state.graphicType !== this.type) { + throw new Error("\u4E0D\u540C\u7684\u56FE\u5F62\u7C7B\u578B,\u8BF7\u68C0\u67E5\u6570\u636E\u662F\u5426\u6B63\u5E38: state.graphicType=\"".concat(state.graphicType, ", type=\"").concat(this.type)); + } + this._states = state; + }; + /** + * 更新状态 + * @param state + * @returns + */ + JlGraphic.prototype.updateStates = function (state) { + var stateChange = false; + if (!this.getStates().eq(state)) { + // 判断并更新状态,默认状态 + var old = this.getStates().clone(); + this.getStates().copyFrom(state); + this.onStateChange(state, old); + stateChange = true; + this.emit('stateupdate', this.getStates(), old); + // this.repaint(); + } + return stateChange; + }; + /** + * 图形状态更新处理 + */ + JlGraphic.prototype.onStateChange = function (newVal, old) { }; + JlGraphic.prototype.repaint = function () { + try { + this.doRepaint(); + this.emit('repaint', this); + } + catch (e) { + console.error("\u8BBE\u5907id=".concat(this.id, ",type=").concat(this.type, "\u91CD\u7ED8\u903B\u8F91\u5F02\u5E38"), e); + } + }; + /** + * 处理删除逻辑 + */ + JlGraphic.prototype.onDelete = function () { + this.removeAllAssistantAppend(); + this.removeAllListeners(); + recursiveChildren(this, function (child) { return child.removeAllAssistantAppend(); }); + }; + /** + * 框选检测,默认取图形包围盒判定,若需要精细判定-子类重写此方法 + * @param box + * @returns + */ + JlGraphic.prototype.boxIntersectCheck = function (box) { + return box.intersects(this.getLocalBounds(), this.localTransform); + }; + return JlGraphic; +}(pixi_js.Container)); +/** + * 图形对象模板 + */ +var JlGraphicTemplate = /** @class */ (function () { + function JlGraphicTemplate(type, options) { + this.type = type; + this.options = options; + } + Object.defineProperty(JlGraphicTemplate.prototype, "datas", { + get: function () { + if (this.options.dataTemplate) { + return this.options.dataTemplate.clone(); + } + throw new Error("type=".concat(this.type, "\u7684\u56FE\u5F62\u6A21\u677F\u6CA1\u6709\u6570\u636E\u6A21\u677F")); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(JlGraphicTemplate.prototype, "states", { + get: function () { + if (this.options.stateTemplate) { + return this.options.stateTemplate.clone(); + } + throw new Error("type=".concat(this.type, "\u7684\u56FE\u5F62\u6A21\u677F\u6CA1\u6709\u72B6\u6001\u6A21\u677F")); + }, + enumerable: false, + configurable: true + }); + /** + * 加载图形对象需要用到的资源 + */ + JlGraphicTemplate.prototype.loadAssets = function () { + return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { + return [2 /*return*/]; + }); }); + }; + /** + * 克隆图形对象 + * @param graphic + * @returns + */ + JlGraphicTemplate.prototype.clone = function (graphic) { + var g = this.new(); + if (graphic._datas) { + // 数据克隆 + var datas = graphic.saveData(); + g.loadData(datas); + } + if (graphic._states) { + // 状态克隆 + var state = graphic.getStates().clone(); + g.loadState(state); + } + g.id = GraphicIdGenerator.next(); + return g; + }; + return JlGraphicTemplate; +}()); + +exports.AbsorbableCircle = AbsorbableCircle; +exports.AbsorbableLine = AbsorbableLine; +exports.AbsorbablePointParam = AbsorbablePointParam; +exports.AnimationManager = AnimationManager; +exports.AppConsts = AppConsts; +exports.AppDragEvent = AppDragEvent; +exports.AppInteractionPlugin = AppInteractionPlugin; +exports.AppWsMsgBroker = AppWsMsgBroker; +exports.BoundsGraphic = BoundsGraphic; +exports.ChildTransform = ChildTransform; +exports.CommonMouseTool = CommonMouseTool; +exports.DOWN = DOWN; +exports.DashedLine = DashedLine; +exports.DragPlugin = DragPlugin; +exports.DraggablePoint = DraggablePoint; +exports.DraggablePointParam = DraggablePointParam; +exports.GlobalKeyboardHelper = GlobalKeyboardHelper; +exports.GraphicAnimation = GraphicAnimation; +exports.GraphicCopyPlugin = GraphicCopyPlugin; +exports.GraphicDataUpdateOperation = GraphicDataUpdateOperation; +exports.GraphicDrawAssistant = GraphicDrawAssistant; +exports.GraphicIdGenerator = GraphicIdGenerator; +exports.GraphicInteractionPlugin = GraphicInteractionPlugin; +exports.GraphicRelation = GraphicRelation; +exports.GraphicRelationParam = GraphicRelationParam; +exports.GraphicStore = GraphicStore; +exports.GraphicTransform = GraphicTransform; +exports.GraphicTransformEvent = GraphicTransformEvent; +exports.GraphicTransformPlugin = GraphicTransformPlugin; +exports.IdGenerator = IdGenerator; +exports.InteractionPluginBase = InteractionPluginBase; +exports.JlGraphic = JlGraphic; +exports.JlGraphicAppKeyboardPlugin = JlGraphicAppKeyboardPlugin; +exports.JlGraphicTemplate = JlGraphicTemplate; +exports.JlOperation = JlOperation; +exports.KeyListener = KeyListener; +exports.LEFT = LEFT; +exports.OperationRecord = OperationRecord; +exports.OtherInteractionPlugin = OtherInteractionPlugin; +exports.OutOfBound = OutOfBound; +exports.RIGHT = RIGHT; +exports.RelationManage = RelationManage; +exports.ScaleData = ScaleData; +exports.ShiftData = ShiftData; +exports.TransformPoints = TransformPoints; +exports.UP = UP; +exports.VectorGraphicUtil = VectorGraphicUtil; +exports.VectorText = VectorText; +exports.ViewportMovePlugin = ViewportMovePlugin; +exports.WsMsgCli = WsMsgCli; +exports.angleOfIncludedAngle = angleOfIncludedAngle; +exports.angleToAxisx = angleToAxisx; +exports.assertBezierPoints = assertBezierPoints; +exports.calculateBezierPoints = calculateBezierPoints; +exports.calculateDistanceFromPointToLine = calculateDistanceFromPointToLine; +exports.calculateFootPointFromPointToLine = calculateFootPointFromPointToLine; +exports.calculateIntersectionPointOfCircleAndLine = calculateIntersectionPointOfCircleAndLine; +exports.calculateIntersectionPointOfCircleAndPoint = calculateIntersectionPointOfCircleAndPoint; +exports.calculateLineMidpoint = calculateLineMidpoint; +exports.calculateLineSegmentingPoint = calculateLineSegmentingPoint; +exports.calculateMirrorPoint = calculateMirrorPoint; +exports.calculateMirrorPointBasedOnAxis = calculateMirrorPointBasedOnAxis; +exports.calculateOneBezierPoints = calculateOneBezierPoints; +exports.circlePoint = circlePoint; +exports.circlePoint2 = circlePoint2; +exports.convertLineToPolygonPoints = convertLineToPolygonPoints; +exports.convertRectangleToPolygonPoints = convertRectangleToPolygonPoints; +exports.convertToBezierParams = convertToBezierParams; +exports.debounce = debounce; +exports.deserializeTransformInto = deserializeTransformInto; +exports.distance = distance; +exports.distance2 = distance2; +exports.getCenterOfTwoRectangle = getCenterOfTwoRectangle; +exports.getIntersectionPoint = getIntersectionPoint; +exports.getNormalVector = getNormalVector; +exports.getParallelOfPolyline = getParallelOfPolyline; +exports.getRectangleCenter = getRectangleCenter; +exports.isLineContainOther = isLineContainOther; +exports.isParallelLines = isParallelLines; +exports.isPointOnLine = isPointOnLine; +exports.lineBox = lineBox; +exports.lineLine = lineLine; +exports.linePoint = linePoint; +exports.linePolygon = linePolygon; +exports.movePointAlongNormal = movePointAlongNormal; +exports.newDrawApp = newDrawApp; +exports.newGraphicApp = newGraphicApp; +exports.pointBox = pointBox; +exports.pointPoint = pointPoint; +exports.pointPoint2 = pointPoint2; +exports.pointPolygon = pointPolygon; +exports.polylineBox = polylineBox; +exports.polylinePoint = polylinePoint; +exports.polylinePolygon = polylinePolygon; +exports.recursiveChildren = recursiveChildren; +exports.recursiveFindChild = recursiveFindChild; +exports.recursiveFindParent = recursiveFindParent; +exports.recursiveParents = recursiveParents; +exports.serializeTransform = serializeTransform; +exports.splitLineEvenly = splitLineEvenly; +exports.splitPolyline = splitPolyline; diff --git a/package.json b/package.json index ce3867e..8f2d430 100644 --- a/package.json +++ b/package.json @@ -5,47 +5,30 @@ "productName": "Graphic-pixi", "author": "walker ", "private": true, + "type": "module", + "main": "src/jlgraphic", "scripts": { - "lint": "eslint --ext .js,.ts,.vue ./", - "format": "prettier --write \"**/*.{js,ts,vue,scss,html,md,json}\" --ignore-path .gitignore", - "test": "echo \"No test specified\" && exit 0", - "dev": "quasar dev", - "proto": "node scripts/proto.cjs", - "build": "quasar build" + "build": "rollup -c rollup.config.ts --configPlugin typescript" }, "dependencies": { - "@pixi/graphics-extras": "^7.2.4", - "@quasar/extras": "^1.0.0", + "@pixi/utils": "^7.3.2", "@stomp/stompjs": "^7.0.0", - "alova": "^2.7.1", - "axios": "^1.4.0", - "google-protobuf": "^3.21.2", - "js-base64": "^3.7.5", + "eslint": "^8.55.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.0.1", "mqtt": "^5.2.1", - "pinia": "^2.0.11", "pixi-viewport": "^5.0.1", - "pixi.js": "^7.2.4", - "quasar": "^2.6.0", - "vue": "^3.0.0", - "vue-router": "^4.0.0" + "pixi.js": "^7.3.2" }, "devDependencies": { - "@quasar/app-vite": "^1.0.0", - "@types/google-protobuf": "^3.15.6", + "@rollup/plugin-typescript": "^11.1.5", "@types/node": "^12.20.21", - "@typescript-eslint/eslint-plugin": "^5.10.0", - "@typescript-eslint/parser": "^5.10.0", - "autoprefixer": "^10.4.2", - "eslint": "^8.10.0", - "eslint-config-prettier": "^8.1.0", - "eslint-plugin-vue": "^9.0.0", - "prettier": "^2.5.1", - "protoc-gen-ts": "^0.8.6", - "ts-md5": "^1.3.1", - "typescript": "^4.5.4" + "prettier": "^3.1.1", + "rollup": "^4.8.0", + "typescript": "^5.3.3" }, "engines": { - "node": "^18 || ^16 || ^14.19", + "node": ">= 14.19", "npm": ">= 6.13.4", "yarn": ">= 1.21.1" } diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index 94b7b1c..0000000 --- a/postcss.config.js +++ /dev/null @@ -1,27 +0,0 @@ -/* eslint-disable */ -// https://github.com/michael-ciniawsky/postcss-load-config - -module.exports = { - plugins: [ - // https://github.com/postcss/autoprefixer - require('autoprefixer')({ - overrideBrowserslist: [ - 'last 4 Chrome versions', - 'last 4 Firefox versions', - 'last 4 Edge versions', - 'last 4 Safari versions', - 'last 4 Android versions', - 'last 4 ChromeAndroid versions', - 'last 4 FirefoxAndroid versions', - 'last 4 iOS versions' - ] - }) - - // https://github.com/elchininet/postcss-rtlcss - // If you want to support RTL css, then - // 1. yarn/npm install postcss-rtlcss - // 2. optionally set quasar.config.js > framework > lang to an RTL language - // 3. uncomment the following line: - // require('postcss-rtlcss') - ] -} diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index ae7bbdb..0000000 Binary files a/public/favicon.ico and /dev/null differ diff --git a/public/icons/favicon-128x128.png b/public/icons/favicon-128x128.png deleted file mode 100644 index 1401176..0000000 Binary files a/public/icons/favicon-128x128.png and /dev/null differ diff --git a/public/icons/favicon-16x16.png b/public/icons/favicon-16x16.png deleted file mode 100644 index 679063a..0000000 Binary files a/public/icons/favicon-16x16.png and /dev/null differ diff --git a/public/icons/favicon-32x32.png b/public/icons/favicon-32x32.png deleted file mode 100644 index fd1fbc6..0000000 Binary files a/public/icons/favicon-32x32.png and /dev/null differ diff --git a/public/icons/favicon-96x96.png b/public/icons/favicon-96x96.png deleted file mode 100644 index e93b80a..0000000 Binary files a/public/icons/favicon-96x96.png and /dev/null differ diff --git a/quasar.config.js b/quasar.config.js deleted file mode 100644 index c5be092..0000000 --- a/quasar.config.js +++ /dev/null @@ -1,208 +0,0 @@ -/* eslint-env node */ - -/* - * This file runs in a Node context (it's NOT transpiled by Babel), so use only - * the ES6 features that are supported by your Node version. https://node.green/ - */ - -// Configuration for your app -// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js - -const { configure } = require('quasar/wrappers'); - -module.exports = configure(function (/* ctx */) { - return { - eslint: { - // fix: true, - // include: [], - // exclude: [], - // rawOptions: {}, - warnings: true, - errors: true, - exclude: ['src/examples/app/protos/*'], - }, - - // https://v2.quasar.dev/quasar-cli-vite/prefetch-feature - // preFetch: true, - - // app boot file (/src/boot) - // --> boot files are part of "main.js" - // https://v2.quasar.dev/quasar-cli-vite/boot-files - boot: ['axios', '@pixi/graphics-extras'], - - // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css - css: ['app.scss'], - - // https://github.com/quasarframework/quasar/tree/dev/extras - extras: [ - // 'ionicons-v4', - // 'mdi-v5', - // 'fontawesome-v6', - // 'eva-icons', - // 'themify', - // 'line-awesome', - // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both! - - 'roboto-font', // optional, you are not bound to it - 'material-icons', // optional, you are not bound to it - ], - - // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#build - build: { - target: { - browser: ['es2019', 'edge88', 'firefox78', 'chrome87', 'safari13.1'], - node: 'node16', - }, - - vueRouterMode: 'history', // available values: 'hash', 'history' - // vueRouterBase, - // vueDevtools, - // vueOptionsAPI: false, - - // rebuildCache: true, // rebuilds Vite/linter/etc cache on startup - - // publicPath: '/', - // analyze: true, - // env: {}, - // rawDefine: {} - // ignorePublicFolder: true, - // minify: false, - // polyfillModulePreload: true, - // distDir - - // extendViteConf (viteConf) {}, - // viteVuePluginOptions: {}, - - // vitePlugins: [ - // [ 'package-name', { ..options.. } ] - // ] - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#devServer - devServer: { - // https: true - port: 9999, - open: false, // opens browser window automatically - }, - - // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#framework - framework: { - config: { - notify: { - position: 'top', - timeout: 2000, - progress: true, - }, - }, - - // iconSet: 'material-icons', // Quasar icon set - lang: 'zh-CN', // Quasar language pack - - // For special cases outside of where the auto-import strategy can have an impact - // (like functional components as one of the examples), - // you can manually specify Quasar components/directives to be available everywhere: - // - // components: [], - // directives: [], - - // Quasar plugins - plugins: ['Notify', 'Dialog', 'Dark', 'AppFullscreen'], - }, - - // animations: 'all', // --- includes all animations - // https://v2.quasar.dev/options/animations - animations: [], - - // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#sourcefiles - // sourceFiles: { - // rootComponent: 'src/App.vue', - // router: 'src/router/index', - // store: 'src/store/index', - // registerServiceWorker: 'src-pwa/register-service-worker', - // serviceWorker: 'src-pwa/custom-service-worker', - // pwaManifestFile: 'src-pwa/manifest.json', - // electronMain: 'src-electron/electron-main', - // electronPreload: 'src-electron/electron-preload' - // }, - - // https://v2.quasar.dev/quasar-cli-vite/developing-ssr/configuring-ssr - ssr: { - // ssrPwaHtmlFilename: 'offline.html', // do NOT use index.html as name! - // will mess up SSR - - // extendSSRWebserverConf (esbuildConf) {}, - // extendPackageJson (json) {}, - - pwa: false, - - // manualStoreHydration: true, - // manualPostHydrationTrigger: true, - - prodPort: 3000, // The default port that the production server should use - // (gets superseded if process.env.PORT is specified at runtime) - - middlewares: [ - 'render', // keep this as last one - ], - }, - - // https://v2.quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa - pwa: { - workboxMode: 'generateSW', // or 'injectManifest' - injectPwaMetaTags: true, - swFilename: 'sw.js', - manifestFilename: 'manifest.json', - useCredentialsForManifestTag: false, - // useFilenameHashes: true, - // extendGenerateSWOptions (cfg) {} - // extendInjectManifestOptions (cfg) {}, - // extendManifestJson (json) {} - // extendPWACustomSWConf (esbuildConf) {} - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-cordova-apps/configuring-cordova - cordova: { - // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-capacitor-apps/configuring-capacitor - capacitor: { - hideSplashscreen: true, - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-electron-apps/configuring-electron - electron: { - // extendElectronMainConf (esbuildConf) - // extendElectronPreloadConf (esbuildConf) - - inspectPort: 5858, - - bundler: 'packager', // 'packager' or 'builder' - - packager: { - // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options - // OS X / Mac App Store - // appBundleId: '', - // appCategoryType: '', - // osxSign: '', - // protocol: 'myapp://path', - // Windows only - // win32metadata: { ... } - }, - - builder: { - // https://www.electron.build/configuration/configuration - - appId: 'graphic-pixi', - }, - }, - - // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex - bex: { - contentScripts: ['my-content-script'], - - // extendBexScriptsConf (esbuildConf) {} - // extendBexManifestJson (json) {} - }, - }; -}); diff --git a/rollup.config.ts b/rollup.config.ts new file mode 100644 index 0000000..79bb121 --- /dev/null +++ b/rollup.config.ts @@ -0,0 +1,18 @@ +import type { RollupOptions } from 'rollup' +import typescript from '@rollup/plugin-typescript' + + +const config: RollupOptions = { + input: 'src/jlgraphic/index.ts', + output: { + file: 'lib/index.js', + format: 'cjs', + }, + plugins: [ + typescript({ + + }) + ], +} + +export default config diff --git a/scripts/proto.cjs b/scripts/proto.cjs deleted file mode 100644 index 67ef276..0000000 --- a/scripts/proto.cjs +++ /dev/null @@ -1,95 +0,0 @@ -/** - * 将proto文件编译到 src/proto/ - */ -const { readdirSync } = require('fs'); -const { resolve } = require('path'); -const os = require('os'); - -const { exec } = require('child_process'); - -const protocDir = resolve( - __dirname, - '../src/examples/app/app_message/protoc-22.2' -); -const protoFileDir = resolve( - __dirname, - '../src/examples/app/app_message/protos' -); -const destDir = resolve(__dirname, '../src/examples/app/protos'); - -/** - * 递归处理所有proto文件生成 - * @param {*} file 文件 - * @param {*} path 目录 - */ -function recursiveGenerate(file, path = [], cmds = []) { - if (file.isFile()) { - // 文件,生成 - if (file.name.endsWith('.proto')) { - cmds.push(buildGenerateCmd(file.name, path)); - } else { - console.warn('不是proto文件', file.name); - } - } else if (file.isDirectory()) { - // 文件夹,递归 - readdirSync(resolve(protoFileDir, ...path, file.name), { - withFileTypes: true, - }).forEach((f) => { - const subPath = [...path, file.name]; - recursiveGenerate(f, subPath, cmds); - }); - } -} - -const isLinux = os.type().toLowerCase().includes('linux'); - -function buildGenerateCmd(name, path = []) { - const protoPath = resolve(protoFileDir, ...path); - const tsPath = resolve(destDir, ...path); - - let cmd = ['protoc', `-I=${protoPath}`, `--ts_out=${tsPath}`, `${name}`]; - let cmdStr = cmd.join(' '); - return cmdStr; -} - -function main() { - const protocBin = resolve( - protocDir, - `bin/${isLinux ? 'linux-x86_64' : 'win64'}` - ); - const prepareCmds = []; - const setPathCmd = isLinux - ? ['export', `PATH=${protocBin}:${protocDir}:"$PATH"`].join(' ') - : ['set', `PATH=${protocBin};${protocDir};%PATH%`].join(' '); - const protocVersionCmd = ['protoc', '--version'].join(' '); - prepareCmds.push(setPathCmd); - prepareCmds.push(protocVersionCmd); - - readdirSync(protoFileDir, { - withFileTypes: true, - }).forEach((f) => { - recursiveGenerate(f, [], prepareCmds); - }); - - console.log(prepareCmds); - - exec( - prepareCmds.join(' && '), - { - maxBuffer: 1024 * 2000, - }, - (err, stdout, stderr) => { - if (err) { - console.error(err); - throw err; - } else if (stderr.length > 0) { - console.error(stderr.toString()); - throw new Error(stderr.toString()); - } else { - console.log(stdout); - } - } - ); -} - -main(); diff --git a/src/App.vue b/src/App.vue deleted file mode 100644 index fe0a246..0000000 --- a/src/App.vue +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/src/app/index.ts b/src/app/index.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/assets/quasar-logo-vertical.svg b/src/assets/quasar-logo-vertical.svg deleted file mode 100644 index 8210831..0000000 --- a/src/assets/quasar-logo-vertical.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/boot/.gitkeep b/src/boot/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/boot/@pixi/graphics-extras.ts b/src/boot/@pixi/graphics-extras.ts deleted file mode 100644 index 4a70eb8..0000000 --- a/src/boot/@pixi/graphics-extras.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { boot } from 'quasar/wrappers'; -import * as GraphicsExtras from '@pixi/graphics-extras'; -// "async" is optional; -// more info on params: https://v2.quasar.dev/quasar-cli/boot-files -export default boot(async (/* { app, router, ... } */) => { - GraphicsExtras; -}); diff --git a/src/boot/axios.ts b/src/boot/axios.ts deleted file mode 100644 index d9a9d34..0000000 --- a/src/boot/axios.ts +++ /dev/null @@ -1,111 +0,0 @@ -import axios, { AxiosInstance } from 'axios'; -import { AxiosError } from 'axios'; -import { Dialog } from 'quasar'; -import { boot } from 'quasar/wrappers'; -import { getJwtToken } from 'src/examples/app/configs/TokenManage'; -import { getHttpBase } from 'src/examples/app/configs/UrlManage'; - -declare module '@vue/runtime-core' { - interface ComponentCustomProperties { - $axios: AxiosInstance; - } -} - -interface ErrorData { - status: number; - title: string; - detail: string; - code: number; -} - -export class ApiError { - origin: AxiosError; - /** - * 业务错误代码 - */ - code: number; - /** - * 错误信息 - */ - title: string; - /** - * 相关问题描述 - */ - detail?: string; - constructor(origin: AxiosError) { - this.origin = origin; - const response = origin.response; - if (response) { - const err = response.data as ErrorData; - this.code = err.code; - this.title = err.title; - this.detail = err.detail; - } else { - this.code = origin.status || -1; - this.title = origin.message; - } - } - - static from(err: AxiosError): ApiError { - return new ApiError(err); - } - - /** - * 是否认证失败(登录过期) - * @returns - */ - isAuthError(): boolean { - return this.origin.response?.status === 401; - } -} - -// Be careful when using SSR for cross-request state pollution -// due to creating a Singleton instance here; -// If any client changes this (global) instance, it might be a -// good idea to move this instance creation inside of the -// "export default () => {}" function below (which runs individually -// for each client) -const api = axios.create({ baseURL: getHttpBase() }); - -export default boot(({ app, router }) => { - // for use inside Vue files (Options API) through this.$axios and this.$api - - // 拦截请求,添加 - api.interceptors.request.use( - (config) => { - config.headers.Authorization = getJwtToken(); - return config; - }, - (err: AxiosError) => { - return Promise.reject(ApiError.from(err)); - } - ); - - api.interceptors.response.use( - (response) => { - return response; - }, - (err) => { - if (err.response && err.response.status === 401) { - Dialog.create({ - title: '认证失败', - message: '认证失败或登录超时,请重新登录', - persistent: true, - }).onOk(() => { - router.push({ name: 'login' }); - }); - } - return Promise.reject(ApiError.from(err)); - } - ); - - app.config.globalProperties.$axios = axios; - // ^ ^ ^ this will allow you to use this.$axios (for Vue Options API form) - // so you won't necessarily have to import axios in each vue file - - app.config.globalProperties.$api = api; - // ^ ^ ^ this will allow you to use this.$api (for Vue Options API form) - // so you can easily perform requests against your app's API -}); - -export { api }; diff --git a/src/components/EssentialLink.vue b/src/components/EssentialLink.vue deleted file mode 100644 index 13205c2..0000000 --- a/src/components/EssentialLink.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - diff --git a/src/components/ExampleComponent.vue b/src/components/ExampleComponent.vue deleted file mode 100644 index bc03c3d..0000000 --- a/src/components/ExampleComponent.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/src/components/draw-app/DrawProperties.vue b/src/components/draw-app/DrawProperties.vue deleted file mode 100644 index 6cf6434..0000000 --- a/src/components/draw-app/DrawProperties.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - diff --git a/src/components/draw-app/properties/CanvasProperty.vue b/src/components/draw-app/properties/CanvasProperty.vue deleted file mode 100644 index 74ac95b..0000000 --- a/src/components/draw-app/properties/CanvasProperty.vue +++ /dev/null @@ -1,74 +0,0 @@ - - - diff --git a/src/components/draw-app/properties/IscsFanProperty.vue b/src/components/draw-app/properties/IscsFanProperty.vue deleted file mode 100644 index c743f61..0000000 --- a/src/components/draw-app/properties/IscsFanProperty.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - diff --git a/src/components/draw-app/properties/LinkProperty.vue b/src/components/draw-app/properties/LinkProperty.vue deleted file mode 100644 index 0aa8412..0000000 --- a/src/components/draw-app/properties/LinkProperty.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - diff --git a/src/components/draw-app/properties/PlatformProperty.vue b/src/components/draw-app/properties/PlatformProperty.vue deleted file mode 100644 index 147eeeb..0000000 --- a/src/components/draw-app/properties/PlatformProperty.vue +++ /dev/null @@ -1,112 +0,0 @@ - - - diff --git a/src/components/draw-app/properties/RectProperty.vue b/src/components/draw-app/properties/RectProperty.vue deleted file mode 100644 index 981baba..0000000 --- a/src/components/draw-app/properties/RectProperty.vue +++ /dev/null @@ -1,74 +0,0 @@ - - - diff --git a/src/components/draw-app/properties/SignalProperty.vue b/src/components/draw-app/properties/SignalProperty.vue deleted file mode 100644 index 0046733..0000000 --- a/src/components/draw-app/properties/SignalProperty.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - diff --git a/src/components/draw-app/properties/StationProperty.vue b/src/components/draw-app/properties/StationProperty.vue deleted file mode 100644 index 3699cf0..0000000 --- a/src/components/draw-app/properties/StationProperty.vue +++ /dev/null @@ -1,200 +0,0 @@ - - - diff --git a/src/components/draw-app/properties/TrainProperty.vue b/src/components/draw-app/properties/TrainProperty.vue deleted file mode 100644 index 9e6360c..0000000 --- a/src/components/draw-app/properties/TrainProperty.vue +++ /dev/null @@ -1,198 +0,0 @@ - - - diff --git a/src/components/draw-app/templates/LinkTemplate.vue b/src/components/draw-app/templates/LinkTemplate.vue deleted file mode 100644 index a6b82a1..0000000 --- a/src/components/draw-app/templates/LinkTemplate.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - diff --git a/src/components/draw-app/templates/PlatformTemplate.vue b/src/components/draw-app/templates/PlatformTemplate.vue deleted file mode 100644 index 75c2ee2..0000000 --- a/src/components/draw-app/templates/PlatformTemplate.vue +++ /dev/null @@ -1,76 +0,0 @@ - - - diff --git a/src/components/draw-app/templates/RectTemplate.vue b/src/components/draw-app/templates/RectTemplate.vue deleted file mode 100644 index 75c2ee2..0000000 --- a/src/components/draw-app/templates/RectTemplate.vue +++ /dev/null @@ -1,76 +0,0 @@ - - - diff --git a/src/components/draw-app/templates/StationTemplate.vue b/src/components/draw-app/templates/StationTemplate.vue deleted file mode 100644 index fe433bf..0000000 --- a/src/components/draw-app/templates/StationTemplate.vue +++ /dev/null @@ -1,70 +0,0 @@ - - - diff --git a/src/components/draw-app/templates/TrainTemplate.vue b/src/components/draw-app/templates/TrainTemplate.vue deleted file mode 100644 index 84c3cd2..0000000 --- a/src/components/draw-app/templates/TrainTemplate.vue +++ /dev/null @@ -1,69 +0,0 @@ - - - diff --git a/src/components/models.ts b/src/components/models.ts deleted file mode 100644 index 6945920..0000000 --- a/src/components/models.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface Todo { - id: number; - content: string; -} - -export interface Meta { - totalCount: number; -} diff --git a/src/css/app.scss b/src/css/app.scss deleted file mode 100644 index ecac98f..0000000 --- a/src/css/app.scss +++ /dev/null @@ -1 +0,0 @@ -// app global css in SCSS form diff --git a/src/css/quasar.variables.scss b/src/css/quasar.variables.scss deleted file mode 100644 index 3996ce1..0000000 --- a/src/css/quasar.variables.scss +++ /dev/null @@ -1,25 +0,0 @@ -// Quasar SCSS (& Sass) Variables -// -------------------------------------------------- -// To customize the look and feel of this app, you can override -// the Sass/SCSS variables found in Quasar's source Sass/SCSS files. - -// Check documentation for full list of Quasar variables - -// Your own variables (that are declared here) and Quasar's own -// ones will be available out of the box in your .vue/.scss/.sass files - -// It's highly recommended to change the default colors -// to match your app's branding. -// Tip: Use the "Theme Builder" on Quasar's documentation website. - -$primary : #1976D2; -$secondary : #26A69A; -$accent : #9C27B0; - -$dark : #1D1D1D; -$dark-page : #121212; - -$positive : #21BA45; -$negative : #C10015; -$info : #31CCEC; -$warning : #F2C037; diff --git a/src/env.d.ts b/src/env.d.ts deleted file mode 100644 index dd757b1..0000000 --- a/src/env.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-disable */ - -declare namespace NodeJS { - interface ProcessEnv { - NODE_ENV: string; - VUE_ROUTER_MODE: 'hash' | 'history' | 'abstract' | undefined; - VUE_ROUTER_BASE: string | undefined; - } -} diff --git a/src/examples/app/api/ApiCommon.ts b/src/examples/app/api/ApiCommon.ts deleted file mode 100644 index 18494ce..0000000 --- a/src/examples/app/api/ApiCommon.ts +++ /dev/null @@ -1,42 +0,0 @@ -export class PageQueryDto { - current: number; - size: number; - orders?: OrderItemDto[]; - constructor(current: number, size: number, orders?: OrderItemDto[]) { - this.current = current; - this.size = size; - this.orders = orders; - } -} - -export class OrderItemDto { - column: string; - asc: boolean; - constructor(column: string, asc: boolean) { - this.column = column; - this.asc = asc; - } - - static asc(column: string): OrderItemDto { - return new OrderItemDto(column, true); - } - static desc(column: string): OrderItemDto { - return new OrderItemDto(column, false); - } -} - -export interface PageDto { - records: T[]; - /** - * 记录总数 - */ - total: number; - /** - * 第几页 - */ - current: number; - /** - * 每页数量 - */ - size: number; -} diff --git a/src/examples/app/api/UserApi.ts b/src/examples/app/api/UserApi.ts deleted file mode 100644 index 085fe3f..0000000 --- a/src/examples/app/api/UserApi.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { api } from 'src/boot/axios'; -import { PageDto, PageQueryDto } from './ApiCommon'; -import { Md5 } from 'ts-md5'; - -const UserUriBase = '/api/user'; - -interface RegisterInfo { - name: string; - mobile: string; - password: string; -} - -interface User { - id: string; - name: string; - mobile: string; - password: string; - registerTime: string; -} - -const PasswordSult = '4a6d74126bfd06d69406fcccb7e7d5d9'; // 密码加盐 -function encryptPassword(password: string): string { - const md5 = new Md5(); - return md5.appendStr(`${password}${PasswordSult}`).end() as string; -} - -/** - * 用户注册 - * @param info - * @returns - */ -export async function register(info: RegisterInfo): Promise { - const response = await api.post(`${UserUriBase}/register`, { - ...info, - password: encryptPassword(info.password), - }); - return response.data as User; -} - -interface LoginInfo { - account: string; - password: string; -} - -/** - * 用户登录 - * @param loginInfo - * @returns - */ -export async function login(loginInfo: LoginInfo): Promise { - const info = { ...loginInfo, password: encryptPassword(loginInfo.password) }; - const response = await api.post(`${UserUriBase}/login`, info); - return response.data; -} - -export class PagingQueryParams extends PageQueryDto { - name?: string; - roleId?: number; -} - -/** - * 分页查询用户信息 - * @param params - * @returns - */ -export async function pageQuery( - params: PagingQueryParams -): Promise> { - const response = await api.get(`${UserUriBase}/paging`, { - params: params, - }); - return response.data; -} - -export function distributeRole(query: { userId: number; roleIds: number[] }) { - return api.post('/api/role/distribute', query); -} diff --git a/src/examples/app/app_message/protoc-22.2/bin/linux-x86_64/protoc b/src/examples/app/app_message/protoc-22.2/bin/linux-x86_64/protoc deleted file mode 100755 index c74fab1..0000000 Binary files a/src/examples/app/app_message/protoc-22.2/bin/linux-x86_64/protoc and /dev/null differ diff --git a/src/examples/app/app_message/protoc-22.2/bin/win64/protoc.exe b/src/examples/app/app_message/protoc-22.2/bin/win64/protoc.exe deleted file mode 100644 index 149389c..0000000 Binary files a/src/examples/app/app_message/protoc-22.2/bin/win64/protoc.exe and /dev/null differ diff --git a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/any.proto b/src/examples/app/app_message/protoc-22.2/include/google/protobuf/any.proto deleted file mode 100644 index 561da0c..0000000 --- a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/any.proto +++ /dev/null @@ -1,161 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option go_package = "google.golang.org/protobuf/types/known/anypb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "AnyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; - -// `Any` contains an arbitrary serialized protocol buffer message along with a -// URL that describes the type of the serialized message. -// -// Protobuf library provides support to pack/unpack Any values in the form -// of utility functions or additional generated methods of the Any type. -// -// Example 1: Pack and unpack a message in C++. -// -// Foo foo = ...; -// Any any; -// any.PackFrom(foo); -// ... -// if (any.UnpackTo(&foo)) { -// ... -// } -// -// Example 2: Pack and unpack a message in Java. -// -// Foo foo = ...; -// Any any = Any.pack(foo); -// ... -// if (any.is(Foo.class)) { -// foo = any.unpack(Foo.class); -// } -// // or ... -// if (any.isSameTypeAs(Foo.getDefaultInstance())) { -// foo = any.unpack(Foo.getDefaultInstance()); -// } -// -// Example 3: Pack and unpack a message in Python. -// -// foo = Foo(...) -// any = Any() -// any.Pack(foo) -// ... -// if any.Is(Foo.DESCRIPTOR): -// any.Unpack(foo) -// ... -// -// Example 4: Pack and unpack a message in Go -// -// foo := &pb.Foo{...} -// any, err := anypb.New(foo) -// if err != nil { -// ... -// } -// ... -// foo := &pb.Foo{} -// if err := any.UnmarshalTo(foo); err != nil { -// ... -// } -// -// The pack methods provided by protobuf library will by default use -// 'type.googleapis.com/full.type.name' as the type URL and the unpack -// methods only use the fully qualified type name after the last '/' -// in the type URL, for example "foo.bar.com/x/y.z" will yield type -// name "y.z". -// -// JSON -// -// The JSON representation of an `Any` value uses the regular -// representation of the deserialized, embedded message, with an -// additional field `@type` which contains the type URL. Example: -// -// package google.profile; -// message Person { -// string first_name = 1; -// string last_name = 2; -// } -// -// { -// "@type": "type.googleapis.com/google.profile.Person", -// "firstName": , -// "lastName": -// } -// -// If the embedded message type is well-known and has a custom JSON -// representation, that representation will be embedded adding a field -// `value` which holds the custom JSON in addition to the `@type` -// field. Example (for message [google.protobuf.Duration][]): -// -// { -// "@type": "type.googleapis.com/google.protobuf.Duration", -// "value": "1.212s" -// } -// -message Any { - // A URL/resource name that uniquely identifies the type of the serialized - // protocol buffer message. This string must contain at least - // one "/" character. The last segment of the URL's path must represent - // the fully qualified name of the type (as in - // `path/google.protobuf.Duration`). The name should be in a canonical form - // (e.g., leading "." is not accepted). - // - // In practice, teams usually precompile into the binary all types that they - // expect it to use in the context of Any. However, for URLs which use the - // scheme `http`, `https`, or no scheme, one can optionally set up a type - // server that maps type URLs to message definitions as follows: - // - // * If no scheme is provided, `https` is assumed. - // * An HTTP GET on the URL must yield a [google.protobuf.Type][] - // value in binary format, or produce an error. - // * Applications are allowed to cache lookup results based on the - // URL, or have them precompiled into a binary to avoid any - // lookup. Therefore, binary compatibility needs to be preserved - // on changes to types. (Use versioned type names to manage - // breaking changes.) - // - // Note: this functionality is not currently available in the official - // protobuf release, and it is not used for type URLs beginning with - // type.googleapis.com. - // - // Schemes other than `http`, `https` (or the empty scheme) might be - // used with implementation specific semantics. - // - string type_url = 1; - - // Must be a valid serialized protocol buffer of the above specified type. - bytes value = 2; -} diff --git a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/api.proto b/src/examples/app/app_message/protoc-22.2/include/google/protobuf/api.proto deleted file mode 100644 index afc9cc1..0000000 --- a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/api.proto +++ /dev/null @@ -1,207 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -import "google/protobuf/source_context.proto"; -import "google/protobuf/type.proto"; - -option java_package = "com.google.protobuf"; -option java_outer_classname = "ApiProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "google.golang.org/protobuf/types/known/apipb"; - -// Api is a light-weight descriptor for an API Interface. -// -// Interfaces are also described as "protocol buffer services" in some contexts, -// such as by the "service" keyword in a .proto file, but they are different -// from API Services, which represent a concrete implementation of an interface -// as opposed to simply a description of methods and bindings. They are also -// sometimes simply referred to as "APIs" in other contexts, such as the name of -// this message itself. See https://cloud.google.com/apis/design/glossary for -// detailed terminology. -message Api { - // The fully qualified name of this interface, including package name - // followed by the interface's simple name. - string name = 1; - - // The methods of this interface, in unspecified order. - repeated Method methods = 2; - - // Any metadata attached to the interface. - repeated Option options = 3; - - // A version string for this interface. If specified, must have the form - // `major-version.minor-version`, as in `1.10`. If the minor version is - // omitted, it defaults to zero. If the entire version field is empty, the - // major version is derived from the package name, as outlined below. If the - // field is not empty, the version in the package name will be verified to be - // consistent with what is provided here. - // - // The versioning schema uses [semantic - // versioning](http://semver.org) where the major version number - // indicates a breaking change and the minor version an additive, - // non-breaking change. Both version numbers are signals to users - // what to expect from different versions, and should be carefully - // chosen based on the product plan. - // - // The major version is also reflected in the package name of the - // interface, which must end in `v`, as in - // `google.feature.v1`. For major versions 0 and 1, the suffix can - // be omitted. Zero major versions must only be used for - // experimental, non-GA interfaces. - // - string version = 4; - - // Source context for the protocol buffer service represented by this - // message. - SourceContext source_context = 5; - - // Included interfaces. See [Mixin][]. - repeated Mixin mixins = 6; - - // The source syntax of the service. - Syntax syntax = 7; -} - -// Method represents a method of an API interface. -message Method { - // The simple name of this method. - string name = 1; - - // A URL of the input message type. - string request_type_url = 2; - - // If true, the request is streamed. - bool request_streaming = 3; - - // The URL of the output message type. - string response_type_url = 4; - - // If true, the response is streamed. - bool response_streaming = 5; - - // Any metadata attached to the method. - repeated Option options = 6; - - // The source syntax of this method. - Syntax syntax = 7; -} - -// Declares an API Interface to be included in this interface. The including -// interface must redeclare all the methods from the included interface, but -// documentation and options are inherited as follows: -// -// - If after comment and whitespace stripping, the documentation -// string of the redeclared method is empty, it will be inherited -// from the original method. -// -// - Each annotation belonging to the service config (http, -// visibility) which is not set in the redeclared method will be -// inherited. -// -// - If an http annotation is inherited, the path pattern will be -// modified as follows. Any version prefix will be replaced by the -// version of the including interface plus the [root][] path if -// specified. -// -// Example of a simple mixin: -// -// package google.acl.v1; -// service AccessControl { -// // Get the underlying ACL object. -// rpc GetAcl(GetAclRequest) returns (Acl) { -// option (google.api.http).get = "/v1/{resource=**}:getAcl"; -// } -// } -// -// package google.storage.v2; -// service Storage { -// rpc GetAcl(GetAclRequest) returns (Acl); -// -// // Get a data record. -// rpc GetData(GetDataRequest) returns (Data) { -// option (google.api.http).get = "/v2/{resource=**}"; -// } -// } -// -// Example of a mixin configuration: -// -// apis: -// - name: google.storage.v2.Storage -// mixins: -// - name: google.acl.v1.AccessControl -// -// The mixin construct implies that all methods in `AccessControl` are -// also declared with same name and request/response types in -// `Storage`. A documentation generator or annotation processor will -// see the effective `Storage.GetAcl` method after inheriting -// documentation and annotations as follows: -// -// service Storage { -// // Get the underlying ACL object. -// rpc GetAcl(GetAclRequest) returns (Acl) { -// option (google.api.http).get = "/v2/{resource=**}:getAcl"; -// } -// ... -// } -// -// Note how the version in the path pattern changed from `v1` to `v2`. -// -// If the `root` field in the mixin is specified, it should be a -// relative path under which inherited HTTP paths are placed. Example: -// -// apis: -// - name: google.storage.v2.Storage -// mixins: -// - name: google.acl.v1.AccessControl -// root: acls -// -// This implies the following inherited HTTP annotation: -// -// service Storage { -// // Get the underlying ACL object. -// rpc GetAcl(GetAclRequest) returns (Acl) { -// option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; -// } -// ... -// } -message Mixin { - // The fully qualified name of the interface which is included. - string name = 1; - - // If non-empty specifies a path under which inherited HTTP paths - // are rooted. - string root = 2; -} diff --git a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/compiler/plugin.proto b/src/examples/app/app_message/protoc-22.2/include/google/protobuf/compiler/plugin.proto deleted file mode 100644 index 7ab6dff..0000000 --- a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/compiler/plugin.proto +++ /dev/null @@ -1,180 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// -// protoc (aka the Protocol Compiler) can be extended via plugins. A plugin is -// just a program that reads a CodeGeneratorRequest from stdin and writes a -// CodeGeneratorResponse to stdout. -// -// Plugins written using C++ can use google/protobuf/compiler/plugin.h instead -// of dealing with the raw protocol defined here. -// -// A plugin executable needs only to be placed somewhere in the path. The -// plugin should be named "protoc-gen-$NAME", and will then be used when the -// flag "--${NAME}_out" is passed to protoc. - -syntax = "proto2"; - -package google.protobuf.compiler; -option java_package = "com.google.protobuf.compiler"; -option java_outer_classname = "PluginProtos"; - -option csharp_namespace = "Google.Protobuf.Compiler"; -option go_package = "google.golang.org/protobuf/types/pluginpb"; - -import "google/protobuf/descriptor.proto"; - -// The version number of protocol compiler. -message Version { - optional int32 major = 1; - optional int32 minor = 2; - optional int32 patch = 3; - // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should - // be empty for mainline stable releases. - optional string suffix = 4; -} - -// An encoded CodeGeneratorRequest is written to the plugin's stdin. -message CodeGeneratorRequest { - // The .proto files that were explicitly listed on the command-line. The - // code generator should generate code only for these files. Each file's - // descriptor will be included in proto_file, below. - repeated string file_to_generate = 1; - - // The generator parameter passed on the command-line. - optional string parameter = 2; - - // FileDescriptorProtos for all files in files_to_generate and everything - // they import. The files will appear in topological order, so each file - // appears before any file that imports it. - // - // protoc guarantees that all proto_files will be written after - // the fields above, even though this is not technically guaranteed by the - // protobuf wire format. This theoretically could allow a plugin to stream - // in the FileDescriptorProtos and handle them one by one rather than read - // the entire set into memory at once. However, as of this writing, this - // is not similarly optimized on protoc's end -- it will store all fields in - // memory at once before sending them to the plugin. - // - // Type names of fields and extensions in the FileDescriptorProto are always - // fully qualified. - repeated FileDescriptorProto proto_file = 15; - - // The version number of protocol compiler. - optional Version compiler_version = 3; -} - -// The plugin writes an encoded CodeGeneratorResponse to stdout. -message CodeGeneratorResponse { - // Error message. If non-empty, code generation failed. The plugin process - // should exit with status code zero even if it reports an error in this way. - // - // This should be used to indicate errors in .proto files which prevent the - // code generator from generating correct code. Errors which indicate a - // problem in protoc itself -- such as the input CodeGeneratorRequest being - // unparseable -- should be reported by writing a message to stderr and - // exiting with a non-zero status code. - optional string error = 1; - - // A bitmask of supported features that the code generator supports. - // This is a bitwise "or" of values from the Feature enum. - optional uint64 supported_features = 2; - - // Sync with code_generator.h. - enum Feature { - FEATURE_NONE = 0; - FEATURE_PROTO3_OPTIONAL = 1; - } - - // Represents a single generated file. - message File { - // The file name, relative to the output directory. The name must not - // contain "." or ".." components and must be relative, not be absolute (so, - // the file cannot lie outside the output directory). "/" must be used as - // the path separator, not "\". - // - // If the name is omitted, the content will be appended to the previous - // file. This allows the generator to break large files into small chunks, - // and allows the generated text to be streamed back to protoc so that large - // files need not reside completely in memory at one time. Note that as of - // this writing protoc does not optimize for this -- it will read the entire - // CodeGeneratorResponse before writing files to disk. - optional string name = 1; - - // If non-empty, indicates that the named file should already exist, and the - // content here is to be inserted into that file at a defined insertion - // point. This feature allows a code generator to extend the output - // produced by another code generator. The original generator may provide - // insertion points by placing special annotations in the file that look - // like: - // @@protoc_insertion_point(NAME) - // The annotation can have arbitrary text before and after it on the line, - // which allows it to be placed in a comment. NAME should be replaced with - // an identifier naming the point -- this is what other generators will use - // as the insertion_point. Code inserted at this point will be placed - // immediately above the line containing the insertion point (thus multiple - // insertions to the same point will come out in the order they were added). - // The double-@ is intended to make it unlikely that the generated code - // could contain things that look like insertion points by accident. - // - // For example, the C++ code generator places the following line in the - // .pb.h files that it generates: - // // @@protoc_insertion_point(namespace_scope) - // This line appears within the scope of the file's package namespace, but - // outside of any particular class. Another plugin can then specify the - // insertion_point "namespace_scope" to generate additional classes or - // other declarations that should be placed in this scope. - // - // Note that if the line containing the insertion point begins with - // whitespace, the same whitespace will be added to every line of the - // inserted text. This is useful for languages like Python, where - // indentation matters. In these languages, the insertion point comment - // should be indented the same amount as any inserted code will need to be - // in order to work correctly in that context. - // - // The code generator that generates the initial file and the one which - // inserts into it must both run as part of a single invocation of protoc. - // Code generators are executed in the order in which they appear on the - // command line. - // - // If |insertion_point| is present, |name| must also be present. - optional string insertion_point = 2; - - // The file contents. - optional string content = 15; - - // Information describing the file content being inserted. If an insertion - // point is used, this information will be appropriately offset and inserted - // into the code generation metadata for the generated files. - optional GeneratedCodeInfo generated_code_info = 16; - } - repeated File file = 15; -} diff --git a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/descriptor.proto b/src/examples/app/app_message/protoc-22.2/include/google/protobuf/descriptor.proto deleted file mode 100644 index 3b38675..0000000 --- a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/descriptor.proto +++ /dev/null @@ -1,975 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// The messages in this file describe the definitions found in .proto files. -// A valid .proto file can be translated directly to a FileDescriptorProto -// without any other information (e.g. without reading its imports). - -syntax = "proto2"; - -package google.protobuf; - -option go_package = "google.golang.org/protobuf/types/descriptorpb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "DescriptorProtos"; -option csharp_namespace = "Google.Protobuf.Reflection"; -option objc_class_prefix = "GPB"; -option cc_enable_arenas = true; - -// descriptor.proto must be optimized for speed because reflection-based -// algorithms don't work during bootstrapping. -option optimize_for = SPEED; - -// The protocol compiler can output a FileDescriptorSet containing the .proto -// files it parses. -message FileDescriptorSet { - repeated FileDescriptorProto file = 1; -} - -// Describes a complete .proto file. -message FileDescriptorProto { - optional string name = 1; // file name, relative to root of source tree - optional string package = 2; // e.g. "foo", "foo.bar", etc. - - // Names of files imported by this file. - repeated string dependency = 3; - // Indexes of the public imported files in the dependency list above. - repeated int32 public_dependency = 10; - // Indexes of the weak imported files in the dependency list. - // For Google-internal migration only. Do not use. - repeated int32 weak_dependency = 11; - - // All top-level definitions in this file. - repeated DescriptorProto message_type = 4; - repeated EnumDescriptorProto enum_type = 5; - repeated ServiceDescriptorProto service = 6; - repeated FieldDescriptorProto extension = 7; - - optional FileOptions options = 8; - - // This field contains optional information about the original source code. - // You may safely remove this entire field without harming runtime - // functionality of the descriptors -- the information is needed only by - // development tools. - optional SourceCodeInfo source_code_info = 9; - - // The syntax of the proto file. - // The supported values are "proto2", "proto3", and "editions". - // - // If `edition` is present, this value must be "editions". - optional string syntax = 12; - - // The edition of the proto file, which is an opaque string. - optional string edition = 13; -} - -// Describes a message type. -message DescriptorProto { - optional string name = 1; - - repeated FieldDescriptorProto field = 2; - repeated FieldDescriptorProto extension = 6; - - repeated DescriptorProto nested_type = 3; - repeated EnumDescriptorProto enum_type = 4; - - message ExtensionRange { - optional int32 start = 1; // Inclusive. - optional int32 end = 2; // Exclusive. - - optional ExtensionRangeOptions options = 3; - } - repeated ExtensionRange extension_range = 5; - - repeated OneofDescriptorProto oneof_decl = 8; - - optional MessageOptions options = 7; - - // Range of reserved tag numbers. Reserved tag numbers may not be used by - // fields or extension ranges in the same message. Reserved ranges may - // not overlap. - message ReservedRange { - optional int32 start = 1; // Inclusive. - optional int32 end = 2; // Exclusive. - } - repeated ReservedRange reserved_range = 9; - // Reserved field names, which may not be used by fields in the same message. - // A given name may only be reserved once. - repeated string reserved_name = 10; -} - -message ExtensionRangeOptions { - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -// Describes a field within a message. -message FieldDescriptorProto { - enum Type { - // 0 is reserved for errors. - // Order is weird for historical reasons. - TYPE_DOUBLE = 1; - TYPE_FLOAT = 2; - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if - // negative values are likely. - TYPE_INT64 = 3; - TYPE_UINT64 = 4; - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if - // negative values are likely. - TYPE_INT32 = 5; - TYPE_FIXED64 = 6; - TYPE_FIXED32 = 7; - TYPE_BOOL = 8; - TYPE_STRING = 9; - // Tag-delimited aggregate. - // Group type is deprecated and not supported in proto3. However, Proto3 - // implementations should still be able to parse the group wire format and - // treat group fields as unknown fields. - TYPE_GROUP = 10; - TYPE_MESSAGE = 11; // Length-delimited aggregate. - - // New in version 2. - TYPE_BYTES = 12; - TYPE_UINT32 = 13; - TYPE_ENUM = 14; - TYPE_SFIXED32 = 15; - TYPE_SFIXED64 = 16; - TYPE_SINT32 = 17; // Uses ZigZag encoding. - TYPE_SINT64 = 18; // Uses ZigZag encoding. - } - - enum Label { - // 0 is reserved for errors - LABEL_OPTIONAL = 1; - LABEL_REQUIRED = 2; - LABEL_REPEATED = 3; - } - - optional string name = 1; - optional int32 number = 3; - optional Label label = 4; - - // If type_name is set, this need not be set. If both this and type_name - // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. - optional Type type = 5; - - // For message and enum types, this is the name of the type. If the name - // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping - // rules are used to find the type (i.e. first the nested types within this - // message are searched, then within the parent, on up to the root - // namespace). - optional string type_name = 6; - - // For extensions, this is the name of the type being extended. It is - // resolved in the same manner as type_name. - optional string extendee = 2; - - // For numeric types, contains the original text representation of the value. - // For booleans, "true" or "false". - // For strings, contains the default text contents (not escaped in any way). - // For bytes, contains the C escaped value. All bytes >= 128 are escaped. - optional string default_value = 7; - - // If set, gives the index of a oneof in the containing type's oneof_decl - // list. This field is a member of that oneof. - optional int32 oneof_index = 9; - - // JSON name of this field. The value is set by protocol compiler. If the - // user has set a "json_name" option on this field, that option's value - // will be used. Otherwise, it's deduced from the field's name by converting - // it to camelCase. - optional string json_name = 10; - - optional FieldOptions options = 8; - - // If true, this is a proto3 "optional". When a proto3 field is optional, it - // tracks presence regardless of field type. - // - // When proto3_optional is true, this field must be belong to a oneof to - // signal to old proto3 clients that presence is tracked for this field. This - // oneof is known as a "synthetic" oneof, and this field must be its sole - // member (each proto3 optional field gets its own synthetic oneof). Synthetic - // oneofs exist in the descriptor only, and do not generate any API. Synthetic - // oneofs must be ordered after all "real" oneofs. - // - // For message fields, proto3_optional doesn't create any semantic change, - // since non-repeated message fields always track presence. However it still - // indicates the semantic detail of whether the user wrote "optional" or not. - // This can be useful for round-tripping the .proto file. For consistency we - // give message fields a synthetic oneof also, even though it is not required - // to track presence. This is especially important because the parser can't - // tell if a field is a message or an enum, so it must always create a - // synthetic oneof. - // - // Proto2 optional fields do not set this flag, because they already indicate - // optional with `LABEL_OPTIONAL`. - optional bool proto3_optional = 17; -} - -// Describes a oneof. -message OneofDescriptorProto { - optional string name = 1; - optional OneofOptions options = 2; -} - -// Describes an enum type. -message EnumDescriptorProto { - optional string name = 1; - - repeated EnumValueDescriptorProto value = 2; - - optional EnumOptions options = 3; - - // Range of reserved numeric values. Reserved values may not be used by - // entries in the same enum. Reserved ranges may not overlap. - // - // Note that this is distinct from DescriptorProto.ReservedRange in that it - // is inclusive such that it can appropriately represent the entire int32 - // domain. - message EnumReservedRange { - optional int32 start = 1; // Inclusive. - optional int32 end = 2; // Inclusive. - } - - // Range of reserved numeric values. Reserved numeric values may not be used - // by enum values in the same enum declaration. Reserved ranges may not - // overlap. - repeated EnumReservedRange reserved_range = 4; - - // Reserved enum value names, which may not be reused. A given name may only - // be reserved once. - repeated string reserved_name = 5; -} - -// Describes a value within an enum. -message EnumValueDescriptorProto { - optional string name = 1; - optional int32 number = 2; - - optional EnumValueOptions options = 3; -} - -// Describes a service. -message ServiceDescriptorProto { - optional string name = 1; - repeated MethodDescriptorProto method = 2; - - optional ServiceOptions options = 3; -} - -// Describes a method of a service. -message MethodDescriptorProto { - optional string name = 1; - - // Input and output type names. These are resolved in the same way as - // FieldDescriptorProto.type_name, but must refer to a message type. - optional string input_type = 2; - optional string output_type = 3; - - optional MethodOptions options = 4; - - // Identifies if client streams multiple client messages - optional bool client_streaming = 5 [default = false]; - // Identifies if server streams multiple server messages - optional bool server_streaming = 6 [default = false]; -} - -// =================================================================== -// Options - -// Each of the definitions above may have "options" attached. These are -// just annotations which may cause code to be generated slightly differently -// or may contain hints for code that manipulates protocol messages. -// -// Clients may define custom options as extensions of the *Options messages. -// These extensions may not yet be known at parsing time, so the parser cannot -// store the values in them. Instead it stores them in a field in the *Options -// message called uninterpreted_option. This field must have the same name -// across all *Options messages. We then use this field to populate the -// extensions when we build a descriptor, at which point all protos have been -// parsed and so all extensions are known. -// -// Extension numbers for custom options may be chosen as follows: -// * For options which will only be used within a single application or -// organization, or for experimental options, use field numbers 50000 -// through 99999. It is up to you to ensure that you do not use the -// same number for multiple options. -// * For options which will be published and used publicly by multiple -// independent entities, e-mail protobuf-global-extension-registry@google.com -// to reserve extension numbers. Simply provide your project name (e.g. -// Objective-C plugin) and your project website (if available) -- there's no -// need to explain how you intend to use them. Usually you only need one -// extension number. You can declare multiple options with only one extension -// number by putting them in a sub-message. See the Custom Options section of -// the docs for examples: -// https://developers.google.com/protocol-buffers/docs/proto#options -// If this turns out to be popular, a web service will be set up -// to automatically assign option numbers. - -message FileOptions { - - // Sets the Java package where classes generated from this .proto will be - // placed. By default, the proto package is used, but this is often - // inappropriate because proto packages do not normally start with backwards - // domain names. - optional string java_package = 1; - - // Controls the name of the wrapper Java class generated for the .proto file. - // That class will always contain the .proto file's getDescriptor() method as - // well as any top-level extensions defined in the .proto file. - // If java_multiple_files is disabled, then all the other classes from the - // .proto file will be nested inside the single wrapper outer class. - optional string java_outer_classname = 8; - - // If enabled, then the Java code generator will generate a separate .java - // file for each top-level message, enum, and service defined in the .proto - // file. Thus, these types will *not* be nested inside the wrapper class - // named by java_outer_classname. However, the wrapper class will still be - // generated to contain the file's getDescriptor() method as well as any - // top-level extensions defined in the file. - optional bool java_multiple_files = 10 [default = false]; - - // This option does nothing. - optional bool java_generate_equals_and_hash = 20 [deprecated=true]; - - // If set true, then the Java2 code generator will generate code that - // throws an exception whenever an attempt is made to assign a non-UTF-8 - // byte sequence to a string field. - // Message reflection will do the same. - // However, an extension field still accepts non-UTF-8 byte sequences. - // This option has no effect on when used with the lite runtime. - optional bool java_string_check_utf8 = 27 [default = false]; - - // Generated classes can be optimized for speed or code size. - enum OptimizeMode { - SPEED = 1; // Generate complete code for parsing, serialization, - // etc. - CODE_SIZE = 2; // Use ReflectionOps to implement these methods. - LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. - } - optional OptimizeMode optimize_for = 9 [default = SPEED]; - - // Sets the Go package where structs generated from this .proto will be - // placed. If omitted, the Go package will be derived from the following: - // - The basename of the package import path, if provided. - // - Otherwise, the package statement in the .proto file, if present. - // - Otherwise, the basename of the .proto file, without extension. - optional string go_package = 11; - - // Should generic services be generated in each language? "Generic" services - // are not specific to any particular RPC system. They are generated by the - // main code generators in each language (without additional plugins). - // Generic services were the only kind of service generation supported by - // early versions of google.protobuf. - // - // Generic services are now considered deprecated in favor of using plugins - // that generate code specific to your particular RPC system. Therefore, - // these default to false. Old code which depends on generic services should - // explicitly set them to true. - optional bool cc_generic_services = 16 [default = false]; - optional bool java_generic_services = 17 [default = false]; - optional bool py_generic_services = 18 [default = false]; - optional bool php_generic_services = 42 [default = false]; - - // Is this file deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for everything in the file, or it will be completely ignored; in the very - // least, this is a formalization for deprecating files. - optional bool deprecated = 23 [default = false]; - - // Enables the use of arenas for the proto messages in this file. This applies - // only to generated classes for C++. - optional bool cc_enable_arenas = 31 [default = true]; - - // Sets the objective c class prefix which is prepended to all objective c - // generated classes from this .proto. There is no default. - optional string objc_class_prefix = 36; - - // Namespace for generated classes; defaults to the package. - optional string csharp_namespace = 37; - - // By default Swift generators will take the proto package and CamelCase it - // replacing '.' with underscore and use that to prefix the types/symbols - // defined. When this options is provided, they will use this value instead - // to prefix the types/symbols defined. - optional string swift_prefix = 39; - - // Sets the php class prefix which is prepended to all php generated classes - // from this .proto. Default is empty. - optional string php_class_prefix = 40; - - // Use this option to change the namespace of php generated classes. Default - // is empty. When this option is empty, the package name will be used for - // determining the namespace. - optional string php_namespace = 41; - - // Use this option to change the namespace of php generated metadata classes. - // Default is empty. When this option is empty, the proto file name will be - // used for determining the namespace. - optional string php_metadata_namespace = 44; - - // Use this option to change the package of ruby generated classes. Default - // is empty. When this option is not set, the package name will be used for - // determining the ruby package. - optional string ruby_package = 45; - - // The parser stores options it doesn't recognize here. - // See the documentation for the "Options" section above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. - // See the documentation for the "Options" section above. - extensions 1000 to max; - - reserved 38; -} - -message MessageOptions { - // Set true to use the old proto1 MessageSet wire format for extensions. - // This is provided for backwards-compatibility with the MessageSet wire - // format. You should not use this for any other reason: It's less - // efficient, has fewer features, and is more complicated. - // - // The message must be defined exactly as follows: - // message Foo { - // option message_set_wire_format = true; - // extensions 4 to max; - // } - // Note that the message cannot have any defined fields; MessageSets only - // have extensions. - // - // All extensions of your type must be singular messages; e.g. they cannot - // be int32s, enums, or repeated messages. - // - // Because this is an option, the above two restrictions are not enforced by - // the protocol compiler. - optional bool message_set_wire_format = 1 [default = false]; - - // Disables the generation of the standard "descriptor()" accessor, which can - // conflict with a field of the same name. This is meant to make migration - // from proto1 easier; new code should avoid fields named "descriptor". - optional bool no_standard_descriptor_accessor = 2 [default = false]; - - // Is this message deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the message, or it will be completely ignored; in the very least, - // this is a formalization for deprecating messages. - optional bool deprecated = 3 [default = false]; - - reserved 4, 5, 6; - - // NOTE: Do not set the option in .proto files. Always use the maps syntax - // instead. The option should only be implicitly set by the proto compiler - // parser. - // - // Whether the message is an automatically generated map entry type for the - // maps field. - // - // For maps fields: - // map map_field = 1; - // The parsed descriptor looks like: - // message MapFieldEntry { - // option map_entry = true; - // optional KeyType key = 1; - // optional ValueType value = 2; - // } - // repeated MapFieldEntry map_field = 1; - // - // Implementations may choose not to generate the map_entry=true message, but - // use a native map in the target language to hold the keys and values. - // The reflection APIs in such implementations still need to work as - // if the field is a repeated message field. - optional bool map_entry = 7; - - reserved 8; // javalite_serializable - reserved 9; // javanano_as_lite - - // Enable the legacy handling of JSON field name conflicts. This lowercases - // and strips underscored from the fields before comparison in proto3 only. - // The new behavior takes `json_name` into account and applies to proto2 as - // well. - // - // This should only be used as a temporary measure against broken builds due - // to the change in behavior for JSON field name conflicts. - // - // TODO(b/261750190) This is legacy behavior we plan to remove once downstream - // teams have had time to migrate. - optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message FieldOptions { - // The ctype option instructs the C++ code generator to use a different - // representation of the field than it normally would. See the specific - // options below. This option is not yet implemented in the open source - // release -- sorry, we'll try to include it in a future version! - optional CType ctype = 1 [default = STRING]; - enum CType { - // Default mode. - STRING = 0; - - CORD = 1; - - STRING_PIECE = 2; - } - // The packed option can be enabled for repeated primitive fields to enable - // a more efficient representation on the wire. Rather than repeatedly - // writing the tag and type for each element, the entire array is encoded as - // a single length-delimited blob. In proto3, only explicit setting it to - // false will avoid using packed encoding. - optional bool packed = 2; - - // The jstype option determines the JavaScript type used for values of the - // field. The option is permitted only for 64 bit integral and fixed types - // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING - // is represented as JavaScript string, which avoids loss of precision that - // can happen when a large value is converted to a floating point JavaScript. - // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to - // use the JavaScript "number" type. The behavior of the default option - // JS_NORMAL is implementation dependent. - // - // This option is an enum to permit additional types to be added, e.g. - // goog.math.Integer. - optional JSType jstype = 6 [default = JS_NORMAL]; - enum JSType { - // Use the default type. - JS_NORMAL = 0; - - // Use JavaScript strings. - JS_STRING = 1; - - // Use JavaScript numbers. - JS_NUMBER = 2; - } - - // Should this field be parsed lazily? Lazy applies only to message-type - // fields. It means that when the outer message is initially parsed, the - // inner message's contents will not be parsed but instead stored in encoded - // form. The inner message will actually be parsed when it is first accessed. - // - // This is only a hint. Implementations are free to choose whether to use - // eager or lazy parsing regardless of the value of this option. However, - // setting this option true suggests that the protocol author believes that - // using lazy parsing on this field is worth the additional bookkeeping - // overhead typically needed to implement it. - // - // This option does not affect the public interface of any generated code; - // all method signatures remain the same. Furthermore, thread-safety of the - // interface is not affected by this option; const methods remain safe to - // call from multiple threads concurrently, while non-const methods continue - // to require exclusive access. - // - // Note that implementations may choose not to check required fields within - // a lazy sub-message. That is, calling IsInitialized() on the outer message - // may return true even if the inner message has missing required fields. - // This is necessary because otherwise the inner message would have to be - // parsed in order to perform the check, defeating the purpose of lazy - // parsing. An implementation which chooses not to check required fields - // must be consistent about it. That is, for any particular sub-message, the - // implementation must either *always* check its required fields, or *never* - // check its required fields, regardless of whether or not the message has - // been parsed. - // - // As of May 2022, lazy verifies the contents of the byte stream during - // parsing. An invalid byte stream will cause the overall parsing to fail. - optional bool lazy = 5 [default = false]; - - // unverified_lazy does no correctness checks on the byte stream. This should - // only be used where lazy with verification is prohibitive for performance - // reasons. - optional bool unverified_lazy = 15 [default = false]; - - // Is this field deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for accessors, or it will be completely ignored; in the very least, this - // is a formalization for deprecating fields. - optional bool deprecated = 3 [default = false]; - - // For Google-internal migration only. Do not use. - optional bool weak = 10 [default = false]; - - // Indicate that the field value should not be printed out when using debug - // formats, e.g. when the field contains sensitive credentials. - optional bool debug_redact = 16 [default = false]; - - // If set to RETENTION_SOURCE, the option will be omitted from the binary. - // Note: as of January 2023, support for this is in progress and does not yet - // have an effect (b/264593489). - enum OptionRetention { - RETENTION_UNKNOWN = 0; - RETENTION_RUNTIME = 1; - RETENTION_SOURCE = 2; - } - - optional OptionRetention retention = 17; - - // This indicates the types of entities that the field may apply to when used - // as an option. If it is unset, then the field may be freely used as an - // option on any kind of entity. Note: as of January 2023, support for this is - // in progress and does not yet have an effect (b/264593489). - enum OptionTargetType { - TARGET_TYPE_UNKNOWN = 0; - TARGET_TYPE_FILE = 1; - TARGET_TYPE_EXTENSION_RANGE = 2; - TARGET_TYPE_MESSAGE = 3; - TARGET_TYPE_FIELD = 4; - TARGET_TYPE_ONEOF = 5; - TARGET_TYPE_ENUM = 6; - TARGET_TYPE_ENUM_ENTRY = 7; - TARGET_TYPE_SERVICE = 8; - TARGET_TYPE_METHOD = 9; - } - - optional OptionTargetType target = 18; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; - - reserved 4; // removed jtype -} - -message OneofOptions { - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message EnumOptions { - - // Set this option to true to allow mapping different tag names to the same - // value. - optional bool allow_alias = 2; - - // Is this enum deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the enum, or it will be completely ignored; in the very least, this - // is a formalization for deprecating enums. - optional bool deprecated = 3 [default = false]; - - reserved 5; // javanano_as_lite - - // Enable the legacy handling of JSON field name conflicts. This lowercases - // and strips underscored from the fields before comparison in proto3 only. - // The new behavior takes `json_name` into account and applies to proto2 as - // well. - // TODO(b/261750190) Remove this legacy behavior once downstream teams have - // had time to migrate. - optional bool deprecated_legacy_json_field_conflicts = 6 [deprecated = true]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message EnumValueOptions { - // Is this enum value deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the enum value, or it will be completely ignored; in the very least, - // this is a formalization for deprecating enum values. - optional bool deprecated = 1 [default = false]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message ServiceOptions { - - // Note: Field numbers 1 through 32 are reserved for Google's internal RPC - // framework. We apologize for hoarding these numbers to ourselves, but - // we were already using them long before we decided to release Protocol - // Buffers. - - // Is this service deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the service, or it will be completely ignored; in the very least, - // this is a formalization for deprecating services. - optional bool deprecated = 33 [default = false]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message MethodOptions { - - // Note: Field numbers 1 through 32 are reserved for Google's internal RPC - // framework. We apologize for hoarding these numbers to ourselves, but - // we were already using them long before we decided to release Protocol - // Buffers. - - // Is this method deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the method, or it will be completely ignored; in the very least, - // this is a formalization for deprecating methods. - optional bool deprecated = 33 [default = false]; - - // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, - // or neither? HTTP based RPC implementation may choose GET verb for safe - // methods, and PUT verb for idempotent methods instead of the default POST. - enum IdempotencyLevel { - IDEMPOTENCY_UNKNOWN = 0; - NO_SIDE_EFFECTS = 1; // implies idempotent - IDEMPOTENT = 2; // idempotent, but may have side effects - } - optional IdempotencyLevel idempotency_level = 34 - [default = IDEMPOTENCY_UNKNOWN]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -// A message representing a option the parser does not recognize. This only -// appears in options protos created by the compiler::Parser class. -// DescriptorPool resolves these when building Descriptor objects. Therefore, -// options protos in descriptor objects (e.g. returned by Descriptor::options(), -// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions -// in them. -message UninterpretedOption { - // The name of the uninterpreted option. Each string represents a segment in - // a dot-separated name. is_extension is true iff a segment represents an - // extension (denoted with parentheses in options specs in .proto files). - // E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents - // "foo.(bar.baz).moo". - message NamePart { - required string name_part = 1; - required bool is_extension = 2; - } - repeated NamePart name = 2; - - // The value of the uninterpreted option, in whatever type the tokenizer - // identified it as during parsing. Exactly one of these should be set. - optional string identifier_value = 3; - optional uint64 positive_int_value = 4; - optional int64 negative_int_value = 5; - optional double double_value = 6; - optional bytes string_value = 7; - optional string aggregate_value = 8; -} - -// =================================================================== -// Optional source code info - -// Encapsulates information about the original source file from which a -// FileDescriptorProto was generated. -message SourceCodeInfo { - // A Location identifies a piece of source code in a .proto file which - // corresponds to a particular definition. This information is intended - // to be useful to IDEs, code indexers, documentation generators, and similar - // tools. - // - // For example, say we have a file like: - // message Foo { - // optional string foo = 1; - // } - // Let's look at just the field definition: - // optional string foo = 1; - // ^ ^^ ^^ ^ ^^^ - // a bc de f ghi - // We have the following locations: - // span path represents - // [a,i) [ 4, 0, 2, 0 ] The whole field definition. - // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - // - // Notes: - // - A location may refer to a repeated field itself (i.e. not to any - // particular index within it). This is used whenever a set of elements are - // logically enclosed in a single code segment. For example, an entire - // extend block (possibly containing multiple extension definitions) will - // have an outer location whose path refers to the "extensions" repeated - // field without an index. - // - Multiple locations may have the same path. This happens when a single - // logical declaration is spread out across multiple places. The most - // obvious example is the "extend" block again -- there may be multiple - // extend blocks in the same scope, each of which will have the same path. - // - A location's span is not always a subset of its parent's span. For - // example, the "extendee" of an extension declaration appears at the - // beginning of the "extend" block and is shared by all extensions within - // the block. - // - Just because a location's span is a subset of some other location's span - // does not mean that it is a descendant. For example, a "group" defines - // both a type and a field in a single declaration. Thus, the locations - // corresponding to the type and field and their components will overlap. - // - Code which tries to interpret locations should probably be designed to - // ignore those that it doesn't understand, as more types of locations could - // be recorded in the future. - repeated Location location = 1; - message Location { - // Identifies which part of the FileDescriptorProto was defined at this - // location. - // - // Each element is a field number or an index. They form a path from - // the root FileDescriptorProto to the place where the definition occurs. - // For example, this path: - // [ 4, 3, 2, 7, 1 ] - // refers to: - // file.message_type(3) // 4, 3 - // .field(7) // 2, 7 - // .name() // 1 - // This is because FileDescriptorProto.message_type has field number 4: - // repeated DescriptorProto message_type = 4; - // and DescriptorProto.field has field number 2: - // repeated FieldDescriptorProto field = 2; - // and FieldDescriptorProto.name has field number 1: - // optional string name = 1; - // - // Thus, the above path gives the location of a field name. If we removed - // the last element: - // [ 4, 3, 2, 7 ] - // this path refers to the whole field declaration (from the beginning - // of the label to the terminating semicolon). - repeated int32 path = 1 [packed = true]; - - // Always has exactly three or four elements: start line, start column, - // end line (optional, otherwise assumed same as start line), end column. - // These are packed into a single field for efficiency. Note that line - // and column numbers are zero-based -- typically you will want to add - // 1 to each before displaying to a user. - repeated int32 span = 2 [packed = true]; - - // If this SourceCodeInfo represents a complete declaration, these are any - // comments appearing before and after the declaration which appear to be - // attached to the declaration. - // - // A series of line comments appearing on consecutive lines, with no other - // tokens appearing on those lines, will be treated as a single comment. - // - // leading_detached_comments will keep paragraphs of comments that appear - // before (but not connected to) the current element. Each paragraph, - // separated by empty lines, will be one comment element in the repeated - // field. - // - // Only the comment content is provided; comment markers (e.g. //) are - // stripped out. For block comments, leading whitespace and an asterisk - // will be stripped from the beginning of each line other than the first. - // Newlines are included in the output. - // - // Examples: - // - // optional int32 foo = 1; // Comment attached to foo. - // // Comment attached to bar. - // optional int32 bar = 2; - // - // optional string baz = 3; - // // Comment attached to baz. - // // Another line attached to baz. - // - // // Comment attached to moo. - // // - // // Another line attached to moo. - // optional double moo = 4; - // - // // Detached comment for corge. This is not leading or trailing comments - // // to moo or corge because there are blank lines separating it from - // // both. - // - // // Detached comment for corge paragraph 2. - // - // optional string corge = 5; - // /* Block comment attached - // * to corge. Leading asterisks - // * will be removed. */ - // /* Block comment attached to - // * grault. */ - // optional int32 grault = 6; - // - // // ignored detached comments. - optional string leading_comments = 3; - optional string trailing_comments = 4; - repeated string leading_detached_comments = 6; - } -} - -// Describes the relationship between generated code and its original source -// file. A GeneratedCodeInfo message is associated with only one generated -// source file, but may contain references to different source .proto files. -message GeneratedCodeInfo { - // An Annotation connects some span of text in generated code to an element - // of its generating .proto file. - repeated Annotation annotation = 1; - message Annotation { - // Identifies the element in the original source .proto file. This field - // is formatted the same as SourceCodeInfo.Location.path. - repeated int32 path = 1 [packed = true]; - - // Identifies the filesystem path to the original source .proto. - optional string source_file = 2; - - // Identifies the starting offset in bytes in the generated code - // that relates to the identified object. - optional int32 begin = 3; - - // Identifies the ending offset in bytes in the generated code that - // relates to the identified object. The end offset should be one past - // the last relevant byte (so the length of the text = end - begin). - optional int32 end = 4; - - // Represents the identified object's effect on the element in the original - // .proto file. - enum Semantic { - // There is no effect or the effect is indescribable. - NONE = 0; - // The element is set or otherwise mutated. - SET = 1; - // An alias to the element is returned. - ALIAS = 2; - } - optional Semantic semantic = 5; - } -} diff --git a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/duration.proto b/src/examples/app/app_message/protoc-22.2/include/google/protobuf/duration.proto deleted file mode 100644 index 41f40c2..0000000 --- a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/duration.proto +++ /dev/null @@ -1,115 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/protobuf/types/known/durationpb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "DurationProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; - -// A Duration represents a signed, fixed-length span of time represented -// as a count of seconds and fractions of seconds at nanosecond -// resolution. It is independent of any calendar and concepts like "day" -// or "month". It is related to Timestamp in that the difference between -// two Timestamp values is a Duration and it can be added or subtracted -// from a Timestamp. Range is approximately +-10,000 years. -// -// # Examples -// -// Example 1: Compute Duration from two Timestamps in pseudo code. -// -// Timestamp start = ...; -// Timestamp end = ...; -// Duration duration = ...; -// -// duration.seconds = end.seconds - start.seconds; -// duration.nanos = end.nanos - start.nanos; -// -// if (duration.seconds < 0 && duration.nanos > 0) { -// duration.seconds += 1; -// duration.nanos -= 1000000000; -// } else if (duration.seconds > 0 && duration.nanos < 0) { -// duration.seconds -= 1; -// duration.nanos += 1000000000; -// } -// -// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. -// -// Timestamp start = ...; -// Duration duration = ...; -// Timestamp end = ...; -// -// end.seconds = start.seconds + duration.seconds; -// end.nanos = start.nanos + duration.nanos; -// -// if (end.nanos < 0) { -// end.seconds -= 1; -// end.nanos += 1000000000; -// } else if (end.nanos >= 1000000000) { -// end.seconds += 1; -// end.nanos -= 1000000000; -// } -// -// Example 3: Compute Duration from datetime.timedelta in Python. -// -// td = datetime.timedelta(days=3, minutes=10) -// duration = Duration() -// duration.FromTimedelta(td) -// -// # JSON Mapping -// -// In JSON format, the Duration type is encoded as a string rather than an -// object, where the string ends in the suffix "s" (indicating seconds) and -// is preceded by the number of seconds, with nanoseconds expressed as -// fractional seconds. For example, 3 seconds with 0 nanoseconds should be -// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should -// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 -// microsecond should be expressed in JSON format as "3.000001s". -// -message Duration { - // Signed seconds of the span of time. Must be from -315,576,000,000 - // to +315,576,000,000 inclusive. Note: these bounds are computed from: - // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years - int64 seconds = 1; - - // Signed fractions of a second at nanosecond resolution of the span - // of time. Durations less than one second are represented with a 0 - // `seconds` field and a positive or negative `nanos` field. For durations - // of one second or more, a non-zero value for the `nanos` field must be - // of the same sign as the `seconds` field. Must be from -999,999,999 - // to +999,999,999 inclusive. - int32 nanos = 2; -} diff --git a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/empty.proto b/src/examples/app/app_message/protoc-22.2/include/google/protobuf/empty.proto deleted file mode 100644 index b87c89d..0000000 --- a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/empty.proto +++ /dev/null @@ -1,51 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option go_package = "google.golang.org/protobuf/types/known/emptypb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "EmptyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; - -// A generic empty message that you can re-use to avoid defining duplicated -// empty messages in your APIs. A typical example is to use it as the request -// or the response type of an API method. For instance: -// -// service Foo { -// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); -// } -// -message Empty {} diff --git a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/field_mask.proto b/src/examples/app/app_message/protoc-22.2/include/google/protobuf/field_mask.proto deleted file mode 100644 index b28334b..0000000 --- a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/field_mask.proto +++ /dev/null @@ -1,245 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option java_package = "com.google.protobuf"; -option java_outer_classname = "FieldMaskProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "google.golang.org/protobuf/types/known/fieldmaskpb"; -option cc_enable_arenas = true; - -// `FieldMask` represents a set of symbolic field paths, for example: -// -// paths: "f.a" -// paths: "f.b.d" -// -// Here `f` represents a field in some root message, `a` and `b` -// fields in the message found in `f`, and `d` a field found in the -// message in `f.b`. -// -// Field masks are used to specify a subset of fields that should be -// returned by a get operation or modified by an update operation. -// Field masks also have a custom JSON encoding (see below). -// -// # Field Masks in Projections -// -// When used in the context of a projection, a response message or -// sub-message is filtered by the API to only contain those fields as -// specified in the mask. For example, if the mask in the previous -// example is applied to a response message as follows: -// -// f { -// a : 22 -// b { -// d : 1 -// x : 2 -// } -// y : 13 -// } -// z: 8 -// -// The result will not contain specific values for fields x,y and z -// (their value will be set to the default, and omitted in proto text -// output): -// -// -// f { -// a : 22 -// b { -// d : 1 -// } -// } -// -// A repeated field is not allowed except at the last position of a -// paths string. -// -// If a FieldMask object is not present in a get operation, the -// operation applies to all fields (as if a FieldMask of all fields -// had been specified). -// -// Note that a field mask does not necessarily apply to the -// top-level response message. In case of a REST get operation, the -// field mask applies directly to the response, but in case of a REST -// list operation, the mask instead applies to each individual message -// in the returned resource list. In case of a REST custom method, -// other definitions may be used. Where the mask applies will be -// clearly documented together with its declaration in the API. In -// any case, the effect on the returned resource/resources is required -// behavior for APIs. -// -// # Field Masks in Update Operations -// -// A field mask in update operations specifies which fields of the -// targeted resource are going to be updated. The API is required -// to only change the values of the fields as specified in the mask -// and leave the others untouched. If a resource is passed in to -// describe the updated values, the API ignores the values of all -// fields not covered by the mask. -// -// If a repeated field is specified for an update operation, new values will -// be appended to the existing repeated field in the target resource. Note that -// a repeated field is only allowed in the last position of a `paths` string. -// -// If a sub-message is specified in the last position of the field mask for an -// update operation, then new value will be merged into the existing sub-message -// in the target resource. -// -// For example, given the target message: -// -// f { -// b { -// d: 1 -// x: 2 -// } -// c: [1] -// } -// -// And an update message: -// -// f { -// b { -// d: 10 -// } -// c: [2] -// } -// -// then if the field mask is: -// -// paths: ["f.b", "f.c"] -// -// then the result will be: -// -// f { -// b { -// d: 10 -// x: 2 -// } -// c: [1, 2] -// } -// -// An implementation may provide options to override this default behavior for -// repeated and message fields. -// -// In order to reset a field's value to the default, the field must -// be in the mask and set to the default value in the provided resource. -// Hence, in order to reset all fields of a resource, provide a default -// instance of the resource and set all fields in the mask, or do -// not provide a mask as described below. -// -// If a field mask is not present on update, the operation applies to -// all fields (as if a field mask of all fields has been specified). -// Note that in the presence of schema evolution, this may mean that -// fields the client does not know and has therefore not filled into -// the request will be reset to their default. If this is unwanted -// behavior, a specific service may require a client to always specify -// a field mask, producing an error if not. -// -// As with get operations, the location of the resource which -// describes the updated values in the request message depends on the -// operation kind. In any case, the effect of the field mask is -// required to be honored by the API. -// -// ## Considerations for HTTP REST -// -// The HTTP kind of an update operation which uses a field mask must -// be set to PATCH instead of PUT in order to satisfy HTTP semantics -// (PUT must only be used for full updates). -// -// # JSON Encoding of Field Masks -// -// In JSON, a field mask is encoded as a single string where paths are -// separated by a comma. Fields name in each path are converted -// to/from lower-camel naming conventions. -// -// As an example, consider the following message declarations: -// -// message Profile { -// User user = 1; -// Photo photo = 2; -// } -// message User { -// string display_name = 1; -// string address = 2; -// } -// -// In proto a field mask for `Profile` may look as such: -// -// mask { -// paths: "user.display_name" -// paths: "photo" -// } -// -// In JSON, the same mask is represented as below: -// -// { -// mask: "user.displayName,photo" -// } -// -// # Field Masks and Oneof Fields -// -// Field masks treat fields in oneofs just as regular fields. Consider the -// following message: -// -// message SampleMessage { -// oneof test_oneof { -// string name = 4; -// SubMessage sub_message = 9; -// } -// } -// -// The field mask can be: -// -// mask { -// paths: "name" -// } -// -// Or: -// -// mask { -// paths: "sub_message" -// } -// -// Note that oneof type names ("test_oneof" in this case) cannot be used in -// paths. -// -// ## Field Mask Verification -// -// The implementation of any API method which has a FieldMask type field in the -// request should verify the included field paths, and return an -// `INVALID_ARGUMENT` error if any path is unmappable. -message FieldMask { - // The set of field mask paths. - repeated string paths = 1; -} diff --git a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/source_context.proto b/src/examples/app/app_message/protoc-22.2/include/google/protobuf/source_context.proto deleted file mode 100644 index 135f50f..0000000 --- a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/source_context.proto +++ /dev/null @@ -1,48 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option java_package = "com.google.protobuf"; -option java_outer_classname = "SourceContextProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "google.golang.org/protobuf/types/known/sourcecontextpb"; - -// `SourceContext` represents information about the source of a -// protobuf element, like the file in which it is defined. -message SourceContext { - // The path-qualified name of the .proto file that contained the associated - // protobuf element. For example: `"google/protobuf/source_context.proto"`. - string file_name = 1; -} diff --git a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/struct.proto b/src/examples/app/app_message/protoc-22.2/include/google/protobuf/struct.proto deleted file mode 100644 index c4ea645..0000000 --- a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/struct.proto +++ /dev/null @@ -1,95 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/protobuf/types/known/structpb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "StructProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; - -// `Struct` represents a structured data value, consisting of fields -// which map to dynamically typed values. In some languages, `Struct` -// might be supported by a native representation. For example, in -// scripting languages like JS a struct is represented as an -// object. The details of that representation are described together -// with the proto support for the language. -// -// The JSON representation for `Struct` is JSON object. -message Struct { - // Unordered map of dynamically typed values. - map fields = 1; -} - -// `Value` represents a dynamically typed value which can be either -// null, a number, a string, a boolean, a recursive struct value, or a -// list of values. A producer of value is expected to set one of these -// variants. Absence of any variant indicates an error. -// -// The JSON representation for `Value` is JSON value. -message Value { - // The kind of value. - oneof kind { - // Represents a null value. - NullValue null_value = 1; - // Represents a double value. - double number_value = 2; - // Represents a string value. - string string_value = 3; - // Represents a boolean value. - bool bool_value = 4; - // Represents a structured value. - Struct struct_value = 5; - // Represents a repeated `Value`. - ListValue list_value = 6; - } -} - -// `NullValue` is a singleton enumeration to represent the null value for the -// `Value` type union. -// -// The JSON representation for `NullValue` is JSON `null`. -enum NullValue { - // Null value. - NULL_VALUE = 0; -} - -// `ListValue` is a wrapper around a repeated field of values. -// -// The JSON representation for `ListValue` is JSON array. -message ListValue { - // Repeated field of dynamically typed values. - repeated Value values = 1; -} diff --git a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/timestamp.proto b/src/examples/app/app_message/protoc-22.2/include/google/protobuf/timestamp.proto deleted file mode 100644 index 2fb527c..0000000 --- a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/timestamp.proto +++ /dev/null @@ -1,144 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/protobuf/types/known/timestamppb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "TimestampProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; - -// A Timestamp represents a point in time independent of any time zone or local -// calendar, encoded as a count of seconds and fractions of seconds at -// nanosecond resolution. The count is relative to an epoch at UTC midnight on -// January 1, 1970, in the proleptic Gregorian calendar which extends the -// Gregorian calendar backwards to year one. -// -// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap -// second table is needed for interpretation, using a [24-hour linear -// smear](https://developers.google.com/time/smear). -// -// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By -// restricting to that range, we ensure that we can convert to and from [RFC -// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. -// -// # Examples -// -// Example 1: Compute Timestamp from POSIX `time()`. -// -// Timestamp timestamp; -// timestamp.set_seconds(time(NULL)); -// timestamp.set_nanos(0); -// -// Example 2: Compute Timestamp from POSIX `gettimeofday()`. -// -// struct timeval tv; -// gettimeofday(&tv, NULL); -// -// Timestamp timestamp; -// timestamp.set_seconds(tv.tv_sec); -// timestamp.set_nanos(tv.tv_usec * 1000); -// -// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. -// -// FILETIME ft; -// GetSystemTimeAsFileTime(&ft); -// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; -// -// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z -// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. -// Timestamp timestamp; -// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); -// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); -// -// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. -// -// long millis = System.currentTimeMillis(); -// -// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) -// .setNanos((int) ((millis % 1000) * 1000000)).build(); -// -// Example 5: Compute Timestamp from Java `Instant.now()`. -// -// Instant now = Instant.now(); -// -// Timestamp timestamp = -// Timestamp.newBuilder().setSeconds(now.getEpochSecond()) -// .setNanos(now.getNano()).build(); -// -// Example 6: Compute Timestamp from current time in Python. -// -// timestamp = Timestamp() -// timestamp.GetCurrentTime() -// -// # JSON Mapping -// -// In JSON format, the Timestamp type is encoded as a string in the -// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the -// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" -// where {year} is always expressed using four digits while {month}, {day}, -// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional -// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), -// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone -// is required. A proto3 JSON serializer should always use UTC (as indicated by -// "Z") when printing the Timestamp type and a proto3 JSON parser should be -// able to accept both UTC and other timezones (as indicated by an offset). -// -// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past -// 01:30 UTC on January 15, 2017. -// -// In JavaScript, one can convert a Date object to this format using the -// standard -// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) -// method. In Python, a standard `datetime.datetime` object can be converted -// to this format using -// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with -// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use -// the Joda Time's [`ISODateTimeFormat.dateTime()`]( -// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D -// ) to obtain a formatter capable of generating timestamps in this format. -// -message Timestamp { - // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - // 9999-12-31T23:59:59Z inclusive. - int64 seconds = 1; - - // Non-negative fractions of a second at nanosecond resolution. Negative - // second values with fractions must still have non-negative nanos values - // that count forward in time. Must be from 0 to 999,999,999 - // inclusive. - int32 nanos = 2; -} diff --git a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/type.proto b/src/examples/app/app_message/protoc-22.2/include/google/protobuf/type.proto deleted file mode 100644 index fd25a41..0000000 --- a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/type.proto +++ /dev/null @@ -1,187 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -import "google/protobuf/any.proto"; -import "google/protobuf/source_context.proto"; - -option cc_enable_arenas = true; -option java_package = "com.google.protobuf"; -option java_outer_classname = "TypeProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "google.golang.org/protobuf/types/known/typepb"; - -// A protocol buffer message type. -message Type { - // The fully qualified message name. - string name = 1; - // The list of fields. - repeated Field fields = 2; - // The list of types appearing in `oneof` definitions in this type. - repeated string oneofs = 3; - // The protocol buffer options. - repeated Option options = 4; - // The source context. - SourceContext source_context = 5; - // The source syntax. - Syntax syntax = 6; -} - -// A single field of a message type. -message Field { - // Basic field types. - enum Kind { - // Field type unknown. - TYPE_UNKNOWN = 0; - // Field type double. - TYPE_DOUBLE = 1; - // Field type float. - TYPE_FLOAT = 2; - // Field type int64. - TYPE_INT64 = 3; - // Field type uint64. - TYPE_UINT64 = 4; - // Field type int32. - TYPE_INT32 = 5; - // Field type fixed64. - TYPE_FIXED64 = 6; - // Field type fixed32. - TYPE_FIXED32 = 7; - // Field type bool. - TYPE_BOOL = 8; - // Field type string. - TYPE_STRING = 9; - // Field type group. Proto2 syntax only, and deprecated. - TYPE_GROUP = 10; - // Field type message. - TYPE_MESSAGE = 11; - // Field type bytes. - TYPE_BYTES = 12; - // Field type uint32. - TYPE_UINT32 = 13; - // Field type enum. - TYPE_ENUM = 14; - // Field type sfixed32. - TYPE_SFIXED32 = 15; - // Field type sfixed64. - TYPE_SFIXED64 = 16; - // Field type sint32. - TYPE_SINT32 = 17; - // Field type sint64. - TYPE_SINT64 = 18; - } - - // Whether a field is optional, required, or repeated. - enum Cardinality { - // For fields with unknown cardinality. - CARDINALITY_UNKNOWN = 0; - // For optional fields. - CARDINALITY_OPTIONAL = 1; - // For required fields. Proto2 syntax only. - CARDINALITY_REQUIRED = 2; - // For repeated fields. - CARDINALITY_REPEATED = 3; - } - - // The field type. - Kind kind = 1; - // The field cardinality. - Cardinality cardinality = 2; - // The field number. - int32 number = 3; - // The field name. - string name = 4; - // The field type URL, without the scheme, for message or enumeration - // types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. - string type_url = 6; - // The index of the field type in `Type.oneofs`, for message or enumeration - // types. The first type has index 1; zero means the type is not in the list. - int32 oneof_index = 7; - // Whether to use alternative packed wire representation. - bool packed = 8; - // The protocol buffer options. - repeated Option options = 9; - // The field JSON name. - string json_name = 10; - // The string value of the default value of this field. Proto2 syntax only. - string default_value = 11; -} - -// Enum type definition. -message Enum { - // Enum type name. - string name = 1; - // Enum value definitions. - repeated EnumValue enumvalue = 2; - // Protocol buffer options. - repeated Option options = 3; - // The source context. - SourceContext source_context = 4; - // The source syntax. - Syntax syntax = 5; -} - -// Enum value definition. -message EnumValue { - // Enum value name. - string name = 1; - // Enum value number. - int32 number = 2; - // Protocol buffer options. - repeated Option options = 3; -} - -// A protocol buffer option, which can be attached to a message, field, -// enumeration, etc. -message Option { - // The option's name. For protobuf built-in options (options defined in - // descriptor.proto), this is the short name. For example, `"map_entry"`. - // For custom options, it should be the fully-qualified name. For example, - // `"google.api.http"`. - string name = 1; - // The option's value packed in an Any message. If the value is a primitive, - // the corresponding wrapper type defined in google/protobuf/wrappers.proto - // should be used. If the value is an enum, it should be stored as an int32 - // value using the google.protobuf.Int32Value type. - Any value = 2; -} - -// The syntax in which a protocol buffer element is defined. -enum Syntax { - // Syntax `proto2`. - SYNTAX_PROTO2 = 0; - // Syntax `proto3`. - SYNTAX_PROTO3 = 1; -} diff --git a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/wrappers.proto b/src/examples/app/app_message/protoc-22.2/include/google/protobuf/wrappers.proto deleted file mode 100644 index 1959fa5..0000000 --- a/src/examples/app/app_message/protoc-22.2/include/google/protobuf/wrappers.proto +++ /dev/null @@ -1,123 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Wrappers for primitive (non-message) types. These types are useful -// for embedding primitives in the `google.protobuf.Any` type and for places -// where we need to distinguish between the absence of a primitive -// typed field and its default value. -// -// These wrappers have no meaningful use within repeated fields as they lack -// the ability to detect presence on individual elements. -// These wrappers have no meaningful use within a map or a oneof since -// individual entries of a map or fields of a oneof can already detect presence. - -syntax = "proto3"; - -package google.protobuf; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/protobuf/types/known/wrapperspb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "WrappersProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; - -// Wrapper message for `double`. -// -// The JSON representation for `DoubleValue` is JSON number. -message DoubleValue { - // The double value. - double value = 1; -} - -// Wrapper message for `float`. -// -// The JSON representation for `FloatValue` is JSON number. -message FloatValue { - // The float value. - float value = 1; -} - -// Wrapper message for `int64`. -// -// The JSON representation for `Int64Value` is JSON string. -message Int64Value { - // The int64 value. - int64 value = 1; -} - -// Wrapper message for `uint64`. -// -// The JSON representation for `UInt64Value` is JSON string. -message UInt64Value { - // The uint64 value. - uint64 value = 1; -} - -// Wrapper message for `int32`. -// -// The JSON representation for `Int32Value` is JSON number. -message Int32Value { - // The int32 value. - int32 value = 1; -} - -// Wrapper message for `uint32`. -// -// The JSON representation for `UInt32Value` is JSON number. -message UInt32Value { - // The uint32 value. - uint32 value = 1; -} - -// Wrapper message for `bool`. -// -// The JSON representation for `BoolValue` is JSON `true` and `false`. -message BoolValue { - // The bool value. - bool value = 1; -} - -// Wrapper message for `string`. -// -// The JSON representation for `StringValue` is JSON string. -message StringValue { - // The string value. - string value = 1; -} - -// Wrapper message for `bytes`. -// -// The JSON representation for `BytesValue` is JSON string. -message BytesValue { - // The bytes value. - bytes value = 1; -} diff --git a/src/examples/app/app_message/protoc-22.2/readme.txt b/src/examples/app/app_message/protoc-22.2/readme.txt deleted file mode 100644 index f7f091f..0000000 --- a/src/examples/app/app_message/protoc-22.2/readme.txt +++ /dev/null @@ -1,12 +0,0 @@ -Protocol Buffers - Google's data interchange format -Copyright 2008 Google Inc. -https://developers.google.com/protocol-buffers/ -This package contains a precompiled binary version of the protocol buffer -compiler (protoc). This binary is intended for users who want to use Protocol -Buffers in languages other than C++ but do not want to compile protoc -themselves. To install, simply place this binary somewhere in your PATH. -If you intend to use the included well known types then don't forget to -copy the contents of the 'include' directory somewhere as well, for example -into '/usr/local/include/'. -Please refer to our official github site for more installation instructions: - https://github.com/protocolbuffers/protobuf diff --git a/src/examples/app/app_message/protos/draw_data_storage.proto b/src/examples/app/app_message/protos/draw_data_storage.proto deleted file mode 100644 index 3ded330..0000000 --- a/src/examples/app/app_message/protos/draw_data_storage.proto +++ /dev/null @@ -1,134 +0,0 @@ -syntax = "proto3"; - -package graphicData; - -message RtssGraphicStorage { - Canvas canvas = 1; - repeated Link links = 2; - repeated IscsFan iscsFans = 3; - repeated Platform Platforms = 4; - repeated Station stations = 5; - repeated Rect Rects = 6; - repeated Train train = 7; - repeated Signal signals = 8; -} - -message Canvas { - // 画布宽 - int32 width = 1; - // 画布高 - int32 height = 2; - // 背景色 - string backgroundColor = 3; - // 视口变换 - Transform viewportTransform = 4; -} - -message Point { - // x坐标 - float x = 1; - // y坐标 - float y = 2; -} - -//变换 -message Transform { - // 位移 - Point position = 1; - // 缩放 - Point scale = 2; - // 旋转弧度 - float rotation = 3; - // 歪斜 - Point skew = 4; -} - -//子元素变换 -message ChildTransform { - // 子元素名称 - string name = 1; - // 子元素变换 - Transform transform = 2; -} -// 公共属性 -message CommonInfo { - string id = 1; - string graphicType = 2; - Transform transform = 3; - repeated ChildTransform childTransforms = 4; -} - -message Link { - CommonInfo common = 1; - string code = 2; - bool curve = 3; // 是否曲线 - int32 segmentsCount = 4; // 曲线分段数 - int32 lineWidth = 5; // 线宽 - string lineColor = 6; // 线色 - repeated Point points = 7; // 点坐标列表 -} - -message Rect { - CommonInfo common = 1; - string code = 2; - int32 lineWidth = 3; // 线宽 - string lineColor = 4; // 线色 - Point point = 5; // 位置坐标 - float width = 6;//宽度 - float height = 7; //高度 - repeated Point points = 8; // 点坐标列表 -} - -message Platform { - CommonInfo common = 1; - string code = 2; - bool hasdoor = 3; // 是否有屏蔽门 - string trainDirection = 4; // 行驶方向--屏蔽门上下 - int32 lineWidth = 5; // 线宽 - string lineColor = 6; // 站台线色 - string lineColorDoor = 7; // 屏蔽门线色 - Point point = 8; // 位置坐标 - float width = 9;//宽度 - float height = 10; //高度 - repeated string orbitCode = 11;//站台轨 -} - -message Station { - CommonInfo common = 1; - string code = 2; - bool hasCircle = 3; // 是否有圆圈--线网图 - int32 radius = 4; // 半径 - int32 borderWidth = 5; // 边框线宽 - string borderColor = 6; // 边框颜色 - string fillColor = 7; // 圆填充颜色 - string codeColor = 8; // 车站字体颜色 - int32 codeFontSize = 9; // 车站字体大小 - Point point = 10; // 位置坐标 - Point circlePoint = 11; // 位置坐标 -} - -message Train { - CommonInfo common = 1; - string code = 2; - string codeColor = 3; // 车号颜色 - int32 codeFontSize = 4; // 车号字体大小 - Point point = 5; // 位置坐标 - string trainDirection = 6; // 行驶方向 - bool hasBorder = 7; // 是否有边框 - int32 borderWidth = 8; // 边框线宽 - string borderColor = 9; // 边框颜色 - string headColor = 10; // 箭头颜色 - string bodyColor = 11; // 背景色 -} - -message IscsFan { - CommonInfo common = 1; - string code = 2; -} - -message Turnout {} - -message Signal { - CommonInfo common = 1; - string code = 2; -} diff --git a/src/examples/app/app_message/protos/graphic_states.proto b/src/examples/app/app_message/protos/graphic_states.proto deleted file mode 100644 index 6c9a057..0000000 --- a/src/examples/app/app_message/protos/graphic_states.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -package graphicStates; - -// 公共属性 -message CommonState { - string code = 1; - string graphicType = 2; -} - -message IscsFan { - CommonState common = 1; - int32 state = 2; -} diff --git a/src/examples/app/configs/TokenManage.ts b/src/examples/app/configs/TokenManage.ts deleted file mode 100644 index 11dddf9..0000000 --- a/src/examples/app/configs/TokenManage.ts +++ /dev/null @@ -1,13 +0,0 @@ -const JwtTokenKey = 'jwttoken'; - -export function saveJwtToken(token: string) { - sessionStorage.setItem(JwtTokenKey, `Bearer ${token}`); -} - -export function getJwtToken(): string | null { - return sessionStorage.getItem(JwtTokenKey); -} - -export function clearJwtToken(): void { - sessionStorage.removeItem(JwtTokenKey); -} diff --git a/src/examples/app/configs/UrlManage.ts b/src/examples/app/configs/UrlManage.ts deleted file mode 100644 index e6e0c1b..0000000 --- a/src/examples/app/configs/UrlManage.ts +++ /dev/null @@ -1,16 +0,0 @@ -function getHost(): string { - // return '192.168.3.7:9081'; - return '192.168.3.233:9081'; - // return '192.168.3.7:9081'; -} - -export function getHttpBase() { - return `http://${getHost()}`; -} - -export function getWebsocketUrl() { - const host = '192.168.3.233:8000'; - return `ws://${host}/connection/websocket`; - // const host = '192.168.3.233:9081'; - // return `ws://${host}/ws-default`; -} diff --git a/src/examples/app/graphics/GraphicDataBase.ts b/src/examples/app/graphics/GraphicDataBase.ts deleted file mode 100644 index 263cb87..0000000 --- a/src/examples/app/graphics/GraphicDataBase.ts +++ /dev/null @@ -1,141 +0,0 @@ -import * as pb_1 from 'google-protobuf'; -import { - ChildTransform, - GraphicData, - GraphicState, - GraphicTransform, - IChildTransform, - IGraphicTransform, -} from 'src/jlgraphic'; -import { toStorageTransform } from '..'; -import { graphicData } from '../protos/draw_data_storage'; -import { graphicStates } from '../protos/graphic_states'; - -export interface ICommonInfo { - id: string; - graphicType: string; - transform: IGraphicTransform; - childTransforms: IChildTransform[]; -} - -export interface IProtoGraphicData extends pb_1.Message { - common: ICommonInfo; - code: string; -} - -export abstract class GraphicDataBase implements GraphicData { - _data: IProtoGraphicData; - constructor(data: IProtoGraphicData) { - this._data = data; - } - - static defaultCommonInfo(graphicType: string): graphicData.CommonInfo { - return new graphicData.CommonInfo({ - id: '', - graphicType: graphicType, - transform: new graphicData.Transform({ - position: new graphicData.Point({ x: 0, y: 0 }), - scale: new graphicData.Point({ x: 1, y: 1 }), - rotation: 0, - skew: new graphicData.Point({ x: 0, y: 0 }), - }), - childTransforms: [], - }); - } - - getData(): D { - return this._data as D; - } - - get id(): string { - return this._data.common.id; - } - set id(v: string) { - this._data.common.id = v; - } - get graphicType(): string { - return this._data.common.graphicType; - } - set graphicType(v: string) { - this._data.common.graphicType = v; - } - get transform(): GraphicTransform { - return GraphicTransform.from(this._data.common.transform); - } - set transform(v: GraphicTransform) { - this._data.common.transform = toStorageTransform(v); - } - get childTransforms(): ChildTransform[] | undefined { - const cts: ChildTransform[] = []; - if (this._data.common.childTransforms) { - this._data.common.childTransforms.forEach((ct) => { - cts.push(ChildTransform.from(ct)); - }); - } - return cts; - } - set childTransforms(v: ChildTransform[] | undefined) { - if (v) { - const cts: graphicData.ChildTransform[] = []; - v.forEach((ct) => - cts.push( - new graphicData.ChildTransform({ - ...ct, - transform: toStorageTransform(ct.transform), - }) - ) - ); - this._data.common.childTransforms = cts; - } else { - this._data.common.childTransforms = []; - } - } - - clone(): GraphicData { - throw new Error('Method not implemented.'); - } - copyFrom(gd: GraphicDataBase): void { - pb_1.Message.copyInto(gd._data, this._data); - } - eq(other: GraphicDataBase): boolean { - return pb_1.Message.equals(this._data, other._data); - } -} - -export interface IProtoGraphicState extends pb_1.Message { - common: graphicStates.CommonState; -} - -export abstract class GraphicStateBase implements GraphicState { - _state: IProtoGraphicState; - constructor(state: IProtoGraphicState) { - this._state = state; - } - - static defaultCommonState(graphicType: string): graphicStates.CommonState { - return new graphicStates.CommonState({ - code: '', - graphicType: graphicType, - }); - } - - getState(): S { - return this._state as S; - } - - get code(): string { - return this._state.common.code; - } - get graphicType(): string { - return this._state.common.graphicType; - } - clone(): GraphicState { - throw new Error('Method not implemented.'); - } - copyFrom(data: GraphicStateBase): void { - pb_1.Message.copyInto(data._state, this._state); - } - eq(data: GraphicStateBase): boolean { - return pb_1.Message.equals(this._state, data._state); - } -} diff --git a/src/examples/app/graphics/IscsFanInteraction.ts b/src/examples/app/graphics/IscsFanInteraction.ts deleted file mode 100644 index 255af32..0000000 --- a/src/examples/app/graphics/IscsFanInteraction.ts +++ /dev/null @@ -1,72 +0,0 @@ -import * as pb_1 from 'google-protobuf'; -import { - IIscsFanData, - IIscsFanState, - IscsFan, -} from 'src/graphics/iscs-fan/IscsFan'; -import { graphicData } from '../protos/draw_data_storage'; -import { graphicStates } from '../protos/graphic_states'; -import { GraphicDataBase, GraphicStateBase } from './GraphicDataBase'; - -export class IscsFanData extends GraphicDataBase implements IIscsFanData { - constructor(data?: graphicData.IscsFan) { - let fan; - if (data) { - fan = data; - } else { - fan = new graphicData.IscsFan({ - common: GraphicDataBase.defaultCommonInfo(IscsFan.Type), - }); - } - super(fan); - } - - public get data(): graphicData.IscsFan { - return this.getData(); - } - - get code(): string { - return this.data.code; - } - set code(v: string) { - this.data.code = v; - } - clone(): IscsFanData { - return new IscsFanData(this.data.cloneMessage()); - } - copyFrom(data: IscsFanData): void { - pb_1.Message.copyInto(data.data, this.data); - } - eq(other: IscsFanData): boolean { - return pb_1.Message.equals(this.data, other.data); - } -} - -export class IscsFanState extends GraphicStateBase implements IIscsFanState { - constructor(proto?: graphicStates.IscsFan) { - let states; - if (proto) { - states = proto; - states.common.graphicType = IscsFan.Type; - } else { - states = new graphicStates.IscsFan({ - common: GraphicStateBase.defaultCommonState(IscsFan.Type), - }); - } - super(states); - } - - get states(): graphicStates.IscsFan { - return this.getState(); - } - - get state(): number { - return this.states.state; - } - set state(v: number) { - this.states.state = v; - } - clone(): IscsFanState { - return new IscsFanState(this.states.cloneMessage()); - } -} diff --git a/src/examples/app/graphics/LinkInteraction.ts b/src/examples/app/graphics/LinkInteraction.ts deleted file mode 100644 index dab8c3f..0000000 --- a/src/examples/app/graphics/LinkInteraction.ts +++ /dev/null @@ -1,77 +0,0 @@ -import * as pb_1 from 'google-protobuf'; -import { IPointData } from 'pixi.js'; -import { ILinkData } from 'src/graphics/link/Link'; -import { graphicData } from '../protos/draw_data_storage'; -import { GraphicDataBase } from './GraphicDataBase'; - -export class LinkData extends GraphicDataBase implements ILinkData { - constructor(data?: graphicData.Link) { - let link; - if (!data) { - link = new graphicData.Link({ - common: GraphicDataBase.defaultCommonInfo(), - }); - } else { - link = data; - } - super(link); - } - - public get data(): graphicData.Link { - return this.getData(); - } - - get code(): string { - return this.data.code; - } - set code(v: string) { - this.data.code = v; - } - get curve(): boolean { - return this.data.curve; - } - set curve(v: boolean) { - this.data.curve = v; - } - get curveNumber(): number { - return this.data.curve ? 1 : 0; - } - set curveNumber(v: number) { - this.data.curve = v === 0 ? false : true; - } - get segmentsCount(): number { - return this.data.segmentsCount; - } - set segmentsCount(v: number) { - this.data.segmentsCount = v; - } - get points(): IPointData[] { - return this.data.points; - } - set points(points: IPointData[]) { - this.data.points = points.map( - (p) => new graphicData.Point({ x: p.x, y: p.y }) - ); - } - get lineWidth(): number { - return this.data.lineWidth; - } - set lineWidth(v: number) { - this.data.lineWidth = v; - } - get lineColor(): string { - return this.data.lineColor; - } - set lineColor(v: string) { - this.data.lineColor = v; - } - clone(): LinkData { - return new LinkData(this.data.cloneMessage()); - } - copyFrom(data: LinkData): void { - pb_1.Message.copyInto(data.data, this.data); - } - eq(other: LinkData): boolean { - return pb_1.Message.equals(this.data, other.data); - } -} diff --git a/src/examples/app/graphics/PlatformInteraction.ts b/src/examples/app/graphics/PlatformInteraction.ts deleted file mode 100644 index b438c83..0000000 --- a/src/examples/app/graphics/PlatformInteraction.ts +++ /dev/null @@ -1,88 +0,0 @@ -import * as pb_1 from 'google-protobuf'; -import { IPointData } from 'pixi.js'; -import { IPlatformData } from 'src/graphics/platform/Platform'; -import { graphicData } from '../protos/draw_data_storage'; -import { GraphicDataBase } from './GraphicDataBase'; - -export class PlatformData extends GraphicDataBase implements IPlatformData { - constructor(data?: graphicData.Platform) { - let platform; - if (!data) { - platform = new graphicData.Platform({ - common: GraphicDataBase.defaultCommonInfo(), - }); - } else { - platform = data; - } - super(platform); - } - - public get data(): graphicData.Platform { - return this.getData(); - } - - get code(): string { - return this.data.code; - } - set code(v: string) { - this.data.code = v; - } - get hasdoor(): boolean { - return this.data.hasdoor; - } - set hasdoor(v: boolean) { - this.data.hasdoor = v; - } - get trainDirection(): string { - return this.data.trainDirection; - } - set trainDirection(v: string) { - this.data.trainDirection = v; - } - get lineWidth(): number { - return this.data.lineWidth; - } - set lineWidth(v: number) { - this.data.lineWidth = v; - } - get lineColor(): string { - return this.data.lineColor; - } - set lineColor(v: string) { - this.data.lineColor = v; - } - get lineColorDoor(): string { - return this.data.lineColorDoor; - } - set lineColorDoor(v: string) { - this.data.lineColorDoor = v; - } - get point(): IPointData { - return this.data.point; - } - set point(point: IPointData) { - this.data.point = new graphicData.Point({ x: point.x, y: point.y }); - } - get width(): number { - return this.data.width; - } - set width(v: number) { - this.data.width = v; - } - get height(): number { - return this.data.height; - } - set height(v: number) { - this.data.height = v; - } - - clone(): PlatformData { - return new PlatformData(this.data.cloneMessage()); - } - copyFrom(data: PlatformData): void { - pb_1.Message.copyInto(data.data, this.data); - } - eq(other: PlatformData): boolean { - return pb_1.Message.equals(this.data, other.data); - } -} diff --git a/src/examples/app/graphics/RectInteraction.ts b/src/examples/app/graphics/RectInteraction.ts deleted file mode 100644 index 9951752..0000000 --- a/src/examples/app/graphics/RectInteraction.ts +++ /dev/null @@ -1,77 +0,0 @@ -import * as pb_1 from 'google-protobuf'; -import { IPointData } from 'pixi.js'; -import { IRectData } from 'src/graphics/rect/Rect'; -import { graphicData } from '../protos/draw_data_storage'; -import { GraphicDataBase } from './GraphicDataBase'; - -export class RectData extends GraphicDataBase implements IRectData { - constructor(data?: graphicData.Rect) { - let rect; - if (!data) { - rect = new graphicData.Rect({ - common: GraphicDataBase.defaultCommonInfo(), - }); - } else { - rect = data; - } - super(rect); - } - - public get data(): graphicData.Rect { - return this.getData(); - } - - get code(): string { - return this.data.code; - } - set code(v: string) { - this.data.code = v; - } - get lineWidth(): number { - return this.data.lineWidth; - } - set lineWidth(v: number) { - this.data.lineWidth = v; - } - get lineColor(): string { - return this.data.lineColor; - } - set lineColor(v: string) { - this.data.lineColor = v; - } - get point(): IPointData { - return this.data.point; - } - set point(point: IPointData) { - this.data.point = new graphicData.Point({ x: point.x, y: point.y }); - } - get width(): number { - return this.data.width; - } - set width(v: number) { - this.data.width = v; - } - get height(): number { - return this.data.height; - } - set height(v: number) { - this.data.height = v; - } - get points(): IPointData[] { - return this.data.points; - } - set points(points: IPointData[]) { - this.data.points = points.map( - (p) => new graphicData.Point({ x: p.x, y: p.y }) - ); - } - clone(): RectData { - return new RectData(this.data.cloneMessage()); - } - copyFrom(data: RectData): void { - pb_1.Message.copyInto(data.data, this.data); - } - eq(other: RectData): boolean { - return pb_1.Message.equals(this.data, other.data); - } -} diff --git a/src/examples/app/graphics/SignalInteraction.ts b/src/examples/app/graphics/SignalInteraction.ts deleted file mode 100644 index 78fb97f..0000000 --- a/src/examples/app/graphics/SignalInteraction.ts +++ /dev/null @@ -1,37 +0,0 @@ -import * as pb_1 from 'google-protobuf'; -import { ISignalData, Signal } from 'src/graphics/signal/Signal'; -import { graphicData } from '../protos/draw_data_storage'; -import { GraphicDataBase } from './GraphicDataBase'; - -export class SignalData extends GraphicDataBase implements ISignalData { - constructor(data?: graphicData.Signal) { - let signal; - if (!data) { - signal = new graphicData.Signal({ - common: GraphicDataBase.defaultCommonInfo(Signal.Type), - }); - } else { - signal = data; - } - super(signal); - } - - public get data(): graphicData.Signal { - return this.getData(); - } - get code(): string { - return this.data.code; - } - set code(v: string) { - this.data.code = v; - } - clone(): SignalData { - return new SignalData(this.data.cloneMessage()); - } - copyFrom(data: SignalData): void { - pb_1.Message.copyInto(data.data, this.data); - } - eq(other: SignalData): boolean { - return pb_1.Message.equals(this.data, other.data); - } -} diff --git a/src/examples/app/graphics/StationInteraction.ts b/src/examples/app/graphics/StationInteraction.ts deleted file mode 100644 index 9022621..0000000 --- a/src/examples/app/graphics/StationInteraction.ts +++ /dev/null @@ -1,92 +0,0 @@ -import * as pb_1 from 'google-protobuf'; -import { IPointData } from 'pixi.js'; -import { IStationData } from 'src/graphics/station/Station'; -import { graphicData } from '../protos/draw_data_storage'; -import { GraphicDataBase } from './GraphicDataBase'; - -export class StationData extends GraphicDataBase implements IStationData { - constructor(data?: graphicData.Station) { - let station; - if (!data) { - station = new graphicData.Station({ - common: GraphicDataBase.defaultCommonInfo(), - }); - } else { - station = data; - } - super(station); - } - - public get data(): graphicData.Station { - return this.getData(); - } - get code(): string { - return this.data.code; - } - set code(v: string) { - this.data.code = v; - } - get hasCircle(): boolean { - return this.data.hasCircle; - } - set hasCircle(v: boolean) { - this.data.hasCircle = v; - } - get radius(): number { - return this.data.radius; - } - set radius(v: number) { - this.data.radius = v; - } - get borderWidth(): number { - return this.data.borderWidth; - } - set borderWidth(v: number) { - this.data.borderWidth = v; - } - get borderColor(): string { - return this.data.borderColor; - } - set borderColor(v: string) { - this.data.borderColor = v; - } - get fillColor(): string { - return this.data.fillColor; - } - set fillColor(v: string) { - this.data.fillColor = v; - } - get codeColor(): string { - return this.data.codeColor; - } - set codeColor(v: string) { - this.data.codeColor = v; - } - get codeFontSize(): number { - return this.data.codeFontSize; - } - set codeFontSize(v: number) { - this.data.codeFontSize = v; - } - get point(): IPointData { - return this.data.point; - } - set point(point: IPointData) { - this.data.point = new graphicData.Point({ x: point.x, y: point.y }); - } - get circlePoint(): IPointData { - return this.data.circlePoint; - } - set circlePoint(point: IPointData) { - this.data.circlePoint = new graphicData.Point({ x: point.x, y: point.y }); - } - clone(): StationData { - return new StationData(this.data.cloneMessage()); - } - copyFrom(data: StationData): void { - pb_1.Message.copyInto(data.data, this.data); - } - eq(other: StationData): boolean { - return pb_1.Message.equals(this.data, other.data); - } -} diff --git a/src/examples/app/graphics/TrainInteraction.ts b/src/examples/app/graphics/TrainInteraction.ts deleted file mode 100644 index db770cc..0000000 --- a/src/examples/app/graphics/TrainInteraction.ts +++ /dev/null @@ -1,92 +0,0 @@ -import * as pb_1 from 'google-protobuf'; -import { IPointData } from 'pixi.js'; -import { ITrainData } from 'src/graphics/train/Train'; -import { graphicData } from '../protos/draw_data_storage'; -import { GraphicDataBase } from './GraphicDataBase'; - -export class TrainData extends GraphicDataBase implements ITrainData { - constructor(data?: graphicData.Train) { - let train; - if (!data) { - train = new graphicData.Train({ - common: GraphicDataBase.defaultCommonInfo(), - }); - } else { - train = data; - } - super(train); - } - - public get data(): graphicData.Train { - return this.getData(); - } - get code(): string { - return this.data.code; - } - set code(v: string) { - this.data.code = v; - } - get codeColor(): string { - return this.data.codeColor; - } - set codeColor(v: string) { - this.data.codeColor = v; - } - get codeFontSize(): number { - return this.data.codeFontSize; - } - set codeFontSize(v: number) { - this.data.codeFontSize = v; - } - get trainDirection(): string { - return this.data.trainDirection; - } - set trainDirection(v: string) { - this.data.trainDirection = v; - } - get hasBorder(): boolean { - return this.data.hasBorder; - } - set hasBorder(v: boolean) { - this.data.hasBorder = v; - } - get borderWidth(): number { - return this.data.borderWidth; - } - set borderWidth(v: number) { - this.data.borderWidth = v; - } - get borderColor(): string { - return this.data.borderColor; - } - set borderColor(v: string) { - this.data.borderColor = v; - } - get headColor(): string { - return this.data.headColor; - } - set headColor(v: string) { - this.data.headColor = v; - } - get bodyColor(): string { - return this.data.bodyColor; - } - set bodyColor(v: string) { - this.data.bodyColor = v; - } - get point(): IPointData { - return this.data.point; - } - set point(point: IPointData) { - this.data.point = new graphicData.Point({ x: point.x, y: point.y }); - } - clone(): TrainData { - return new TrainData(this.data.cloneMessage()); - } - copyFrom(data: TrainData): void { - pb_1.Message.copyInto(data.data, this.data); - } - eq(other: TrainData): boolean { - return pb_1.Message.equals(this.data, other.data); - } -} diff --git a/src/examples/app/index.ts b/src/examples/app/index.ts deleted file mode 100644 index 8f9926b..0000000 --- a/src/examples/app/index.ts +++ /dev/null @@ -1,342 +0,0 @@ -import { fromUint8Array, toUint8Array } from 'js-base64'; -import { IPointData, Point } from 'pixi.js'; -import { IscsFan, IscsFanTemplate } from 'src/graphics/iscs-fan/IscsFan'; -import { IscsFanDraw } from 'src/graphics/iscs-fan/IscsFanDrawAssistant'; -import { Link, LinkTemplate } from 'src/graphics/link/Link'; -import { LinkDraw } from 'src/graphics/link/LinkDrawAssistant'; -import { Rect } from 'src/graphics/rect/Rect'; -import { RectDraw } from 'src/graphics/rect/RectDrawAssistant'; -import { Platform } from 'src/graphics/platform/Platform'; -import { PlatformDraw } from 'src/graphics/platform/PlatformDrawAssistant'; -import { Station } from 'src/graphics/station/Station'; -import { Train } from 'src/graphics/train/Train'; -import { StationDraw } from 'src/graphics/station/StationDrawAssistant'; -import { Signal, SignalTemplate } from 'src/graphics/signal/Signal'; -import { SignalDraw } from 'src/graphics/signal/SignalDrawAssistant'; -import { TrainDraw } from 'src/graphics/train/TrainDrawAssistant'; -import { - CombinationKey, - GraphicData, - GraphicTransform, - IDrawApp, - IGraphicStorage, - KeyListener, - newDrawApp, -} from 'src/jlgraphic'; -import { ContextMenu } from 'src/jlgraphic/ui/ContextMenu'; -import { MenuItemOptions } from 'src/jlgraphic/ui/Menu'; -import { IscsFanData, IscsFanState } from './graphics/IscsFanInteraction'; -import { LinkData } from './graphics/LinkInteraction'; -import { RectData } from './graphics/RectInteraction'; -import { PlatformData } from './graphics/PlatformInteraction'; -import { StationData } from './graphics/StationInteraction'; -import { SignalData } from './graphics/SignalInteraction'; -import { TrainData } from './graphics/TrainInteraction'; -import { graphicData } from './protos/draw_data_storage'; -import { Notify } from 'quasar'; - -export function fromStoragePoint(p: graphicData.Point): Point { - return new Point(p.x, p.y); -} - -export function toStoragePoint(p: IPointData): graphicData.Point { - return new graphicData.Point({ x: p.x, y: p.y }); -} - -export function fromStorageTransfrom( - transfrom: graphicData.Transform -): GraphicTransform { - return new GraphicTransform( - fromStoragePoint(transfrom.position), - fromStoragePoint(transfrom.scale), - transfrom.rotation, - fromStoragePoint(transfrom.skew) - ); -} - -export function toStorageTransform( - transform: GraphicTransform -): graphicData.Transform { - return new graphicData.Transform({ - position: toStoragePoint(transform.position), - scale: toStoragePoint(transform.scale), - rotation: transform.rotation, - skew: toStoragePoint(transform.skew), - }); -} - -const UndoOptions: MenuItemOptions = { - name: '撤销', - shortcutKeys: ['Ctrl', 'Z'], -}; -const RedoOptions: MenuItemOptions = { - name: '重做', - shortcutKeys: ['Ctrl', 'Shift', 'Z'], -}; -const SelectAllOptions: MenuItemOptions = { - name: '全选', - shortcutKeys: ['Ctrl', 'A'], -}; -const JumpStaitonOptions: MenuItemOptions = { - name: '车站定位', -}; - -export const DefaultCanvasMenu = new ContextMenu({ - name: '绘制-画布菜单', - groups: [ - { - items: [UndoOptions, RedoOptions], - }, - { - items: [SelectAllOptions], - }, - { - items: [JumpStaitonOptions], - }, - ], -}); - -let drawApp: IDrawApp | null = null; - -export function getDrawApp(): IDrawApp | null { - return drawApp; -} - -export function destroyDrawApp(): void { - if (drawApp) { - drawApp.destroy(); - drawApp = null; - } -} - -export function initDrawApp(): IDrawApp { - drawApp = newDrawApp({ - dataLoader: loadDrawDatas, - // isSupportDeletion: (g): boolean => { - // if (g.type === Signal.Type) { - // Notify.create({ - // type: 'warning', - // message: '信号机不支持删除', - // timeout: 1000, - // }); - // return false; - // } - // return true; - // }, - }); - const app = drawApp; - - app.initScene('test', {}); - - new LinkDraw(app, new LinkTemplate(new LinkData())); - new IscsFanDraw( - app, - new IscsFanTemplate(new IscsFanData(), new IscsFanState()) - ); - new SignalDraw(app, new SignalTemplate(new SignalData())); - new TrainDraw(app, () => { - return new TrainData(); - }); - // 画布右键菜单 - app.registerMenu(DefaultCanvasMenu); - app.canvas.on('_rightclick', (e) => { - if (app.drawing) return; - UndoOptions.disabled = !app.opRecord.hasUndo; - RedoOptions.disabled = !app.opRecord.hasRedo; - UndoOptions.handler = () => { - app.opRecord.undo(); - }; - RedoOptions.handler = () => { - app.opRecord.redo(); - }; - SelectAllOptions.handler = () => { - app.selectAllGraphics(); - }; - const stations = app.queryStore.queryByType(IscsFan.Type); - const jumpStaitonItems: MenuItemOptions[] = []; - stations.forEach((station) => { - const item: MenuItemOptions = { - name: station.id, - handler: () => { - app.makeGraphicCenterShow(station); - }, - }; - jumpStaitonItems.push(item); - }); - if (jumpStaitonItems.length > 0) { - JumpStaitonOptions.subMenu = { - name: '车站列表', - groups: [ - { - items: jumpStaitonItems, - }, - ], - }; - } - DefaultCanvasMenu.update(); - DefaultCanvasMenu.open(e.global); - }); - - app.addKeyboardListener( - new KeyListener({ - value: 'KeyL', - onPress: () => { - app.interactionPlugin(Link.Type).resume(); - }, - }) - ); - app.addKeyboardListener( - new KeyListener({ - value: 'KeyR', - onPress: () => { - app.interactionPlugin(Rect.Type).resume(); - }, - }) - ); - app.addKeyboardListener( - new KeyListener({ - value: 'KeyF', - onPress: () => { - app.interactionPlugin(IscsFan.Type).resume(); - }, - }) - ); - app.addKeyboardListener( - new KeyListener({ - value: 'KeyP', - onPress: () => { - app.interactionPlugin(Platform.Type).resume(); - }, - }) - ); - app.addKeyboardListener( - new KeyListener({ - value: 'KeyO', - onPress: () => { - app.interactionPlugin(Station.Type).resume(); - }, - }) - ); - app.addKeyboardListener( - new KeyListener({ - value: 'KeyH', - onPress: () => { - app.interactionPlugin(Signal.Type).resume(); - }, - }) - ); - app.addKeyboardListener( - new KeyListener({ - value: 'KeyT', - onPress: () => { - app.interactionPlugin(Train.Type).resume(); - }, - }) - ); - app.addKeyboardListener( - new KeyListener({ - value: '1', - onPress: () => { - app.queryStore.queryByType(IscsFan.Type).forEach((fan) => { - fan.states.state = fan.states.state + 1; - fan.states.state = fan.states.state % 5; - fan.repaint(); - }); - }, - }) - ); - app.addKeyboardListener( - new KeyListener({ - value: 'KeyS', - global: true, - combinations: [CombinationKey.Ctrl], - onPress: () => { - saveDrawDatas(app); - }, - }) - ); - return drawApp; -} - -const StorageKey = 'graphic-storage'; -export function saveDrawDatas(app: IDrawApp) { - const storage = new graphicData.RtssGraphicStorage(); - const canvasData = app.canvas.saveData(); - storage.canvas = new graphicData.Canvas({ - ...canvasData, - viewportTransform: toStorageTransform(canvasData.viewportTransform), - }); - const graphics = app.queryStore.getAllGraphics(); - graphics.forEach((g) => { - if (Link.Type === g.type) { - const linkData = (g as Link).saveData(); - storage.links.push((linkData as LinkData).data); - } else if (Rect.Type === g.type) { - const rectData = (g as Rect).saveData(); - storage.Rects.push((rectData as RectData).data); - } else if (IscsFan.Type === g.type) { - const IscsFanData = (g as IscsFan).saveData(); - storage.iscsFans.push((IscsFanData as IscsFanData).data); - } else if (Platform.Type === g.type) { - const platformData = (g as Platform).saveData(); - storage.Platforms.push((platformData as PlatformData).data); - } else if (Station.Type === g.type) { - const stationData = (g as Station).saveData(); - storage.stations.push((stationData as StationData).data); - } else if (Signal.Type === g.type) { - const signalData = (g as Signal).saveData(); - storage.signals.push((signalData as SignalData).data); - } else if (Train.Type === g.type) { - const trainData = (g as Train).saveData(); - storage.train.push((trainData as TrainData).data); - } - }); - const base64 = fromUint8Array(storage.serialize()); - console.log('保存数据', storage); - localStorage.setItem(StorageKey, base64); -} - -export async function loadDrawDatas(): Promise { - // localStorage.removeItem(StorageKey); - const base64 = localStorage.getItem(StorageKey); - // console.log('加载数据', base64); - if (base64) { - const storage = graphicData.RtssGraphicStorage.deserialize( - toUint8Array(base64) - ); - console.log('加载数据', storage); - const datas: GraphicData[] = []; - storage.links.forEach((link) => { - datas.push(new LinkData(link)); - }); - storage.Rects.forEach((rect) => { - datas.push(new RectData(rect)); - }); - storage.iscsFans.forEach((fan) => { - datas.push(new IscsFanData(fan)); - }); - storage.Platforms.forEach((platform) => { - datas.push(new PlatformData(platform)); - }); - storage.stations.forEach((station) => { - datas.push(new StationData(station)); - }); - storage.signals.forEach((data) => { - datas.push(new SignalData(data)); - }); - storage.stations.forEach((signal) => { - datas.push(new StationData(signal)); - }); - storage.stations.forEach((train) => { - datas.push(new StationData(train)); - }); - return Promise.resolve({ - canvasProperty: storage.canvas, - datas: datas, - }); - } - return Promise.resolve({ - // canvasProperty: {}, - datas: [], - }); -} diff --git a/src/examples/app/protos/draw_data_storage.ts b/src/examples/app/protos/draw_data_storage.ts deleted file mode 100644 index 5467429..0000000 --- a/src/examples/app/protos/draw_data_storage.ts +++ /dev/null @@ -1,2425 +0,0 @@ -/** - * Generated by the protoc-gen-ts. DO NOT EDIT! - * compiler version: 4.22.2 - * source: draw_data_storage.proto - * git: https://github.com/thesayyn/protoc-gen-ts */ -import * as pb_1 from "google-protobuf"; -export namespace graphicData { - export class RtssGraphicStorage extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - canvas?: Canvas; - links?: Link[]; - iscsFans?: IscsFan[]; - Platforms?: Platform[]; - stations?: Station[]; - Rects?: Rect[]; - train?: Train[]; - signals?: Signal[]; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2, 3, 4, 5, 6, 7, 8], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("canvas" in data && data.canvas != undefined) { - this.canvas = data.canvas; - } - if ("links" in data && data.links != undefined) { - this.links = data.links; - } - if ("iscsFans" in data && data.iscsFans != undefined) { - this.iscsFans = data.iscsFans; - } - if ("Platforms" in data && data.Platforms != undefined) { - this.Platforms = data.Platforms; - } - if ("stations" in data && data.stations != undefined) { - this.stations = data.stations; - } - if ("Rects" in data && data.Rects != undefined) { - this.Rects = data.Rects; - } - if ("train" in data && data.train != undefined) { - this.train = data.train; - } - if ("signals" in data && data.signals != undefined) { - this.signals = data.signals; - } - } - } - get canvas() { - return pb_1.Message.getWrapperField(this, Canvas, 1) as Canvas; - } - set canvas(value: Canvas) { - pb_1.Message.setWrapperField(this, 1, value); - } - get has_canvas() { - return pb_1.Message.getField(this, 1) != null; - } - get links() { - return pb_1.Message.getRepeatedWrapperField(this, Link, 2) as Link[]; - } - set links(value: Link[]) { - pb_1.Message.setRepeatedWrapperField(this, 2, value); - } - get iscsFans() { - return pb_1.Message.getRepeatedWrapperField(this, IscsFan, 3) as IscsFan[]; - } - set iscsFans(value: IscsFan[]) { - pb_1.Message.setRepeatedWrapperField(this, 3, value); - } - get Platforms() { - return pb_1.Message.getRepeatedWrapperField(this, Platform, 4) as Platform[]; - } - set Platforms(value: Platform[]) { - pb_1.Message.setRepeatedWrapperField(this, 4, value); - } - get stations() { - return pb_1.Message.getRepeatedWrapperField(this, Station, 5) as Station[]; - } - set stations(value: Station[]) { - pb_1.Message.setRepeatedWrapperField(this, 5, value); - } - get Rects() { - return pb_1.Message.getRepeatedWrapperField(this, Rect, 6) as Rect[]; - } - set Rects(value: Rect[]) { - pb_1.Message.setRepeatedWrapperField(this, 6, value); - } - get train() { - return pb_1.Message.getRepeatedWrapperField(this, Train, 7) as Train[]; - } - set train(value: Train[]) { - pb_1.Message.setRepeatedWrapperField(this, 7, value); - } - get signals() { - return pb_1.Message.getRepeatedWrapperField(this, Signal, 8) as Signal[]; - } - set signals(value: Signal[]) { - pb_1.Message.setRepeatedWrapperField(this, 8, value); - } - static fromObject(data: { - canvas?: ReturnType; - links?: ReturnType[]; - iscsFans?: ReturnType[]; - Platforms?: ReturnType[]; - stations?: ReturnType[]; - Rects?: ReturnType[]; - train?: ReturnType[]; - signals?: ReturnType[]; - }): RtssGraphicStorage { - const message = new RtssGraphicStorage({}); - if (data.canvas != null) { - message.canvas = Canvas.fromObject(data.canvas); - } - if (data.links != null) { - message.links = data.links.map(item => Link.fromObject(item)); - } - if (data.iscsFans != null) { - message.iscsFans = data.iscsFans.map(item => IscsFan.fromObject(item)); - } - if (data.Platforms != null) { - message.Platforms = data.Platforms.map(item => Platform.fromObject(item)); - } - if (data.stations != null) { - message.stations = data.stations.map(item => Station.fromObject(item)); - } - if (data.Rects != null) { - message.Rects = data.Rects.map(item => Rect.fromObject(item)); - } - if (data.train != null) { - message.train = data.train.map(item => Train.fromObject(item)); - } - if (data.signals != null) { - message.signals = data.signals.map(item => Signal.fromObject(item)); - } - return message; - } - toObject() { - const data: { - canvas?: ReturnType; - links?: ReturnType[]; - iscsFans?: ReturnType[]; - Platforms?: ReturnType[]; - stations?: ReturnType[]; - Rects?: ReturnType[]; - train?: ReturnType[]; - signals?: ReturnType[]; - } = {}; - if (this.canvas != null) { - data.canvas = this.canvas.toObject(); - } - if (this.links != null) { - data.links = this.links.map((item: Link) => item.toObject()); - } - if (this.iscsFans != null) { - data.iscsFans = this.iscsFans.map((item: IscsFan) => item.toObject()); - } - if (this.Platforms != null) { - data.Platforms = this.Platforms.map((item: Platform) => item.toObject()); - } - if (this.stations != null) { - data.stations = this.stations.map((item: Station) => item.toObject()); - } - if (this.Rects != null) { - data.Rects = this.Rects.map((item: Rect) => item.toObject()); - } - if (this.train != null) { - data.train = this.train.map((item: Train) => item.toObject()); - } - if (this.signals != null) { - data.signals = this.signals.map((item: Signal) => item.toObject()); - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.has_canvas) - writer.writeMessage(1, this.canvas, () => this.canvas.serialize(writer)); - if (this.links.length) - writer.writeRepeatedMessage(2, this.links, (item: Link) => item.serialize(writer)); - if (this.iscsFans.length) - writer.writeRepeatedMessage(3, this.iscsFans, (item: IscsFan) => item.serialize(writer)); - if (this.Platforms.length) - writer.writeRepeatedMessage(4, this.Platforms, (item: Platform) => item.serialize(writer)); - if (this.stations.length) - writer.writeRepeatedMessage(5, this.stations, (item: Station) => item.serialize(writer)); - if (this.Rects.length) - writer.writeRepeatedMessage(6, this.Rects, (item: Rect) => item.serialize(writer)); - if (this.train.length) - writer.writeRepeatedMessage(7, this.train, (item: Train) => item.serialize(writer)); - if (this.signals.length) - writer.writeRepeatedMessage(8, this.signals, (item: Signal) => item.serialize(writer)); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RtssGraphicStorage { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RtssGraphicStorage(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - reader.readMessage(message.canvas, () => message.canvas = Canvas.deserialize(reader)); - break; - case 2: - reader.readMessage(message.links, () => pb_1.Message.addToRepeatedWrapperField(message, 2, Link.deserialize(reader), Link)); - break; - case 3: - reader.readMessage(message.iscsFans, () => pb_1.Message.addToRepeatedWrapperField(message, 3, IscsFan.deserialize(reader), IscsFan)); - break; - case 4: - reader.readMessage(message.Platforms, () => pb_1.Message.addToRepeatedWrapperField(message, 4, Platform.deserialize(reader), Platform)); - break; - case 5: - reader.readMessage(message.stations, () => pb_1.Message.addToRepeatedWrapperField(message, 5, Station.deserialize(reader), Station)); - break; - case 6: - reader.readMessage(message.Rects, () => pb_1.Message.addToRepeatedWrapperField(message, 6, Rect.deserialize(reader), Rect)); - break; - case 7: - reader.readMessage(message.train, () => pb_1.Message.addToRepeatedWrapperField(message, 7, Train.deserialize(reader), Train)); - break; - case 8: - reader.readMessage(message.signals, () => pb_1.Message.addToRepeatedWrapperField(message, 8, Signal.deserialize(reader), Signal)); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): RtssGraphicStorage { - return RtssGraphicStorage.deserialize(bytes); - } - } - export class Canvas extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - width?: number; - height?: number; - backgroundColor?: string; - viewportTransform?: Transform; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("width" in data && data.width != undefined) { - this.width = data.width; - } - if ("height" in data && data.height != undefined) { - this.height = data.height; - } - if ("backgroundColor" in data && data.backgroundColor != undefined) { - this.backgroundColor = data.backgroundColor; - } - if ("viewportTransform" in data && data.viewportTransform != undefined) { - this.viewportTransform = data.viewportTransform; - } - } - } - get width() { - return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; - } - set width(value: number) { - pb_1.Message.setField(this, 1, value); - } - get height() { - return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; - } - set height(value: number) { - pb_1.Message.setField(this, 2, value); - } - get backgroundColor() { - return pb_1.Message.getFieldWithDefault(this, 3, "") as string; - } - set backgroundColor(value: string) { - pb_1.Message.setField(this, 3, value); - } - get viewportTransform() { - return pb_1.Message.getWrapperField(this, Transform, 4) as Transform; - } - set viewportTransform(value: Transform) { - pb_1.Message.setWrapperField(this, 4, value); - } - get has_viewportTransform() { - return pb_1.Message.getField(this, 4) != null; - } - static fromObject(data: { - width?: number; - height?: number; - backgroundColor?: string; - viewportTransform?: ReturnType; - }): Canvas { - const message = new Canvas({}); - if (data.width != null) { - message.width = data.width; - } - if (data.height != null) { - message.height = data.height; - } - if (data.backgroundColor != null) { - message.backgroundColor = data.backgroundColor; - } - if (data.viewportTransform != null) { - message.viewportTransform = Transform.fromObject(data.viewportTransform); - } - return message; - } - toObject() { - const data: { - width?: number; - height?: number; - backgroundColor?: string; - viewportTransform?: ReturnType; - } = {}; - if (this.width != null) { - data.width = this.width; - } - if (this.height != null) { - data.height = this.height; - } - if (this.backgroundColor != null) { - data.backgroundColor = this.backgroundColor; - } - if (this.viewportTransform != null) { - data.viewportTransform = this.viewportTransform.toObject(); - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.width != 0) - writer.writeInt32(1, this.width); - if (this.height != 0) - writer.writeInt32(2, this.height); - if (this.backgroundColor.length) - writer.writeString(3, this.backgroundColor); - if (this.has_viewportTransform) - writer.writeMessage(4, this.viewportTransform, () => this.viewportTransform.serialize(writer)); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Canvas { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Canvas(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - message.width = reader.readInt32(); - break; - case 2: - message.height = reader.readInt32(); - break; - case 3: - message.backgroundColor = reader.readString(); - break; - case 4: - reader.readMessage(message.viewportTransform, () => message.viewportTransform = Transform.deserialize(reader)); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): Canvas { - return Canvas.deserialize(bytes); - } - } - export class Point extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - x?: number; - y?: number; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("x" in data && data.x != undefined) { - this.x = data.x; - } - if ("y" in data && data.y != undefined) { - this.y = data.y; - } - } - } - get x() { - return pb_1.Message.getFieldWithDefault(this, 1, 0) as number; - } - set x(value: number) { - pb_1.Message.setField(this, 1, value); - } - get y() { - return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; - } - set y(value: number) { - pb_1.Message.setField(this, 2, value); - } - static fromObject(data: { - x?: number; - y?: number; - }): Point { - const message = new Point({}); - if (data.x != null) { - message.x = data.x; - } - if (data.y != null) { - message.y = data.y; - } - return message; - } - toObject() { - const data: { - x?: number; - y?: number; - } = {}; - if (this.x != null) { - data.x = this.x; - } - if (this.y != null) { - data.y = this.y; - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.x != 0) - writer.writeFloat(1, this.x); - if (this.y != 0) - writer.writeFloat(2, this.y); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Point { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Point(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - message.x = reader.readFloat(); - break; - case 2: - message.y = reader.readFloat(); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): Point { - return Point.deserialize(bytes); - } - } - export class Transform extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - position?: Point; - scale?: Point; - rotation?: number; - skew?: Point; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("position" in data && data.position != undefined) { - this.position = data.position; - } - if ("scale" in data && data.scale != undefined) { - this.scale = data.scale; - } - if ("rotation" in data && data.rotation != undefined) { - this.rotation = data.rotation; - } - if ("skew" in data && data.skew != undefined) { - this.skew = data.skew; - } - } - } - get position() { - return pb_1.Message.getWrapperField(this, Point, 1) as Point; - } - set position(value: Point) { - pb_1.Message.setWrapperField(this, 1, value); - } - get has_position() { - return pb_1.Message.getField(this, 1) != null; - } - get scale() { - return pb_1.Message.getWrapperField(this, Point, 2) as Point; - } - set scale(value: Point) { - pb_1.Message.setWrapperField(this, 2, value); - } - get has_scale() { - return pb_1.Message.getField(this, 2) != null; - } - get rotation() { - return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; - } - set rotation(value: number) { - pb_1.Message.setField(this, 3, value); - } - get skew() { - return pb_1.Message.getWrapperField(this, Point, 4) as Point; - } - set skew(value: Point) { - pb_1.Message.setWrapperField(this, 4, value); - } - get has_skew() { - return pb_1.Message.getField(this, 4) != null; - } - static fromObject(data: { - position?: ReturnType; - scale?: ReturnType; - rotation?: number; - skew?: ReturnType; - }): Transform { - const message = new Transform({}); - if (data.position != null) { - message.position = Point.fromObject(data.position); - } - if (data.scale != null) { - message.scale = Point.fromObject(data.scale); - } - if (data.rotation != null) { - message.rotation = data.rotation; - } - if (data.skew != null) { - message.skew = Point.fromObject(data.skew); - } - return message; - } - toObject() { - const data: { - position?: ReturnType; - scale?: ReturnType; - rotation?: number; - skew?: ReturnType; - } = {}; - if (this.position != null) { - data.position = this.position.toObject(); - } - if (this.scale != null) { - data.scale = this.scale.toObject(); - } - if (this.rotation != null) { - data.rotation = this.rotation; - } - if (this.skew != null) { - data.skew = this.skew.toObject(); - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.has_position) - writer.writeMessage(1, this.position, () => this.position.serialize(writer)); - if (this.has_scale) - writer.writeMessage(2, this.scale, () => this.scale.serialize(writer)); - if (this.rotation != 0) - writer.writeFloat(3, this.rotation); - if (this.has_skew) - writer.writeMessage(4, this.skew, () => this.skew.serialize(writer)); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Transform { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Transform(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - reader.readMessage(message.position, () => message.position = Point.deserialize(reader)); - break; - case 2: - reader.readMessage(message.scale, () => message.scale = Point.deserialize(reader)); - break; - case 3: - message.rotation = reader.readFloat(); - break; - case 4: - reader.readMessage(message.skew, () => message.skew = Point.deserialize(reader)); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): Transform { - return Transform.deserialize(bytes); - } - } - export class ChildTransform extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - name?: string; - transform?: Transform; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("name" in data && data.name != undefined) { - this.name = data.name; - } - if ("transform" in data && data.transform != undefined) { - this.transform = data.transform; - } - } - } - get name() { - return pb_1.Message.getFieldWithDefault(this, 1, "") as string; - } - set name(value: string) { - pb_1.Message.setField(this, 1, value); - } - get transform() { - return pb_1.Message.getWrapperField(this, Transform, 2) as Transform; - } - set transform(value: Transform) { - pb_1.Message.setWrapperField(this, 2, value); - } - get has_transform() { - return pb_1.Message.getField(this, 2) != null; - } - static fromObject(data: { - name?: string; - transform?: ReturnType; - }): ChildTransform { - const message = new ChildTransform({}); - if (data.name != null) { - message.name = data.name; - } - if (data.transform != null) { - message.transform = Transform.fromObject(data.transform); - } - return message; - } - toObject() { - const data: { - name?: string; - transform?: ReturnType; - } = {}; - if (this.name != null) { - data.name = this.name; - } - if (this.transform != null) { - data.transform = this.transform.toObject(); - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.name.length) - writer.writeString(1, this.name); - if (this.has_transform) - writer.writeMessage(2, this.transform, () => this.transform.serialize(writer)); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ChildTransform { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ChildTransform(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - message.name = reader.readString(); - break; - case 2: - reader.readMessage(message.transform, () => message.transform = Transform.deserialize(reader)); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): ChildTransform { - return ChildTransform.deserialize(bytes); - } - } - export class CommonInfo extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - id?: string; - graphicType?: string; - transform?: Transform; - childTransforms?: ChildTransform[]; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [4], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("id" in data && data.id != undefined) { - this.id = data.id; - } - if ("graphicType" in data && data.graphicType != undefined) { - this.graphicType = data.graphicType; - } - if ("transform" in data && data.transform != undefined) { - this.transform = data.transform; - } - if ("childTransforms" in data && data.childTransforms != undefined) { - this.childTransforms = data.childTransforms; - } - } - } - get id() { - return pb_1.Message.getFieldWithDefault(this, 1, "") as string; - } - set id(value: string) { - pb_1.Message.setField(this, 1, value); - } - get graphicType() { - return pb_1.Message.getFieldWithDefault(this, 2, "") as string; - } - set graphicType(value: string) { - pb_1.Message.setField(this, 2, value); - } - get transform() { - return pb_1.Message.getWrapperField(this, Transform, 3) as Transform; - } - set transform(value: Transform) { - pb_1.Message.setWrapperField(this, 3, value); - } - get has_transform() { - return pb_1.Message.getField(this, 3) != null; - } - get childTransforms() { - return pb_1.Message.getRepeatedWrapperField(this, ChildTransform, 4) as ChildTransform[]; - } - set childTransforms(value: ChildTransform[]) { - pb_1.Message.setRepeatedWrapperField(this, 4, value); - } - static fromObject(data: { - id?: string; - graphicType?: string; - transform?: ReturnType; - childTransforms?: ReturnType[]; - }): CommonInfo { - const message = new CommonInfo({}); - if (data.id != null) { - message.id = data.id; - } - if (data.graphicType != null) { - message.graphicType = data.graphicType; - } - if (data.transform != null) { - message.transform = Transform.fromObject(data.transform); - } - if (data.childTransforms != null) { - message.childTransforms = data.childTransforms.map(item => ChildTransform.fromObject(item)); - } - return message; - } - toObject() { - const data: { - id?: string; - graphicType?: string; - transform?: ReturnType; - childTransforms?: ReturnType[]; - } = {}; - if (this.id != null) { - data.id = this.id; - } - if (this.graphicType != null) { - data.graphicType = this.graphicType; - } - if (this.transform != null) { - data.transform = this.transform.toObject(); - } - if (this.childTransforms != null) { - data.childTransforms = this.childTransforms.map((item: ChildTransform) => item.toObject()); - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.id.length) - writer.writeString(1, this.id); - if (this.graphicType.length) - writer.writeString(2, this.graphicType); - if (this.has_transform) - writer.writeMessage(3, this.transform, () => this.transform.serialize(writer)); - if (this.childTransforms.length) - writer.writeRepeatedMessage(4, this.childTransforms, (item: ChildTransform) => item.serialize(writer)); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): CommonInfo { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new CommonInfo(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - message.id = reader.readString(); - break; - case 2: - message.graphicType = reader.readString(); - break; - case 3: - reader.readMessage(message.transform, () => message.transform = Transform.deserialize(reader)); - break; - case 4: - reader.readMessage(message.childTransforms, () => pb_1.Message.addToRepeatedWrapperField(message, 4, ChildTransform.deserialize(reader), ChildTransform)); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): CommonInfo { - return CommonInfo.deserialize(bytes); - } - } - export class Link extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - common?: CommonInfo; - code?: string; - curve?: boolean; - segmentsCount?: number; - lineWidth?: number; - lineColor?: string; - points?: Point[]; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [7], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("common" in data && data.common != undefined) { - this.common = data.common; - } - if ("code" in data && data.code != undefined) { - this.code = data.code; - } - if ("curve" in data && data.curve != undefined) { - this.curve = data.curve; - } - if ("segmentsCount" in data && data.segmentsCount != undefined) { - this.segmentsCount = data.segmentsCount; - } - if ("lineWidth" in data && data.lineWidth != undefined) { - this.lineWidth = data.lineWidth; - } - if ("lineColor" in data && data.lineColor != undefined) { - this.lineColor = data.lineColor; - } - if ("points" in data && data.points != undefined) { - this.points = data.points; - } - } - } - get common() { - return pb_1.Message.getWrapperField(this, CommonInfo, 1) as CommonInfo; - } - set common(value: CommonInfo) { - pb_1.Message.setWrapperField(this, 1, value); - } - get has_common() { - return pb_1.Message.getField(this, 1) != null; - } - get code() { - return pb_1.Message.getFieldWithDefault(this, 2, "") as string; - } - set code(value: string) { - pb_1.Message.setField(this, 2, value); - } - get curve() { - return pb_1.Message.getFieldWithDefault(this, 3, false) as boolean; - } - set curve(value: boolean) { - pb_1.Message.setField(this, 3, value); - } - get segmentsCount() { - return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; - } - set segmentsCount(value: number) { - pb_1.Message.setField(this, 4, value); - } - get lineWidth() { - return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; - } - set lineWidth(value: number) { - pb_1.Message.setField(this, 5, value); - } - get lineColor() { - return pb_1.Message.getFieldWithDefault(this, 6, "") as string; - } - set lineColor(value: string) { - pb_1.Message.setField(this, 6, value); - } - get points() { - return pb_1.Message.getRepeatedWrapperField(this, Point, 7) as Point[]; - } - set points(value: Point[]) { - pb_1.Message.setRepeatedWrapperField(this, 7, value); - } - static fromObject(data: { - common?: ReturnType; - code?: string; - curve?: boolean; - segmentsCount?: number; - lineWidth?: number; - lineColor?: string; - points?: ReturnType[]; - }): Link { - const message = new Link({}); - if (data.common != null) { - message.common = CommonInfo.fromObject(data.common); - } - if (data.code != null) { - message.code = data.code; - } - if (data.curve != null) { - message.curve = data.curve; - } - if (data.segmentsCount != null) { - message.segmentsCount = data.segmentsCount; - } - if (data.lineWidth != null) { - message.lineWidth = data.lineWidth; - } - if (data.lineColor != null) { - message.lineColor = data.lineColor; - } - if (data.points != null) { - message.points = data.points.map(item => Point.fromObject(item)); - } - return message; - } - toObject() { - const data: { - common?: ReturnType; - code?: string; - curve?: boolean; - segmentsCount?: number; - lineWidth?: number; - lineColor?: string; - points?: ReturnType[]; - } = {}; - if (this.common != null) { - data.common = this.common.toObject(); - } - if (this.code != null) { - data.code = this.code; - } - if (this.curve != null) { - data.curve = this.curve; - } - if (this.segmentsCount != null) { - data.segmentsCount = this.segmentsCount; - } - if (this.lineWidth != null) { - data.lineWidth = this.lineWidth; - } - if (this.lineColor != null) { - data.lineColor = this.lineColor; - } - if (this.points != null) { - data.points = this.points.map((item: Point) => item.toObject()); - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.has_common) - writer.writeMessage(1, this.common, () => this.common.serialize(writer)); - if (this.code.length) - writer.writeString(2, this.code); - if (this.curve != false) - writer.writeBool(3, this.curve); - if (this.segmentsCount != 0) - writer.writeInt32(4, this.segmentsCount); - if (this.lineWidth != 0) - writer.writeInt32(5, this.lineWidth); - if (this.lineColor.length) - writer.writeString(6, this.lineColor); - if (this.points.length) - writer.writeRepeatedMessage(7, this.points, (item: Point) => item.serialize(writer)); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Link { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Link(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - reader.readMessage(message.common, () => message.common = CommonInfo.deserialize(reader)); - break; - case 2: - message.code = reader.readString(); - break; - case 3: - message.curve = reader.readBool(); - break; - case 4: - message.segmentsCount = reader.readInt32(); - break; - case 5: - message.lineWidth = reader.readInt32(); - break; - case 6: - message.lineColor = reader.readString(); - break; - case 7: - reader.readMessage(message.points, () => pb_1.Message.addToRepeatedWrapperField(message, 7, Point.deserialize(reader), Point)); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): Link { - return Link.deserialize(bytes); - } - } - export class Rect extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - common?: CommonInfo; - code?: string; - lineWidth?: number; - lineColor?: string; - point?: Point; - width?: number; - height?: number; - points?: Point[]; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [8], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("common" in data && data.common != undefined) { - this.common = data.common; - } - if ("code" in data && data.code != undefined) { - this.code = data.code; - } - if ("lineWidth" in data && data.lineWidth != undefined) { - this.lineWidth = data.lineWidth; - } - if ("lineColor" in data && data.lineColor != undefined) { - this.lineColor = data.lineColor; - } - if ("point" in data && data.point != undefined) { - this.point = data.point; - } - if ("width" in data && data.width != undefined) { - this.width = data.width; - } - if ("height" in data && data.height != undefined) { - this.height = data.height; - } - if ("points" in data && data.points != undefined) { - this.points = data.points; - } - } - } - get common() { - return pb_1.Message.getWrapperField(this, CommonInfo, 1) as CommonInfo; - } - set common(value: CommonInfo) { - pb_1.Message.setWrapperField(this, 1, value); - } - get has_common() { - return pb_1.Message.getField(this, 1) != null; - } - get code() { - return pb_1.Message.getFieldWithDefault(this, 2, "") as string; - } - set code(value: string) { - pb_1.Message.setField(this, 2, value); - } - get lineWidth() { - return pb_1.Message.getFieldWithDefault(this, 3, 0) as number; - } - set lineWidth(value: number) { - pb_1.Message.setField(this, 3, value); - } - get lineColor() { - return pb_1.Message.getFieldWithDefault(this, 4, "") as string; - } - set lineColor(value: string) { - pb_1.Message.setField(this, 4, value); - } - get point() { - return pb_1.Message.getWrapperField(this, Point, 5) as Point; - } - set point(value: Point) { - pb_1.Message.setWrapperField(this, 5, value); - } - get has_point() { - return pb_1.Message.getField(this, 5) != null; - } - get width() { - return pb_1.Message.getFieldWithDefault(this, 6, 0) as number; - } - set width(value: number) { - pb_1.Message.setField(this, 6, value); - } - get height() { - return pb_1.Message.getFieldWithDefault(this, 7, 0) as number; - } - set height(value: number) { - pb_1.Message.setField(this, 7, value); - } - get points() { - return pb_1.Message.getRepeatedWrapperField(this, Point, 8) as Point[]; - } - set points(value: Point[]) { - pb_1.Message.setRepeatedWrapperField(this, 8, value); - } - static fromObject(data: { - common?: ReturnType; - code?: string; - lineWidth?: number; - lineColor?: string; - point?: ReturnType; - width?: number; - height?: number; - points?: ReturnType[]; - }): Rect { - const message = new Rect({}); - if (data.common != null) { - message.common = CommonInfo.fromObject(data.common); - } - if (data.code != null) { - message.code = data.code; - } - if (data.lineWidth != null) { - message.lineWidth = data.lineWidth; - } - if (data.lineColor != null) { - message.lineColor = data.lineColor; - } - if (data.point != null) { - message.point = Point.fromObject(data.point); - } - if (data.width != null) { - message.width = data.width; - } - if (data.height != null) { - message.height = data.height; - } - if (data.points != null) { - message.points = data.points.map(item => Point.fromObject(item)); - } - return message; - } - toObject() { - const data: { - common?: ReturnType; - code?: string; - lineWidth?: number; - lineColor?: string; - point?: ReturnType; - width?: number; - height?: number; - points?: ReturnType[]; - } = {}; - if (this.common != null) { - data.common = this.common.toObject(); - } - if (this.code != null) { - data.code = this.code; - } - if (this.lineWidth != null) { - data.lineWidth = this.lineWidth; - } - if (this.lineColor != null) { - data.lineColor = this.lineColor; - } - if (this.point != null) { - data.point = this.point.toObject(); - } - if (this.width != null) { - data.width = this.width; - } - if (this.height != null) { - data.height = this.height; - } - if (this.points != null) { - data.points = this.points.map((item: Point) => item.toObject()); - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.has_common) - writer.writeMessage(1, this.common, () => this.common.serialize(writer)); - if (this.code.length) - writer.writeString(2, this.code); - if (this.lineWidth != 0) - writer.writeInt32(3, this.lineWidth); - if (this.lineColor.length) - writer.writeString(4, this.lineColor); - if (this.has_point) - writer.writeMessage(5, this.point, () => this.point.serialize(writer)); - if (this.width != 0) - writer.writeFloat(6, this.width); - if (this.height != 0) - writer.writeFloat(7, this.height); - if (this.points.length) - writer.writeRepeatedMessage(8, this.points, (item: Point) => item.serialize(writer)); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Rect { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Rect(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - reader.readMessage(message.common, () => message.common = CommonInfo.deserialize(reader)); - break; - case 2: - message.code = reader.readString(); - break; - case 3: - message.lineWidth = reader.readInt32(); - break; - case 4: - message.lineColor = reader.readString(); - break; - case 5: - reader.readMessage(message.point, () => message.point = Point.deserialize(reader)); - break; - case 6: - message.width = reader.readFloat(); - break; - case 7: - message.height = reader.readFloat(); - break; - case 8: - reader.readMessage(message.points, () => pb_1.Message.addToRepeatedWrapperField(message, 8, Point.deserialize(reader), Point)); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): Rect { - return Rect.deserialize(bytes); - } - } - export class Platform extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - common?: CommonInfo; - code?: string; - hasdoor?: boolean; - trainDirection?: string; - lineWidth?: number; - lineColor?: string; - lineColorDoor?: string; - point?: Point; - width?: number; - height?: number; - orbitCode?: string[]; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [11], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("common" in data && data.common != undefined) { - this.common = data.common; - } - if ("code" in data && data.code != undefined) { - this.code = data.code; - } - if ("hasdoor" in data && data.hasdoor != undefined) { - this.hasdoor = data.hasdoor; - } - if ("trainDirection" in data && data.trainDirection != undefined) { - this.trainDirection = data.trainDirection; - } - if ("lineWidth" in data && data.lineWidth != undefined) { - this.lineWidth = data.lineWidth; - } - if ("lineColor" in data && data.lineColor != undefined) { - this.lineColor = data.lineColor; - } - if ("lineColorDoor" in data && data.lineColorDoor != undefined) { - this.lineColorDoor = data.lineColorDoor; - } - if ("point" in data && data.point != undefined) { - this.point = data.point; - } - if ("width" in data && data.width != undefined) { - this.width = data.width; - } - if ("height" in data && data.height != undefined) { - this.height = data.height; - } - if ("orbitCode" in data && data.orbitCode != undefined) { - this.orbitCode = data.orbitCode; - } - } - } - get common() { - return pb_1.Message.getWrapperField(this, CommonInfo, 1) as CommonInfo; - } - set common(value: CommonInfo) { - pb_1.Message.setWrapperField(this, 1, value); - } - get has_common() { - return pb_1.Message.getField(this, 1) != null; - } - get code() { - return pb_1.Message.getFieldWithDefault(this, 2, "") as string; - } - set code(value: string) { - pb_1.Message.setField(this, 2, value); - } - get hasdoor() { - return pb_1.Message.getFieldWithDefault(this, 3, false) as boolean; - } - set hasdoor(value: boolean) { - pb_1.Message.setField(this, 3, value); - } - get trainDirection() { - return pb_1.Message.getFieldWithDefault(this, 4, "") as string; - } - set trainDirection(value: string) { - pb_1.Message.setField(this, 4, value); - } - get lineWidth() { - return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; - } - set lineWidth(value: number) { - pb_1.Message.setField(this, 5, value); - } - get lineColor() { - return pb_1.Message.getFieldWithDefault(this, 6, "") as string; - } - set lineColor(value: string) { - pb_1.Message.setField(this, 6, value); - } - get lineColorDoor() { - return pb_1.Message.getFieldWithDefault(this, 7, "") as string; - } - set lineColorDoor(value: string) { - pb_1.Message.setField(this, 7, value); - } - get point() { - return pb_1.Message.getWrapperField(this, Point, 8) as Point; - } - set point(value: Point) { - pb_1.Message.setWrapperField(this, 8, value); - } - get has_point() { - return pb_1.Message.getField(this, 8) != null; - } - get width() { - return pb_1.Message.getFieldWithDefault(this, 9, 0) as number; - } - set width(value: number) { - pb_1.Message.setField(this, 9, value); - } - get height() { - return pb_1.Message.getFieldWithDefault(this, 10, 0) as number; - } - set height(value: number) { - pb_1.Message.setField(this, 10, value); - } - get orbitCode() { - return pb_1.Message.getFieldWithDefault(this, 11, []) as string[]; - } - set orbitCode(value: string[]) { - pb_1.Message.setField(this, 11, value); - } - static fromObject(data: { - common?: ReturnType; - code?: string; - hasdoor?: boolean; - trainDirection?: string; - lineWidth?: number; - lineColor?: string; - lineColorDoor?: string; - point?: ReturnType; - width?: number; - height?: number; - orbitCode?: string[]; - }): Platform { - const message = new Platform({}); - if (data.common != null) { - message.common = CommonInfo.fromObject(data.common); - } - if (data.code != null) { - message.code = data.code; - } - if (data.hasdoor != null) { - message.hasdoor = data.hasdoor; - } - if (data.trainDirection != null) { - message.trainDirection = data.trainDirection; - } - if (data.lineWidth != null) { - message.lineWidth = data.lineWidth; - } - if (data.lineColor != null) { - message.lineColor = data.lineColor; - } - if (data.lineColorDoor != null) { - message.lineColorDoor = data.lineColorDoor; - } - if (data.point != null) { - message.point = Point.fromObject(data.point); - } - if (data.width != null) { - message.width = data.width; - } - if (data.height != null) { - message.height = data.height; - } - if (data.orbitCode != null) { - message.orbitCode = data.orbitCode; - } - return message; - } - toObject() { - const data: { - common?: ReturnType; - code?: string; - hasdoor?: boolean; - trainDirection?: string; - lineWidth?: number; - lineColor?: string; - lineColorDoor?: string; - point?: ReturnType; - width?: number; - height?: number; - orbitCode?: string[]; - } = {}; - if (this.common != null) { - data.common = this.common.toObject(); - } - if (this.code != null) { - data.code = this.code; - } - if (this.hasdoor != null) { - data.hasdoor = this.hasdoor; - } - if (this.trainDirection != null) { - data.trainDirection = this.trainDirection; - } - if (this.lineWidth != null) { - data.lineWidth = this.lineWidth; - } - if (this.lineColor != null) { - data.lineColor = this.lineColor; - } - if (this.lineColorDoor != null) { - data.lineColorDoor = this.lineColorDoor; - } - if (this.point != null) { - data.point = this.point.toObject(); - } - if (this.width != null) { - data.width = this.width; - } - if (this.height != null) { - data.height = this.height; - } - if (this.orbitCode != null) { - data.orbitCode = this.orbitCode; - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.has_common) - writer.writeMessage(1, this.common, () => this.common.serialize(writer)); - if (this.code.length) - writer.writeString(2, this.code); - if (this.hasdoor != false) - writer.writeBool(3, this.hasdoor); - if (this.trainDirection.length) - writer.writeString(4, this.trainDirection); - if (this.lineWidth != 0) - writer.writeInt32(5, this.lineWidth); - if (this.lineColor.length) - writer.writeString(6, this.lineColor); - if (this.lineColorDoor.length) - writer.writeString(7, this.lineColorDoor); - if (this.has_point) - writer.writeMessage(8, this.point, () => this.point.serialize(writer)); - if (this.width != 0) - writer.writeFloat(9, this.width); - if (this.height != 0) - writer.writeFloat(10, this.height); - if (this.orbitCode.length) - writer.writeRepeatedString(11, this.orbitCode); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Platform { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Platform(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - reader.readMessage(message.common, () => message.common = CommonInfo.deserialize(reader)); - break; - case 2: - message.code = reader.readString(); - break; - case 3: - message.hasdoor = reader.readBool(); - break; - case 4: - message.trainDirection = reader.readString(); - break; - case 5: - message.lineWidth = reader.readInt32(); - break; - case 6: - message.lineColor = reader.readString(); - break; - case 7: - message.lineColorDoor = reader.readString(); - break; - case 8: - reader.readMessage(message.point, () => message.point = Point.deserialize(reader)); - break; - case 9: - message.width = reader.readFloat(); - break; - case 10: - message.height = reader.readFloat(); - break; - case 11: - pb_1.Message.addToRepeatedField(message, 11, reader.readString()); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): Platform { - return Platform.deserialize(bytes); - } - } - export class Station extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - common?: CommonInfo; - code?: string; - hasCircle?: boolean; - radius?: number; - borderWidth?: number; - borderColor?: string; - fillColor?: string; - codeColor?: string; - codeFontSize?: number; - point?: Point; - circlePoint?: Point; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("common" in data && data.common != undefined) { - this.common = data.common; - } - if ("code" in data && data.code != undefined) { - this.code = data.code; - } - if ("hasCircle" in data && data.hasCircle != undefined) { - this.hasCircle = data.hasCircle; - } - if ("radius" in data && data.radius != undefined) { - this.radius = data.radius; - } - if ("borderWidth" in data && data.borderWidth != undefined) { - this.borderWidth = data.borderWidth; - } - if ("borderColor" in data && data.borderColor != undefined) { - this.borderColor = data.borderColor; - } - if ("fillColor" in data && data.fillColor != undefined) { - this.fillColor = data.fillColor; - } - if ("codeColor" in data && data.codeColor != undefined) { - this.codeColor = data.codeColor; - } - if ("codeFontSize" in data && data.codeFontSize != undefined) { - this.codeFontSize = data.codeFontSize; - } - if ("point" in data && data.point != undefined) { - this.point = data.point; - } - if ("circlePoint" in data && data.circlePoint != undefined) { - this.circlePoint = data.circlePoint; - } - } - } - get common() { - return pb_1.Message.getWrapperField(this, CommonInfo, 1) as CommonInfo; - } - set common(value: CommonInfo) { - pb_1.Message.setWrapperField(this, 1, value); - } - get has_common() { - return pb_1.Message.getField(this, 1) != null; - } - get code() { - return pb_1.Message.getFieldWithDefault(this, 2, "") as string; - } - set code(value: string) { - pb_1.Message.setField(this, 2, value); - } - get hasCircle() { - return pb_1.Message.getFieldWithDefault(this, 3, false) as boolean; - } - set hasCircle(value: boolean) { - pb_1.Message.setField(this, 3, value); - } - get radius() { - return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; - } - set radius(value: number) { - pb_1.Message.setField(this, 4, value); - } - get borderWidth() { - return pb_1.Message.getFieldWithDefault(this, 5, 0) as number; - } - set borderWidth(value: number) { - pb_1.Message.setField(this, 5, value); - } - get borderColor() { - return pb_1.Message.getFieldWithDefault(this, 6, "") as string; - } - set borderColor(value: string) { - pb_1.Message.setField(this, 6, value); - } - get fillColor() { - return pb_1.Message.getFieldWithDefault(this, 7, "") as string; - } - set fillColor(value: string) { - pb_1.Message.setField(this, 7, value); - } - get codeColor() { - return pb_1.Message.getFieldWithDefault(this, 8, "") as string; - } - set codeColor(value: string) { - pb_1.Message.setField(this, 8, value); - } - get codeFontSize() { - return pb_1.Message.getFieldWithDefault(this, 9, 0) as number; - } - set codeFontSize(value: number) { - pb_1.Message.setField(this, 9, value); - } - get point() { - return pb_1.Message.getWrapperField(this, Point, 10) as Point; - } - set point(value: Point) { - pb_1.Message.setWrapperField(this, 10, value); - } - get has_point() { - return pb_1.Message.getField(this, 10) != null; - } - get circlePoint() { - return pb_1.Message.getWrapperField(this, Point, 11) as Point; - } - set circlePoint(value: Point) { - pb_1.Message.setWrapperField(this, 11, value); - } - get has_circlePoint() { - return pb_1.Message.getField(this, 11) != null; - } - static fromObject(data: { - common?: ReturnType; - code?: string; - hasCircle?: boolean; - radius?: number; - borderWidth?: number; - borderColor?: string; - fillColor?: string; - codeColor?: string; - codeFontSize?: number; - point?: ReturnType; - circlePoint?: ReturnType; - }): Station { - const message = new Station({}); - if (data.common != null) { - message.common = CommonInfo.fromObject(data.common); - } - if (data.code != null) { - message.code = data.code; - } - if (data.hasCircle != null) { - message.hasCircle = data.hasCircle; - } - if (data.radius != null) { - message.radius = data.radius; - } - if (data.borderWidth != null) { - message.borderWidth = data.borderWidth; - } - if (data.borderColor != null) { - message.borderColor = data.borderColor; - } - if (data.fillColor != null) { - message.fillColor = data.fillColor; - } - if (data.codeColor != null) { - message.codeColor = data.codeColor; - } - if (data.codeFontSize != null) { - message.codeFontSize = data.codeFontSize; - } - if (data.point != null) { - message.point = Point.fromObject(data.point); - } - if (data.circlePoint != null) { - message.circlePoint = Point.fromObject(data.circlePoint); - } - return message; - } - toObject() { - const data: { - common?: ReturnType; - code?: string; - hasCircle?: boolean; - radius?: number; - borderWidth?: number; - borderColor?: string; - fillColor?: string; - codeColor?: string; - codeFontSize?: number; - point?: ReturnType; - circlePoint?: ReturnType; - } = {}; - if (this.common != null) { - data.common = this.common.toObject(); - } - if (this.code != null) { - data.code = this.code; - } - if (this.hasCircle != null) { - data.hasCircle = this.hasCircle; - } - if (this.radius != null) { - data.radius = this.radius; - } - if (this.borderWidth != null) { - data.borderWidth = this.borderWidth; - } - if (this.borderColor != null) { - data.borderColor = this.borderColor; - } - if (this.fillColor != null) { - data.fillColor = this.fillColor; - } - if (this.codeColor != null) { - data.codeColor = this.codeColor; - } - if (this.codeFontSize != null) { - data.codeFontSize = this.codeFontSize; - } - if (this.point != null) { - data.point = this.point.toObject(); - } - if (this.circlePoint != null) { - data.circlePoint = this.circlePoint.toObject(); - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.has_common) - writer.writeMessage(1, this.common, () => this.common.serialize(writer)); - if (this.code.length) - writer.writeString(2, this.code); - if (this.hasCircle != false) - writer.writeBool(3, this.hasCircle); - if (this.radius != 0) - writer.writeInt32(4, this.radius); - if (this.borderWidth != 0) - writer.writeInt32(5, this.borderWidth); - if (this.borderColor.length) - writer.writeString(6, this.borderColor); - if (this.fillColor.length) - writer.writeString(7, this.fillColor); - if (this.codeColor.length) - writer.writeString(8, this.codeColor); - if (this.codeFontSize != 0) - writer.writeInt32(9, this.codeFontSize); - if (this.has_point) - writer.writeMessage(10, this.point, () => this.point.serialize(writer)); - if (this.has_circlePoint) - writer.writeMessage(11, this.circlePoint, () => this.circlePoint.serialize(writer)); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Station { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Station(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - reader.readMessage(message.common, () => message.common = CommonInfo.deserialize(reader)); - break; - case 2: - message.code = reader.readString(); - break; - case 3: - message.hasCircle = reader.readBool(); - break; - case 4: - message.radius = reader.readInt32(); - break; - case 5: - message.borderWidth = reader.readInt32(); - break; - case 6: - message.borderColor = reader.readString(); - break; - case 7: - message.fillColor = reader.readString(); - break; - case 8: - message.codeColor = reader.readString(); - break; - case 9: - message.codeFontSize = reader.readInt32(); - break; - case 10: - reader.readMessage(message.point, () => message.point = Point.deserialize(reader)); - break; - case 11: - reader.readMessage(message.circlePoint, () => message.circlePoint = Point.deserialize(reader)); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): Station { - return Station.deserialize(bytes); - } - } - export class Train extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - common?: CommonInfo; - code?: string; - codeColor?: string; - codeFontSize?: number; - point?: Point; - trainDirection?: string; - hasBorder?: boolean; - borderWidth?: number; - borderColor?: string; - headColor?: string; - bodyColor?: string; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("common" in data && data.common != undefined) { - this.common = data.common; - } - if ("code" in data && data.code != undefined) { - this.code = data.code; - } - if ("codeColor" in data && data.codeColor != undefined) { - this.codeColor = data.codeColor; - } - if ("codeFontSize" in data && data.codeFontSize != undefined) { - this.codeFontSize = data.codeFontSize; - } - if ("point" in data && data.point != undefined) { - this.point = data.point; - } - if ("trainDirection" in data && data.trainDirection != undefined) { - this.trainDirection = data.trainDirection; - } - if ("hasBorder" in data && data.hasBorder != undefined) { - this.hasBorder = data.hasBorder; - } - if ("borderWidth" in data && data.borderWidth != undefined) { - this.borderWidth = data.borderWidth; - } - if ("borderColor" in data && data.borderColor != undefined) { - this.borderColor = data.borderColor; - } - if ("headColor" in data && data.headColor != undefined) { - this.headColor = data.headColor; - } - if ("bodyColor" in data && data.bodyColor != undefined) { - this.bodyColor = data.bodyColor; - } - } - } - get common() { - return pb_1.Message.getWrapperField(this, CommonInfo, 1) as CommonInfo; - } - set common(value: CommonInfo) { - pb_1.Message.setWrapperField(this, 1, value); - } - get has_common() { - return pb_1.Message.getField(this, 1) != null; - } - get code() { - return pb_1.Message.getFieldWithDefault(this, 2, "") as string; - } - set code(value: string) { - pb_1.Message.setField(this, 2, value); - } - get codeColor() { - return pb_1.Message.getFieldWithDefault(this, 3, "") as string; - } - set codeColor(value: string) { - pb_1.Message.setField(this, 3, value); - } - get codeFontSize() { - return pb_1.Message.getFieldWithDefault(this, 4, 0) as number; - } - set codeFontSize(value: number) { - pb_1.Message.setField(this, 4, value); - } - get point() { - return pb_1.Message.getWrapperField(this, Point, 5) as Point; - } - set point(value: Point) { - pb_1.Message.setWrapperField(this, 5, value); - } - get has_point() { - return pb_1.Message.getField(this, 5) != null; - } - get trainDirection() { - return pb_1.Message.getFieldWithDefault(this, 6, "") as string; - } - set trainDirection(value: string) { - pb_1.Message.setField(this, 6, value); - } - get hasBorder() { - return pb_1.Message.getFieldWithDefault(this, 7, false) as boolean; - } - set hasBorder(value: boolean) { - pb_1.Message.setField(this, 7, value); - } - get borderWidth() { - return pb_1.Message.getFieldWithDefault(this, 8, 0) as number; - } - set borderWidth(value: number) { - pb_1.Message.setField(this, 8, value); - } - get borderColor() { - return pb_1.Message.getFieldWithDefault(this, 9, "") as string; - } - set borderColor(value: string) { - pb_1.Message.setField(this, 9, value); - } - get headColor() { - return pb_1.Message.getFieldWithDefault(this, 10, "") as string; - } - set headColor(value: string) { - pb_1.Message.setField(this, 10, value); - } - get bodyColor() { - return pb_1.Message.getFieldWithDefault(this, 11, "") as string; - } - set bodyColor(value: string) { - pb_1.Message.setField(this, 11, value); - } - static fromObject(data: { - common?: ReturnType; - code?: string; - codeColor?: string; - codeFontSize?: number; - point?: ReturnType; - trainDirection?: string; - hasBorder?: boolean; - borderWidth?: number; - borderColor?: string; - headColor?: string; - bodyColor?: string; - }): Train { - const message = new Train({}); - if (data.common != null) { - message.common = CommonInfo.fromObject(data.common); - } - if (data.code != null) { - message.code = data.code; - } - if (data.codeColor != null) { - message.codeColor = data.codeColor; - } - if (data.codeFontSize != null) { - message.codeFontSize = data.codeFontSize; - } - if (data.point != null) { - message.point = Point.fromObject(data.point); - } - if (data.trainDirection != null) { - message.trainDirection = data.trainDirection; - } - if (data.hasBorder != null) { - message.hasBorder = data.hasBorder; - } - if (data.borderWidth != null) { - message.borderWidth = data.borderWidth; - } - if (data.borderColor != null) { - message.borderColor = data.borderColor; - } - if (data.headColor != null) { - message.headColor = data.headColor; - } - if (data.bodyColor != null) { - message.bodyColor = data.bodyColor; - } - return message; - } - toObject() { - const data: { - common?: ReturnType; - code?: string; - codeColor?: string; - codeFontSize?: number; - point?: ReturnType; - trainDirection?: string; - hasBorder?: boolean; - borderWidth?: number; - borderColor?: string; - headColor?: string; - bodyColor?: string; - } = {}; - if (this.common != null) { - data.common = this.common.toObject(); - } - if (this.code != null) { - data.code = this.code; - } - if (this.codeColor != null) { - data.codeColor = this.codeColor; - } - if (this.codeFontSize != null) { - data.codeFontSize = this.codeFontSize; - } - if (this.point != null) { - data.point = this.point.toObject(); - } - if (this.trainDirection != null) { - data.trainDirection = this.trainDirection; - } - if (this.hasBorder != null) { - data.hasBorder = this.hasBorder; - } - if (this.borderWidth != null) { - data.borderWidth = this.borderWidth; - } - if (this.borderColor != null) { - data.borderColor = this.borderColor; - } - if (this.headColor != null) { - data.headColor = this.headColor; - } - if (this.bodyColor != null) { - data.bodyColor = this.bodyColor; - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.has_common) - writer.writeMessage(1, this.common, () => this.common.serialize(writer)); - if (this.code.length) - writer.writeString(2, this.code); - if (this.codeColor.length) - writer.writeString(3, this.codeColor); - if (this.codeFontSize != 0) - writer.writeInt32(4, this.codeFontSize); - if (this.has_point) - writer.writeMessage(5, this.point, () => this.point.serialize(writer)); - if (this.trainDirection.length) - writer.writeString(6, this.trainDirection); - if (this.hasBorder != false) - writer.writeBool(7, this.hasBorder); - if (this.borderWidth != 0) - writer.writeInt32(8, this.borderWidth); - if (this.borderColor.length) - writer.writeString(9, this.borderColor); - if (this.headColor.length) - writer.writeString(10, this.headColor); - if (this.bodyColor.length) - writer.writeString(11, this.bodyColor); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Train { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Train(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - reader.readMessage(message.common, () => message.common = CommonInfo.deserialize(reader)); - break; - case 2: - message.code = reader.readString(); - break; - case 3: - message.codeColor = reader.readString(); - break; - case 4: - message.codeFontSize = reader.readInt32(); - break; - case 5: - reader.readMessage(message.point, () => message.point = Point.deserialize(reader)); - break; - case 6: - message.trainDirection = reader.readString(); - break; - case 7: - message.hasBorder = reader.readBool(); - break; - case 8: - message.borderWidth = reader.readInt32(); - break; - case 9: - message.borderColor = reader.readString(); - break; - case 10: - message.headColor = reader.readString(); - break; - case 11: - message.bodyColor = reader.readString(); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): Train { - return Train.deserialize(bytes); - } - } - export class IscsFan extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - common?: CommonInfo; - code?: string; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("common" in data && data.common != undefined) { - this.common = data.common; - } - if ("code" in data && data.code != undefined) { - this.code = data.code; - } - } - } - get common() { - return pb_1.Message.getWrapperField(this, CommonInfo, 1) as CommonInfo; - } - set common(value: CommonInfo) { - pb_1.Message.setWrapperField(this, 1, value); - } - get has_common() { - return pb_1.Message.getField(this, 1) != null; - } - get code() { - return pb_1.Message.getFieldWithDefault(this, 2, "") as string; - } - set code(value: string) { - pb_1.Message.setField(this, 2, value); - } - static fromObject(data: { - common?: ReturnType; - code?: string; - }): IscsFan { - const message = new IscsFan({}); - if (data.common != null) { - message.common = CommonInfo.fromObject(data.common); - } - if (data.code != null) { - message.code = data.code; - } - return message; - } - toObject() { - const data: { - common?: ReturnType; - code?: string; - } = {}; - if (this.common != null) { - data.common = this.common.toObject(); - } - if (this.code != null) { - data.code = this.code; - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.has_common) - writer.writeMessage(1, this.common, () => this.common.serialize(writer)); - if (this.code.length) - writer.writeString(2, this.code); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): IscsFan { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new IscsFan(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - reader.readMessage(message.common, () => message.common = CommonInfo.deserialize(reader)); - break; - case 2: - message.code = reader.readString(); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): IscsFan { - return IscsFan.deserialize(bytes); - } - } - export class Turnout extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | {}) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { } - } - static fromObject(data: {}): Turnout { - const message = new Turnout({}); - return message; - } - toObject() { - const data: {} = {}; - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Turnout { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Turnout(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): Turnout { - return Turnout.deserialize(bytes); - } - } - export class Signal extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - common?: CommonInfo; - code?: string; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("common" in data && data.common != undefined) { - this.common = data.common; - } - if ("code" in data && data.code != undefined) { - this.code = data.code; - } - } - } - get common() { - return pb_1.Message.getWrapperField(this, CommonInfo, 1) as CommonInfo; - } - set common(value: CommonInfo) { - pb_1.Message.setWrapperField(this, 1, value); - } - get has_common() { - return pb_1.Message.getField(this, 1) != null; - } - get code() { - return pb_1.Message.getFieldWithDefault(this, 2, "") as string; - } - set code(value: string) { - pb_1.Message.setField(this, 2, value); - } - static fromObject(data: { - common?: ReturnType; - code?: string; - }): Signal { - const message = new Signal({}); - if (data.common != null) { - message.common = CommonInfo.fromObject(data.common); - } - if (data.code != null) { - message.code = data.code; - } - return message; - } - toObject() { - const data: { - common?: ReturnType; - code?: string; - } = {}; - if (this.common != null) { - data.common = this.common.toObject(); - } - if (this.code != null) { - data.code = this.code; - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.has_common) - writer.writeMessage(1, this.common, () => this.common.serialize(writer)); - if (this.code.length) - writer.writeString(2, this.code); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Signal { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Signal(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - reader.readMessage(message.common, () => message.common = CommonInfo.deserialize(reader)); - break; - case 2: - message.code = reader.readString(); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): Signal { - return Signal.deserialize(bytes); - } - } -} diff --git a/src/examples/app/protos/graphic_states.ts b/src/examples/app/protos/graphic_states.ts deleted file mode 100644 index a44ccea..0000000 --- a/src/examples/app/protos/graphic_states.ts +++ /dev/null @@ -1,191 +0,0 @@ -/** - * Generated by the protoc-gen-ts. DO NOT EDIT! - * compiler version: 4.22.2 - * source: graphic_states.proto - * git: https://github.com/thesayyn/protoc-gen-ts */ -import * as pb_1 from "google-protobuf"; -export namespace graphicStates { - export class CommonState extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - code?: string; - graphicType?: string; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("code" in data && data.code != undefined) { - this.code = data.code; - } - if ("graphicType" in data && data.graphicType != undefined) { - this.graphicType = data.graphicType; - } - } - } - get code() { - return pb_1.Message.getFieldWithDefault(this, 1, "") as string; - } - set code(value: string) { - pb_1.Message.setField(this, 1, value); - } - get graphicType() { - return pb_1.Message.getFieldWithDefault(this, 2, "") as string; - } - set graphicType(value: string) { - pb_1.Message.setField(this, 2, value); - } - static fromObject(data: { - code?: string; - graphicType?: string; - }): CommonState { - const message = new CommonState({}); - if (data.code != null) { - message.code = data.code; - } - if (data.graphicType != null) { - message.graphicType = data.graphicType; - } - return message; - } - toObject() { - const data: { - code?: string; - graphicType?: string; - } = {}; - if (this.code != null) { - data.code = this.code; - } - if (this.graphicType != null) { - data.graphicType = this.graphicType; - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.code.length) - writer.writeString(1, this.code); - if (this.graphicType.length) - writer.writeString(2, this.graphicType); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): CommonState { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new CommonState(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - message.code = reader.readString(); - break; - case 2: - message.graphicType = reader.readString(); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): CommonState { - return CommonState.deserialize(bytes); - } - } - export class IscsFan extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - common?: CommonState; - state?: number; - }) { - super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); - if (!Array.isArray(data) && typeof data == "object") { - if ("common" in data && data.common != undefined) { - this.common = data.common; - } - if ("state" in data && data.state != undefined) { - this.state = data.state; - } - } - } - get common() { - return pb_1.Message.getWrapperField(this, CommonState, 1) as CommonState; - } - set common(value: CommonState) { - pb_1.Message.setWrapperField(this, 1, value); - } - get has_common() { - return pb_1.Message.getField(this, 1) != null; - } - get state() { - return pb_1.Message.getFieldWithDefault(this, 2, 0) as number; - } - set state(value: number) { - pb_1.Message.setField(this, 2, value); - } - static fromObject(data: { - common?: ReturnType; - state?: number; - }): IscsFan { - const message = new IscsFan({}); - if (data.common != null) { - message.common = CommonState.fromObject(data.common); - } - if (data.state != null) { - message.state = data.state; - } - return message; - } - toObject() { - const data: { - common?: ReturnType; - state?: number; - } = {}; - if (this.common != null) { - data.common = this.common.toObject(); - } - if (this.state != null) { - data.state = this.state; - } - return data; - } - serialize(): Uint8Array; - serialize(w: pb_1.BinaryWriter): void; - serialize(w?: pb_1.BinaryWriter): Uint8Array | void { - const writer = w || new pb_1.BinaryWriter(); - if (this.has_common) - writer.writeMessage(1, this.common, () => this.common.serialize(writer)); - if (this.state != 0) - writer.writeInt32(2, this.state); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): IscsFan { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new IscsFan(); - while (reader.nextField()) { - if (reader.isEndGroup()) - break; - switch (reader.getFieldNumber()) { - case 1: - reader.readMessage(message.common, () => message.common = CommonState.deserialize(reader)); - break; - case 2: - message.state = reader.readInt32(); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): IscsFan { - return IscsFan.deserialize(bytes); - } - } -} diff --git a/src/layouts/DrawLayout.vue b/src/layouts/DrawLayout.vue deleted file mode 100644 index 3944e5a..0000000 --- a/src/layouts/DrawLayout.vue +++ /dev/null @@ -1,236 +0,0 @@ - - - diff --git a/src/pages/ErrorNotFound.vue b/src/pages/ErrorNotFound.vue deleted file mode 100644 index f4e0bb8..0000000 --- a/src/pages/ErrorNotFound.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/pages/IndexPage.vue b/src/pages/IndexPage.vue deleted file mode 100644 index 1df5ee2..0000000 --- a/src/pages/IndexPage.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - diff --git a/src/pages/UserLogin.vue b/src/pages/UserLogin.vue deleted file mode 100644 index 053f16a..0000000 --- a/src/pages/UserLogin.vue +++ /dev/null @@ -1,93 +0,0 @@ - - - - - diff --git a/src/pages/UserRegister.vue b/src/pages/UserRegister.vue deleted file mode 100644 index 211a173..0000000 --- a/src/pages/UserRegister.vue +++ /dev/null @@ -1,97 +0,0 @@ - - - - - diff --git a/src/quasar.d.ts b/src/quasar.d.ts deleted file mode 100644 index 5937f7a..0000000 --- a/src/quasar.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-disable */ - -// Forces TS to apply `@quasar/app-vite` augmentations of `quasar` package -// Removing this would break `quasar/wrappers` imports as those typings are declared -// into `@quasar/app-vite` -// As a side effect, since `@quasar/app-vite` reference `quasar` to augment it, -// this declaration also apply `quasar` own -// augmentations (eg. adds `$q` into Vue component context) -/// diff --git a/src/router/index.ts b/src/router/index.ts deleted file mode 100644 index 4531114..0000000 --- a/src/router/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { route } from 'quasar/wrappers'; -import { - createMemoryHistory, - createRouter, - createWebHashHistory, - createWebHistory, -} from 'vue-router'; - -import routes from './routes'; - -/* - * If not building with SSR mode, you can - * directly export the Router instantiation; - * - * The function below can be async too; either use - * async/await or return a Promise which resolves - * with the Router instance. - */ - -export default route(function (/* { store, ssrContext } */) { - const createHistory = process.env.SERVER - ? createMemoryHistory - : (process.env.VUE_ROUTER_MODE === 'history' ? createWebHistory : createWebHashHistory); - - const Router = createRouter({ - scrollBehavior: () => ({ left: 0, top: 0 }), - routes, - - // Leave this as is and make changes in quasar.conf.js instead! - // quasar.conf.js -> build -> vueRouterMode - // quasar.conf.js -> build -> publicPath - history: createHistory(process.env.VUE_ROUTER_BASE), - }); - - return Router; -}); diff --git a/src/router/routes.ts b/src/router/routes.ts deleted file mode 100644 index 8997b3e..0000000 --- a/src/router/routes.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { RouteRecordRaw } from 'vue-router'; - -const routes: RouteRecordRaw[] = [ - { - path: '/', - name: 'home', - component: () => import('layouts/DrawLayout.vue'), - }, - - { - path: '/login', - name: 'login', - component: () => import('pages/UserLogin.vue'), - }, - - { - path: '/register', - name: 'register', - component: () => import('pages/UserRegister.vue'), - }, - - // Always leave this as last one, - // but you can also remove it - { - path: '/:catchAll(.*)*', - component: () => import('pages/ErrorNotFound.vue'), - }, -]; - -export default routes; diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts deleted file mode 100644 index 4e6894b..0000000 --- a/src/shims-vue.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* eslint-disable */ - -/// - -// Mocks all files ending in `.vue` showing them as plain Vue instances -declare module '*.vue' { - import type { DefineComponent } from 'vue'; - const component: DefineComponent<{}, {}, any>; - export default component; -} diff --git a/src/stores/draw-store.ts b/src/stores/draw-store.ts deleted file mode 100644 index 26ad840..0000000 --- a/src/stores/draw-store.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { defineStore } from 'pinia'; -import { destroyDrawApp, getDrawApp, initDrawApp } from 'src/examples/app'; -import { DrawAssistant, GraphicData, IDrawApp, JlGraphic } from 'src/jlgraphic'; -import { IJlCanvas } from 'src/jlgraphic/app/JlGraphicApp'; -import { markRaw } from 'vue'; - -export const useDrawStore = defineStore('draw', { - state: () => ({ - drawAssistant: null as DrawAssistant | null, - selectedGraphics: null as JlGraphic[] | null, - }), - getters: { - drawMode: (state) => state.drawAssistant != null, - drawGraphicType: (state) => state.drawAssistant?.type, - drawGraphicName: (state) => state.drawAssistant?.description, - drawGraphicTemplate: (state) => state.drawAssistant?.graphicTemplate, - - selectedGraphicType: (state) => { - if (state.selectedGraphics) { - if (state.selectedGraphics.length === 1) { - return state.selectedGraphics[0].type; - } - } - }, - selectedObjName: (state) => { - if (state.selectedGraphics) { - if (state.selectedGraphics.length == 0) { - return '画布'; - } else if (state.selectedGraphics.length == 1) { - return state.selectedGraphics[0].type; - } - return '多选'; - } - return ''; - }, - selectedGraphic: (state) => { - if (state.selectedGraphics) { - if (state.selectedGraphics.length === 1) { - return state.selectedGraphics[0]; - } - } - return null; - }, - }, - actions: { - getDrawApp(): IDrawApp { - const app = getDrawApp(); - if (app == null) { - throw new Error('未初始化app'); - } - return app; - }, - getJlCanvas(): IJlCanvas { - return this.getDrawApp().canvas; - }, - bindFormData(form: GraphicData): void { - console.log('绑定form数据', form); - const app = this.getDrawApp(); - app.bindFormData(form); - // app.app.on('graphicselectedchange', () => { - // if (app.selectedGraphics.length == 1) { - // const g = app.selectedGraphics[0]; - // if (g.type === form.graphicType) { - // form.copyFrom(g.saveData()); - // } - // } - // }); - }, - unbindFormData(form: GraphicData): void { - console.log('取消绑定form数据', form); - }, - initDrawApp() { - const app = initDrawApp(); - app.on('interaction-plugin-resume', (plugin) => { - if (plugin.isAppPlugin()) { - if (Object.hasOwn(plugin, '__GraphicDrawAssistant')) { - this.drawAssistant = plugin as DrawAssistant; - } else { - this.drawAssistant = null; - } - } - }); - app.on('graphicselected', () => { - console.log('批量选中事件', app.selectedGraphics.length); - this.selectedGraphics = markRaw(app.selectedGraphics); - }); - this.selectedGraphics = []; - return app; - }, - destroy() { - // console.log('绘制状态清空,绘制应用销毁'); - this.drawAssistant = null; - this.selectedGraphics = null; - destroyDrawApp(); - }, - }, -}); diff --git a/src/stores/example-store.ts b/src/stores/example-store.ts deleted file mode 100644 index 83e8390..0000000 --- a/src/stores/example-store.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineStore } from 'pinia'; - -export const useCounterStore = defineStore('counter', { - state: () => ({ - counter: 0, - }), - getters: { - doubleCount: (state) => state.counter * 2, - }, - actions: { - increment() { - this.counter++; - }, - }, -}); diff --git a/src/stores/index.ts b/src/stores/index.ts deleted file mode 100644 index d30b7cf..0000000 --- a/src/stores/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { store } from 'quasar/wrappers' -import { createPinia } from 'pinia' -import { Router } from 'vue-router'; - -/* - * When adding new properties to stores, you should also - * extend the `PiniaCustomProperties` interface. - * @see https://pinia.vuejs.org/core-concepts/plugins.html#typing-new-store-properties - */ -declare module 'pinia' { - export interface PiniaCustomProperties { - readonly router: Router; - } -} - -/* - * If not building with SSR mode, you can - * directly export the Store instantiation; - * - * The function below can be async too; either use - * async/await or return a Promise which resolves - * with the Store instance. - */ - -export default store((/* { ssrContext } */) => { - const pinia = createPinia() - - // You can add Pinia plugins here - // pinia.use(SomePiniaPlugin) - - return pinia -}) diff --git a/src/stores/store-flag.d.ts b/src/stores/store-flag.d.ts deleted file mode 100644 index 7677175..0000000 --- a/src/stores/store-flag.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* eslint-disable */ -// THIS FEATURE-FLAG FILE IS AUTOGENERATED, -// REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING -import "quasar/dist/types/feature-flag"; - -declare module "quasar/dist/types/feature-flag" { - interface QuasarFeatureFlags { - store: true; - } -} diff --git a/tsconfig.json b/tsconfig.json index ee0d9cf..bf07cde 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,19 @@ { - "extends": "@quasar/app-vite/tsconfig-preset", "compilerOptions": { - "baseUrl": "." - } -} \ No newline at end of file + "baseUrl": ".", + "esModuleInterop": true, + "allowJs": false, + "module": "ESNext", + "target": "ESNext", + "moduleResolution": "Node", + "typeRoots": ["node_modules/@types"], + "sourceMap": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "lib": ["esnext", "dom"], + "useDefineForClassFields": true + }, + "include": ["src/**/*.ts", "rollup.config.ts", "src/jlgraphic/global.d.ts"], + "exclude": ["node_modules"] +} diff --git a/yarn.lock b/yarn.lock index cec0365..367090e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,36 +2,31 @@ # yarn lockfile v1 -"@babel/parser@^7.16.4": - version "7.21.4" - resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" - integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@esbuild/linux-loong64@0.14.54": - version "0.14.54" - resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" - integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.3.0": +"@eslint-community/eslint-utils@^4.2.0": version "4.4.0" - resolved "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0": - version "4.5.0" - resolved "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" - integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== +"@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@eslint/eslintrc@^2.0.2": - version "2.0.2" - resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.0.2.tgz#01575e38707add677cf73ca1589abba8da899a02" - integrity sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ== +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.5.1" + espree "^9.6.0" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -39,33 +34,33 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.39.0": - version "8.39.0" - resolved "https://registry.npmmirror.com/@eslint/js/-/js-8.39.0.tgz#58b536bcc843f4cd1e02a7e6171da5c040f4d44b" - integrity sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng== +"@eslint/js@8.55.0": + version "8.55.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.55.0.tgz#b721d52060f369aa259cf97392403cb9ce892ec6" + integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA== -"@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" @@ -73,346 +68,336 @@ "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" - resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@pixi/accessibility@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/accessibility/-/accessibility-7.2.4.tgz#3198d0059c230c668b1179457346a3b5dcba6e64" - integrity sha512-EVjuqUqv9FeYFXCv0S0qj1hgCtbAMNBPCbOGEtiMogpM++/IySxBZvcOYg3rRgo9inwt2s4Bi7kUiqMPD8hItw== +"@pixi/accessibility@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/accessibility/-/accessibility-7.3.2.tgz#e823d96a2d032a5bbaccdf547fcf46746bfb865a" + integrity sha512-MdkU22HTauRvq9cMeWZIQGaDDa86sr+m12rKNdLV+FaDQgP/AhP+qCVpK7IKeJa9BrWGXaYMw/vueij7HkyDSA== -"@pixi/app@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/app/-/app-7.2.4.tgz#ae16fdc9fce04224fb36311168d902a2e7d0e65a" - integrity sha512-eJ2jpu5P28ip07nLItw6sETXn45P4KR/leMJ6zPHRlhT1m8t5zTsWr3jK4Uj8LF2E+6KlPNzLQh5Alf/unn/aQ== +"@pixi/app@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/app/-/app-7.3.2.tgz#7121aaa11ffbf586738e2422db7e12464f6c46e7" + integrity sha512-3YRFSMvAxDebAz3/JJv+2jzbPkT8cHC0IHmmLRN8krDL1pZV+YjMLgMwN/Oeyv5TSbwNqnrF5su5whNkRaxeZQ== -"@pixi/assets@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/assets/-/assets-7.2.4.tgz#944f4a15acc888071c0811d3d68524afb0ed069c" - integrity sha512-7199re3wvMAlVqXLaCyAr8IkJSXqkeVAxcYyB2rBu4Id5m2hhlGX1dQsdMBiCXLwu6/LLVqDvJggSNVQBzL6ZQ== +"@pixi/assets@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/assets/-/assets-7.3.2.tgz#9f460f9939b60d12a6af184bf21978f714876421" + integrity sha512-yteq6ptAxA09EcwU9D9hl7qr5yWIqy+c2PsXkTDkc76vTAwIamLY3KxLq2aR5y1U4L4O6aHFJd26uNhHcuTPmw== dependencies: "@types/css-font-loading-module" "^0.0.7" -"@pixi/color@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/color/-/color-7.2.4.tgz#6d6d5dbc01ae2a4f1c8eb48e98fff89ac0c3e40d" - integrity sha512-B/+9JRcXe2uE8wQfsueFRPZVayF2VEMRB7XGeRAsWCryOX19nmWhv0Nt3nOU2rvzI0niz9XgugJXsB6vVmDFSg== +"@pixi/color@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/color/-/color-7.3.2.tgz#3a9f03ece87ed03748e1ee71658e1fc627c19981" + integrity sha512-jur5PvdOtUBEUTjmPudW5qdQq6yYGlVGsi3HyhasJw14bN+GKJwiCKgIsyrsiNL5HBUXmje4ICwQohf6BqKqxA== dependencies: - colord "^2.9.3" + "@pixi/colord" "^2.9.6" -"@pixi/compressed-textures@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/compressed-textures/-/compressed-textures-7.2.4.tgz#bbf84689a9f4f41d5a8e9476ea6520a4c19412ac" - integrity sha512-atnWyw/ot/Wg69qhgskKiuTYCZx15IxV35sa0KyXMthyjyvDLCIvOn0nczM6wCBy9H96SjJbfgynVWhVrip6qw== +"@pixi/colord@^2.9.6": + version "2.9.6" + resolved "https://registry.yarnpkg.com/@pixi/colord/-/colord-2.9.6.tgz#7e4e7851480da6fd3cef4e331f008d60be7e1204" + integrity sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA== -"@pixi/constants@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/constants/-/constants-7.2.4.tgz#45c23b247309e78d4105f04063ad8b453dae8b2f" - integrity sha512-hKuHBWR6N4Q0Sf5MGF3/9l+POg/G5rqhueHfzofiuelnKg7aBs3BVjjZ+6hZbd6M++vOUmxYelEX/NEFBxrheA== +"@pixi/compressed-textures@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/compressed-textures/-/compressed-textures-7.3.2.tgz#2a0f6c809e5bbdfdf4933c47cd261d89f38a9612" + integrity sha512-J3ENMHDPQO6CJRei55gqI0WmiZJIK6SgsW5AEkShT0aAe5miEBSomv70pXw/58ru+4/Hx8cXjamsGt4aQB2D0Q== -"@pixi/core@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/core/-/core-7.2.4.tgz#9f93a0744c795b17045127c2630f976580f03008" - integrity sha512-0XtvrfxHlS2T+beBBSpo7GI8+QLyyTqMVQpNmPqB4woYxzrOEJ9JaUFBaBfCvycLeUkfVih1u6HAbtF+2d1EjQ== +"@pixi/constants@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/constants/-/constants-7.3.2.tgz#185b1fe4e65c936cdd59748111432f0878ee47d9" + integrity sha512-Q8W3ncsFxmfgC5EtokpG92qJZabd+Dl+pbQAdHwiPY3v+8UNq77u4VN2qtl1Z04864hCcg7AStIYEDrzqTLF6Q== + +"@pixi/core@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/core/-/core-7.3.2.tgz#9c72234da688b665325fd5f8362537e0877a2443" + integrity sha512-Pta3ee8MtJ3yKxGXzglBWgwbEOKMB6Eth+FpLTjL0rgxiqTB550YX6jsNEQQAzcGjCBlO3rC/IF57UZ2go/X6w== dependencies: - "@pixi/color" "7.2.4" - "@pixi/constants" "7.2.4" - "@pixi/extensions" "7.2.4" - "@pixi/math" "7.2.4" - "@pixi/runner" "7.2.4" - "@pixi/settings" "7.2.4" - "@pixi/ticker" "7.2.4" - "@pixi/utils" "7.2.4" + "@pixi/color" "7.3.2" + "@pixi/constants" "7.3.2" + "@pixi/extensions" "7.3.2" + "@pixi/math" "7.3.2" + "@pixi/runner" "7.3.2" + "@pixi/settings" "7.3.2" + "@pixi/ticker" "7.3.2" + "@pixi/utils" "7.3.2" "@types/offscreencanvas" "^2019.6.4" -"@pixi/display@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/display/-/display-7.2.4.tgz#cbf46ba0c0c0d30064b9ce67190a0a6a3624c62f" - integrity sha512-w5tqb8cWEO5qIDaO9GEqRvxYhL0iMk0Wsngw23bbLm1gLEQmrFkB2tpJlRAqd7H82C3DrDDeWvkrrxW6+m4apg== +"@pixi/display@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/display/-/display-7.3.2.tgz#5d4005045ebd47db9974327df2f861e95ad84028" + integrity sha512-cY5AnZ3TWt5GYGx4e5AQ2/2U9kP+RorBg/O30amJ+8e9bFk9rS8cjh/DDq/hc4lql96BkXAInTl40eHnAML5lQ== -"@pixi/events@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/events/-/events-7.2.4.tgz#06434c9e84838b87d7626151ec556a66796ac206" - integrity sha512-/JtmoB98fzIU8giN9xvlRvmvOi6u4MaD2DnKNOMHkQ1MBraj3pmrXM9fZ0JbNzi+324GraAAY76QidgHjIYoYQ== +"@pixi/events@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/events/-/events-7.3.2.tgz#ff985f7dae291a440298b2d5d91dd63341aa36d7" + integrity sha512-Moca9epu8jk1wIQCdVYjhz2pD9Ol21m50wvWUKvpgt9yM/AjkCLSDt8HO/PmTpavDrkhx5pVVWeDDA6FyUNaGA== -"@pixi/extensions@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/extensions/-/extensions-7.2.4.tgz#ab2940abce3935706e956d1bcf2dbf44aca440db" - integrity sha512-Mnqv9scbL1ARD3QFKfOWs2aSVJJfP1dL8g5UiqGImYO3rZbz/9QCzXOeMVIZ5n3iaRyKMNhFFr84/zUja2H7Dw== +"@pixi/extensions@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/extensions/-/extensions-7.3.2.tgz#8e5589c534d3866ddae023666891a793b308a256" + integrity sha512-Qw84ADfvmVu4Mwj+zTik/IEEK9lWS5n4trbrpQCcEZ+Mb8oRAXWvKz199mi1s7+LaZXDqeCY1yr2PHQaFf1KBA== -"@pixi/extract@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/extract/-/extract-7.2.4.tgz#2db62611a3135ee8232affdb7b26cab37cb2a0a3" - integrity sha512-wlXZg+J2L/1jQhRi5nZQP/cXshovhjksjss91eAKMvY5aGxNAQovCP4xotJ/XJjfTvPMpeRzHPFYzm3PrOPQ7g== +"@pixi/extract@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/extract/-/extract-7.3.2.tgz#b9a29e147bc1817d0400a7dfcd4fb7dbf972ce41" + integrity sha512-KsoflvQZV/XD8A8xbtRnmI4reYekbI4MOi7ilwQe5tMz6O1mO7IzrSukxkSMD02f6SpbAqbi7a1EayTjvY0ECQ== -"@pixi/filter-alpha@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/filter-alpha/-/filter-alpha-7.2.4.tgz#f33621fa4bdc95de09457780aa33eb253fe6447f" - integrity sha512-UTUMSGyktUr+I9vmigqJo9iUhb0nwGyqTTME2xBWZvVGCnl5z+/wHxvIBBCe5pNZ66IM15pGXQ4cDcfqCuP2kA== +"@pixi/filter-alpha@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/filter-alpha/-/filter-alpha-7.3.2.tgz#7404c5e1a73f148579d32547680a35dcf5a45a67" + integrity sha512-nZMdn310wH5ZK1slwv3X4qT8eLoAGO7SgYGCy5IsMtpCtNObzE9XA4tAfhXrjihyzPS9KvszgAbnv1Qpfh0/uw== -"@pixi/filter-blur@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/filter-blur/-/filter-blur-7.2.4.tgz#834447f9d6edec7d27414c9961b9e6009acd678a" - integrity sha512-aLyXIoxy14bTansCPtbY8x7Sdn2OrrqkF/pcKiRXHJGGhi7wPacvB/NcmYJdnI/n2ExQ6V5Njuj/nfrsejVwcA== +"@pixi/filter-blur@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/filter-blur/-/filter-blur-7.3.2.tgz#290eb8b464ab3885829918cde38f1b5e10532dc8" + integrity sha512-unu3zhwHMhN+iAe7Td2rK40i2UJ2GOhzWK+6jcU3ZkMOsFCT5kgBoMRTejeQVcvCs6GoYK8imbkE7mXt05Vj6A== -"@pixi/filter-color-matrix@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/filter-color-matrix/-/filter-color-matrix-7.2.4.tgz#4c9e6e174b27635ce5e92f34d372366b901e250f" - integrity sha512-DFtayybYXoUh73eHUFRK5REbi1t3FZuVUnaQTj+euHKF9L7EaYc3Q9wctpx1WPRcwkqEX50M4SNFhxpA7Pxtaw== +"@pixi/filter-color-matrix@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/filter-color-matrix/-/filter-color-matrix-7.3.2.tgz#80e6dfb75caa7118e51a39686d46371f3c5f2010" + integrity sha512-rbyjes/9SMoV9jjPiK0sLMkmLfN8D17GoTJIfq/KLv1x9646W5fL2QSKkN04UkZ+020ndWvIOxK1S97tvRyCfg== -"@pixi/filter-displacement@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/filter-displacement/-/filter-displacement-7.2.4.tgz#39da0592966079d7e194be46494b8055b5eebda2" - integrity sha512-Simq3IBJKt7+Gvk4kK7OFkfoeYUMhNhIyATCdeT+Jkdkq5WV7pYnH5hqO0YW7eAHrgjV13yn6t4H/GC4+6LhEA== +"@pixi/filter-displacement@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/filter-displacement/-/filter-displacement-7.3.2.tgz#648a46b6c3afadc188d4b700834ca722f870338e" + integrity sha512-ZHl7Sfb8JYd9Z6j96OHCC0NhMKhhXJRE5AbkSDohjEMVCK1BV5rDGAHV8WVt/2MJ/j83CXUpydzyMhdM4lMchg== -"@pixi/filter-fxaa@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/filter-fxaa/-/filter-fxaa-7.2.4.tgz#78fac5466ca1a249f343be1af90c79bae399bf92" - integrity sha512-qzKjdL+Ih18uGTJLg8tT/H+YCsTeGkw2uF7lyKnw/lxGLJQhLWIhM95M9qSNgxbXyW1vp7SbG81a9aAEz2HAhA== +"@pixi/filter-fxaa@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/filter-fxaa/-/filter-fxaa-7.3.2.tgz#47c6ac6703284a32570adfe2cbf77bba5295c3cf" + integrity sha512-9brtlxDnQTZk2XiFBKdBK9e+8CX9LdxxcL7LRpjEyiHuAPvTlQgu9B85LrJ4GzWKqJJKaIIZBzhIoiCLUnfeXg== -"@pixi/filter-noise@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/filter-noise/-/filter-noise-7.2.4.tgz#0586a00381ec0e63f6c00d49cd58b781eaf07f37" - integrity sha512-QAU9Ybj2ZQrWM9ZEjTTC0iLnQcuyNoZNRinxSbg1G0yacpmsSb9wvV5ltIZ66+hfY+90+u2Nudt/v9g6pvOdGg== +"@pixi/filter-noise@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/filter-noise/-/filter-noise-7.3.2.tgz#e5f1ea435611fa1a6f3c5a30f4ce3c86d90cc267" + integrity sha512-F8GQQ20n7tCjThX6GCXckiXz2YffOCxicTJ0oat9aVDZh+sVsAxYX0aKSdHh0hhv18F0yuc6tPsSL5DYb63xFg== -"@pixi/graphics-extras@^7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/graphics-extras/-/graphics-extras-7.2.4.tgz#72ac967992f239d3671d6e680ac891471619fe07" - integrity sha512-0yT91yqF3KLiZI/iLRcfcYlTVpkVyWsfGtWEIorZs0eX+/zYx7um7EJ2h7tFORI/1FxA2maR4td5vpgCwOLJAQ== +"@pixi/graphics@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/graphics/-/graphics-7.3.2.tgz#42928e8840c24b4f53882b26c95cbc5ef227bfdb" + integrity sha512-PhU6j1yub4tH/s+/gqByzgZ3mLv1mfb6iGXbquycg3+WypcxHZn0opFtI/axsazaQ9SEaWxw1m3i40WG5ANH5g== -"@pixi/graphics@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/graphics/-/graphics-7.2.4.tgz#8500b604c36184736926393cb0ca9b9de9afef86" - integrity sha512-3A2EumTjWJgXlDLOyuBrl9b6v1Za/E+/IjOGUIX843HH4NYaf1a2sfDfljx6r3oiDvy+VhuBFmgynRcV5IyA0Q== +"@pixi/math@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/math/-/math-7.3.2.tgz#bcf2357d8bfa2a7836d645063b1f854c4a24d745" + integrity sha512-dutoZ0IVJ5ME7UtYNo2szu4D7qsgtJB7e3ylujBVu7BOP2e710BVtFwFSFV768N14h9H5roGnuzVoDiJac2u+w== -"@pixi/math@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/math/-/math-7.2.4.tgz#219b64ca44348a1ee900ee074c51ee7e41615059" - integrity sha512-LJB+mozyEPllxa0EssFZrKNfVwysfaBun4b2dJKQQInp0DafgbA0j7A+WVg0oe51KhFULTJMpDqbLn/ITFc41A== +"@pixi/mesh-extras@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/mesh-extras/-/mesh-extras-7.3.2.tgz#fc00a6acb811a0780ce7b54ade844b32d20c9621" + integrity sha512-s/tg9TsTZZxLEdCDKWnBChDGkc041HCTP7ykJv4fEROzb9B0lskULYyvv+/YNNKa2Ugb9WnkMknpOdOXCpjyyg== -"@pixi/mesh-extras@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/mesh-extras/-/mesh-extras-7.2.4.tgz#e3c6721c1a8ff5852e76402276b2f495b7db702d" - integrity sha512-Lxqq/1E2EmDgjZX8KzjhBy3VvITIQ00arr2ikyHYF1d0XtQTKEYpr8VKzhchqZ5/9DuyTDbDMYGhcxoNXQmZrQ== +"@pixi/mesh@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/mesh/-/mesh-7.3.2.tgz#e0159b03c1ae60dfba7c8e87f84c4400e4bcc9c7" + integrity sha512-LFkt7ELYXQLgbgHpjl68j6JD5ejUwma8zoPn2gqSBbY+6pK/phjvV1Wkh76muF46VvNulgXF0+qLIDdCsfrDaA== -"@pixi/mesh@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/mesh/-/mesh-7.2.4.tgz#c78cc24f831a9e08d4ac0a1706e82f3498ba6907" - integrity sha512-wiALIqcRKib2BqeH9kOA5fOKWN352nqAspgbDa8gA7OyWzmNwqIedIlElixd0oLFOrIN5jOZAdzeKnoYQlt9Aw== +"@pixi/mixin-cache-as-bitmap@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-7.3.2.tgz#dc6b53f370444b12e58593aebc87231fff88f20e" + integrity sha512-bZRlyUN5+9kCUjn67V0IFtYIrbmx9Vs4sMOmXyrX3Q4B4gPLE46IzZz3v0IVaTjp32udlQztfJalIaWbuqgb3A== -"@pixi/mixin-cache-as-bitmap@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-7.2.4.tgz#4fb69efc40b30b0a8c2c1ad1eee6ca3227eccaed" - integrity sha512-95L/9nzfLHw6GoeqqRl/RjSloKvRt0xrc2inCmjMZvMsFUEtHN2F8IWd1k5vcv0S+83NCreFkJg6nJm1m5AZqg== +"@pixi/mixin-get-child-by-name@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-7.3.2.tgz#59ac446c3c75e096aee8d36bdb72bd4aa1430a4d" + integrity sha512-mbUi3WxXrkViH7qOgjk4fu2BN36NwNb7u+Fy1J5dS8Bntj57ZVKmEV9PbUy0zYjXE8rVmeAvSu/2kbn5n9UutQ== -"@pixi/mixin-get-child-by-name@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-7.2.4.tgz#863b14c774d3af7e2a38a68904c06bc51a2b51dd" - integrity sha512-9g17KgSBEEhkinnKk4dqmxagzHOCPSTvGB6lOopBq4yyXmr/2WVv+QGjuzE0O+p80szQeBJjPBQxzrfBILaSRw== +"@pixi/mixin-get-global-position@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/mixin-get-global-position/-/mixin-get-global-position-7.3.2.tgz#84efe8bf315e7e1f539435281302c938d98725ab" + integrity sha512-1nhWbBgmw6rK7yQJxzeI9yjKYYEkM5i3pee8qVu4YWo3b1xWVQA7osQG7aGM/4qywDkXaA1ZvciA5hfg6f4Q5Q== -"@pixi/mixin-get-global-position@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/mixin-get-global-position/-/mixin-get-global-position-7.2.4.tgz#8c0b96a0bcd381db9486954aeeb6d06c5ea2e2c0" - integrity sha512-UrAUF2BXCeWtFgR2m+er41Ky7zShT7r228cZkB6ZfYwMeThhwqG5mH68UeCyP6p68JMpT1gjI2DPfeSRY3ecnA== +"@pixi/particle-container@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/particle-container/-/particle-container-7.3.2.tgz#7e2826ea986a1cf2954830eab99b7f8bee4042d7" + integrity sha512-JYc4j4z97KmxyLp+1Lg0SNi8hy6RxcBBNQGk+CSLNXeDWxx3hykT5gj/ORX1eXyzHh1ZCG1XzeVS9Yr8QhlFHA== -"@pixi/particle-container@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/particle-container/-/particle-container-7.2.4.tgz#8f277f65e73b061d0859c7e526f5161f9b090242" - integrity sha512-tpSzilZGFtAoi8XhzL0TecLPNRQAbY8nWV9XNGXJDw+nxXp18GCe8L6eEmnHLlAug67BRHl65DtrdvTknPX+4g== +"@pixi/prepare@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/prepare/-/prepare-7.3.2.tgz#d643bbab6df768c52819806a186063ea13bb2c73" + integrity sha512-aLPAXSYLUhMwxzJtn9m0TSZe+dQlZCt09QNBqYbSi8LZId54QMDyvfBb4zBOJZrD2xAZgYL5RIJuKHwZtFX6lQ== -"@pixi/prepare@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/prepare/-/prepare-7.2.4.tgz#fd470bbc7dd90c4a8111989c405ffb5521850ff9" - integrity sha512-Yff5Sh4kTLdKc5VkkM44LW9gpj7Izw8ns3P1TzWxqeGjzPZ3folr/tQujGL+Qw+8A9VESp+hX9MSIHyw+jpyrg== +"@pixi/runner@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/runner/-/runner-7.3.2.tgz#5cd89cba0a604272e7320d292fedca36a681c486" + integrity sha512-maKotoKJCQiQGBJwfM+iYdQKjrPN/Tn9+72F4WIf706zp/5vKoxW688Rsktg5BX4Mcn7ZkZvcJYTxj2Mv87lFA== -"@pixi/runner@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/runner/-/runner-7.2.4.tgz#7356e768a43809ed6f8b3254e9bdd8c1a47af0e7" - integrity sha512-YtyqPk1LA+0guEFKSFx6t/YSvbEQwajFwi4Ft8iDhioa6VK2MmTir1GjWwy7JQYLcDmYSAcQjnmFtVTZohyYSw== - -"@pixi/settings@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/settings/-/settings-7.2.4.tgz#bfd3107ad425f99316018ee441accdf7d55627e6" - integrity sha512-ZPKRar9EwibijGmH8EViu4Greq1I/O7V/xQx2rNqN23XA7g09Qo6yfaeQpufu5xl8+/lZrjuHtQSnuY7OgG1CA== +"@pixi/settings@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/settings/-/settings-7.3.2.tgz#6c14babf416d6c9ddb72f07b0c517ae0353a38b6" + integrity sha512-vtxzuARDTbFe0fRYSqB53B+mPpX7v+QjjnCUmVMVvZiWr3QcngMWVml6c6dQDln7IakWoKZRrNG4FpggvDgLVg== dependencies: - "@pixi/constants" "7.2.4" + "@pixi/constants" "7.3.2" "@types/css-font-loading-module" "^0.0.7" ismobilejs "^1.1.0" -"@pixi/sprite-animated@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/sprite-animated/-/sprite-animated-7.2.4.tgz#46b95e52781dd7cf84ee315521c209e48c40656d" - integrity sha512-9eRriPSC0QVS7U9zQlrG3uEI5+h3fi+mqofXy+yjk1sGCmXSIJME5p2wg2mzxoJk3qkSMagQA9QHtL26Fti8Iw== +"@pixi/sprite-animated@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/sprite-animated/-/sprite-animated-7.3.2.tgz#a35891380b4c0e4029170fe5cbcbbb9edbba07c5" + integrity sha512-j9pyUe4cefxE9wecNfbWQyL5fBQKvCGYaOA0DE1X46ukBHrIuhA8u3jg2X3N3r4IcbVvxpWFYDrDsWXWeiBmSw== -"@pixi/sprite-tiling@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/sprite-tiling/-/sprite-tiling-7.2.4.tgz#7bcbd6e0096512fe18934a7b3250c57be19b63e4" - integrity sha512-nGfxQoACRx49dUN0oW1vFm3141M+7gkAbzoNJym2Pljd2dpLME9fb5E6Lyahu0yWMaPRhhGorn6z9VIGmTF3Jw== +"@pixi/sprite-tiling@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/sprite-tiling/-/sprite-tiling-7.3.2.tgz#d1c75c7a4ffd7e92a68f95cd4bbb5be0b9eb6c66" + integrity sha512-tWVVb/rMIx5AczfUrVxa0dZaIufP5C0IOL7IGfFUDQqDu5JSAUC0mwLe4F12jAXBVsqYhCGYx5bIHbPiI5vcSQ== -"@pixi/sprite@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/sprite/-/sprite-7.2.4.tgz#be7cd2d58d263131019545a83bb4df7340452ba1" - integrity sha512-DhR1B+/d0eXpxHIesJMXcVPrKFwQ+zRA1LvEIFfzewqfaRN3X6PMIuoKX8SIb6tl+Hq8Ba9Pe28zI7d2rmRzrA== +"@pixi/sprite@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/sprite/-/sprite-7.3.2.tgz#421bea2ccfc51230886e3533d99eeb00e5bf6bf8" + integrity sha512-IpWTKXExJNXVcY7ITopJ+JW48DahdbCo/81D2IYzBImq3jyiJM2Km5EoJgvAM5ZQ3Ev3KPPIBzYLD+HoPWcxdw== -"@pixi/spritesheet@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/spritesheet/-/spritesheet-7.2.4.tgz#9214d0c75aa95639c1f528091ac4a4850f5b5b8e" - integrity sha512-LNmlavyiMQeCF0U4S+yhzxUYmPmat6EpLjLnkGukQTZV5CZkxDCVgXM9uKoRF2DvNydj4yuwZ6+JjK8QssHI8Q== +"@pixi/spritesheet@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/spritesheet/-/spritesheet-7.3.2.tgz#9fd551cef05c2302d1999c895510eeba038350e7" + integrity sha512-UkwqrPYDqrEdK5ub9qn/9VBvt5caA8ffV5iYR6ssCvrpaQovBKmS+b5pr/BYf8xNTExDpR3OmPIo8iDEYWWLuw== -"@pixi/text-bitmap@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/text-bitmap/-/text-bitmap-7.2.4.tgz#444010da3898c35e2cdb01493bdc21706c9356a1" - integrity sha512-3u2CP4VN+muCaq/jtj7gn0hb3DET/X2S04zTBcgc2WVGufJc62yz+UDzS9jC+ellotVdt9c8U74++vpz3zJGfw== +"@pixi/text-bitmap@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/text-bitmap/-/text-bitmap-7.3.2.tgz#68a7c21ce4174d34e46d4a957d4083f687fed3be" + integrity sha512-p8KLgtZSPowWU/Zj+GVtfsUT8uGYo4TtKKYbLoWuxkRA5Pc1+4C9/rV/EOSFfoZIdW5C+iFg5VxRgBllUQf+aA== -"@pixi/text-html@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/text-html/-/text-html-7.2.4.tgz#4702cdb97c6a10ca883d004808d45b1517c7129b" - integrity sha512-0NfLAE/w51ZtatxVqLvDS62iO0VLKsSdctqTAVv4Zlgdk9TKJmX1WUucHJboTvbm2SbDjNDGfZ6qXM5nAslIDQ== +"@pixi/text-html@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/text-html/-/text-html-7.3.2.tgz#443f669a3444386a62e28dd8f3da66e45593df05" + integrity sha512-IYhBWEPOvqUtlHkS5/c1Hseuricj5jrrGd21ivcvHmcnK/x2m+CRGvvzeBp1mqoYBnDbQVrD2wSXSe4Dv9tEJA== -"@pixi/text@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/text/-/text-7.2.4.tgz#b31e7619ba80acee69cd9fb33948d34f1839bc61" - integrity sha512-DGu7ktpe+zHhqR2sG9NsJt4mgvSObv5EqXTtUxD4Z0li1gmqF7uktpLyn5I6vSg1TTEL4TECClRDClVDGiykWw== +"@pixi/text@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/text/-/text-7.3.2.tgz#c38dcecd3b6aceec53b1d4207327812d88b1cf26" + integrity sha512-LdtNj+K5tPB/0UcDcO52M/C7xhwFTGFhtdF42fPhRuJawM23M3zm1Y8PapXv+mury+IxCHT1w30YlAi0qTVpKQ== -"@pixi/ticker@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/ticker/-/ticker-7.2.4.tgz#5acb761d3b53a1bbb2e34db59eb2a1b0442a8ed8" - integrity sha512-hQQHIHvGeFsP4GNezZqjzuhUgNQEVgCH9+qU05UX1Mc5UHC9l6OJnY4VTVhhcHxZjA6RnyaY+1zBxCnoXuazpg== +"@pixi/ticker@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/ticker/-/ticker-7.3.2.tgz#898278eb07da4dc4c38cc710c1fff0c7ad5c6099" + integrity sha512-5kIPhBeXwDJohCzKzJJ6T7f1oAGbHAgeiwOjlTO+9lNXUX8ZPj0407V3syuF+64kFqJzIBCznBRpI+fmT4c9SA== dependencies: - "@pixi/extensions" "7.2.4" - "@pixi/settings" "7.2.4" - "@pixi/utils" "7.2.4" + "@pixi/extensions" "7.3.2" + "@pixi/settings" "7.3.2" + "@pixi/utils" "7.3.2" -"@pixi/utils@7.2.4": - version "7.2.4" - resolved "https://registry.npmmirror.com/@pixi/utils/-/utils-7.2.4.tgz#9f74e859481e3efbb6e54e524427b39a6d99829c" - integrity sha512-VUGQHBOINIS4ePzoqafwxaGPVRTa3oM/mEutIIHbNGI3b+QvSO+1Dnk40M0zcH6Bo+MxQZbOZK5X/wO9oU5+LQ== +"@pixi/utils@7.3.2", "@pixi/utils@^7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@pixi/utils/-/utils-7.3.2.tgz#556499eae6439259551ab9b86efb039522b61611" + integrity sha512-KhNvj9YcY7Zi2dTKZgDpx8C6OxKKR541vwtG6JgdBZZYDeMBOIghN2Vi5zn4diW5BhDfHBmdSJ1wZXEtE2MDwg== dependencies: - "@pixi/color" "7.2.4" - "@pixi/constants" "7.2.4" - "@pixi/settings" "7.2.4" + "@pixi/color" "7.3.2" + "@pixi/constants" "7.3.2" + "@pixi/settings" "7.3.2" "@types/earcut" "^2.1.0" earcut "^2.2.4" eventemitter3 "^4.0.0" url "^0.11.0" -"@positron/stack-trace@1.0.0": - version "1.0.0" - resolved "https://registry.npmmirror.com/@positron/stack-trace/-/stack-trace-1.0.0.tgz#14fcc712a530038ef9be1ce6952315a839f466a8" - integrity sha512-nWlGg+aMfQDhGYa5FtBhZwldeo2MtdjHdxmEQvhBXEnxgD5IhIYl0PHvex8SdwyN7qcSoMykMWdjyAX7ZxkpMw== - -"@quasar/app-vite@^1.0.0": - version "1.2.1" - resolved "https://registry.npmmirror.com/@quasar/app-vite/-/app-vite-1.2.1.tgz#23a634e16c74b28a38cf1ad1b3633388a220f97f" - integrity sha512-iKvpucrnt5pQuuQxqkLLWuI7Wm9Xx9fcBK1miMHWBgdcbHOXhc/OrlxeLvRwxm7GMd91cp3nhslo5j3a+zMCOg== +"@pkgr/utils@^2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" + integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw== dependencies: - "@quasar/fastclick" "1.1.5" - "@quasar/vite-plugin" "^1.3.0" - "@rollup/pluginutils" "^4.1.2" - "@types/chrome" "^0.0.208" - "@types/compression" "^1.7.2" - "@types/cordova" "0.0.34" - "@types/express" "^4.17.13" - "@vitejs/plugin-vue" "^2.2.0" - archiver "^5.3.0" - chokidar "^3.5.3" - ci-info "^3.7.1" - compression "^1.7.4" cross-spawn "^7.0.3" - dot-prop "6.0.1" - elementtree "0.1.7" - esbuild "0.14.51" - express "^4.17.3" - fast-glob "3.2.12" - fs-extra "^11.1.0" - html-minifier "^4.0.0" - inquirer "^8.2.1" - isbinaryfile "^5.0.0" - kolorist "^1.5.1" - lodash "^4.17.21" - minimist "^1.2.6" - open "^8.4.0" - ouch "^2.0.0" - register-service-worker "^1.7.2" - rollup-plugin-visualizer "^5.5.4" - sass "1.32.12" - semver "^7.3.5" - serialize-javascript "^6.0.0" - table "^6.8.0" - vite "^2.9.13" - webpack-merge "^5.8.0" + fast-glob "^3.3.0" + is-glob "^4.0.3" + open "^9.1.0" + picocolors "^1.0.0" + tslib "^2.6.0" -"@quasar/extras@^1.0.0": - version "1.16.2" - resolved "https://registry.npmmirror.com/@quasar/extras/-/extras-1.16.2.tgz#fcc6374a882253051f9d7302cb9ba828f0010cdf" - integrity sha512-spDc1DrwxGts0MjmOAJ11xpxJANhCI1vEadxaw89wRQJ/QfKd0HZrwN7uN1U15cRozGRkJpdbsnP4cVXpkPysA== - -"@quasar/fastclick@1.1.5": - version "1.1.5" - resolved "https://registry.npmmirror.com/@quasar/fastclick/-/fastclick-1.1.5.tgz#948e79c44098cced6c3d1645315683ebc29ed834" - integrity sha512-p3JKgTjRlJ1YQXbqTw3Bsa4j0mQdt5dq+WfYvyb7MgKGdephHCKdR/kxA5PCTAmJanGJuDKqRdyGYX/hYN4KGw== - -"@quasar/vite-plugin@^1.3.0": - version "1.3.0" - resolved "https://registry.npmmirror.com/@quasar/vite-plugin/-/vite-plugin-1.3.0.tgz#c399b00d40c4a40aadb0e90a8e9116d72379d339" - integrity sha512-wd7b/QrKu/WB53l+vxo6GLbkoEwh5FFKLtLl3fM8TXrDDRB1qsKKkRa/vwTU4dpuyBaOZDjycmYuAsOlTdNp8w== - -"@rollup/pluginutils@^4.1.2": - version "4.2.1" - resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" - integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== +"@rollup/plugin-typescript@^11.1.5": + version "11.1.5" + resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-11.1.5.tgz#039c763bf943a5921f3f42be255895e75764cb91" + integrity sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA== dependencies: - estree-walker "^2.0.1" - picomatch "^2.2.2" + "@rollup/pluginutils" "^5.0.1" + resolve "^1.22.1" + +"@rollup/pluginutils@^5.0.1": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + +"@rollup/rollup-android-arm-eabi@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.8.0.tgz#0e42b155630adaaec0f659f979ece4b7d3391329" + integrity sha512-zdTObFRoNENrdPpnTNnhOljYIcOX7aI7+7wyrSpPFFIOf/nRdedE6IYsjaBE7tjukphh1tMTojgJ7p3lKY8x6Q== + +"@rollup/rollup-android-arm64@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.8.0.tgz#6c9fe8f9eb0cd9029be93b822b1a1c2d6b31c275" + integrity sha512-aiItwP48BiGpMFS9Znjo/xCNQVwTQVcRKkFKsO81m8exrGjHkCBDvm9PHay2kpa8RPnZzzKcD1iQ9KaLY4fPQQ== + +"@rollup/rollup-darwin-arm64@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.8.0.tgz#7dcb1317a8089762c1f7e437c1e1d695b787b70f" + integrity sha512-zhNIS+L4ZYkYQUjIQUR6Zl0RXhbbA0huvNIWjmPc2SL0cB1h5Djkcy+RZ3/Bwszfb6vgwUvcVJYD6e6Zkpsi8g== + +"@rollup/rollup-darwin-x64@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.8.0.tgz#91d7d31d22607c4fcccce9126457d6785c57f7c7" + integrity sha512-A/FAHFRNQYrELrb/JHncRWzTTXB2ticiRFztP4ggIUAfa9Up1qfW8aG2w/mN9jNiZ+HB0t0u0jpJgFXG6BfRTA== + +"@rollup/rollup-linux-arm-gnueabihf@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.8.0.tgz#f2015d6e4ff41417f2e2c55b3d9625346e355c57" + integrity sha512-JsidBnh3p2IJJA4/2xOF2puAYqbaczB3elZDT0qHxn362EIoIkq7hrR43Xa8RisgI6/WPfvb2umbGsuvf7E37A== + +"@rollup/rollup-linux-arm64-gnu@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.8.0.tgz#95207444b78f235c9de62797ec2a3dcd18daf473" + integrity sha512-hBNCnqw3EVCkaPB0Oqd24bv8SklETptQWcJz06kb9OtiShn9jK1VuTgi7o4zPSt6rNGWQOTDEAccbk0OqJmS+g== + +"@rollup/rollup-linux-arm64-musl@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.8.0.tgz#bc994c676fd3aae14aaa905040fdcde461e41ce5" + integrity sha512-Fw9ChYfJPdltvi9ALJ9wzdCdxGw4wtq4t1qY028b2O7GwB5qLNSGtqMsAel1lfWTZvf4b6/+4HKp0GlSYg0ahA== + +"@rollup/rollup-linux-riscv64-gnu@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.8.0.tgz#67984f1d1f663610f4e1f6e638a2b07169562448" + integrity sha512-BH5xIh7tOzS9yBi8dFrCTG8Z6iNIGWGltd3IpTSKp6+pNWWO6qy8eKoRxOtwFbMrid5NZaidLYN6rHh9aB8bEw== + +"@rollup/rollup-linux-x64-gnu@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.8.0.tgz#48e09a455d543be986003c7c2ea37c16ff4a53d5" + integrity sha512-PmvAj8k6EuWiyLbkNpd6BLv5XeYFpqWuRvRNRl80xVfpGXK/z6KYXmAgbI4ogz7uFiJxCnYcqyvZVD0dgFog7Q== + +"@rollup/rollup-linux-x64-musl@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.8.0.tgz#df8d0966b02d1bdc6447b5eb58fa18666da1f3e8" + integrity sha512-mdxnlW2QUzXwY+95TuxZ+CurrhgrPAMveDWI97EQlA9bfhR8tw3Pt7SUlc/eSlCNxlWktpmT//EAA8UfCHOyXg== + +"@rollup/rollup-win32-arm64-msvc@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.8.0.tgz#7cce8efc5c9239a1bafe7ac2a52743bc5734471f" + integrity sha512-ge7saUz38aesM4MA7Cad8CHo0Fyd1+qTaqoIo+Jtk+ipBi4ATSrHWov9/S4u5pbEQmLjgUjB7BJt+MiKG2kzmA== + +"@rollup/rollup-win32-ia32-msvc@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.8.0.tgz#794ef4058d04f97447e4434c083b1309b2be73c2" + integrity sha512-p9E3PZlzurhlsN5h9g7zIP1DnqKXJe8ZUkFwAazqSvHuWfihlIISPxG9hCHCoA+dOOspL/c7ty1eeEVFTE0UTw== + +"@rollup/rollup-win32-x64-msvc@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.8.0.tgz#05057436705f0be9203c30612a48225ec70af741" + integrity sha512-kb4/auKXkYKqlUYTE8s40FcJIj5soOyRLHKd4ugR0dCq0G2EfcF54eYcfQiGkHzjidZ40daB4ulsFdtqNKZtBg== "@stomp/stompjs@^7.0.0": version "7.0.0" resolved "https://registry.npmmirror.com/@stomp/stompjs/-/stompjs-7.0.0.tgz#46b5c454a9dc8262e0b20f3b3dbacaa113993077" integrity sha512-fGdq4wPDnSV/KyOsjq4P+zLc8MFWC3lMmP5FBgLWKPJTYcuCbAIrnRGjB7q2jHZdYCOD5vxLuFoKIYLy5/u8Pw== -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/chrome@^0.0.208": - version "0.0.208" - resolved "https://registry.npmmirror.com/@types/chrome/-/chrome-0.0.208.tgz#c52992e46723c783d3fd84a8b90dd8b3e87af67f" - integrity sha512-VDU/JnXkF5qaI7WBz14Azpa2VseZTgML0ia/g/B1sr9OfdOnHiH/zZ7P7qCDqxSlkqJh76/bPc8jLFcx8rHJmw== - dependencies: - "@types/filesystem" "*" - "@types/har-format" "*" - -"@types/compression@^1.7.2": - version "1.7.2" - resolved "https://registry.npmmirror.com/@types/compression/-/compression-1.7.2.tgz#7cc1cdb01b4730eea284615a68fc70a2cdfd5e71" - integrity sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg== - dependencies: - "@types/express" "*" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.npmmirror.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/cordova@0.0.34": - version "0.0.34" - resolved "https://registry.npmmirror.com/@types/cordova/-/cordova-0.0.34.tgz#ea7addf74ecec3d7629827a0c39e2c9addc73d04" - integrity sha512-rkiiTuf/z2wTd4RxFOb+clE7PF4AEJU0hsczbUdkHHBtkUmpWQpEddynNfJYKYtZFJKbq4F+brfekt1kx85IZA== - "@types/css-font-loading-module@^0.0.7": version "0.0.7" resolved "https://registry.npmmirror.com/@types/css-font-loading-module/-/css-font-loading-module-0.0.7.tgz#2f98ede46acc0975de85c0b7b0ebe06041d24601" @@ -423,56 +408,10 @@ resolved "https://registry.npmmirror.com/@types/earcut/-/earcut-2.1.1.tgz#573a0af609f17005c751f6f4ffec49cfe358ea51" integrity sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ== -"@types/express-serve-static-core@^4.17.33": - version "4.17.33" - resolved "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" - integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*", "@types/express@^4.17.13": - version "4.17.17" - resolved "https://registry.npmmirror.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/filesystem@*": - version "0.0.32" - resolved "https://registry.npmmirror.com/@types/filesystem/-/filesystem-0.0.32.tgz#307df7cc084a2293c3c1a31151b178063e0a8edf" - integrity sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ== - dependencies: - "@types/filewriter" "*" - -"@types/filewriter@*": - version "0.0.29" - resolved "https://registry.npmmirror.com/@types/filewriter/-/filewriter-0.0.29.tgz#a48795ecadf957f6c0d10e0c34af86c098fa5bee" - integrity sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ== - -"@types/google-protobuf@^3.15.6": - version "3.15.6" - resolved "https://registry.npmmirror.com/@types/google-protobuf/-/google-protobuf-3.15.6.tgz#674a69493ef2c849b95eafe69167ea59079eb504" - integrity sha512-pYVNNJ+winC4aek+lZp93sIKxnXt5qMkuKmaqS3WGuTq0Bw1ZDYNBgzG5kkdtwcv+GmYJGo3yEg6z2cKKAiEdw== - -"@types/har-format@*": - version "1.2.10" - resolved "https://registry.npmmirror.com/@types/har-format/-/har-format-1.2.10.tgz#7b4e1e0ada4d17684ac3b05d601a4871cfab11fc" - integrity sha512-o0J30wqycjF5miWDKYKKzzOU1ZTLuA42HZ4HE7/zqTOc/jTLdQ5NhYWvsRQo45Nfi1KHoRdNhteSI4BAxTF1Pg== - -"@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/mime@*": - version "3.0.1" - resolved "https://registry.npmmirror.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== +"@types/estree@^1.0.0": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== "@types/node@*": version "18.16.0" @@ -489,16 +428,6 @@ resolved "https://registry.npmmirror.com/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz#e4a932069db47bb3eabeb0b305502d01586fa90d" integrity sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg== -"@types/qs@*": - version "6.9.7" - resolved "https://registry.npmmirror.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - "@types/readable-stream@^4.0.5": version "4.0.5" resolved "https://registry.npmmirror.com/@types/readable-stream/-/readable-stream-4.0.5.tgz#7a82f920748f81e6f6e6d062d6d3961e5731b296" @@ -507,19 +436,6 @@ "@types/node" "*" safe-buffer "~5.1.1" -"@types/semver@^7.3.12": - version "7.3.13" - resolved "https://registry.npmmirror.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" - integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== - -"@types/serve-static@*": - version "1.15.1" - resolved "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" - integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== - dependencies: - "@types/mime" "*" - "@types/node" "*" - "@types/ws@^8.5.9": version "8.5.9" resolved "https://registry.npmmirror.com/@types/ws/-/ws-8.5.9.tgz#384c489f99c83225a53f01ebc3eddf3b8e202a8c" @@ -527,189 +443,10 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.10.0": - version "5.59.1" - resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz#9b09ee1541bff1d2cebdcb87e7ce4a4003acde08" - integrity sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.59.1" - "@typescript-eslint/type-utils" "5.59.1" - "@typescript-eslint/utils" "5.59.1" - debug "^4.3.4" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.10.0": - version "5.59.1" - resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.59.1.tgz#73c2c12127c5c1182d2e5b71a8fa2a85d215cbb4" - integrity sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g== - dependencies: - "@typescript-eslint/scope-manager" "5.59.1" - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/typescript-estree" "5.59.1" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.59.1": - version "5.59.1" - resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz#8a20222719cebc5198618a5d44113705b51fd7fe" - integrity sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA== - dependencies: - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/visitor-keys" "5.59.1" - -"@typescript-eslint/type-utils@5.59.1": - version "5.59.1" - resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz#63981d61684fd24eda2f9f08c0a47ecb000a2111" - integrity sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw== - dependencies: - "@typescript-eslint/typescript-estree" "5.59.1" - "@typescript-eslint/utils" "5.59.1" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.59.1": - version "5.59.1" - resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.59.1.tgz#03f3fedd1c044cb336ebc34cc7855f121991f41d" - integrity sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg== - -"@typescript-eslint/typescript-estree@5.59.1": - version "5.59.1" - resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz#4aa546d27fd0d477c618f0ca00b483f0ec84c43c" - integrity sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA== - dependencies: - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/visitor-keys" "5.59.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.59.1": - version "5.59.1" - resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.59.1.tgz#d89fc758ad23d2157cfae53f0b429bdf15db9473" - integrity sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.59.1" - "@typescript-eslint/types" "5.59.1" - "@typescript-eslint/typescript-estree" "5.59.1" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.59.1": - version "5.59.1" - resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz#0d96c36efb6560d7fb8eb85de10442c10d8f6058" - integrity sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA== - dependencies: - "@typescript-eslint/types" "5.59.1" - eslint-visitor-keys "^3.3.0" - -"@vitejs/plugin-vue@^2.2.0": - version "2.3.4" - resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz#966a6279060eb2d9d1a02ea1a331af071afdcf9e" - integrity sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg== - -"@vue/compiler-core@3.2.47": - version "3.2.47" - resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz#3e07c684d74897ac9aa5922c520741f3029267f8" - integrity sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig== - dependencies: - "@babel/parser" "^7.16.4" - "@vue/shared" "3.2.47" - estree-walker "^2.0.2" - source-map "^0.6.1" - -"@vue/compiler-dom@3.2.47": - version "3.2.47" - resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz#a0b06caf7ef7056939e563dcaa9cbde30794f305" - integrity sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ== - dependencies: - "@vue/compiler-core" "3.2.47" - "@vue/shared" "3.2.47" - -"@vue/compiler-sfc@3.2.47": - version "3.2.47" - resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz#1bdc36f6cdc1643f72e2c397eb1a398f5004ad3d" - integrity sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ== - dependencies: - "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.47" - "@vue/compiler-dom" "3.2.47" - "@vue/compiler-ssr" "3.2.47" - "@vue/reactivity-transform" "3.2.47" - "@vue/shared" "3.2.47" - estree-walker "^2.0.2" - magic-string "^0.25.7" - postcss "^8.1.10" - source-map "^0.6.1" - -"@vue/compiler-ssr@3.2.47": - version "3.2.47" - resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz#35872c01a273aac4d6070ab9d8da918ab13057ee" - integrity sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw== - dependencies: - "@vue/compiler-dom" "3.2.47" - "@vue/shared" "3.2.47" - -"@vue/devtools-api@^6.4.5", "@vue/devtools-api@^6.5.0": - version "6.5.0" - resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07" - integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== - -"@vue/reactivity-transform@3.2.47": - version "3.2.47" - resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz#e45df4d06370f8abf29081a16afd25cffba6d84e" - integrity sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA== - dependencies: - "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.47" - "@vue/shared" "3.2.47" - estree-walker "^2.0.2" - magic-string "^0.25.7" - -"@vue/reactivity@3.2.47": - version "3.2.47" - resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz#1d6399074eadfc3ed35c727e2fd707d6881140b6" - integrity sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ== - dependencies: - "@vue/shared" "3.2.47" - -"@vue/runtime-core@3.2.47": - version "3.2.47" - resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz#406ebade3d5551c00fc6409bbc1eeb10f32e121d" - integrity sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA== - dependencies: - "@vue/reactivity" "3.2.47" - "@vue/shared" "3.2.47" - -"@vue/runtime-dom@3.2.47": - version "3.2.47" - resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz#93e760eeaeab84dedfb7c3eaf3ed58d776299382" - integrity sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA== - dependencies: - "@vue/runtime-core" "3.2.47" - "@vue/shared" "3.2.47" - csstype "^2.6.8" - -"@vue/server-renderer@3.2.47": - version "3.2.47" - resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz#8aa1d1871fc4eb5a7851aa7f741f8f700e6de3c0" - integrity sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA== - dependencies: - "@vue/compiler-ssr" "3.2.47" - "@vue/shared" "3.2.47" - -"@vue/shared@3.2.47": - version "3.2.47" - resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz#e597ef75086c6e896ff5478a6bfc0a7aa4bbd14c" - integrity sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ== +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== abort-controller@^3.0.0: version "3.0.0" @@ -718,27 +455,19 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.8.0: - version "8.8.2" - resolved "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== +acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" - resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -746,128 +475,23 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1: - version "8.12.0" - resolved "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -alova@^2.7.1: - version "2.7.1" - resolved "https://registry.npmmirror.com/alova/-/alova-2.7.1.tgz#b91b7c80137a44b57792badda9e7ab09acf93f55" - integrity sha512-/+lbPt+u/c4rBx4fq83795Xuh8Ohj5ZB4tJ7pxL2BxLgRlLNCT9/I1yGrgJEz/jXTqIZHMI2EeBAIb/B0u76tw== - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -archiver-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" - integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== - dependencies: - glob "^7.1.4" - graceful-fs "^4.2.0" - lazystream "^1.0.0" - lodash.defaults "^4.2.0" - lodash.difference "^4.5.0" - lodash.flatten "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.union "^4.6.0" - normalize-path "^3.0.0" - readable-stream "^2.0.0" - -archiver@^5.3.0: - version "5.3.1" - resolved "https://registry.npmmirror.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6" - integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w== - dependencies: - archiver-utils "^2.1.0" - async "^3.2.3" - buffer-crc32 "^0.2.1" - readable-stream "^3.6.0" - readdir-glob "^1.0.0" - tar-stream "^2.2.0" - zip-stream "^4.1.0" - argparse@^2.0.1: version "2.0.1" - resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async@^3.2.3: - version "3.2.4" - resolved "https://registry.npmmirror.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -autoprefixer@^10.4.2: - version "10.4.14" - resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" - integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== - dependencies: - browserslist "^4.21.5" - caniuse-lite "^1.0.30001464" - fraction.js "^4.2.0" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -axios@^1.4.0: - version "1.4.0" - resolved "https://registry.npmmirror.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" - integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -878,19 +502,10 @@ base64-js@^1.3.1: resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bl@^4.0.3, bl@^4.1.0: - version "4.1.0" - resolved "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" +big-integer@^1.6.44: + version "1.6.52" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" + integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== bl@^6.0.8: version "6.0.8" @@ -901,32 +516,16 @@ bl@^6.0.8: inherits "^2.0.4" readable-stream "^4.2.0" -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + big-integer "^1.6.44" brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -939,41 +538,18 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.2, braces@~3.0.2: +braces@^3.0.2: version "3.0.2" - resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browserslist@^4.21.5: - version "4.21.5" - resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" - integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== - dependencies: - caniuse-lite "^1.0.30001449" - electron-to-chromium "^1.4.284" - node-releases "^2.0.8" - update-browserslist-db "^1.0.10" - -buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: - version "0.2.13" - resolved "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - buffer@^6.0.3: version "6.0.3" resolved "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" @@ -982,189 +558,46 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -bytes@3.0.0: +bundle-name@^3.0.0: version "3.0.0" - resolved "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -call-bind@^1.0.0: - version "1.0.2" - resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" + integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + run-applescript "^5.0.0" callsites@^3.0.0: version "3.1.0" - resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: - version "1.0.30001481" - resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz#f58a717afe92f9e69d0e35ff64df596bfad93912" - integrity sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ== - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: +chalk@^4.0.0: version "4.1.2" - resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -ci-info@^3.7.1: - version "3.8.0" - resolved "https://registry.npmmirror.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== - -clean-css@^4.2.1: - version "4.2.4" - resolved "https://registry.npmmirror.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" - integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== - dependencies: - source-map "~0.6.0" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.8.0" - resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.8.0.tgz#e97a3e2bd00e6d85aa0c13d7f9e3ce236f7787fc" - integrity sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ== - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@~1.1.4: version "1.1.4" - resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colord@^2.9.3: - version "2.9.3" - resolved "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^2.19.0: - version "2.20.3" - resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - commist@^3.2.0: version "3.2.0" resolved "https://registry.npmmirror.com/commist/-/commist-3.2.0.tgz#da9c8e5f245ac21510badc4b10c46b5bcc9b56cd" integrity sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw== -compress-commons@^4.1.0: - version "4.1.1" - resolved "https://registry.npmmirror.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" - integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== - dependencies: - buffer-crc32 "^0.2.13" - crc32-stream "^4.0.2" - normalize-path "^3.0.0" - readable-stream "^3.6.0" - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - concat-map@0.0.1: version "0.0.1" - resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^2.0.0: @@ -1177,72 +610,15 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4: - version "1.0.5" - resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - -crc32-stream@^4.0.2: - version "4.0.2" - resolved "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" - integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== - dependencies: - crc-32 "^1.2.0" - readable-stream "^3.4.0" - cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -csstype@^2.6.8: - version "2.6.21" - resolved "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e" - integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -1252,57 +628,39 @@ debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: deep-is@^0.1.3: version "0.1.4" - resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== +default-browser-id@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== dependencies: - clone "^1.0.2" + bplist-parser "^0.2.0" + untildify "^4.0.0" -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== +default-browser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" + integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== dependencies: - path-type "^4.0.0" + bundle-name "^3.0.0" + default-browser-id "^3.0.0" + execa "^7.1.1" + titleize "^3.0.0" + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" -dot-prop@6.0.1: - version "6.0.1" - resolved "https://registry.npmmirror.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" - duplexify@^4.1.2: version "4.1.2" resolved "https://registry.npmmirror.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" @@ -1318,40 +676,6 @@ earcut@^2.2.4: resolved "https://registry.npmmirror.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a" integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ== -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^3.1.7: - version "3.1.9" - resolved "https://registry.npmmirror.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.4.284: - version "1.4.371" - resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.371.tgz#393983ef087268a20c926a89be30e9f0bfc803b0" - integrity sha512-jlBzY4tFcJaiUjzhRTCWAqRvTO/fWzjA3Bls0mykzGZ7zvcMP7h05W6UcgzfT9Ca1SW2xyKDOFRyI0pQeRNZGw== - -elementtree@0.1.7: - version "0.1.7" - resolved "https://registry.npmmirror.com/elementtree/-/elementtree-0.1.7.tgz#9ac91be6e52fb6e6244c4e54a4ac3ed8ae8e29c0" - integrity sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg== - dependencies: - sax "1.1.4" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -1359,339 +683,59 @@ end-of-stream@^1.4.1: dependencies: once "^1.4.0" -esbuild-android-64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.51.tgz#414a087cb0de8db1e347ecca6c8320513de433db" - integrity sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ== - -esbuild-android-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" - integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ== - -esbuild-android-arm64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.51.tgz#55de3bce2aab72bcd2b606da4318ad00fb9c8151" - integrity sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A== - -esbuild-android-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771" - integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg== - -esbuild-darwin-64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.51.tgz#4259f23ed6b4cea2ec8a28d87b7fb9801f093754" - integrity sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA== - -esbuild-darwin-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25" - integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug== - -esbuild-darwin-arm64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz#d77b4366a71d84e530ba019d540b538b295d494a" - integrity sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow== - -esbuild-darwin-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73" - integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw== - -esbuild-freebsd-64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.51.tgz#27b6587b3639f10519c65e07219d249b01f2ad38" - integrity sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g== - -esbuild-freebsd-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d" - integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg== - -esbuild-freebsd-arm64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.51.tgz#63c435917e566808c71fafddc600aca4d78be1ec" - integrity sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg== - -esbuild-freebsd-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48" - integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q== - -esbuild-linux-32@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.51.tgz#c3da774143a37e7f11559b9369d98f11f997a5d9" - integrity sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w== - -esbuild-linux-32@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5" - integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw== - -esbuild-linux-64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.51.tgz#5d92b67f674e02ae0b4a9de9a757ba482115c4ae" - integrity sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA== - -esbuild-linux-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652" - integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg== - -esbuild-linux-arm64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.51.tgz#dac84740516e859d8b14e1ecc478dd5241b10c93" - integrity sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw== - -esbuild-linux-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b" - integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig== - -esbuild-linux-arm@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.51.tgz#b3ae7000696cd53ed95b2b458554ff543a60e106" - integrity sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg== - -esbuild-linux-arm@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59" - integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw== - -esbuild-linux-mips64le@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.51.tgz#dad10770fac94efa092b5a0643821c955a9dd385" - integrity sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A== - -esbuild-linux-mips64le@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34" - integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw== - -esbuild-linux-ppc64le@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.51.tgz#b68c2f8294d012a16a88073d67e976edd4850ae0" - integrity sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ== - -esbuild-linux-ppc64le@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e" - integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ== - -esbuild-linux-riscv64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.51.tgz#608a318b8697123e44c1e185cdf6708e3df50b93" - integrity sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA== - -esbuild-linux-riscv64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8" - integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg== - -esbuild-linux-s390x@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.51.tgz#c9e7791170a3295dba79b93aa452beb9838a8625" - integrity sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw== - -esbuild-linux-s390x@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6" - integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA== - -esbuild-netbsd-64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.51.tgz#0abd40b8c2e37fda6f5cc41a04cb2b690823d891" - integrity sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A== - -esbuild-netbsd-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81" - integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w== - -esbuild-openbsd-64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.51.tgz#4adba0b7ea7eb1428bb00d8e94c199a949b130e8" - integrity sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA== - -esbuild-openbsd-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b" - integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw== - -esbuild-sunos-64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.51.tgz#4b8a6d97dfedda30a6e39607393c5c90ebf63891" - integrity sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA== - -esbuild-sunos-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da" - integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw== - -esbuild-windows-32@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.51.tgz#d31d8ca0c1d314fb1edea163685a423b62e9ac17" - integrity sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg== - -esbuild-windows-32@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31" - integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w== - -esbuild-windows-64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.51.tgz#7d3c09c8652d222925625637bdc7e6c223e0085d" - integrity sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA== - -esbuild-windows-64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4" - integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ== - -esbuild-windows-arm64@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.51.tgz#0220d2304bfdc11bc27e19b2aaf56edf183e4ae9" - integrity sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g== - -esbuild-windows-arm64@0.14.54: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" - integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== - -esbuild@0.14.51: - version "0.14.51" - resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.51.tgz#1c8ecbc8db3710da03776211dc3ee3448f7aa51e" - integrity sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw== - optionalDependencies: - esbuild-android-64 "0.14.51" - esbuild-android-arm64 "0.14.51" - esbuild-darwin-64 "0.14.51" - esbuild-darwin-arm64 "0.14.51" - esbuild-freebsd-64 "0.14.51" - esbuild-freebsd-arm64 "0.14.51" - esbuild-linux-32 "0.14.51" - esbuild-linux-64 "0.14.51" - esbuild-linux-arm "0.14.51" - esbuild-linux-arm64 "0.14.51" - esbuild-linux-mips64le "0.14.51" - esbuild-linux-ppc64le "0.14.51" - esbuild-linux-riscv64 "0.14.51" - esbuild-linux-s390x "0.14.51" - esbuild-netbsd-64 "0.14.51" - esbuild-openbsd-64 "0.14.51" - esbuild-sunos-64 "0.14.51" - esbuild-windows-32 "0.14.51" - esbuild-windows-64 "0.14.51" - esbuild-windows-arm64 "0.14.51" - -esbuild@^0.14.27: - version "0.14.54" - resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2" - integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA== - optionalDependencies: - "@esbuild/linux-loong64" "0.14.54" - esbuild-android-64 "0.14.54" - esbuild-android-arm64 "0.14.54" - esbuild-darwin-64 "0.14.54" - esbuild-darwin-arm64 "0.14.54" - esbuild-freebsd-64 "0.14.54" - esbuild-freebsd-arm64 "0.14.54" - esbuild-linux-32 "0.14.54" - esbuild-linux-64 "0.14.54" - esbuild-linux-arm "0.14.54" - esbuild-linux-arm64 "0.14.54" - esbuild-linux-mips64le "0.14.54" - esbuild-linux-ppc64le "0.14.54" - esbuild-linux-riscv64 "0.14.54" - esbuild-linux-s390x "0.14.54" - esbuild-netbsd-64 "0.14.54" - esbuild-openbsd-64 "0.14.54" - esbuild-sunos-64 "0.14.54" - esbuild-windows-32 "0.14.54" - esbuild-windows-64 "0.14.54" - esbuild-windows-arm64 "0.14.54" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@^1.0.1, escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-prettier@^8.1.0: - version "8.8.0" - resolved "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" - integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== -eslint-plugin-vue@^9.0.0: - version "9.11.0" - resolved "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.11.0.tgz#99a247455c02181f24d9240d422380fd16dd630c" - integrity sha512-bBCJAZnkBV7ATH4Z1E7CvN3nmtS4H7QUU3UBxPdo8WohRU+yHjnQRALpTbxMVcz0e4Mx3IyxIdP5HYODMxK9cQ== +eslint-plugin-prettier@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" + integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== dependencies: - "@eslint-community/eslint-utils" "^4.3.0" - natural-compare "^1.4.0" - nth-check "^2.0.1" - postcss-selector-parser "^6.0.9" - semver "^7.3.5" - vue-eslint-parser "^9.0.1" - xml-name-validator "^4.0.0" + prettier-linter-helpers "^1.0.0" + synckit "^0.8.5" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1, eslint-scope@^7.2.0: - version "7.2.0" - resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" - integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: - version "3.4.0" - resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" - integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.10.0: - version "8.39.0" - resolved "https://registry.npmmirror.com/eslint/-/eslint-8.39.0.tgz#7fd20a295ef92d43809e914b70c39fd5a23cf3f1" - integrity sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og== +eslint@^8.55.0: + version "8.55.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.55.0.tgz#078cb7b847d66f2c254ea1794fa395bf8e7e03f8" + integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.2" - "@eslint/js" "8.39.0" - "@humanwhocodes/config-array" "^0.11.8" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.55.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.0" - eslint-visitor-keys "^3.4.0" - espree "^9.5.1" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -1699,72 +743,59 @@ eslint@^8.10.0: find-up "^5.0.0" glob-parent "^6.0.2" globals "^13.19.0" - grapheme-splitter "^1.0.4" + graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" - js-sdsl "^4.1.4" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.3.1, espree@^9.5.1: - version "9.5.1" - resolved "https://registry.npmmirror.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" - integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.8.0" + acorn "^8.9.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.0" + eslint-visitor-keys "^3.4.1" -esquery@^1.4.0, esquery@^1.4.2: +esquery@^1.4.2: version "1.5.0" - resolved "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" - resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-walker@^2.0.1, estree-walker@^2.0.2: +estree-walker@^2.0.2: version "2.0.2" - resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" @@ -1780,61 +811,50 @@ events@^3.3.0: resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -express@^4.17.3: - version "4.18.2" - resolved "https://registry.npmmirror.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.1" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@3.2.12, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -1844,125 +864,56 @@ fast-glob@3.2.12, fast-glob@^3.2.9: fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: version "1.15.0" - resolved "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" -filelist@^1.0.1: - version "1.0.4" - resolved "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - find-up@^5.0.0: version "5.0.0" - resolved "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" path-exists "^4.0.0" flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -follow-redirects@^1.15.0: - version "1.15.2" - resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fraction.js@^4.2.0: - version "4.2.0" - resolved "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" - integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@^11.1.0: - version "11.1.1" - resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== fs.realpath@^1.0.0: version "1.0.0" @@ -1970,46 +921,37 @@ fs.realpath@^1.0.0: integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-intrinsic@^1.0.2: - version "1.2.0" - resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" - resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" -glob@^7.1.3, glob@^7.1.4: +glob@^7.1.3: version "7.2.3" - resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -2031,60 +973,28 @@ glob@^8.0.0: once "^1.3.0" globals@^13.19.0: - version "13.20.0" - resolved "https://registry.npmmirror.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -google-protobuf@^3.21.2: - version "3.21.2" - resolved "https://registry.npmmirror.com/google-protobuf/-/google-protobuf-3.21.2.tgz#4580a2bea8bbb291ee579d1fefb14d6fa3070ea4" - integrity sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA== - -graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.11" - resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npmmirror.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== dependencies: - function-bind "^1.1.1" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + function-bind "^1.1.2" help-me@^4.2.0: version "4.2.0" @@ -2094,50 +1004,29 @@ help-me@^4.2.0: glob "^8.0.0" readable-stream "^3.6.0" -html-minifier@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" - integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig== - dependencies: - camel-case "^3.0.0" - clean-css "^4.2.1" - commander "^2.19.0" - he "^1.2.0" - param-case "^2.1.1" - relateurl "^0.2.7" - uglify-js "^3.5.1" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.13, ieee754@^1.2.1: +ieee754@^1.2.1: version "1.2.1" resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" + integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -2145,7 +1034,7 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== inflight@^1.0.4: @@ -2156,125 +1045,77 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inquirer@^8.2.1: - version "8.2.5" - resolved "https://registry.npmmirror.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" - integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^7.0.0" + hasown "^2.0.0" -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.11.0: - version "2.12.0" - resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" - integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== - dependencies: - has "^1.0.3" - -is-docker@^2.0.0, is-docker@^2.1.1: +is-docker@^2.0.0: version "2.2.1" - resolved "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" - resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" -is-interactive@^1.0.0: +is-inside-container@^1.0.0: version "1.0.0" - resolved "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - is-path-inside@^3.0.3: version "3.0.3" - resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isbinaryfile@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/isbinaryfile/-/isbinaryfile-5.0.0.tgz#034b7e54989dab8986598cbcea41f66663c65234" - integrity sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg== - isexe@^2.0.0: version "2.0.0" - resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== ismobilejs@^1.1.0: @@ -2282,87 +1123,43 @@ ismobilejs@^1.1.0: resolved "https://registry.npmmirror.com/ismobilejs/-/ismobilejs-1.1.1.tgz#c56ca0ae8e52b24ca0f22ba5ef3215a2ddbbaa0e" integrity sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw== -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.npmmirror.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -js-base64@^3.7.5: - version "3.7.5" - resolved "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.5.tgz#21e24cf6b886f76d6f5f165bfcd69cc55b9e3fca" - integrity sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA== - js-sdsl@4.3.0: version "4.3.0" resolved "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== -js-sdsl@^4.1.4: - version "4.4.0" - resolved "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" - integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== - js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kolorist@^1.5.1: - version "1.8.0" - resolved "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c" - integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ== - -lazystream@^1.0.0: - version "1.0.1" - resolved "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" - integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== - dependencies: - readable-stream "^2.0.5" + json-buffer "3.0.1" levn@^0.4.1: version "0.4.1" - resolved "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -2370,64 +1167,16 @@ levn@^0.4.1: locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== - -lodash.difference@^4.5.0: - version "4.5.0" - resolved "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - -lodash.union@^4.6.0: - version "4.6.0" - resolved "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" - integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== - -lodash@^4.17.10, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== - lru-cache@^10.0.1: version "10.0.2" resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.0.2.tgz#34504678cc3266b09b8dfd6fab4e1515258271b7" @@ -2442,78 +1191,49 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge2@^1.3.0, merge2@^1.4.1: +merge2@^1.3.0: version "1.4.1" - resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" picomatch "^2.3.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.0: +minimatch@^5.0.1: version "5.1.6" resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" -minimist@^1.2.6, minimist@^1.2.8: +minimist@^1.2.8: version "1.2.8" resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -2550,74 +1270,29 @@ mqtt@^5.2.0, mqtt@^5.2.1: split2 "^4.2.0" ws "^8.14.2" -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - ms@2.1.2: version "2.1.2" resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3: - version "2.1.3" - resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== - -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.npmmirror.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.npmmirror.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: - lower-case "^1.1.1" + path-key "^3.0.0" -node-releases@^2.0.8: - version "2.0.10" - resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" - integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== dependencies: - boolbase "^1.0.0" + path-key "^4.0.0" number-allocator@^1.0.14: version "1.0.14" @@ -2627,23 +1302,6 @@ number-allocator@^1.0.14: debug "^4.3.1" js-sdsl "4.3.0" -object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -2651,219 +1309,157 @@ once@^1.3.0, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0: +onetime@^5.1.2: version "5.1.2" - resolved "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@^8.4.0: - version "8.4.2" - resolved "https://registry.npmmirror.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" + mimic-fn "^4.0.0" + +open@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" + integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== + dependencies: + default-browser "^4.0.0" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" is-wsl "^2.2.0" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -ouch@^2.0.0: - version "2.0.1" - resolved "https://registry.npmmirror.com/ouch/-/ouch-2.0.1.tgz#9107089819b99146e3d10da57e8f75b39f610993" - integrity sha512-SdkEqpEhsmkEpjTPSvB1DMA//w9ChMUr16m4TayNRVfaULzJ3AnNr3CI4cz1QSZ9a+E/g06c6SQzxjkIc3/GMw== - dependencies: - "@positron/stack-trace" "1.0.0" - ejs "^3.1.7" - escape-html "^1.0.1" - lodash "^4.17.10" p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" -param-case@^2.1.1: - version "2.1.1" - resolved "https://registry.npmmirror.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== - dependencies: - no-case "^2.2.0" - parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - picocolors@^1.0.0: version "1.0.0" - resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: +picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pinia@^2.0.11: - version "2.0.35" - resolved "https://registry.npmmirror.com/pinia/-/pinia-2.0.35.tgz#aa2597038bb55ea14ad689f83065d2814ebb8c10" - integrity sha512-P1IKKQWhxGXiiZ3atOaNI75bYlFUbRxtJdhPLX059Z7+b9Z04rnTZdSY8Aph1LA+/4QEMAYHsTQ638Wfe+6K5g== - dependencies: - "@vue/devtools-api" "^6.5.0" - vue-demi "*" - pixi-viewport@^5.0.1: version "5.0.1" resolved "https://registry.npmmirror.com/pixi-viewport/-/pixi-viewport-5.0.1.tgz#42e3934bd1535c4e60a5b95d09d0cf00bd673917" integrity sha512-fIILU9xztqGnhGF5SYfjn1Rir/7asWkJ8zSUay2hwzPrdGTWFtB4yiIlZDeFaLf7KHA04RRb2kI01Sy1kNksAw== -pixi.js@^7.2.4: - version "7.2.4" - resolved "https://registry.npmmirror.com/pixi.js/-/pixi.js-7.2.4.tgz#4cd6776bf7f74a6c5e121dd1b59329e66be2ce49" - integrity sha512-nBH60meoLnHxoMFz17HoMxXS4uJpG5jwIdL+Gx2S11TzWgP3iKF+/WLOTrkSdyuQoQSdIBxVqpnYii0Wiox15A== +pixi.js@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/pixi.js/-/pixi.js-7.3.2.tgz#86f0287a3763e9141691f496e384a2763fb6552c" + integrity sha512-GJickUrT3UcBInGT1CU6cv2oktCdocE5QM74CD3t+weiJPPWIzleNlp7zrBR5QIDdU6bEO8CUgUXH2Y9QvlCMw== dependencies: - "@pixi/accessibility" "7.2.4" - "@pixi/app" "7.2.4" - "@pixi/assets" "7.2.4" - "@pixi/compressed-textures" "7.2.4" - "@pixi/core" "7.2.4" - "@pixi/display" "7.2.4" - "@pixi/events" "7.2.4" - "@pixi/extensions" "7.2.4" - "@pixi/extract" "7.2.4" - "@pixi/filter-alpha" "7.2.4" - "@pixi/filter-blur" "7.2.4" - "@pixi/filter-color-matrix" "7.2.4" - "@pixi/filter-displacement" "7.2.4" - "@pixi/filter-fxaa" "7.2.4" - "@pixi/filter-noise" "7.2.4" - "@pixi/graphics" "7.2.4" - "@pixi/mesh" "7.2.4" - "@pixi/mesh-extras" "7.2.4" - "@pixi/mixin-cache-as-bitmap" "7.2.4" - "@pixi/mixin-get-child-by-name" "7.2.4" - "@pixi/mixin-get-global-position" "7.2.4" - "@pixi/particle-container" "7.2.4" - "@pixi/prepare" "7.2.4" - "@pixi/sprite" "7.2.4" - "@pixi/sprite-animated" "7.2.4" - "@pixi/sprite-tiling" "7.2.4" - "@pixi/spritesheet" "7.2.4" - "@pixi/text" "7.2.4" - "@pixi/text-bitmap" "7.2.4" - "@pixi/text-html" "7.2.4" - -postcss-selector-parser@^6.0.9: - version "6.0.11" - resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" - integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^8.1.10, postcss@^8.4.13: - version "8.4.23" - resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" - integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" + "@pixi/accessibility" "7.3.2" + "@pixi/app" "7.3.2" + "@pixi/assets" "7.3.2" + "@pixi/compressed-textures" "7.3.2" + "@pixi/core" "7.3.2" + "@pixi/display" "7.3.2" + "@pixi/events" "7.3.2" + "@pixi/extensions" "7.3.2" + "@pixi/extract" "7.3.2" + "@pixi/filter-alpha" "7.3.2" + "@pixi/filter-blur" "7.3.2" + "@pixi/filter-color-matrix" "7.3.2" + "@pixi/filter-displacement" "7.3.2" + "@pixi/filter-fxaa" "7.3.2" + "@pixi/filter-noise" "7.3.2" + "@pixi/graphics" "7.3.2" + "@pixi/mesh" "7.3.2" + "@pixi/mesh-extras" "7.3.2" + "@pixi/mixin-cache-as-bitmap" "7.3.2" + "@pixi/mixin-get-child-by-name" "7.3.2" + "@pixi/mixin-get-global-position" "7.3.2" + "@pixi/particle-container" "7.3.2" + "@pixi/prepare" "7.3.2" + "@pixi/sprite" "7.3.2" + "@pixi/sprite-animated" "7.3.2" + "@pixi/sprite-tiling" "7.3.2" + "@pixi/spritesheet" "7.3.2" + "@pixi/text" "7.3.2" + "@pixi/text-bitmap" "7.3.2" + "@pixi/text-html" "7.3.2" prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@^2.5.1: - version "2.8.8" - resolved "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" -process-nextick-args@^2.0.1, process-nextick-args@~2.0.0: +prettier@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.1.tgz#6ba9f23165d690b6cbdaa88cb0807278f7019848" + integrity sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw== + +process-nextick-args@^2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== @@ -2873,45 +1469,15 @@ process@^0.11.10: resolved "https://registry.npmmirror.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -protoc-gen-ts@^0.8.6: - version "0.8.6" - resolved "https://registry.npmmirror.com/protoc-gen-ts/-/protoc-gen-ts-0.8.6.tgz#e789a6fc3fbe09bdc119acecc349b9554ec5940e" - integrity sha512-66oeorGy4QBvYjQGd/gaeOYyFqKyRmRgTpofmnw8buMG0P7A0jQjoKSvKJz5h5tNUaVkIzvGBUTRVGakrhhwpA== - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - punycode@1.3.2: version "1.3.2" resolved "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== punycode@^2.1.0: - version "2.3.0" - resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -quasar@^2.6.0: - version "2.11.10" - resolved "https://registry.npmmirror.com/quasar/-/quasar-2.11.10.tgz#31bf49dd7995673b2116aa250bb0b019ddcae74f" - integrity sha512-pV7bMdY/FUmOvNhZ2XjKSXJH92fsDu0cU/z7a9roPKV54cW41N1en3sLATrirjPComyZnk4uXrMdGtXp8+IpCg== + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== querystring@0.2.0: version "0.2.0" @@ -2920,45 +1486,10 @@ querystring@0.2.0: queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -readable-stream@^2.0.0, readable-stream@^2.0.5: - version "2.3.8" - resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -2978,70 +1509,28 @@ readable-stream@^4.2.0, readable-stream@^4.4.2: process "^0.11.10" string_decoder "^1.3.0" -readdir-glob@^1.0.0: - version "1.1.3" - resolved "https://registry.npmmirror.com/readdir-glob/-/readdir-glob-1.1.3.tgz#c3d831f51f5e7bfa62fa2ffbe4b508c640f09584" - integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== - dependencies: - minimatch "^5.1.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -register-service-worker@^1.7.2: - version "1.7.2" - resolved "https://registry.npmmirror.com/register-service-worker/-/register-service-worker-1.7.2.tgz#6516983e1ef790a98c4225af1216bc80941a4bd2" - integrity sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A== - reinterval@^1.1.0: version "1.1.0" resolved "https://registry.npmmirror.com/reinterval/-/reinterval-1.1.0.tgz#3361ecfa3ca6c18283380dd0bb9546f390f5ece7" integrity sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ== -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.22.0: - version "1.22.2" - resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== +resolve@^1.22.1: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.11.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - reusify@^1.0.4: version "1.0.4" - resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfdc@^1.3.0: @@ -3051,213 +1540,89 @@ rfdc@^1.3.0: rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -rollup-plugin-visualizer@^5.5.4: - version "5.9.0" - resolved "https://registry.npmmirror.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.0.tgz#013ac54fb6a9d7c9019e7eb77eced673399e5a0b" - integrity sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg== - dependencies: - open "^8.4.0" - picomatch "^2.3.1" - source-map "^0.7.4" - yargs "^17.5.1" - -"rollup@>=2.59.0 <2.78.0": - version "2.77.3" - resolved "https://registry.npmmirror.com/rollup/-/rollup-2.77.3.tgz#8f00418d3a2740036e15deb653bed1a90ee0cc12" - integrity sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g== +rollup@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.8.0.tgz#365c34e85f1ed034de974dab934c1663cc69b754" + integrity sha512-NpsklK2fach5CdI+PScmlE5R4Ao/FSWtF7LkoIrHDxPACY/xshNasPsbpG0VVHxUTbf74tJbVT4PrP8JsJ6ZDA== optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.8.0" + "@rollup/rollup-android-arm64" "4.8.0" + "@rollup/rollup-darwin-arm64" "4.8.0" + "@rollup/rollup-darwin-x64" "4.8.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.8.0" + "@rollup/rollup-linux-arm64-gnu" "4.8.0" + "@rollup/rollup-linux-arm64-musl" "4.8.0" + "@rollup/rollup-linux-riscv64-gnu" "4.8.0" + "@rollup/rollup-linux-x64-gnu" "4.8.0" + "@rollup/rollup-linux-x64-musl" "4.8.0" + "@rollup/rollup-win32-arm64-msvc" "4.8.0" + "@rollup/rollup-win32-ia32-msvc" "4.8.0" + "@rollup/rollup-win32-x64-msvc" "4.8.0" fsevents "~2.3.2" -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-applescript@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" + integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== + dependencies: + execa "^5.0.0" run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" -rxjs@^7.5.5: - version "7.8.0" - resolved "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" - integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== - dependencies: - tslib "^2.1.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sass@1.32.12: - version "1.32.12" - resolved "https://registry.npmmirror.com/sass/-/sass-1.32.12.tgz#a2a47ad0f1c168222db5206444a30c12457abb9f" - integrity sha512-zmXn03k3hN0KaiVTjohgkg98C3UowhL1/VSGdj4/VAAiMKGQOE80PFPxFP2Kyq0OUskPKcY5lImkhBKEHlypJA== - dependencies: - chokidar ">=3.0.0 <4.0.0" - -sax@1.1.4: - version "1.1.4" - resolved "https://registry.npmmirror.com/sax/-/sax-1.1.4.tgz#74b6d33c9ae1e001510f179a91168588f1aedaa9" - integrity sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg== - -semver@^7.3.5, semver@^7.3.6, semver@^7.3.7: +semver@^7.3.5: version "7.5.0" resolved "https://registry.npmmirror.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== dependencies: lru-cache "^6.0.0" -send@0.18.0: - version "0.18.0" - resolved "https://registry.npmmirror.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@^6.0.0: - version "6.0.1" - resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" - integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== - dependencies: - randombytes "^2.1.0" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2: +signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" - resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map@^0.6.1, source-map@~0.6.0: - version "0.6.1" - resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - split2@^4.2.0: version "4.2.0" resolved "https://registry.npmmirror.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -3265,176 +1630,100 @@ string_decoder@^1.1.1, string_decoder@^1.3.0: dependencies: safe-buffer "~5.2.0" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -table@^6.8.0: - version "6.8.1" - resolved "https://registry.npmmirror.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" - integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== +synckit@^0.8.5: + version "0.8.6" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.6.tgz#b69b7fbce3917c2673cbdc0d87fb324db4a5b409" + integrity sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA== dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - -tar-stream@^2.2.0: - version "2.2.0" - resolved "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" + "@pkgr/utils" "^2.4.2" + tslib "^2.6.2" text-table@^0.2.0: version "0.2.0" - resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -through@^2.3.6: - version "2.3.8" - resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" +titleize@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" + integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -ts-md5@^1.3.1: - version "1.3.1" - resolved "https://registry.npmmirror.com/ts-md5/-/ts-md5-1.3.1.tgz#f5b860c0d5241dd9bb4e909dd73991166403f511" - integrity sha512-DiwiXfwvcTeZ5wCE0z+2A9EseZsztaiZtGrtSaY5JOD7ekPnR/GoIVD5gXZAlK9Na9Kvpo9Waz5rW64WKAWApg== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.1.0: - version "2.5.0" - resolved "https://registry.npmmirror.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" +tslib@^2.6.0, tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@^4.5.4: - version "4.9.5" - resolved "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== -uglify-js@^3.5.1: - version "3.17.4" - resolved "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" - integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -update-browserslist-db@^1.0.10: - version "1.0.11" - resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -3447,110 +1736,18 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: +util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vite@^2.9.13: - version "2.9.15" - resolved "https://registry.npmmirror.com/vite/-/vite-2.9.15.tgz#2858dd5b2be26aa394a283e62324281892546f0b" - integrity sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ== - dependencies: - esbuild "^0.14.27" - postcss "^8.4.13" - resolve "^1.22.0" - rollup ">=2.59.0 <2.78.0" - optionalDependencies: - fsevents "~2.3.2" - -vue-demi@*: - version "0.14.0" - resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.0.tgz#dcfd9a9cf9bb62ada1582ec9042372cf67ca6190" - integrity sha512-gt58r2ogsNQeVoQ3EhoUAvUsH9xviydl0dWJj7dabBC/2L4uBId7ujtCwDRD0JhkGsV1i0CtfLAeyYKBht9oWg== - -vue-eslint-parser@^9.0.1: - version "9.1.1" - resolved "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.1.1.tgz#3f4859be7e9bb7edaa1dc7edb05abffee72bf3dd" - integrity sha512-C2aI/r85Q6tYcz4dpgvrs4wH/MqVrRAVIdpYedrxnATDHHkb+TroeRcDpKWGZCx/OcECMWfz7tVwQ8e+Opy6rA== - dependencies: - debug "^4.3.4" - eslint-scope "^7.1.1" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" - esquery "^1.4.0" - lodash "^4.17.21" - semver "^7.3.6" - -vue-router@^4.0.0: - version "4.1.6" - resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz#b70303737e12b4814578d21d68d21618469375a1" - integrity sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ== - dependencies: - "@vue/devtools-api" "^6.4.5" - -vue@^3.0.0: - version "3.2.47" - resolved "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz#3eb736cbc606fc87038dbba6a154707c8a34cff0" - integrity sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ== - dependencies: - "@vue/compiler-dom" "3.2.47" - "@vue/compiler-sfc" "3.2.47" - "@vue/runtime-dom" "3.2.47" - "@vue/server-renderer" "3.2.47" - "@vue/shared" "3.2.47" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webpack-merge@^5.8.0: - version "5.8.0" - resolved "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" - integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== - dependencies: - clone-deep "^4.0.1" - wildcard "^2.0.0" - which@^2.0.1: version "2.0.2" - resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wildcard@^2.0.0: - version "2.0.1" - resolved "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrappy@1: version "1.0.2" resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -3561,49 +1758,12 @@ ws@^8.14.2: resolved "https://registry.npmmirror.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== -xml-name-validator@^4.0.0: - version "4.0.0" - resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" - integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.5.1: - version "17.7.1" - resolved "https://registry.npmmirror.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" - integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zip-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.npmmirror.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79" - integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== - dependencies: - archiver-utils "^2.1.0" - compress-commons "^4.1.0" - readable-stream "^3.6.0"