Custom at() function in webapp for backwards compatibility

This commit is contained in:
jaknapper 2025-06-05 11:50:43 +01:00
parent 090373f1ef
commit 3c15d0ef0b

View file

@ -171,6 +171,25 @@ export default {
},
mounted() {
//Define .at() as a custom function, for backwards compatibility with Connect
function at(n) {
// ToInteger() abstract op
n = Math.trunc(n) || 0;
// Allow negative indexing from the end
if (n < 0) n += this.length;
// OOB access is guaranteed to return undefined
if (n < 0 || n >= this.length) return undefined;
// Otherwise, this is just normal property access
return this[n];
}
const TypedArray = Reflect.getPrototypeOf(Int8Array);
for (const C of [Array, String, TypedArray]) {
Object.defineProperty(C.prototype, "at",
{ value: at,
writable: true,
enumerable: false,
configurable: true });
}
// Check for already running tasks
if (this.taskStarted != true) {
this.checkExistingTasks();