chore(web): drops a worker polyfill, makes another conditional

This commit is contained in:
Joshua A. Horton 2023-12-13 09:05:38 +07:00
parent cc24571e63
commit 6887ca3053
8 changed files with 18 additions and 96 deletions

View file

@ -46,7 +46,7 @@ export default class PriorityQueue<Type> {
// https://en.wikipedia.org/wiki/Min-max_heap
this.comparator = comparator;
this.heap = Array.from(initialEntries ?? []);
this.heap = (initialEntries ?? []).slice(0);
this.heapify();
}
@ -228,6 +228,6 @@ export default class PriorityQueue<Type> {
* they will almost certainly be unsorted.
*/
toArray(): Type[] {
return Array.from(this.heap);
return this.heap.slice(0);
}
}

View file

@ -24,7 +24,7 @@ describe('Priority queue', function() {
it('initializes well from pre-existing values', function() {
let input = [1, 10, 2, 9, 3, 8, 4, 7, 5, 6];
let originalInput = Array.from(input);
let originalInput = input.slice(0);
let queue = new PriorityQueue((a, b) => a - b, input);
assert.deepEqual(input, originalInput);

View file

@ -81,8 +81,6 @@ let sourceFileSet = [
loadPolyfill('src/polyfills/array.fill.js', 'src/polyfills/array.fill.js'),
// Needed for Android / Chromium browser pre-45.
loadPolyfill('src/polyfills/array.findIndex.js', 'src/polyfills/array.findIndex.js'),
// Needed for Android / Chromium browser pre-45.
loadPolyfill('src/polyfills/array.from.js', 'src/polyfills/array.from.js'),
// Needed for Android / Chromium browser pre-47.
loadPolyfill('src/polyfills/array.includes.js', 'src/polyfills/array.includes.js'),
// For Object.values, for iteration over object-based associate arrays.

View file

@ -69,11 +69,11 @@ export class ClassicalDistanceCalculation<TUnit = string, TInput extends EditTok
this.resolvedDistances = Array(rowCount);
for(let r = 0; r < rowCount; r++) {
this.resolvedDistances[r] = Array.from(other.resolvedDistances[r]);
this.resolvedDistances[r] = other.resolvedDistances[r].slice(0);
}
this.inputSequence = Array.from(other.inputSequence);
this.matchSequence = Array.from(other.matchSequence);
this.inputSequence = other.inputSequence.slice(0);
this.matchSequence = other.matchSequence.slice(0);
this.diagonalWidth = other.diagonalWidth;
} else {
this.resolvedDistances = [];

View file

@ -143,7 +143,7 @@ export class SearchNode {
// TODO: transform.deleteRight currently not supported.
let inputPath = Array.from(this.priorInput);
let inputPath = this.priorInput.slice(0);
inputPath.push(probMass);
// Tokenize and iterate over input chars, adding them into the calc.
for(let i=0; i < transform.insert.length; i++) {

View file

@ -1,81 +0,0 @@
// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from
// Any npm-based ones require use of `require`, which won't work for us.
// Production steps of ECMA-262, Edition 6, 22.1.2.1
if (!Array.from) {
Array.from = (function () {
var toStr = Object.prototype.toString;
var isCallable = function (fn) {
return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
};
var toInteger = function (value) {
var number = Number(value);
if (isNaN(number)) { return 0; }
if (number === 0 || !isFinite(number)) { return number; }
return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
};
var maxSafeInteger = Math.pow(2, 53) - 1;
var toLength = function (value) {
var len = toInteger(value);
return Math.min(Math.max(len, 0), maxSafeInteger);
};
// The length property of the from method is 1.
return function from(arrayLike/*, mapFn, thisArg */) {
// 1. Let C be the this value.
var C = this;
// 2. Let items be ToObject(arrayLike).
var items = Object(arrayLike);
// 3. ReturnIfAbrupt(items).
if (arrayLike == null) {
throw new TypeError('Array.from requires an array-like object - not null or undefined');
}
// 4. If mapfn is undefined, then let mapping be false.
var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
var T;
if (typeof mapFn !== 'undefined') {
// 5. else
// 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
if (!isCallable(mapFn)) {
throw new TypeError('Array.from: when provided, the second argument must be a function');
}
// 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.
if (arguments.length > 2) {
T = arguments[2];
}
}
// 10. Let lenValue be Get(items, "length").
// 11. Let len be ToLength(lenValue).
var len = toLength(items.length);
// 13. If IsConstructor(C) is true, then
// 13. a. Let A be the result of calling the [[Construct]] internal method
// of C with an argument list containing the single item len.
// 14. a. Else, Let A be ArrayCreate(len).
var A = isCallable(C) ? Object(new C(len)) : new Array(len);
// 16. Let k be 0.
var k = 0;
// 17. Repeat, while k < len… (also steps a - h)
var kValue;
while (k < len) {
kValue = items[k];
if (mapFn) {
A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);
} else {
A[k] = kValue;
}
k += 1;
}
// 18. Let putStatus be Put(A, "length", len, true).
A.length = len;
// 20. Return A.
return A;
};
}());
}

File diff suppressed because one or more lines are too long

View file

@ -21,7 +21,7 @@ describe('ContextTracker', function() {
insert: '',
deleteLeft: 0
}
let newContext = Array.from(existingContext);
let newContext = existingContext.slice(0);
newContext.splice(0, 1);
let rawTokens = ["apple", null, "a", null, "day", null, "keeps", null, "the", null, "doctor"];
@ -37,7 +37,7 @@ describe('ContextTracker', function() {
insert: 'r',
deleteLeft: 0
}
let newContext = Array.from(existingContext);
let newContext = existingContext.slice(0);
newContext[newContext.length - 1] = 'doctor';
let rawTokens = ["an", null, "apple", null, "a", null, "day", null, "keeps", null, "the", null, "doctor"];
@ -53,7 +53,7 @@ describe('ContextTracker', function() {
insert: ' ',
deleteLeft: 0
}
let newContext = Array.from(existingContext);
let newContext = existingContext.slice(0);
newContext.push('');
let rawTokens = ["an", null, "apple", null, "a", null, "day", null, "keeps", null, "the", null, "doctor", null, ""];
@ -73,7 +73,7 @@ describe('ContextTracker', function() {
insert: 'a',
deleteLeft: 0
}
let newContext = Array.from(existingContext);
let newContext = existingContext.slice(0);
newContext.push('a'); // The incoming transform should produce a new token WITH TEXT.
let rawTokens = ["'", null, "a"];
@ -93,7 +93,7 @@ describe('ContextTracker', function() {
insert: ' ',
deleteLeft: 0
}
let newContext = Array.from(existingContext);
let newContext = existingContext.slice(0);
newContext.splice(0, 1);
newContext.push('');
let rawTokens = ["apple", null, "a", null, "day", null, "keeps", null, "the", null, "doctor", null, ""];