/* * Squidex Headless CMS * * @license * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ /* eslint-disable */ interface ReadonlyArray { replacedBy(field: keyof T, value: T): ReadonlyArray; removedBy(field: keyof T, value: T): ReadonlyArray; removed(value?: T): ReadonlyArray; sorted(): ReadonlyArray; sortedByString(selector: (value: T) => string): ReadonlyArray; toMap(selector: (value: T) => string): { [key: string]: T }; } interface Array { clear(): Array; replacedBy(field: keyof T, value: T): ReadonlyArray; replaceBy(field: keyof T, value: T): Array; removedBy(field: keyof T, value: T): ReadonlyArray; removeBy(field: keyof T, value: T): Array; removed(value: T): ReadonlyArray; remove(value: T): Array; sorted(): ReadonlyArray; sortedByString(selector: (value: T) => string): ReadonlyArray; sortByString(selector: (value: T) => string): Array; toMap(selector: (value: T) => string): { [key: string]: T }; } Array.prototype.replaceBy = function(field: keyof T, value: T) { const self: T[] = this; if (!field || !value) { return self; } for (let i = 0; i < self.length; i++) { const item = self[i]; if (value[field] === item[field]) { self[i] = value; break; } } return self; }; Array.prototype.replacedBy = function(field: keyof T, value: T) { const self: ReadonlyArray = this; if (!field || !value) { return self; } const copy = [...self]; for (let i = 0; i < self.length; i++) { const item = self[i]; if (value[field] === item[field]) { copy[i] = value; break; } } return copy; }; Array.prototype.clear = function() { const self: T[] = this; self.splice(0, self.length); return self; }; Array.prototype.removeBy = function(field: keyof T, value: T) { const self: T[] = this; if (!field || !value) { return self; } self.splice(self.findIndex(x => x[field] === value[field]), 1); return self; }; Array.prototype.removed = function(value?: T) { const self: ReadonlyArray = this; if (!value) { return this; } return self.filter((v: T) => v !== value); }; Array.prototype.remove = function(value?: T) { const self: T[] = this; if (!value) { return this; } const index = self.indexOf(value); self.splice(index, 1); return self; }; Array.prototype.removedBy = function(field: keyof T, value: T) { const self: ReadonlyArray = this; if (!field || !value) { return self; } return self.filter((v: T) => v[field] !== value[field]); }; Array.prototype.sorted = function() { const self: any[] = this; const copy = [...self]; copy.sort(); return copy; }; Array.prototype.sortedByString = function(selector: (value: T) => string) { const self: ReadonlyArray = this; if (!selector) { return self; } const copy = [...self]; copy.sort((a, b) => selector(a).localeCompare(selector(b), undefined, { sensitivity: 'base' })); return copy; }; Array.prototype.sortByString = function(selector: (value: T) => string) { const self: any[] = this; if (!selector) { return self; } self.sort((a, b) => selector(a).localeCompare(selector(b), undefined, { sensitivity: 'base' })); return self; }; Array.prototype.toMap = function(selector: (value: T) => string) { const result: { [key: string]: T } = {}; for (const item of this) { result[selector(item)] = item; } return result; };