@rsdoctor/components 1.3.16 → 1.4.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"pages/TreeShaking/range.mjs","sources":["../../../src/pages/TreeShaking/range.ts"],"sourcesContent":["/**\n * The following is modified based on source found in\n * https://github.com/microsoft/monaco-editor\n *\n * MIT Licensed\n * Copyright (c) 2016 - present Microsoft Corporation\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n */\n\nexport class Range {\n public startLineNumber: number;\n public startColumn: number;\n public endLineNumber: number;\n public endColumn: number;\n\n constructor(\n startLineNumber: number,\n startColumn: number,\n endLineNumber: number,\n endColumn: number,\n ) {\n if (\n startLineNumber > endLineNumber ||\n (startLineNumber === endLineNumber && startColumn > endColumn)\n ) {\n this.startLineNumber = endLineNumber;\n this.startColumn = endColumn;\n this.endLineNumber = startLineNumber;\n this.endColumn = startColumn;\n } else {\n this.startLineNumber = startLineNumber;\n this.startColumn = startColumn;\n this.endLineNumber = endLineNumber;\n this.endColumn = endColumn;\n }\n }\n /**\n * Test if this range is empty.\n */\n isEmpty() {\n return Range.isEmpty(this);\n }\n /**\n * Test if `range` is empty.\n */\n static isEmpty(range: Range) {\n return (\n range.startLineNumber === range.endLineNumber &&\n range.startColumn === range.endColumn\n );\n }\n /**\n * Test if position is in this range. If the position is at the edges, will return true.\n */\n containsPosition(position: any) {\n return Range.containsPosition(this, position);\n }\n /**\n * Test if `position` is in `range`. If the position is at the edges, will return true.\n */\n static containsPosition(\n range: Range,\n position: {\n lineNumber: number;\n column: number;\n },\n ) {\n if (\n position.lineNumber < range.startLineNumber ||\n position.lineNumber > range.endLineNumber\n ) {\n return false;\n }\n if (\n position.lineNumber === range.startLineNumber &&\n position.column < range.startColumn\n ) {\n return false;\n }\n if (\n position.lineNumber === range.endLineNumber &&\n position.column > range.endColumn\n ) {\n return false;\n }\n return true;\n }\n /**\n * Test if `position` is in `range`. If the position is at the edges, will return false.\n * @internal\n */\n static strictContainsPosition(\n range: Range,\n position: {\n lineNumber: number;\n column: number;\n },\n ) {\n if (\n position.lineNumber < range.startLineNumber ||\n position.lineNumber > range.endLineNumber\n ) {\n return false;\n }\n if (\n position.lineNumber === range.startLineNumber &&\n position.column <= range.startColumn\n ) {\n return false;\n }\n if (\n position.lineNumber === range.endLineNumber &&\n position.column >= range.endColumn\n ) {\n return false;\n }\n return true;\n }\n /**\n * Test if range is in this range. If the range is equal to this range, will return true.\n */\n containsRange(range: Range) {\n return Range.containsRange(this, range);\n }\n /**\n * Test if `otherRange` is in `range`. If the ranges are equal, will return true.\n */\n static containsRange(\n range: Range,\n otherRange: {\n startLineNumber: number;\n endLineNumber: number;\n startColumn: number;\n endColumn: number;\n },\n ) {\n if (\n otherRange.startLineNumber < range.startLineNumber ||\n otherRange.endLineNumber < range.startLineNumber\n ) {\n return false;\n }\n if (\n otherRange.startLineNumber > range.endLineNumber ||\n otherRange.endLineNumber > range.endLineNumber\n ) {\n return false;\n }\n if (\n otherRange.startLineNumber === range.startLineNumber &&\n otherRange.startColumn < range.startColumn\n ) {\n return false;\n }\n if (\n otherRange.endLineNumber === range.endLineNumber &&\n otherRange.endColumn > range.endColumn\n ) {\n return false;\n }\n return true;\n }\n /**\n * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true.\n */\n strictContainsRange(range: Range) {\n return Range.strictContainsRange(this, range);\n }\n /**\n * Test if `otherRange` is strictly in `range` (must start after, and end before). If the ranges are equal, will return false.\n */\n static strictContainsRange(\n range: Range,\n otherRange: {\n startLineNumber: number;\n endLineNumber: number;\n startColumn: number;\n endColumn: number;\n },\n ) {\n if (\n otherRange.startLineNumber < range.startLineNumber ||\n otherRange.endLineNumber < range.startLineNumber\n ) {\n return false;\n }\n if (\n otherRange.startLineNumber > range.endLineNumber ||\n otherRange.endLineNumber > range.endLineNumber\n ) {\n return false;\n }\n if (\n otherRange.startLineNumber === range.startLineNumber &&\n otherRange.startColumn <= range.startColumn\n ) {\n return false;\n }\n if (\n otherRange.endLineNumber === range.endLineNumber &&\n otherRange.endColumn >= range.endColumn\n ) {\n return false;\n }\n return true;\n }\n /**\n * A reunion of the two ranges.\n * The smallest position will be used as the start point, and the largest one as the end point.\n */\n plusRange(range: Range) {\n return Range.plusRange(this, range);\n }\n /**\n * A reunion of the two ranges.\n * The smallest position will be used as the start point, and the largest one as the end point.\n */\n static plusRange(a: Range, b: Range) {\n let startLineNumber;\n let startColumn;\n let endLineNumber;\n let endColumn;\n if (b.startLineNumber < a.startLineNumber) {\n startLineNumber = b.startLineNumber;\n startColumn = b.startColumn;\n } else if (b.startLineNumber === a.startLineNumber) {\n startLineNumber = b.startLineNumber;\n startColumn = Math.min(b.startColumn, a.startColumn);\n } else {\n startLineNumber = a.startLineNumber;\n startColumn = a.startColumn;\n }\n if (b.endLineNumber > a.endLineNumber) {\n endLineNumber = b.endLineNumber;\n endColumn = b.endColumn;\n } else if (b.endLineNumber === a.endLineNumber) {\n endLineNumber = b.endLineNumber;\n endColumn = Math.max(b.endColumn, a.endColumn);\n } else {\n endLineNumber = a.endLineNumber;\n endColumn = a.endColumn;\n }\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\n }\n /**\n * A intersection of the two ranges.\n */\n intersectRanges(range: Range) {\n return Range.intersectRanges(this, range);\n }\n /**\n * A intersection of the two ranges.\n */\n static intersectRanges(a: Range, b: Range) {\n let resultStartLineNumber = a.startLineNumber;\n let resultStartColumn = a.startColumn;\n let resultEndLineNumber = a.endLineNumber;\n let resultEndColumn = a.endColumn;\n const otherStartLineNumber = b.startLineNumber;\n const otherStartColumn = b.startColumn;\n const otherEndLineNumber = b.endLineNumber;\n const otherEndColumn = b.endColumn;\n if (resultStartLineNumber < otherStartLineNumber) {\n resultStartLineNumber = otherStartLineNumber;\n resultStartColumn = otherStartColumn;\n } else if (resultStartLineNumber === otherStartLineNumber) {\n resultStartColumn = Math.max(resultStartColumn, otherStartColumn);\n }\n if (resultEndLineNumber > otherEndLineNumber) {\n resultEndLineNumber = otherEndLineNumber;\n resultEndColumn = otherEndColumn;\n } else if (resultEndLineNumber === otherEndLineNumber) {\n resultEndColumn = Math.min(resultEndColumn, otherEndColumn);\n }\n // Check if selection is now empty\n if (resultStartLineNumber > resultEndLineNumber) {\n return null;\n }\n if (\n resultStartLineNumber === resultEndLineNumber &&\n resultStartColumn > resultEndColumn\n ) {\n return null;\n }\n return new Range(\n resultStartLineNumber,\n resultStartColumn,\n resultEndLineNumber,\n resultEndColumn,\n );\n }\n /**\n * Test if this range equals other.\n */\n equalsRange(other: Range) {\n return Range.equalsRange(this, other);\n }\n /**\n * Test if range `a` equals `b`.\n */\n static equalsRange(a: Range, b: Range) {\n if (!a && !b) {\n return true;\n }\n return (\n !!a &&\n !!b &&\n a.startLineNumber === b.startLineNumber &&\n a.startColumn === b.startColumn &&\n a.endLineNumber === b.endLineNumber &&\n a.endColumn === b.endColumn\n );\n }\n /**\n * Return the end position (which will be after or equal to the start position)\n */\n getEndPosition() {\n return Range.getEndPosition(this);\n }\n /**\n * Return the end position (which will be after or equal to the start position)\n */\n static getEndPosition(range: Range) {\n return new Position(range.endLineNumber, range.endColumn);\n }\n /**\n * Return the start position (which will be before or equal to the end position)\n */\n getStartPosition() {\n return Range.getStartPosition(this);\n }\n /**\n * Return the start position (which will be before or equal to the end position)\n */\n static getStartPosition(range: Range) {\n return new Position(range.startLineNumber, range.startColumn);\n }\n /**\n * Transform to a user presentable string representation.\n */\n toString() {\n return `[${this.startLineNumber},${this.startColumn} -> ${this.endLineNumber},${this.endColumn}]`;\n }\n /**\n * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.\n */\n setEndPosition(endLineNumber: number, endColumn: number) {\n return new Range(\n this.startLineNumber,\n this.startColumn,\n endLineNumber,\n endColumn,\n );\n }\n /**\n * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.\n */\n setStartPosition(startLineNumber: number, startColumn: number) {\n return new Range(\n startLineNumber,\n startColumn,\n this.endLineNumber,\n this.endColumn,\n );\n }\n /**\n * Create a new empty range using this range's start position.\n */\n collapseToStart() {\n return Range.collapseToStart(this);\n }\n /**\n * Create a new empty range using this range's start position.\n */\n static collapseToStart(range: Range) {\n return new Range(\n range.startLineNumber,\n range.startColumn,\n range.startLineNumber,\n range.startColumn,\n );\n }\n /**\n * Create a new empty range using this range's end position.\n */\n collapseToEnd() {\n return Range.collapseToEnd(this);\n }\n /**\n * Create a new empty range using this range's end position.\n */\n static collapseToEnd(range: Range) {\n return new Range(\n range.endLineNumber,\n range.endColumn,\n range.endLineNumber,\n range.endColumn,\n );\n }\n /**\n * Moves the range by the given amount of lines.\n */\n delta(lineCount: number) {\n return new Range(\n this.startLineNumber + lineCount,\n this.startColumn,\n this.endLineNumber + lineCount,\n this.endColumn,\n );\n }\n // ---\n static fromPositions(\n start: {\n lineNumber: number;\n column: number;\n },\n end = start,\n ) {\n return new Range(\n start.lineNumber,\n start.column,\n end.lineNumber,\n end.column,\n );\n }\n static lift(range: Range) {\n if (!range) {\n return null;\n }\n return new Range(\n range.startLineNumber,\n range.startColumn,\n range.endLineNumber,\n range.endColumn,\n );\n }\n /**\n * Test if `obj` is an `IRange`.\n */\n static isIRange(obj: Range) {\n return (\n obj &&\n typeof obj.startLineNumber === 'number' &&\n typeof obj.startColumn === 'number' &&\n typeof obj.endLineNumber === 'number' &&\n typeof obj.endColumn === 'number'\n );\n }\n /**\n * Test if the two ranges are touching in any way.\n */\n static areIntersectingOrTouching(a: Range, b: Range) {\n // Check if `a` is before `b`\n if (\n a.endLineNumber < b.startLineNumber ||\n (a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn)\n ) {\n return false;\n }\n // Check if `b` is before `a`\n if (\n b.endLineNumber < a.startLineNumber ||\n (b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn)\n ) {\n return false;\n }\n // These ranges must intersect\n return true;\n }\n /**\n * Test if the two ranges are intersecting. If the ranges are touching it returns true.\n */\n static areIntersecting(a: Range, b: Range) {\n // Check if `a` is before `b`\n if (\n a.endLineNumber < b.startLineNumber ||\n (a.endLineNumber === b.startLineNumber && a.endColumn <= b.startColumn)\n ) {\n return false;\n }\n // Check if `b` is before `a`\n if (\n b.endLineNumber < a.startLineNumber ||\n (b.endLineNumber === a.startLineNumber && b.endColumn <= a.startColumn)\n ) {\n return false;\n }\n // These ranges must intersect\n return true;\n }\n /**\n * A function that compares ranges, useful for sorting ranges\n * It will first compare ranges on the startPosition and then on the endPosition\n */\n static compareRangesUsingStarts(a: Range, b: Range) {\n if (a && b) {\n const aStartLineNumber = a.startLineNumber | 0;\n const bStartLineNumber = b.startLineNumber | 0;\n if (aStartLineNumber === bStartLineNumber) {\n const aStartColumn = a.startColumn | 0;\n const bStartColumn = b.startColumn | 0;\n if (aStartColumn === bStartColumn) {\n const aEndLineNumber = a.endLineNumber | 0;\n const bEndLineNumber = b.endLineNumber | 0;\n if (aEndLineNumber === bEndLineNumber) {\n const aEndColumn = a.endColumn | 0;\n const bEndColumn = b.endColumn | 0;\n return aEndColumn - bEndColumn;\n }\n return aEndLineNumber - bEndLineNumber;\n }\n return aStartColumn - bStartColumn;\n }\n return aStartLineNumber - bStartLineNumber;\n }\n const aExists = a ? 1 : 0;\n const bExists = b ? 1 : 0;\n return aExists - bExists;\n }\n /**\n * A function that compares ranges, useful for sorting ranges\n * It will first compare ranges on the endPosition and then on the startPosition\n */\n static compareRangesUsingEnds(\n a: {\n endLineNumber: number;\n endColumn: number;\n startLineNumber: number;\n startColumn: number;\n },\n b: {\n endLineNumber: number;\n endColumn: number;\n startLineNumber: number;\n startColumn: number;\n },\n ) {\n if (a.endLineNumber === b.endLineNumber) {\n if (a.endColumn === b.endColumn) {\n if (a.startLineNumber === b.startLineNumber) {\n return a.startColumn - b.startColumn;\n }\n return a.startLineNumber - b.startLineNumber;\n }\n return a.endColumn - b.endColumn;\n }\n return a.endLineNumber - b.endLineNumber;\n }\n /**\n * Test if the range spans multiple lines.\n */\n static spansMultipleLines(range: Range) {\n return range.endLineNumber > range.startLineNumber;\n }\n toJSON() {\n return this;\n }\n}\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * A position in the editor.\n */\nexport class Position {\n lineNumber: number;\n column: number;\n\n constructor(lineNumber: number, column: number) {\n this.lineNumber = lineNumber;\n this.column = column;\n }\n /**\n * Create a new position from this position.\n *\n * @param newLineNumber new line number\n * @param newColumn new column\n */\n with(newLineNumber = this.lineNumber, newColumn = this.column) {\n if (newLineNumber === this.lineNumber && newColumn === this.column) {\n return this;\n }\n return new Position(newLineNumber, newColumn);\n }\n /**\n * Derive a new position from this position.\n *\n * @param deltaLineNumber line number delta\n * @param deltaColumn column delta\n */\n delta(deltaLineNumber = 0, deltaColumn = 0) {\n return this.with(\n this.lineNumber + deltaLineNumber,\n this.column + deltaColumn,\n );\n }\n /**\n * Test if this position equals other position\n */\n equals(other: any) {\n return Position.equals(this, other);\n }\n /**\n * Test if position `a` equals position `b`\n */\n static equals(\n a: any,\n b: {\n lineNumber: any;\n column: any;\n },\n ) {\n if (!a && !b) {\n return true;\n }\n return !!a && !!b && a.lineNumber === b.lineNumber && a.column === b.column;\n }\n /**\n * Test if this position is before other position.\n * If the two positions are equal, the result will be false.\n */\n isBefore(other: any) {\n return Position.isBefore(this, other);\n }\n /**\n * Test if position `a` is before position `b`.\n * If the two positions are equal, the result will be false.\n */\n static isBefore(\n a: any,\n b: {\n lineNumber: number;\n column: number;\n },\n ) {\n if (a.lineNumber < b.lineNumber) {\n return true;\n }\n if (b.lineNumber < a.lineNumber) {\n return false;\n }\n return a.column < b.column;\n }\n /**\n * Test if this position is before other position.\n * If the two positions are equal, the result will be true.\n */\n isBeforeOrEqual(other: any) {\n return Position.isBeforeOrEqual(this, other);\n }\n /**\n * Test if position `a` is before position `b`.\n * If the two positions are equal, the result will be true.\n */\n static isBeforeOrEqual(\n a: any,\n b: {\n lineNumber: number;\n column: number;\n },\n ) {\n if (a.lineNumber < b.lineNumber) {\n return true;\n }\n if (b.lineNumber < a.lineNumber) {\n return false;\n }\n return a.column <= b.column;\n }\n /**\n * A function that compares positions, useful for sorting\n */\n static compare(\n a: {\n lineNumber: number;\n column: number;\n },\n b: {\n lineNumber: number;\n column: number;\n },\n ) {\n const aLineNumber = a.lineNumber | 0;\n const bLineNumber = b.lineNumber | 0;\n if (aLineNumber === bLineNumber) {\n const aColumn = a.column | 0;\n const bColumn = b.column | 0;\n return aColumn - bColumn;\n }\n return aLineNumber - bLineNumber;\n }\n /**\n * Clone this position.\n */\n clone() {\n return new Position(this.lineNumber, this.column);\n }\n /**\n * Convert to a human-readable representation.\n */\n toString() {\n return `(${this.lineNumber},${this.column})`;\n }\n // ---\n /**\n * Create a `Position` from an `IPosition`.\n */\n static lift(pos: { lineNumber: any; column: any }) {\n return new Position(pos.lineNumber, pos.column);\n }\n /**\n * Test if `obj` is an `IPosition`.\n */\n static isIPosition(obj: { lineNumber: any; column: any }) {\n return (\n obj &&\n typeof obj.lineNumber === 'number' &&\n typeof obj.column === 'number'\n );\n }\n toJSON() {\n return {\n lineNumber: this.lineNumber,\n column: this.column,\n };\n }\n}\n"],"names":["Range","range","position","otherRange","a","b","startLineNumber","startColumn","endLineNumber","endColumn","Math","resultStartLineNumber","resultStartColumn","resultEndLineNumber","resultEndColumn","otherStartLineNumber","otherStartColumn","otherEndLineNumber","otherEndColumn","other","Position","lineCount","start","end","obj","aStartLineNumber","bStartLineNumber","aStartColumn","bStartColumn","aEndLineNumber","bEndLineNumber","aEndColumn","bEndColumn","aExists","bExists","newLineNumber","newColumn","deltaLineNumber","deltaColumn","aLineNumber","bLineNumber","aColumn","bColumn","pos","lineNumber","column"],"mappings":"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"}
1
+ {"version":3,"file":"pages/TreeShaking/range.mjs","sources":["../../../src/pages/TreeShaking/range.ts"],"sourcesContent":["/**\n * The following is modified based on source found in\n * https://github.com/microsoft/monaco-editor\n *\n * MIT Licensed\n * Copyright (c) 2016 - present Microsoft Corporation\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n */\n\nexport class Range {\n public startLineNumber: number;\n public startColumn: number;\n public endLineNumber: number;\n public endColumn: number;\n\n constructor(\n startLineNumber: number,\n startColumn: number,\n endLineNumber: number,\n endColumn: number,\n ) {\n if (\n startLineNumber > endLineNumber ||\n (startLineNumber === endLineNumber && startColumn > endColumn)\n ) {\n this.startLineNumber = endLineNumber;\n this.startColumn = endColumn;\n this.endLineNumber = startLineNumber;\n this.endColumn = startColumn;\n } else {\n this.startLineNumber = startLineNumber;\n this.startColumn = startColumn;\n this.endLineNumber = endLineNumber;\n this.endColumn = endColumn;\n }\n }\n /**\n * Test if this range is empty.\n */\n isEmpty() {\n return Range.isEmpty(this);\n }\n /**\n * Test if `range` is empty.\n */\n static isEmpty(range: Range) {\n return (\n range.startLineNumber === range.endLineNumber &&\n range.startColumn === range.endColumn\n );\n }\n /**\n * Test if position is in this range. If the position is at the edges, will return true.\n */\n containsPosition(position: any) {\n return Range.containsPosition(this, position);\n }\n /**\n * Test if `position` is in `range`. If the position is at the edges, will return true.\n */\n static containsPosition(\n range: Range,\n position: {\n lineNumber: number;\n column: number;\n },\n ) {\n if (\n position.lineNumber < range.startLineNumber ||\n position.lineNumber > range.endLineNumber\n ) {\n return false;\n }\n if (\n position.lineNumber === range.startLineNumber &&\n position.column < range.startColumn\n ) {\n return false;\n }\n if (\n position.lineNumber === range.endLineNumber &&\n position.column > range.endColumn\n ) {\n return false;\n }\n return true;\n }\n /**\n * Test if `position` is in `range`. If the position is at the edges, will return false.\n * @internal\n */\n static strictContainsPosition(\n range: Range,\n position: {\n lineNumber: number;\n column: number;\n },\n ) {\n if (\n position.lineNumber < range.startLineNumber ||\n position.lineNumber > range.endLineNumber\n ) {\n return false;\n }\n if (\n position.lineNumber === range.startLineNumber &&\n position.column <= range.startColumn\n ) {\n return false;\n }\n if (\n position.lineNumber === range.endLineNumber &&\n position.column >= range.endColumn\n ) {\n return false;\n }\n return true;\n }\n /**\n * Test if range is in this range. If the range is equal to this range, will return true.\n */\n containsRange(range: Range) {\n return Range.containsRange(this, range);\n }\n /**\n * Test if `otherRange` is in `range`. If the ranges are equal, will return true.\n */\n static containsRange(\n range: Range,\n otherRange: {\n startLineNumber: number;\n endLineNumber: number;\n startColumn: number;\n endColumn: number;\n },\n ) {\n if (\n otherRange.startLineNumber < range.startLineNumber ||\n otherRange.endLineNumber < range.startLineNumber\n ) {\n return false;\n }\n if (\n otherRange.startLineNumber > range.endLineNumber ||\n otherRange.endLineNumber > range.endLineNumber\n ) {\n return false;\n }\n if (\n otherRange.startLineNumber === range.startLineNumber &&\n otherRange.startColumn < range.startColumn\n ) {\n return false;\n }\n if (\n otherRange.endLineNumber === range.endLineNumber &&\n otherRange.endColumn > range.endColumn\n ) {\n return false;\n }\n return true;\n }\n /**\n * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true.\n */\n strictContainsRange(range: Range) {\n return Range.strictContainsRange(this, range);\n }\n /**\n * Test if `otherRange` is strictly in `range` (must start after, and end before). If the ranges are equal, will return false.\n */\n static strictContainsRange(\n range: Range,\n otherRange: {\n startLineNumber: number;\n endLineNumber: number;\n startColumn: number;\n endColumn: number;\n },\n ) {\n if (\n otherRange.startLineNumber < range.startLineNumber ||\n otherRange.endLineNumber < range.startLineNumber\n ) {\n return false;\n }\n if (\n otherRange.startLineNumber > range.endLineNumber ||\n otherRange.endLineNumber > range.endLineNumber\n ) {\n return false;\n }\n if (\n otherRange.startLineNumber === range.startLineNumber &&\n otherRange.startColumn <= range.startColumn\n ) {\n return false;\n }\n if (\n otherRange.endLineNumber === range.endLineNumber &&\n otherRange.endColumn >= range.endColumn\n ) {\n return false;\n }\n return true;\n }\n /**\n * A reunion of the two ranges.\n * The smallest position will be used as the start point, and the largest one as the end point.\n */\n plusRange(range: Range) {\n return Range.plusRange(this, range);\n }\n /**\n * A reunion of the two ranges.\n * The smallest position will be used as the start point, and the largest one as the end point.\n */\n static plusRange(a: Range, b: Range) {\n let startLineNumber;\n let startColumn;\n let endLineNumber;\n let endColumn;\n if (b.startLineNumber < a.startLineNumber) {\n startLineNumber = b.startLineNumber;\n startColumn = b.startColumn;\n } else if (b.startLineNumber === a.startLineNumber) {\n startLineNumber = b.startLineNumber;\n startColumn = Math.min(b.startColumn, a.startColumn);\n } else {\n startLineNumber = a.startLineNumber;\n startColumn = a.startColumn;\n }\n if (b.endLineNumber > a.endLineNumber) {\n endLineNumber = b.endLineNumber;\n endColumn = b.endColumn;\n } else if (b.endLineNumber === a.endLineNumber) {\n endLineNumber = b.endLineNumber;\n endColumn = Math.max(b.endColumn, a.endColumn);\n } else {\n endLineNumber = a.endLineNumber;\n endColumn = a.endColumn;\n }\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\n }\n /**\n * A intersection of the two ranges.\n */\n intersectRanges(range: Range) {\n return Range.intersectRanges(this, range);\n }\n /**\n * A intersection of the two ranges.\n */\n static intersectRanges(a: Range, b: Range) {\n let resultStartLineNumber = a.startLineNumber;\n let resultStartColumn = a.startColumn;\n let resultEndLineNumber = a.endLineNumber;\n let resultEndColumn = a.endColumn;\n const otherStartLineNumber = b.startLineNumber;\n const otherStartColumn = b.startColumn;\n const otherEndLineNumber = b.endLineNumber;\n const otherEndColumn = b.endColumn;\n if (resultStartLineNumber < otherStartLineNumber) {\n resultStartLineNumber = otherStartLineNumber;\n resultStartColumn = otherStartColumn;\n } else if (resultStartLineNumber === otherStartLineNumber) {\n resultStartColumn = Math.max(resultStartColumn, otherStartColumn);\n }\n if (resultEndLineNumber > otherEndLineNumber) {\n resultEndLineNumber = otherEndLineNumber;\n resultEndColumn = otherEndColumn;\n } else if (resultEndLineNumber === otherEndLineNumber) {\n resultEndColumn = Math.min(resultEndColumn, otherEndColumn);\n }\n // Check if selection is now empty\n if (resultStartLineNumber > resultEndLineNumber) {\n return null;\n }\n if (\n resultStartLineNumber === resultEndLineNumber &&\n resultStartColumn > resultEndColumn\n ) {\n return null;\n }\n return new Range(\n resultStartLineNumber,\n resultStartColumn,\n resultEndLineNumber,\n resultEndColumn,\n );\n }\n /**\n * Test if this range equals other.\n */\n equalsRange(other: Range) {\n return Range.equalsRange(this, other);\n }\n /**\n * Test if range `a` equals `b`.\n */\n static equalsRange(a: Range, b: Range) {\n if (!a && !b) {\n return true;\n }\n return (\n !!a &&\n !!b &&\n a.startLineNumber === b.startLineNumber &&\n a.startColumn === b.startColumn &&\n a.endLineNumber === b.endLineNumber &&\n a.endColumn === b.endColumn\n );\n }\n /**\n * Return the end position (which will be after or equal to the start position)\n */\n getEndPosition() {\n return Range.getEndPosition(this);\n }\n /**\n * Return the end position (which will be after or equal to the start position)\n */\n static getEndPosition(range: Range) {\n return new Position(range.endLineNumber, range.endColumn);\n }\n /**\n * Return the start position (which will be before or equal to the end position)\n */\n getStartPosition() {\n return Range.getStartPosition(this);\n }\n /**\n * Return the start position (which will be before or equal to the end position)\n */\n static getStartPosition(range: Range) {\n return new Position(range.startLineNumber, range.startColumn);\n }\n /**\n * Transform to a user presentable string representation.\n */\n toString() {\n return `[${this.startLineNumber},${this.startColumn} -> ${this.endLineNumber},${this.endColumn}]`;\n }\n /**\n * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.\n */\n setEndPosition(endLineNumber: number, endColumn: number) {\n return new Range(\n this.startLineNumber,\n this.startColumn,\n endLineNumber,\n endColumn,\n );\n }\n /**\n * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.\n */\n setStartPosition(startLineNumber: number, startColumn: number) {\n return new Range(\n startLineNumber,\n startColumn,\n this.endLineNumber,\n this.endColumn,\n );\n }\n /**\n * Create a new empty range using this range's start position.\n */\n collapseToStart() {\n return Range.collapseToStart(this);\n }\n /**\n * Create a new empty range using this range's start position.\n */\n static collapseToStart(range: Range) {\n return new Range(\n range.startLineNumber,\n range.startColumn,\n range.startLineNumber,\n range.startColumn,\n );\n }\n /**\n * Create a new empty range using this range's end position.\n */\n collapseToEnd() {\n return Range.collapseToEnd(this);\n }\n /**\n * Create a new empty range using this range's end position.\n */\n static collapseToEnd(range: Range) {\n return new Range(\n range.endLineNumber,\n range.endColumn,\n range.endLineNumber,\n range.endColumn,\n );\n }\n /**\n * Moves the range by the given amount of lines.\n */\n delta(lineCount: number) {\n return new Range(\n this.startLineNumber + lineCount,\n this.startColumn,\n this.endLineNumber + lineCount,\n this.endColumn,\n );\n }\n // ---\n static fromPositions(\n start: {\n lineNumber: number;\n column: number;\n },\n end = start,\n ) {\n return new Range(\n start.lineNumber,\n start.column,\n end.lineNumber,\n end.column,\n );\n }\n static lift(range: Range) {\n if (!range) {\n return null;\n }\n return new Range(\n range.startLineNumber,\n range.startColumn,\n range.endLineNumber,\n range.endColumn,\n );\n }\n /**\n * Test if `obj` is an `IRange`.\n */\n static isIRange(obj: Range) {\n return (\n obj &&\n typeof obj.startLineNumber === 'number' &&\n typeof obj.startColumn === 'number' &&\n typeof obj.endLineNumber === 'number' &&\n typeof obj.endColumn === 'number'\n );\n }\n /**\n * Test if the two ranges are touching in any way.\n */\n static areIntersectingOrTouching(a: Range, b: Range) {\n // Check if `a` is before `b`\n if (\n a.endLineNumber < b.startLineNumber ||\n (a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn)\n ) {\n return false;\n }\n // Check if `b` is before `a`\n if (\n b.endLineNumber < a.startLineNumber ||\n (b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn)\n ) {\n return false;\n }\n // These ranges must intersect\n return true;\n }\n /**\n * Test if the two ranges are intersecting. If the ranges are touching it returns true.\n */\n static areIntersecting(a: Range, b: Range) {\n // Check if `a` is before `b`\n if (\n a.endLineNumber < b.startLineNumber ||\n (a.endLineNumber === b.startLineNumber && a.endColumn <= b.startColumn)\n ) {\n return false;\n }\n // Check if `b` is before `a`\n if (\n b.endLineNumber < a.startLineNumber ||\n (b.endLineNumber === a.startLineNumber && b.endColumn <= a.startColumn)\n ) {\n return false;\n }\n // These ranges must intersect\n return true;\n }\n /**\n * A function that compares ranges, useful for sorting ranges\n * It will first compare ranges on the startPosition and then on the endPosition\n */\n static compareRangesUsingStarts(a: Range, b: Range) {\n if (a && b) {\n const aStartLineNumber = a.startLineNumber | 0;\n const bStartLineNumber = b.startLineNumber | 0;\n if (aStartLineNumber === bStartLineNumber) {\n const aStartColumn = a.startColumn | 0;\n const bStartColumn = b.startColumn | 0;\n if (aStartColumn === bStartColumn) {\n const aEndLineNumber = a.endLineNumber | 0;\n const bEndLineNumber = b.endLineNumber | 0;\n if (aEndLineNumber === bEndLineNumber) {\n const aEndColumn = a.endColumn | 0;\n const bEndColumn = b.endColumn | 0;\n return aEndColumn - bEndColumn;\n }\n return aEndLineNumber - bEndLineNumber;\n }\n return aStartColumn - bStartColumn;\n }\n return aStartLineNumber - bStartLineNumber;\n }\n const aExists = a ? 1 : 0;\n const bExists = b ? 1 : 0;\n return aExists - bExists;\n }\n /**\n * A function that compares ranges, useful for sorting ranges\n * It will first compare ranges on the endPosition and then on the startPosition\n */\n static compareRangesUsingEnds(\n a: {\n endLineNumber: number;\n endColumn: number;\n startLineNumber: number;\n startColumn: number;\n },\n b: {\n endLineNumber: number;\n endColumn: number;\n startLineNumber: number;\n startColumn: number;\n },\n ) {\n if (a.endLineNumber === b.endLineNumber) {\n if (a.endColumn === b.endColumn) {\n if (a.startLineNumber === b.startLineNumber) {\n return a.startColumn - b.startColumn;\n }\n return a.startLineNumber - b.startLineNumber;\n }\n return a.endColumn - b.endColumn;\n }\n return a.endLineNumber - b.endLineNumber;\n }\n /**\n * Test if the range spans multiple lines.\n */\n static spansMultipleLines(range: Range) {\n return range.endLineNumber > range.startLineNumber;\n }\n toJSON() {\n return this;\n }\n}\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * A position in the editor.\n */\nexport class Position {\n lineNumber: number;\n column: number;\n\n constructor(lineNumber: number, column: number) {\n this.lineNumber = lineNumber;\n this.column = column;\n }\n /**\n * Create a new position from this position.\n *\n * @param newLineNumber new line number\n * @param newColumn new column\n */\n with(newLineNumber = this.lineNumber, newColumn = this.column) {\n if (newLineNumber === this.lineNumber && newColumn === this.column) {\n return this;\n }\n return new Position(newLineNumber, newColumn);\n }\n /**\n * Derive a new position from this position.\n *\n * @param deltaLineNumber line number delta\n * @param deltaColumn column delta\n */\n delta(deltaLineNumber = 0, deltaColumn = 0) {\n return this.with(\n this.lineNumber + deltaLineNumber,\n this.column + deltaColumn,\n );\n }\n /**\n * Test if this position equals other position\n */\n equals(other: any) {\n return Position.equals(this, other);\n }\n /**\n * Test if position `a` equals position `b`\n */\n static equals(\n a: any,\n b: {\n lineNumber: any;\n column: any;\n },\n ) {\n if (!a && !b) {\n return true;\n }\n return !!a && !!b && a.lineNumber === b.lineNumber && a.column === b.column;\n }\n /**\n * Test if this position is before other position.\n * If the two positions are equal, the result will be false.\n */\n isBefore(other: any) {\n return Position.isBefore(this, other);\n }\n /**\n * Test if position `a` is before position `b`.\n * If the two positions are equal, the result will be false.\n */\n static isBefore(\n a: any,\n b: {\n lineNumber: number;\n column: number;\n },\n ) {\n if (a.lineNumber < b.lineNumber) {\n return true;\n }\n if (b.lineNumber < a.lineNumber) {\n return false;\n }\n return a.column < b.column;\n }\n /**\n * Test if this position is before other position.\n * If the two positions are equal, the result will be true.\n */\n isBeforeOrEqual(other: any) {\n return Position.isBeforeOrEqual(this, other);\n }\n /**\n * Test if position `a` is before position `b`.\n * If the two positions are equal, the result will be true.\n */\n static isBeforeOrEqual(\n a: any,\n b: {\n lineNumber: number;\n column: number;\n },\n ) {\n if (a.lineNumber < b.lineNumber) {\n return true;\n }\n if (b.lineNumber < a.lineNumber) {\n return false;\n }\n return a.column <= b.column;\n }\n /**\n * A function that compares positions, useful for sorting\n */\n static compare(\n a: {\n lineNumber: number;\n column: number;\n },\n b: {\n lineNumber: number;\n column: number;\n },\n ) {\n const aLineNumber = a.lineNumber | 0;\n const bLineNumber = b.lineNumber | 0;\n if (aLineNumber === bLineNumber) {\n const aColumn = a.column | 0;\n const bColumn = b.column | 0;\n return aColumn - bColumn;\n }\n return aLineNumber - bLineNumber;\n }\n /**\n * Clone this position.\n */\n clone() {\n return new Position(this.lineNumber, this.column);\n }\n /**\n * Convert to a human-readable representation.\n */\n toString() {\n return `(${this.lineNumber},${this.column})`;\n }\n // ---\n /**\n * Create a `Position` from an `IPosition`.\n */\n static lift(pos: { lineNumber: any; column: any }) {\n return new Position(pos.lineNumber, pos.column);\n }\n /**\n * Test if `obj` is an `IPosition`.\n */\n static isIPosition(obj: { lineNumber: any; column: any }) {\n return (\n obj &&\n typeof obj.lineNumber === 'number' &&\n typeof obj.column === 'number'\n );\n }\n toJSON() {\n return {\n lineNumber: this.lineNumber,\n column: this.column,\n };\n }\n}\n"],"names":["Range","range","position","otherRange","a","b","startLineNumber","startColumn","endLineNumber","endColumn","Math","resultStartLineNumber","resultStartColumn","resultEndLineNumber","resultEndColumn","otherStartLineNumber","otherStartColumn","otherEndLineNumber","otherEndColumn","other","Position","lineCount","start","end","obj","aStartLineNumber","bStartLineNumber","aStartColumn","bStartColumn","aEndLineNumber","bEndLineNumber","aEndColumn","bEndColumn","aExists","bExists","newLineNumber","newColumn","deltaLineNumber","deltaColumn","aLineNumber","bLineNumber","aColumn","bColumn","pos","lineNumber","column"],"mappings":"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"}
@@ -12,10 +12,9 @@ export type DataNode = FieldDataNode<{
12
12
  export declare const rootDirname: (file: string, sep?: string) => string | null;
13
13
  export declare function mapFileKey(arr: DataNode[], depth?: number, filter?: (node: DataNode) => boolean): DataNode['key'][];
14
14
  export declare function flattenDirectory(n: DataNode, parent: DataNode, sep: string | undefined, inlinedResourcePathKey: keyof DataNode, dirTitle?: (_dir: DataNode, defaultTitle: string) => JSX.Element | string): void;
15
- export declare function createFileStructures({ files, sep, inlinedResourcePathKey, fileTitle, dirTitle, page, }: {
15
+ export declare function createFileStructures({ files, inlinedResourcePathKey, fileTitle, dirTitle, page, }: {
16
16
  files: string[];
17
17
  cwd?: string;
18
- sep?: string;
19
18
  inlinedResourcePathKey?: keyof DataNode;
20
19
  dirTitle?(dir: DataNode, defaultTitle: string): JSX.Element | string;
21
20
  fileTitle?(file: string, basename: string): JSX.Element | string;
@@ -6,7 +6,7 @@ import { getFileCom } from "../components/FileTree/index.mjs";
6
6
  const rootDirname = (file, sep = '/')=>{
7
7
  const idx = file?.indexOf(sep);
8
8
  if (-1 === idx) return null;
9
- if (0 === idx) return sep + (rootDirname(file?.slice(1)) || '');
9
+ if (0 === idx) return sep + (rootDirname(file?.slice(1), sep) || '');
10
10
  return file?.slice(0, idx);
11
11
  };
12
12
  function mapFileKey(arr, depth = 2, filter = ()=>true) {
@@ -49,10 +49,12 @@ function flattenDirectory(n, parent, sep = '/', inlinedResourcePathKey, dirTitle
49
49
  });
50
50
  }
51
51
  }
52
- function createFileStructures({ files, sep = '/', inlinedResourcePathKey = '__RESOURCEPATH__', fileTitle = (_file, basename)=>basename, dirTitle = (_dir, defaultTitle)=>defaultTitle, page = 'other' }) {
53
- const sepRegexp = new RegExp(sep);
54
- const res = files.reduce((t, file)=>{
55
- let dir = rootDirname(file, sep);
52
+ function createFileStructures({ files, inlinedResourcePathKey = '__RESOURCEPATH__', fileTitle = (_file, basename)=>basename, dirTitle = (_dir, defaultTitle)=>defaultTitle, page = 'other' }) {
53
+ const normalizedFiles = files.map((file)=>file.replace(/\\/g, '/'));
54
+ const internalSep = '/';
55
+ const sepRegexp = new RegExp(internalSep);
56
+ const res = normalizedFiles.reduce((t, file)=>{
57
+ let dir = rootDirname(file, internalSep);
56
58
  let basename = dir ? file?.slice(dir.length + 1) : file;
57
59
  let parent = t;
58
60
  while(dir){
@@ -61,7 +63,7 @@ function createFileStructures({ files, sep = '/', inlinedResourcePathKey = '__RE
61
63
  const p = [
62
64
  parent[inlinedResourcePathKey],
63
65
  dir
64
- ].filter(Boolean).join(sep);
66
+ ].filter(Boolean).join(internalSep);
65
67
  exist = {
66
68
  title: dir,
67
69
  icon: 'bundle' === page ? (props)=>getFileIcon(props, false) : null,
@@ -73,7 +75,7 @@ function createFileStructures({ files, sep = '/', inlinedResourcePathKey = '__RE
73
75
  parent.children.push(exist);
74
76
  }
75
77
  parent = exist;
76
- dir = rootDirname(basename);
78
+ dir = rootDirname(basename, internalSep);
77
79
  basename = dir ? basename.slice(dir.length).replace(sepRegexp, '') : basename;
78
80
  }
79
81
  if (parent.children.some((e)=>get(e, inlinedResourcePathKey) === file)) return t;
@@ -93,7 +95,7 @@ function createFileStructures({ files, sep = '/', inlinedResourcePathKey = '__RE
93
95
  children: []
94
96
  }).children;
95
97
  res.forEach((e)=>{
96
- e.children && e.children.forEach((item)=>flattenDirectory(item, e, sep, inlinedResourcePathKey, dirTitle));
98
+ e.children && e.children.forEach((item)=>flattenDirectory(item, e, internalSep, inlinedResourcePathKey, dirTitle));
97
99
  });
98
100
  return res;
99
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils/file.mjs","sources":["../../src/utils/file.tsx"],"sourcesContent":["import { get } from 'es-toolkit/compat';\nimport { Common, SDK } from '@rsdoctor/types';\nimport { message, Space, TreeNodeProps, UploadFile } from 'antd';\nimport { FieldDataNode } from 'rc-tree';\nimport {\n FolderOpenTwoTone,\n FolderTwoTone,\n FileOutlined,\n RightOutlined,\n} from '@ant-design/icons';\nimport { getFileCom } from 'src/components/FileTree';\n\nexport type DataNode = FieldDataNode<{\n key: string | number;\n title?: React.ReactNode | ((data: DataNode) => React.ReactNode);\n}> & { __BASENAME__?: any; __RESOURCEPATH__?: any; children?: DataNode[] };\n\nexport const rootDirname = (file: string, sep = '/'): string | null => {\n const idx = file?.indexOf(sep);\n if (idx === -1) {\n return null;\n }\n if (idx === 0) {\n return sep + (rootDirname(file?.slice(1)) || '');\n }\n return file?.slice(0, idx);\n};\n\nexport function mapFileKey(\n arr: DataNode[],\n depth = 2,\n filter: (node: DataNode) => boolean = () => true,\n): DataNode['key'][] {\n let d = 0;\n const res: DataNode['key'][] = [];\n let parent: DataNode[] = arr;\n while (d < depth) {\n parent.filter(filter).forEach((e) => {\n if (!e.isLeaf) {\n res.push(e.key);\n }\n });\n parent = parent.reduce<DataNode[]>(\n (t, e) => t.concat(e.children || []),\n [],\n );\n if (!parent.length) break;\n d++;\n }\n return res;\n}\n\nconst basenameKey = '__BASENAME__';\n\nexport function flattenDirectory(\n n: DataNode,\n parent: DataNode,\n sep = '/',\n inlinedResourcePathKey: keyof DataNode,\n dirTitle = (_dir: DataNode, defaultTitle: string): JSX.Element | string =>\n defaultTitle,\n) {\n if (n.isLeaf) return;\n if (parent.children && parent.children.length === 1) {\n const defaultTitle = [parent[basenameKey], n[basenameKey]].join(sep);\n parent[inlinedResourcePathKey] = n[inlinedResourcePathKey];\n parent[basenameKey] = defaultTitle;\n parent.key = [parent.key, n.key].join('-');\n parent.children = n.children;\n parent.title = dirTitle(parent, defaultTitle);\n\n n.children &&\n n.children.forEach((c) => {\n flattenDirectory(c, parent, sep, inlinedResourcePathKey, dirTitle);\n });\n } else {\n // parent has more than 1 child.\n n.title = dirTitle(n, n[basenameKey]);\n\n n.children &&\n n.children.forEach((c) => {\n flattenDirectory(c, n, sep, inlinedResourcePathKey, dirTitle);\n });\n }\n}\n\nexport function createFileStructures({\n files,\n sep = '/',\n inlinedResourcePathKey = '__RESOURCEPATH__',\n fileTitle = (_file: string, basename: string) => basename,\n dirTitle = (_dir: DataNode, defaultTitle: string) => defaultTitle,\n page = 'other',\n}: {\n files: string[];\n cwd?: string;\n sep?: string;\n inlinedResourcePathKey?: keyof DataNode;\n dirTitle?(dir: DataNode, defaultTitle: string): JSX.Element | string;\n fileTitle?(file: string, basename: string): JSX.Element | string;\n page?: 'bundle' | 'other';\n}): DataNode[] {\n const sepRegexp = new RegExp(sep);\n\n const res = files.reduce<DataNode>(\n (t, file) => {\n let dir = rootDirname(file, sep);\n let basename = dir ? file?.slice(dir.length + 1) : file;\n let parent: DataNode = t;\n\n while (dir) {\n // find the match directory.\n let exist = parent.children!.find((e) => e.title === dir) as DataNode;\n if (!exist) {\n const p = [parent[inlinedResourcePathKey], dir]\n .filter(Boolean)\n .join(sep);\n exist = {\n title: dir,\n icon:\n page === 'bundle'\n ? (props) => getFileIcon(props as TreeNodeProps, false)\n : null,\n // key: [parent.key, parent.children!.length].join('-'),\n key: p,\n children: [],\n [inlinedResourcePathKey]: p,\n [basenameKey]: dir,\n };\n parent.children!.push(exist);\n }\n\n parent = exist;\n dir = rootDirname(basename);\n basename = dir\n ? basename.slice(dir.length).replace(sepRegexp, '')\n : basename;\n }\n\n // uniq\n if (parent.children!.some((e) => get(e, inlinedResourcePathKey) === file))\n return t;\n\n parent.children!.push({\n title() {\n return fileTitle(file, basename);\n },\n icon:\n page === 'bundle'\n ? (props) => getFileIcon(props as TreeNodeProps)\n : null,\n key: file,\n isLeaf: true,\n [inlinedResourcePathKey]: file,\n [basenameKey]: basename,\n });\n\n return t;\n },\n { key: '0', children: [] },\n ).children!;\n\n res.forEach((e) => {\n e.children &&\n e.children.forEach((item) =>\n flattenDirectory(item, e, sep, inlinedResourcePathKey, dirTitle),\n );\n });\n\n return res;\n}\n\nexport function beautifyPath(path: string, cwd: string) {\n if (path.startsWith(cwd)) {\n return path.replace(cwd, '.');\n }\n\n return path;\n}\n\nexport function readJSONByFileReader<T extends Common.PlainObject>(\n file: UploadFile,\n): Promise<T>;\nexport function readJSONByFileReader<T extends Common.PlainObject>(\n file: Blob,\n): Promise<T>;\nexport function readJSONByFileReader<T extends Common.PlainObject>(\n file: unknown,\n): Promise<T> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n const { result } = reader;\n console.log('reader result: ', result);\n try {\n const json = JSON.parse(result!.toString());\n resolve(json);\n } catch (err) {\n message.error('json parse error');\n reject(err);\n }\n };\n reader.onerror = () => {\n const msg = 'upload json file error, please try again.';\n message.error(msg);\n reject(new Error(msg));\n };\n reader.readAsText(((file as UploadFile).originFileObj || file) as Blob);\n });\n}\n\n/**\n * beautify module path, will replace cwd & last 'node_modules'\n */\nexport function beautifyModulePath(modulePath: string, cwd: string) {\n const res = beautifyPath(modulePath, cwd);\n\n const str = '/node_modules/';\n\n const idx = res.lastIndexOf(str);\n\n if (idx > -1) {\n return {\n alias: res.slice(idx + str.length),\n inNodeModules: true,\n };\n }\n\n return {\n alias: res,\n inNodeModules: false,\n };\n}\n\nexport function getFileIcon(props: TreeNodeProps, addRowIcon = true) {\n const { data } = props;\n const expanded = props.expanded;\n if (data?.children) {\n return (\n <Space>\n {addRowIcon ? (\n <RightOutlined\n className={`file-tree-switcher-arrow ${expanded ? 'file-tree-switcher-arrow-expand' : ''}`}\n />\n ) : (\n <></>\n )}\n {expanded ? <FolderOpenTwoTone /> : <FolderTwoTone />}\n </Space>\n );\n }\n if (props.eventKey && typeof props.eventKey === 'string') {\n return getFileCom(props.eventKey);\n }\n return <FileOutlined />;\n}\n\ntype TreeNode = {\n name: string;\n value?: number;\n children?: TreeNode[];\n path?: string;\n sourceSize?: number;\n bundledSize?: number;\n gzipSize?: number;\n id?: string | number;\n // Internal helper, not exported\n _map?: Map<string, TreeNode>;\n};\n\nexport function buildTreemapData(\n modules: SDK.ModuleData[],\n rootName = 'dist',\n): TreeNode {\n const root: TreeNode = { name: rootName, children: [], _map: new Map() };\n\n for (const mod of modules) {\n const parts = mod.path.split(/[\\\\/]/).filter(Boolean);\n let current = root;\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (i === parts.length - 1) {\n // File node\n if (!current.children) current.children = [];\n current.children.push({\n name: part,\n path: mod.path,\n sourceSize: mod.size?.sourceSize ?? 0,\n bundledSize: mod.size?.parsedSize ?? 0,\n gzipSize: mod.size?.gzipSize ?? 0,\n id: mod.id,\n });\n } else {\n // Directory node\n if (!current._map) current._map = new Map();\n let child = current._map.get(part);\n if (!child) {\n child = { name: part, children: [], _map: new Map() };\n current.children!.push(child);\n current._map.set(part, child);\n }\n current = child;\n }\n }\n }\n\n // Clean up _map property\n function clean(node: TreeNode) {\n delete node._map;\n if (node.children) node.children.forEach(clean);\n }\n clean(root);\n\n return root;\n}\n\nfunction flattenSingleChildDirs(node: TreeNode): TreeNode {\n // Return directly if leaf node\n if (!node.children || node.children.length === 0) return node;\n\n let current = node;\n // As long as children has only one child and it's not a leaf, merge\n while (\n current.children &&\n current.children.length === 1 &&\n !current.children[0].sourceSize // Not a leaf\n ) {\n current = {\n name: current.name + '/' + current.children[0].name,\n children: current.children[0].children,\n };\n }\n\n // Recursively process all child nodes\n if (current.children) {\n current.children = current.children.map(flattenSingleChildDirs);\n }\n return current;\n}\n\nfunction sumDirValue(node: TreeNode): {\n sourceSize: number;\n bundledSize: number;\n gzipSize: number;\n} {\n if (!node.children || node.children.length === 0) {\n // Leaf node, just return value\n return {\n sourceSize: node.sourceSize ?? 0,\n bundledSize: node.bundledSize ?? 0,\n gzipSize: node.gzipSize ?? 0,\n };\n }\n // Recursively sum all child nodes\n let sourceSum = 0;\n let bundledSum = 0;\n let gzipSum = 0;\n for (const child of node.children) {\n const { sourceSize, bundledSize, gzipSize } = sumDirValue(child);\n sourceSum += sourceSize;\n bundledSum += bundledSize;\n gzipSum += gzipSize;\n }\n node.sourceSize = sourceSum;\n node.bundledSize = bundledSum;\n node.gzipSize = gzipSum;\n return { sourceSize: sourceSum, bundledSize: bundledSum, gzipSize: gzipSum };\n}\n\nexport function flattenTreemapData(\n modules: SDK.ModuleData[],\n rootName = 'dist',\n): TreeNode {\n const rawTree = buildTreemapData(modules, rootName);\n const flattenedTree = flattenSingleChildDirs(rawTree);\n sumDirValue(flattenedTree); // Recursive sum\n return flattenedTree;\n}\n"],"names":["rootDirname","file","sep","idx","mapFileKey","arr","depth","filter","d","res","parent","e","t","basenameKey","flattenDirectory","n","inlinedResourcePathKey","dirTitle","_dir","defaultTitle","c","createFileStructures","files","fileTitle","_file","basename","page","sepRegexp","RegExp","dir","exist","p","Boolean","props","getFileIcon","get","item","beautifyPath","path","cwd","readJSONByFileReader","Promise","resolve","reject","reader","FileReader","result","console","json","JSON","err","message","msg","Error","beautifyModulePath","modulePath","str","addRowIcon","data","expanded","Space","RightOutlined","FolderOpenTwoTone","FolderTwoTone","getFileCom","FileOutlined","buildTreemapData","modules","rootName","root","Map","mod","parts","current","i","part","child","clean","node","flattenSingleChildDirs","sumDirValue","sourceSum","bundledSum","gzipSum","sourceSize","bundledSize","gzipSize","flattenTreemapData","rawTree","flattenedTree"],"mappings":"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"}
1
+ {"version":3,"file":"utils/file.mjs","sources":["../../src/utils/file.tsx"],"sourcesContent":["import { get } from 'es-toolkit/compat';\nimport { Common, SDK } from '@rsdoctor/types';\nimport { message, Space, TreeNodeProps, UploadFile } from 'antd';\nimport { FieldDataNode } from 'rc-tree';\nimport {\n FolderOpenTwoTone,\n FolderTwoTone,\n FileOutlined,\n RightOutlined,\n} from '@ant-design/icons';\nimport { getFileCom } from 'src/components/FileTree';\n\nexport type DataNode = FieldDataNode<{\n key: string | number;\n title?: React.ReactNode | ((data: DataNode) => React.ReactNode);\n}> & { __BASENAME__?: any; __RESOURCEPATH__?: any; children?: DataNode[] };\n\nexport const rootDirname = (file: string, sep = '/'): string | null => {\n const idx = file?.indexOf(sep);\n if (idx === -1) {\n return null;\n }\n if (idx === 0) {\n return sep + (rootDirname(file?.slice(1), sep) || '');\n }\n return file?.slice(0, idx);\n};\n\nexport function mapFileKey(\n arr: DataNode[],\n depth = 2,\n filter: (node: DataNode) => boolean = () => true,\n): DataNode['key'][] {\n let d = 0;\n const res: DataNode['key'][] = [];\n let parent: DataNode[] = arr;\n while (d < depth) {\n parent.filter(filter).forEach((e) => {\n if (!e.isLeaf) {\n res.push(e.key);\n }\n });\n parent = parent.reduce<DataNode[]>(\n (t, e) => t.concat(e.children || []),\n [],\n );\n if (!parent.length) break;\n d++;\n }\n return res;\n}\n\nconst basenameKey = '__BASENAME__';\n\nexport function flattenDirectory(\n n: DataNode,\n parent: DataNode,\n sep = '/',\n inlinedResourcePathKey: keyof DataNode,\n dirTitle = (_dir: DataNode, defaultTitle: string): JSX.Element | string =>\n defaultTitle,\n) {\n if (n.isLeaf) return;\n if (parent.children && parent.children.length === 1) {\n const defaultTitle = [parent[basenameKey], n[basenameKey]].join(sep);\n parent[inlinedResourcePathKey] = n[inlinedResourcePathKey];\n parent[basenameKey] = defaultTitle;\n parent.key = [parent.key, n.key].join('-');\n parent.children = n.children;\n parent.title = dirTitle(parent, defaultTitle);\n\n n.children &&\n n.children.forEach((c) => {\n flattenDirectory(c, parent, sep, inlinedResourcePathKey, dirTitle);\n });\n } else {\n // parent has more than 1 child.\n n.title = dirTitle(n, n[basenameKey]);\n\n n.children &&\n n.children.forEach((c) => {\n flattenDirectory(c, n, sep, inlinedResourcePathKey, dirTitle);\n });\n }\n}\n\nexport function createFileStructures({\n files,\n inlinedResourcePathKey = '__RESOURCEPATH__',\n fileTitle = (_file: string, basename: string) => basename,\n dirTitle = (_dir: DataNode, defaultTitle: string) => defaultTitle,\n page = 'other',\n}: {\n files: string[];\n cwd?: string;\n inlinedResourcePathKey?: keyof DataNode;\n dirTitle?(dir: DataNode, defaultTitle: string): JSX.Element | string;\n fileTitle?(file: string, basename: string): JSX.Element | string;\n page?: 'bundle' | 'other';\n}): DataNode[] {\n // Normalize all paths to use forward slash as internal separator for consistency\n // This ensures Windows paths (using backslash) are properly converted to forward slashes\n const normalizedFiles = files.map((file) => {\n // Always convert backslashes to forward slashes for internal processing\n return file.replace(/\\\\/g, '/');\n });\n\n // Use forward slash as the internal separator for consistency\n const internalSep = '/';\n const sepRegexp = new RegExp(internalSep);\n\n const res = normalizedFiles.reduce<DataNode>(\n (t, file) => {\n let dir = rootDirname(file, internalSep);\n let basename = dir ? file?.slice(dir.length + 1) : file;\n let parent: DataNode = t;\n\n while (dir) {\n // find the match directory.\n let exist = parent.children!.find((e) => e.title === dir) as DataNode;\n if (!exist) {\n const p = [parent[inlinedResourcePathKey], dir]\n .filter(Boolean)\n .join(internalSep);\n exist = {\n title: dir,\n icon:\n page === 'bundle'\n ? (props) => getFileIcon(props as TreeNodeProps, false)\n : null,\n // key: [parent.key, parent.children!.length].join('-'),\n key: p,\n children: [],\n [inlinedResourcePathKey]: p,\n [basenameKey]: dir,\n };\n parent.children!.push(exist);\n }\n\n parent = exist;\n dir = rootDirname(basename, internalSep);\n basename = dir\n ? basename.slice(dir.length).replace(sepRegexp, '')\n : basename;\n }\n\n // uniq\n if (parent.children!.some((e) => get(e, inlinedResourcePathKey) === file))\n return t;\n\n parent.children!.push({\n title() {\n return fileTitle(file, basename);\n },\n icon:\n page === 'bundle'\n ? (props) => getFileIcon(props as TreeNodeProps)\n : null,\n key: file,\n isLeaf: true,\n [inlinedResourcePathKey]: file,\n [basenameKey]: basename,\n });\n\n return t;\n },\n { key: '0', children: [] },\n ).children!;\n\n res.forEach((e) => {\n e.children &&\n e.children.forEach((item) =>\n flattenDirectory(\n item,\n e,\n internalSep,\n inlinedResourcePathKey,\n dirTitle,\n ),\n );\n });\n\n return res;\n}\n\nexport function beautifyPath(path: string, cwd: string) {\n if (path.startsWith(cwd)) {\n return path.replace(cwd, '.');\n }\n\n return path;\n}\n\nexport function readJSONByFileReader<T extends Common.PlainObject>(\n file: UploadFile,\n): Promise<T>;\nexport function readJSONByFileReader<T extends Common.PlainObject>(\n file: Blob,\n): Promise<T>;\nexport function readJSONByFileReader<T extends Common.PlainObject>(\n file: unknown,\n): Promise<T> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n const { result } = reader;\n console.log('reader result: ', result);\n try {\n const json = JSON.parse(result!.toString());\n resolve(json);\n } catch (err) {\n message.error('json parse error');\n reject(err);\n }\n };\n reader.onerror = () => {\n const msg = 'upload json file error, please try again.';\n message.error(msg);\n reject(new Error(msg));\n };\n reader.readAsText(((file as UploadFile).originFileObj || file) as Blob);\n });\n}\n\n/**\n * beautify module path, will replace cwd & last 'node_modules'\n */\nexport function beautifyModulePath(modulePath: string, cwd: string) {\n const res = beautifyPath(modulePath, cwd);\n\n const str = '/node_modules/';\n\n const idx = res.lastIndexOf(str);\n\n if (idx > -1) {\n return {\n alias: res.slice(idx + str.length),\n inNodeModules: true,\n };\n }\n\n return {\n alias: res,\n inNodeModules: false,\n };\n}\n\nexport function getFileIcon(props: TreeNodeProps, addRowIcon = true) {\n const { data } = props;\n const expanded = props.expanded;\n if (data?.children) {\n return (\n <Space>\n {addRowIcon ? (\n <RightOutlined\n className={`file-tree-switcher-arrow ${expanded ? 'file-tree-switcher-arrow-expand' : ''}`}\n />\n ) : (\n <></>\n )}\n {expanded ? <FolderOpenTwoTone /> : <FolderTwoTone />}\n </Space>\n );\n }\n if (props.eventKey && typeof props.eventKey === 'string') {\n return getFileCom(props.eventKey);\n }\n return <FileOutlined />;\n}\n\ntype TreeNode = {\n name: string;\n value?: number;\n children?: TreeNode[];\n path?: string;\n sourceSize?: number;\n bundledSize?: number;\n gzipSize?: number;\n id?: string | number;\n // Internal helper, not exported\n _map?: Map<string, TreeNode>;\n};\n\nexport function buildTreemapData(\n modules: SDK.ModuleData[],\n rootName = 'dist',\n): TreeNode {\n const root: TreeNode = { name: rootName, children: [], _map: new Map() };\n\n for (const mod of modules) {\n const parts = mod.path.split(/[\\\\/]/).filter(Boolean);\n let current = root;\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (i === parts.length - 1) {\n // File node\n if (!current.children) current.children = [];\n current.children.push({\n name: part,\n path: mod.path,\n sourceSize: mod.size?.sourceSize ?? 0,\n bundledSize: mod.size?.parsedSize ?? 0,\n gzipSize: mod.size?.gzipSize ?? 0,\n id: mod.id,\n });\n } else {\n // Directory node\n if (!current._map) current._map = new Map();\n let child = current._map.get(part);\n if (!child) {\n child = { name: part, children: [], _map: new Map() };\n current.children!.push(child);\n current._map.set(part, child);\n }\n current = child;\n }\n }\n }\n\n // Clean up _map property\n function clean(node: TreeNode) {\n delete node._map;\n if (node.children) node.children.forEach(clean);\n }\n clean(root);\n\n return root;\n}\n\nfunction flattenSingleChildDirs(node: TreeNode): TreeNode {\n // Return directly if leaf node\n if (!node.children || node.children.length === 0) return node;\n\n let current = node;\n // As long as children has only one child and it's not a leaf, merge\n while (\n current.children &&\n current.children.length === 1 &&\n !current.children[0].sourceSize // Not a leaf\n ) {\n current = {\n name: current.name + '/' + current.children[0].name,\n children: current.children[0].children,\n };\n }\n\n // Recursively process all child nodes\n if (current.children) {\n current.children = current.children.map(flattenSingleChildDirs);\n }\n return current;\n}\n\nfunction sumDirValue(node: TreeNode): {\n sourceSize: number;\n bundledSize: number;\n gzipSize: number;\n} {\n if (!node.children || node.children.length === 0) {\n // Leaf node, just return value\n return {\n sourceSize: node.sourceSize ?? 0,\n bundledSize: node.bundledSize ?? 0,\n gzipSize: node.gzipSize ?? 0,\n };\n }\n // Recursively sum all child nodes\n let sourceSum = 0;\n let bundledSum = 0;\n let gzipSum = 0;\n for (const child of node.children) {\n const { sourceSize, bundledSize, gzipSize } = sumDirValue(child);\n sourceSum += sourceSize;\n bundledSum += bundledSize;\n gzipSum += gzipSize;\n }\n node.sourceSize = sourceSum;\n node.bundledSize = bundledSum;\n node.gzipSize = gzipSum;\n return { sourceSize: sourceSum, bundledSize: bundledSum, gzipSize: gzipSum };\n}\n\nexport function flattenTreemapData(\n modules: SDK.ModuleData[],\n rootName = 'dist',\n): TreeNode {\n const rawTree = buildTreemapData(modules, rootName);\n const flattenedTree = flattenSingleChildDirs(rawTree);\n sumDirValue(flattenedTree); // Recursive sum\n return flattenedTree;\n}\n"],"names":["rootDirname","file","sep","idx","mapFileKey","arr","depth","filter","d","res","parent","e","t","basenameKey","flattenDirectory","n","inlinedResourcePathKey","dirTitle","_dir","defaultTitle","c","createFileStructures","files","fileTitle","_file","basename","page","normalizedFiles","internalSep","sepRegexp","RegExp","dir","exist","p","Boolean","props","getFileIcon","get","item","beautifyPath","path","cwd","readJSONByFileReader","Promise","resolve","reject","reader","FileReader","result","console","json","JSON","err","message","msg","Error","beautifyModulePath","modulePath","str","addRowIcon","data","expanded","Space","RightOutlined","FolderOpenTwoTone","FolderTwoTone","getFileCom","FileOutlined","buildTreemapData","modules","rootName","root","Map","mod","parts","current","i","part","child","clean","node","flattenSingleChildDirs","sumDirValue","sourceSum","bundledSum","gzipSum","sourceSize","bundledSize","gzipSize","flattenTreemapData","rawTree","flattenedTree"],"mappings":"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"}
@@ -23,7 +23,7 @@ function getSocket(socketPort) {
23
23
  return socket;
24
24
  }
25
25
  function formatURL({ port, protocol, hostname }) {
26
- if ('undefined' != typeof URL) {
26
+ if ("u" > typeof URL) {
27
27
  const url = new URL('http://localhost');
28
28
  url.port = String(port);
29
29
  url.hostname = hostname;
@@ -1 +1 @@
1
- {"version":3,"file":"utils/socket.mjs","sources":["../../src/utils/socket.ts"],"sourcesContent":["/* eslint-disable no-restricted-globals */\nimport { io, Socket } from 'socket.io-client';\n\nconst map = new Map<string, Socket>();\nconst socketProtocol = location.protocol.includes('https') ? 'wss' : 'ws';\nconst defaultSocketUrl =\n process.env.NODE_ENV === 'development'\n ? `${socketProtocol}://${location.hostname}:${process.env.LOCAL_CLI_PORT}`\n : `${socketProtocol}://${location.host}`;\n\nconst ipv4Pattern =\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\nfunction ensureSocket(socketUrl: string = defaultSocketUrl) {\n if (!map.has(socketUrl)) {\n const socket = io(socketUrl, {});\n socket.on('connect', () => {\n console.log(`Socket Connect ${socketUrl}`);\n });\n map.set(socketUrl, socket);\n }\n return map.get(socketUrl)!;\n}\n\nexport function getSocket(socketPort?: string): Socket {\n const socketUrl = formatURL({\n port: socketPort,\n hostname: location.hostname,\n protocol: location.protocol,\n });\n const socket = ensureSocket(socketPort ? socketUrl : defaultSocketUrl);\n return socket;\n}\n\nexport function formatURL({\n port,\n protocol,\n hostname,\n}: {\n port?: string;\n protocol: string;\n hostname: string;\n}) {\n if (typeof URL !== 'undefined') {\n const url = new URL('http://localhost');\n url.port = String(port);\n url.hostname = hostname;\n url.protocol = location.protocol.includes('https') ? 'wss' : 'ws';\n return ipv4Pattern.test(hostname) || hostname.includes('localhost')\n ? url.toString()\n : `${protocol}//${hostname}`;\n }\n\n // compatible with IE11\n const colon = protocol.indexOf(':') === -1 ? ':' : '';\n return `${protocol}${colon}//${hostname}:${port}`;\n}\n"],"names":["map","Map","socketProtocol","location","defaultSocketUrl","process","ipv4Pattern","ensureSocket","socketUrl","socket","io","console","getSocket","socketPort","formatURL","port","protocol","hostname","URL","url","String","colon"],"mappings":";AAGA,MAAMA,MAAM,IAAIC;AAChB,MAAMC,iBAAiBC,SAAS,QAAQ,CAAC,QAAQ,CAAC,WAAW,QAAQ;AACrE,MAAMC,mBACJC,AAAyB,kBAAzBA,QAAQ,GAAG,CAAC,QAAQ,GAChB,GAAGH,eAAe,GAAG,EAAEC,SAAS,QAAQ,CAAC,CAAC,EAAEE,QAAQ,GAAG,CAAC,cAAc,EAAE,GACxE,GAAGH,eAAe,GAAG,EAAEC,SAAS,IAAI,EAAE;AAE5C,MAAMG,cACJ;AAEF,SAASC,aAAaC,YAAoBJ,gBAAgB;IACxD,IAAI,CAACJ,IAAI,GAAG,CAACQ,YAAY;QACvB,MAAMC,SAASC,GAAGF,WAAW,CAAC;QAC9BC,OAAO,EAAE,CAAC,WAAW;YACnBE,QAAQ,GAAG,CAAC,CAAC,eAAe,EAAEH,WAAW;QAC3C;QACAR,IAAI,GAAG,CAACQ,WAAWC;IACrB;IACA,OAAOT,IAAI,GAAG,CAACQ;AACjB;AAEO,SAASI,UAAUC,UAAmB;IAC3C,MAAML,YAAYM,UAAU;QAC1B,MAAMD;QACN,UAAUV,SAAS,QAAQ;QAC3B,UAAUA,SAAS,QAAQ;IAC7B;IACA,MAAMM,SAASF,aAAaM,aAAaL,YAAYJ;IACrD,OAAOK;AACT;AAEO,SAASK,UAAU,EACxBC,IAAI,EACJC,QAAQ,EACRC,QAAQ,EAKT;IACC,IAAI,AAAe,eAAf,OAAOC,KAAqB;QAC9B,MAAMC,MAAM,IAAID,IAAI;QACpBC,IAAI,IAAI,GAAGC,OAAOL;QAClBI,IAAI,QAAQ,GAAGF;QACfE,IAAI,QAAQ,GAAGhB,SAAS,QAAQ,CAAC,QAAQ,CAAC,WAAW,QAAQ;QAC7D,OAAOG,YAAY,IAAI,CAACW,aAAaA,SAAS,QAAQ,CAAC,eACnDE,IAAI,QAAQ,KACZ,GAAGH,SAAS,EAAE,EAAEC,UAAU;IAChC;IAGA,MAAMI,QAAQL,AAA0B,OAA1BA,SAAS,OAAO,CAAC,OAAc,MAAM;IACnD,OAAO,GAAGA,WAAWK,MAAM,EAAE,EAAEJ,SAAS,CAAC,EAAEF,MAAM;AACnD"}
1
+ {"version":3,"file":"utils/socket.mjs","sources":["../../src/utils/socket.ts"],"sourcesContent":["/* eslint-disable no-restricted-globals */\nimport { io, Socket } from 'socket.io-client';\n\nconst map = new Map<string, Socket>();\nconst socketProtocol = location.protocol.includes('https') ? 'wss' : 'ws';\nconst defaultSocketUrl =\n process.env.NODE_ENV === 'development'\n ? `${socketProtocol}://${location.hostname}:${process.env.LOCAL_CLI_PORT}`\n : `${socketProtocol}://${location.host}`;\n\nconst ipv4Pattern =\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\nfunction ensureSocket(socketUrl: string = defaultSocketUrl) {\n if (!map.has(socketUrl)) {\n const socket = io(socketUrl, {});\n socket.on('connect', () => {\n console.log(`Socket Connect ${socketUrl}`);\n });\n map.set(socketUrl, socket);\n }\n return map.get(socketUrl)!;\n}\n\nexport function getSocket(socketPort?: string): Socket {\n const socketUrl = formatURL({\n port: socketPort,\n hostname: location.hostname,\n protocol: location.protocol,\n });\n const socket = ensureSocket(socketPort ? socketUrl : defaultSocketUrl);\n return socket;\n}\n\nexport function formatURL({\n port,\n protocol,\n hostname,\n}: {\n port?: string;\n protocol: string;\n hostname: string;\n}) {\n if (typeof URL !== 'undefined') {\n const url = new URL('http://localhost');\n url.port = String(port);\n url.hostname = hostname;\n url.protocol = location.protocol.includes('https') ? 'wss' : 'ws';\n return ipv4Pattern.test(hostname) || hostname.includes('localhost')\n ? url.toString()\n : `${protocol}//${hostname}`;\n }\n\n // compatible with IE11\n const colon = protocol.indexOf(':') === -1 ? ':' : '';\n return `${protocol}${colon}//${hostname}:${port}`;\n}\n"],"names":["map","Map","socketProtocol","location","defaultSocketUrl","process","ipv4Pattern","ensureSocket","socketUrl","socket","io","console","getSocket","socketPort","formatURL","port","protocol","hostname","URL","url","String","colon"],"mappings":";AAGA,MAAMA,MAAM,IAAIC;AAChB,MAAMC,iBAAiBC,SAAS,QAAQ,CAAC,QAAQ,CAAC,WAAW,QAAQ;AACrE,MAAMC,mBACJC,AAAyB,kBAAzBA,QAAQ,GAAG,CAAC,QAAQ,GAChB,GAAGH,eAAe,GAAG,EAAEC,SAAS,QAAQ,CAAC,CAAC,EAAEE,QAAQ,GAAG,CAAC,cAAc,EAAE,GACxE,GAAGH,eAAe,GAAG,EAAEC,SAAS,IAAI,EAAE;AAE5C,MAAMG,cACJ;AAEF,SAASC,aAAaC,YAAoBJ,gBAAgB;IACxD,IAAI,CAACJ,IAAI,GAAG,CAACQ,YAAY;QACvB,MAAMC,SAASC,GAAGF,WAAW,CAAC;QAC9BC,OAAO,EAAE,CAAC,WAAW;YACnBE,QAAQ,GAAG,CAAC,CAAC,eAAe,EAAEH,WAAW;QAC3C;QACAR,IAAI,GAAG,CAACQ,WAAWC;IACrB;IACA,OAAOT,IAAI,GAAG,CAACQ;AACjB;AAEO,SAASI,UAAUC,UAAmB;IAC3C,MAAML,YAAYM,UAAU;QAC1B,MAAMD;QACN,UAAUV,SAAS,QAAQ;QAC3B,UAAUA,SAAS,QAAQ;IAC7B;IACA,MAAMM,SAASF,aAAaM,aAAaL,YAAYJ;IACrD,OAAOK;AACT;AAEO,SAASK,UAAU,EACxBC,IAAI,EACJC,QAAQ,EACRC,QAAQ,EAKT;IACC,IAAI,AAAe,MAAf,OAAOC,KAAqB;QAC9B,MAAMC,MAAM,IAAID,IAAI;QACpBC,IAAI,IAAI,GAAGC,OAAOL;QAClBI,IAAI,QAAQ,GAAGF;QACfE,IAAI,QAAQ,GAAGhB,SAAS,QAAQ,CAAC,QAAQ,CAAC,WAAW,QAAQ;QAC7D,OAAOG,YAAY,IAAI,CAACW,aAAaA,SAAS,QAAQ,CAAC,eACnDE,IAAI,QAAQ,KACZ,GAAGH,SAAS,EAAE,EAAEC,UAAU;IAChC;IAGA,MAAMI,QAAQL,AAA0B,OAA1BA,SAAS,OAAO,CAAC,OAAc,MAAM;IACnD,OAAO,GAAGA,WAAWK,MAAM,EAAE,EAAEJ,SAAS,CAAC,EAAEF,MAAM;AACnD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdoctor/components",
3
- "version": "1.3.16",
3
+ "version": "1.4.1-beta.0",
4
4
  "license": "MIT",
5
5
  "types": "dist/index.d.ts",
6
6
  "repository": {
@@ -38,14 +38,14 @@
38
38
  }
39
39
  },
40
40
  "devDependencies": {
41
- "@rsbuild/plugin-check-syntax": "1.5.0",
41
+ "@rsbuild/plugin-check-syntax": "1.6.0",
42
42
  "@rsbuild/plugin-react": "^1.4.2",
43
43
  "@rsbuild/plugin-sass": "^1.4.0",
44
- "@rsbuild/plugin-svgr": "^1.2.2",
44
+ "@rsbuild/plugin-svgr": "^1.2.3",
45
45
  "@types/node": "^22.8.1",
46
46
  "@types/path-browserify": "1.0.3",
47
47
  "@types/react": "^18.3.27",
48
- "@types/react-highlight-words": "^0.20.0",
48
+ "@types/react-highlight-words": "^0.20.1",
49
49
  "@types/url-parse": "1.4.11",
50
50
  "react": "18.3.1",
51
51
  "typescript": "^5.9.2"
@@ -60,7 +60,7 @@
60
60
  "dayjs": "1.11.19",
61
61
  "echarts": "^5.6.0",
62
62
  "echarts-for-react": "^3.0.5",
63
- "es-toolkit": "^1.41.0",
63
+ "es-toolkit": "^1.43.0",
64
64
  "i18next": "22.0.4",
65
65
  "monaco-editor": "0.49.0",
66
66
  "path-browserify": "1.0.1",
@@ -74,9 +74,9 @@
74
74
  "react-router-dom": "6.4.3",
75
75
  "socket.io-client": "4.8.1",
76
76
  "url-parse": "1.5.10",
77
- "@rsdoctor/graph": "1.3.16",
78
- "@rsdoctor/types": "1.3.16",
79
- "@rsdoctor/utils": "1.3.16"
77
+ "@rsdoctor/graph": "1.4.1-beta.0",
78
+ "@rsdoctor/types": "1.4.1-beta.0",
79
+ "@rsdoctor/utils": "1.4.1-beta.0"
80
80
  },
81
81
  "peerDependencies": {
82
82
  "react": ">=18.3.1",