@code-hike/utils
Advanced tools
Comparing version 0.3.0--canary.77.4c6fb89.0 to 0.3.0--canary.77.59321d0.0
@@ -21,4 +21,292 @@ 'use strict'; | ||
/*! ***************************************************************************** | ||
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 */ | ||
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) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
} | ||
function __read(o, n) { | ||
var m = typeof Symbol === "function" && o[Symbol.iterator]; | ||
if (!m) return o; | ||
var i = m.call(o), r, ar = [], e; | ||
try { | ||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); | ||
} | ||
catch (error) { e = { error: error }; } | ||
finally { | ||
try { | ||
if (r && !r.done && (m = i["return"])) m.call(i); | ||
} | ||
finally { if (e) throw e.error; } | ||
} | ||
return ar; | ||
} | ||
function __spread() { | ||
for (var ar = [], i = 0; i < arguments.length; i++) | ||
ar = ar.concat(__read(arguments[i])); | ||
return ar; | ||
} | ||
function mapFocusToLineNumbers(focus, lines) { | ||
if (!focus) { | ||
// focus all lines | ||
return mergeToObject(__spread(lines.keys()).map(function (lineIndex) { | ||
var _a; | ||
return (_a = {}, | ||
_a[lineIndex + 1] = true, | ||
_a); | ||
})); | ||
} | ||
else { | ||
return mergeToObject(splitParts(focus).map(parsePartToObject)); | ||
} | ||
} | ||
function splitParts(focus) { | ||
return focus.split(/,(?![^\[]*\])/g); | ||
} | ||
function mergeToObject(entries) { | ||
return entries.reduce(function (acc, obj) { return Object.assign(acc, obj); }, {}); | ||
} | ||
function hasColumns(part) { | ||
return !!part.match(/(\d+)\[(.+)\]/); | ||
} | ||
function parsePartToObject(part) { | ||
var _a; | ||
// a part could be | ||
// - a line number: "2" | ||
// - a line range: "5:9" | ||
// - a line number with a column selector: "2[1,3:5,9]" | ||
var columnsMatch = part.match(/(\d+)\[(.+)\]/); | ||
if (columnsMatch) { | ||
var _b = __read(columnsMatch, 3), line = _b[1], columns = _b[2]; | ||
var columnsList = columns | ||
.split(",") | ||
.map(parseExtremes); | ||
var lineNumber = Number(line); | ||
return _a = {}, _a[lineNumber] = columnsList, _a; | ||
} | ||
else { | ||
return mergeToObject(expandString(part).map(function (lineNumber) { | ||
var _a; | ||
return (_a = {}, | ||
_a[lineNumber] = true, | ||
_a); | ||
})); | ||
} | ||
} | ||
function parseExtremes(part) { | ||
// Transforms something like | ||
// - "1:3" to {start:1, end: 3} | ||
// - "4" to {start:4, end:4} | ||
var _a = __read(part.split(":"), 2), start = _a[0], end = _a[1]; | ||
if (!isNaturalNumber(start)) { | ||
throw new FocusNumberError(start); | ||
} | ||
var startNumber = Number(start); | ||
if (startNumber < 1) { | ||
throw new LineOrColumnNumberError(); | ||
} | ||
if (!end) { | ||
return { start: startNumber, end: startNumber }; | ||
} | ||
else { | ||
if (!isNaturalNumber(end)) { | ||
throw new FocusNumberError(end); | ||
} | ||
return { start: startNumber, end: +end }; | ||
} | ||
} | ||
function getFocusIndexes(focus, lines) { | ||
if (!focus) { | ||
return __spread(lines.keys()); | ||
} | ||
else { | ||
var parsed = parseFocus(focus); | ||
var focusedIndexes = Object.keys(parsed).map(function (i) { | ||
return parseInt(i, 10); | ||
}); | ||
return focusedIndexes; | ||
} | ||
} | ||
function parseFocus(focus) { | ||
if (!focus) { | ||
throw new Error("Focus cannot be empty"); | ||
} | ||
try { | ||
var parts = focus | ||
.split(/,(?![^\[]*\])/g) | ||
.map(parsePart); | ||
return fromEntries(parts.flat()); | ||
} | ||
catch (error) { | ||
// TODO enhance error | ||
throw error; | ||
} | ||
} | ||
function parsePart(part) { | ||
// a part could be | ||
// - a line number: "2" | ||
// - a line range: "5:9" | ||
// - a line number with a column selector: "2[1,3:5,9]" | ||
var columnsMatch = part.match(/(\d+)\[(.+)\]/); | ||
if (columnsMatch) { | ||
var _a = __read(columnsMatch, 3), line = _a[1], columns = _a[2]; | ||
var columnsList = columns.split(",").map(expandString); | ||
var lineIndex = Number(line) - 1; | ||
var columnIndexes = columnsList.flat().map(function (c) { return c - 1; }); | ||
return [[lineIndex, columnIndexes]]; | ||
} | ||
else { | ||
return expandString(part).map(function (lineNumber) { return [ | ||
lineNumber - 1, | ||
true, | ||
]; }); | ||
} | ||
} | ||
function expandString(part) { | ||
// Transforms something like | ||
// - "1:3" to [1,2,3] | ||
// - "4" to [4] | ||
var _a = __read(part.split(":"), 2), start = _a[0], end = _a[1]; | ||
if (!isNaturalNumber(start)) { | ||
throw new FocusNumberError(start); | ||
} | ||
var startNumber = Number(start); | ||
if (startNumber < 1) { | ||
throw new LineOrColumnNumberError(); | ||
} | ||
if (!end) { | ||
return [startNumber]; | ||
} | ||
else { | ||
if (!isNaturalNumber(end)) { | ||
throw new FocusNumberError(end); | ||
} | ||
var list = []; | ||
for (var i = startNumber; i <= +end; i++) { | ||
list.push(i); | ||
} | ||
return list; | ||
} | ||
} | ||
function isNaturalNumber(n) { | ||
n = n.toString(); // force the value in case it is not | ||
var n1 = Math.abs(n), n2 = parseInt(n, 10); | ||
return !isNaN(n1) && n2 === n1 && n1.toString() === n; | ||
} | ||
var LineOrColumnNumberError = /** @class */ (function (_super) { | ||
__extends(LineOrColumnNumberError, _super); | ||
function LineOrColumnNumberError() { | ||
var _newTarget = this.constructor; | ||
var _this = _super.call(this, "Invalid line or column number in focus string") || this; | ||
Object.setPrototypeOf(_this, _newTarget.prototype); | ||
return _this; | ||
} | ||
return LineOrColumnNumberError; | ||
}(Error)); | ||
var FocusNumberError = /** @class */ (function (_super) { | ||
__extends(FocusNumberError, _super); | ||
function FocusNumberError(number) { | ||
var _newTarget = this.constructor; | ||
var _this = _super.call(this, "Invalid number \"" + number + "\" in focus string") || this; | ||
_this.number = number; | ||
Object.setPrototypeOf(_this, _newTarget.prototype); | ||
return _this; | ||
} | ||
return FocusNumberError; | ||
}(Error)); | ||
function fromEntries(pairs) { | ||
var result = {}; | ||
var index = -1, length = pairs == null ? 0 : pairs.length; | ||
while (++index < length) { | ||
var pair = pairs[index]; | ||
result[pair[0]] = pair[1]; | ||
} | ||
return result; | ||
} | ||
// turns a relative string like (1,3) or [4:5] into a normal focus string | ||
function relativeToAbsolute(relativeString, lineNumber) { | ||
if (!relativeString) { | ||
return lineNumber.toString(); | ||
} | ||
if (relativeString.startsWith("[")) { | ||
return "" + lineNumber + relativeString; | ||
} | ||
return splitParts(relativeString.slice(1, -1)) | ||
.map(function (part) { return makePartAbsolute(part, lineNumber); }) | ||
.join(","); | ||
} | ||
function makePartAbsolute(part, lineNumber) { | ||
var focusMap = parsePartToObject(part); | ||
var keys = Object.keys(focusMap).map(function (k) { return +k; }); | ||
if (keys.length > 1) { | ||
var min = Math.min.apply(Math, __spread(keys)); | ||
var max = Math.max.apply(Math, __spread(keys)); | ||
return min + lineNumber - 1 + ":" + (max + lineNumber - 1); | ||
} | ||
var newMap = {}; | ||
Object.keys(focusMap).forEach(function (ln) { | ||
newMap[+ln + lineNumber - 1] = focusMap[+ln]; | ||
}); | ||
return toFocusString(newMap); | ||
} | ||
function toFocusString(focusMap) { | ||
var parts = []; | ||
Object.keys(focusMap).forEach(function (ln) { | ||
var part = focusMap[+ln]; | ||
if (part === true) { | ||
parts.push(ln); | ||
} | ||
else if (part instanceof Array) { | ||
var columnsString = part.map(function (extremes) { | ||
return extremes.start === extremes.end | ||
? extremes.start | ||
: extremes.start + ":" + extremes.end; | ||
}); | ||
parts.push(ln + "[" + columnsString + "]"); | ||
} | ||
}); | ||
return parts.join(","); | ||
} | ||
function mergeFocus(fs1, fs2) { | ||
if (!fs1) | ||
return fs2 || ""; | ||
if (!fs2) | ||
return fs1 || ""; | ||
return fs1 + "," + fs2; | ||
} | ||
exports.getFocusIndexes = getFocusIndexes; | ||
exports.hasColumns = hasColumns; | ||
exports.map = map; | ||
exports.mapFocusToLineNumbers = mapFocusToLineNumbers; | ||
exports.mapWithDefault = mapWithDefault; | ||
exports.mergeFocus = mergeFocus; | ||
exports.parseExtremes = parseExtremes; | ||
exports.parsePartToObject = parsePartToObject; | ||
exports.relativeToAbsolute = relativeToAbsolute; | ||
exports.withDefault = withDefault; |
export * from "./tween"; | ||
export * from "./code"; | ||
export * from "./focus"; |
@@ -17,2 +17,283 @@ function map(tween, fn) { | ||
export { map, mapWithDefault, withDefault }; | ||
/*! ***************************************************************************** | ||
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 */ | ||
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) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
} | ||
function __read(o, n) { | ||
var m = typeof Symbol === "function" && o[Symbol.iterator]; | ||
if (!m) return o; | ||
var i = m.call(o), r, ar = [], e; | ||
try { | ||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); | ||
} | ||
catch (error) { e = { error: error }; } | ||
finally { | ||
try { | ||
if (r && !r.done && (m = i["return"])) m.call(i); | ||
} | ||
finally { if (e) throw e.error; } | ||
} | ||
return ar; | ||
} | ||
function __spread() { | ||
for (var ar = [], i = 0; i < arguments.length; i++) | ||
ar = ar.concat(__read(arguments[i])); | ||
return ar; | ||
} | ||
function mapFocusToLineNumbers(focus, lines) { | ||
if (!focus) { | ||
// focus all lines | ||
return mergeToObject(__spread(lines.keys()).map(function (lineIndex) { | ||
var _a; | ||
return (_a = {}, | ||
_a[lineIndex + 1] = true, | ||
_a); | ||
})); | ||
} | ||
else { | ||
return mergeToObject(splitParts(focus).map(parsePartToObject)); | ||
} | ||
} | ||
function splitParts(focus) { | ||
return focus.split(/,(?![^\[]*\])/g); | ||
} | ||
function mergeToObject(entries) { | ||
return entries.reduce(function (acc, obj) { return Object.assign(acc, obj); }, {}); | ||
} | ||
function hasColumns(part) { | ||
return !!part.match(/(\d+)\[(.+)\]/); | ||
} | ||
function parsePartToObject(part) { | ||
var _a; | ||
// a part could be | ||
// - a line number: "2" | ||
// - a line range: "5:9" | ||
// - a line number with a column selector: "2[1,3:5,9]" | ||
var columnsMatch = part.match(/(\d+)\[(.+)\]/); | ||
if (columnsMatch) { | ||
var _b = __read(columnsMatch, 3), line = _b[1], columns = _b[2]; | ||
var columnsList = columns | ||
.split(",") | ||
.map(parseExtremes); | ||
var lineNumber = Number(line); | ||
return _a = {}, _a[lineNumber] = columnsList, _a; | ||
} | ||
else { | ||
return mergeToObject(expandString(part).map(function (lineNumber) { | ||
var _a; | ||
return (_a = {}, | ||
_a[lineNumber] = true, | ||
_a); | ||
})); | ||
} | ||
} | ||
function parseExtremes(part) { | ||
// Transforms something like | ||
// - "1:3" to {start:1, end: 3} | ||
// - "4" to {start:4, end:4} | ||
var _a = __read(part.split(":"), 2), start = _a[0], end = _a[1]; | ||
if (!isNaturalNumber(start)) { | ||
throw new FocusNumberError(start); | ||
} | ||
var startNumber = Number(start); | ||
if (startNumber < 1) { | ||
throw new LineOrColumnNumberError(); | ||
} | ||
if (!end) { | ||
return { start: startNumber, end: startNumber }; | ||
} | ||
else { | ||
if (!isNaturalNumber(end)) { | ||
throw new FocusNumberError(end); | ||
} | ||
return { start: startNumber, end: +end }; | ||
} | ||
} | ||
function getFocusIndexes(focus, lines) { | ||
if (!focus) { | ||
return __spread(lines.keys()); | ||
} | ||
else { | ||
var parsed = parseFocus(focus); | ||
var focusedIndexes = Object.keys(parsed).map(function (i) { | ||
return parseInt(i, 10); | ||
}); | ||
return focusedIndexes; | ||
} | ||
} | ||
function parseFocus(focus) { | ||
if (!focus) { | ||
throw new Error("Focus cannot be empty"); | ||
} | ||
try { | ||
var parts = focus | ||
.split(/,(?![^\[]*\])/g) | ||
.map(parsePart); | ||
return fromEntries(parts.flat()); | ||
} | ||
catch (error) { | ||
// TODO enhance error | ||
throw error; | ||
} | ||
} | ||
function parsePart(part) { | ||
// a part could be | ||
// - a line number: "2" | ||
// - a line range: "5:9" | ||
// - a line number with a column selector: "2[1,3:5,9]" | ||
var columnsMatch = part.match(/(\d+)\[(.+)\]/); | ||
if (columnsMatch) { | ||
var _a = __read(columnsMatch, 3), line = _a[1], columns = _a[2]; | ||
var columnsList = columns.split(",").map(expandString); | ||
var lineIndex = Number(line) - 1; | ||
var columnIndexes = columnsList.flat().map(function (c) { return c - 1; }); | ||
return [[lineIndex, columnIndexes]]; | ||
} | ||
else { | ||
return expandString(part).map(function (lineNumber) { return [ | ||
lineNumber - 1, | ||
true, | ||
]; }); | ||
} | ||
} | ||
function expandString(part) { | ||
// Transforms something like | ||
// - "1:3" to [1,2,3] | ||
// - "4" to [4] | ||
var _a = __read(part.split(":"), 2), start = _a[0], end = _a[1]; | ||
if (!isNaturalNumber(start)) { | ||
throw new FocusNumberError(start); | ||
} | ||
var startNumber = Number(start); | ||
if (startNumber < 1) { | ||
throw new LineOrColumnNumberError(); | ||
} | ||
if (!end) { | ||
return [startNumber]; | ||
} | ||
else { | ||
if (!isNaturalNumber(end)) { | ||
throw new FocusNumberError(end); | ||
} | ||
var list = []; | ||
for (var i = startNumber; i <= +end; i++) { | ||
list.push(i); | ||
} | ||
return list; | ||
} | ||
} | ||
function isNaturalNumber(n) { | ||
n = n.toString(); // force the value in case it is not | ||
var n1 = Math.abs(n), n2 = parseInt(n, 10); | ||
return !isNaN(n1) && n2 === n1 && n1.toString() === n; | ||
} | ||
var LineOrColumnNumberError = /** @class */ (function (_super) { | ||
__extends(LineOrColumnNumberError, _super); | ||
function LineOrColumnNumberError() { | ||
var _newTarget = this.constructor; | ||
var _this = _super.call(this, "Invalid line or column number in focus string") || this; | ||
Object.setPrototypeOf(_this, _newTarget.prototype); | ||
return _this; | ||
} | ||
return LineOrColumnNumberError; | ||
}(Error)); | ||
var FocusNumberError = /** @class */ (function (_super) { | ||
__extends(FocusNumberError, _super); | ||
function FocusNumberError(number) { | ||
var _newTarget = this.constructor; | ||
var _this = _super.call(this, "Invalid number \"" + number + "\" in focus string") || this; | ||
_this.number = number; | ||
Object.setPrototypeOf(_this, _newTarget.prototype); | ||
return _this; | ||
} | ||
return FocusNumberError; | ||
}(Error)); | ||
function fromEntries(pairs) { | ||
var result = {}; | ||
var index = -1, length = pairs == null ? 0 : pairs.length; | ||
while (++index < length) { | ||
var pair = pairs[index]; | ||
result[pair[0]] = pair[1]; | ||
} | ||
return result; | ||
} | ||
// turns a relative string like (1,3) or [4:5] into a normal focus string | ||
function relativeToAbsolute(relativeString, lineNumber) { | ||
if (!relativeString) { | ||
return lineNumber.toString(); | ||
} | ||
if (relativeString.startsWith("[")) { | ||
return "" + lineNumber + relativeString; | ||
} | ||
return splitParts(relativeString.slice(1, -1)) | ||
.map(function (part) { return makePartAbsolute(part, lineNumber); }) | ||
.join(","); | ||
} | ||
function makePartAbsolute(part, lineNumber) { | ||
var focusMap = parsePartToObject(part); | ||
var keys = Object.keys(focusMap).map(function (k) { return +k; }); | ||
if (keys.length > 1) { | ||
var min = Math.min.apply(Math, __spread(keys)); | ||
var max = Math.max.apply(Math, __spread(keys)); | ||
return min + lineNumber - 1 + ":" + (max + lineNumber - 1); | ||
} | ||
var newMap = {}; | ||
Object.keys(focusMap).forEach(function (ln) { | ||
newMap[+ln + lineNumber - 1] = focusMap[+ln]; | ||
}); | ||
return toFocusString(newMap); | ||
} | ||
function toFocusString(focusMap) { | ||
var parts = []; | ||
Object.keys(focusMap).forEach(function (ln) { | ||
var part = focusMap[+ln]; | ||
if (part === true) { | ||
parts.push(ln); | ||
} | ||
else if (part instanceof Array) { | ||
var columnsString = part.map(function (extremes) { | ||
return extremes.start === extremes.end | ||
? extremes.start | ||
: extremes.start + ":" + extremes.end; | ||
}); | ||
parts.push(ln + "[" + columnsString + "]"); | ||
} | ||
}); | ||
return parts.join(","); | ||
} | ||
function mergeFocus(fs1, fs2) { | ||
if (!fs1) | ||
return fs2 || ""; | ||
if (!fs2) | ||
return fs1 || ""; | ||
return fs1 + "," + fs2; | ||
} | ||
export { getFocusIndexes, hasColumns, map, mapFocusToLineNumbers, mapWithDefault, mergeFocus, parseExtremes, parsePartToObject, relativeToAbsolute, withDefault }; |
{ | ||
"name": "@code-hike/utils", | ||
"version": "0.3.0--canary.77.4c6fb89.0", | ||
"version": "0.3.0--canary.77.59321d0.0", | ||
"main": "dist/index.cjs.js", | ||
@@ -11,11 +11,16 @@ "typings": "dist/index.d.ts", | ||
"scripts": { | ||
"x": "x" | ||
"x": "x", | ||
"test": "jest", | ||
"test-watch": "jest --watch --updateSnapshot" | ||
}, | ||
"devDependencies": { | ||
"@code-hike/script": "0.3.0--canary.77.4c6fb89.0", | ||
"@code-hike/script": "0.3.0--canary.77.59321d0.0", | ||
"@types/jest": "^24.0.15", | ||
"@types/react": "^16.9.38", | ||
"react": "^16.13.1" | ||
"jest": "^26.5.3", | ||
"react": "^16.13.1", | ||
"ts-jest": "^26.4.1" | ||
}, | ||
"peerDependencies": { | ||
"react": ">=16.8" | ||
"react": "^16.8.3 || ^17 || ^18" | ||
}, | ||
@@ -36,3 +41,3 @@ "keywords": [ | ||
}, | ||
"gitHead": "4c6fb899b4232bc8ea91185414690c202187a79d" | ||
"gitHead": "59321d098b05dd91119e5e0375c2842e3d23dfbf" | ||
} |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
24289
10
647
6
8
1