Files
Shifted/node_modules/rettime/build/lens-list.mjs.map
2026-02-10 01:14:19 +00:00

1 line
3.4 KiB
Plaintext

{"version":3,"file":"lens-list.mjs","names":["#list","#lens","#openLens"],"sources":["../src/lens-list.ts"],"sourcesContent":["export class LensList<T> {\n #list: Array<[string, T]>\n #lens: Map<string, Array<T>>\n\n constructor() {\n this.#list = []\n this.#lens = new Map()\n }\n\n get [Symbol.iterator]() {\n // Return the list's iterator so iteration is order-sensitive.\n return this.#list[Symbol.iterator].bind(this.#list)\n }\n\n public entries() {\n return this.#lens.entries()\n }\n\n /**\n * Return an order-sensitive list of values by the given key.\n */\n public get(key: string): Array<T> {\n return this.#lens.get(key) || []\n }\n\n /**\n * Return an order-sensitive list of all values.\n */\n public getAll(): Array<T> {\n return this.#list.map(([, value]) => value)\n }\n\n /**\n * Append a new value to the given key.\n */\n public append(key: string, value: T): void {\n this.#list.push([key, value])\n this.#openLens(key, (list) => list.push(value))\n }\n\n /**\n * Prepend a new value to the given key.\n */\n public prepend(key: string, value: T): void {\n this.#list.unshift([key, value])\n this.#openLens(key, (list) => list.unshift(value))\n }\n\n /**\n * Delete the value belonging to the given key.\n */\n public delete(key: string, value: T): void {\n if (this.size === 0) {\n return\n }\n\n this.#list = this.#list.filter((item) => item[1] !== value)\n\n for (const [existingKey, values] of this.#lens) {\n if (existingKey === key && values.includes(value)) {\n values.splice(values.indexOf(value), 1)\n }\n }\n }\n\n /**\n * Delete all values belogning to the given key.\n */\n public deleteAll(key: string): void {\n if (this.size === 0) {\n return\n }\n\n this.#list = this.#list.filter((item) => item[0] !== key)\n this.#lens.delete(key)\n }\n\n get size(): number {\n return this.#list.length\n }\n\n public clear(): void {\n if (this.size === 0) {\n return\n }\n\n this.#list.length = 0\n this.#lens.clear()\n }\n\n #openLens(key: string, setter: (target: Array<T>) => void): void {\n setter(this.#lens.get(key) || this.#lens.set(key, []).get(key))\n }\n}\n"],"mappings":";AAAA,IAAa,WAAb,MAAyB;CACvB;CACA;CAEA,cAAc;AACZ,QAAKA,OAAQ,EAAE;AACf,QAAKC,uBAAQ,IAAI,KAAK;;CAGxB,KAAK,OAAO,YAAY;AAEtB,SAAO,MAAKD,KAAM,OAAO,UAAU,KAAK,MAAKA,KAAM;;CAGrD,AAAO,UAAU;AACf,SAAO,MAAKC,KAAM,SAAS;;;;;CAM7B,AAAO,IAAI,KAAuB;AAChC,SAAO,MAAKA,KAAM,IAAI,IAAI,IAAI,EAAE;;;;;CAMlC,AAAO,SAAmB;AACxB,SAAO,MAAKD,KAAM,KAAK,GAAG,WAAW,MAAM;;;;;CAM7C,AAAO,OAAO,KAAa,OAAgB;AACzC,QAAKA,KAAM,KAAK,CAAC,KAAK,MAAM,CAAC;AAC7B,QAAKE,SAAU,MAAM,SAAS,KAAK,KAAK,MAAM,CAAC;;;;;CAMjD,AAAO,QAAQ,KAAa,OAAgB;AAC1C,QAAKF,KAAM,QAAQ,CAAC,KAAK,MAAM,CAAC;AAChC,QAAKE,SAAU,MAAM,SAAS,KAAK,QAAQ,MAAM,CAAC;;;;;CAMpD,AAAO,OAAO,KAAa,OAAgB;AACzC,MAAI,KAAK,SAAS,EAChB;AAGF,QAAKF,OAAQ,MAAKA,KAAM,QAAQ,SAAS,KAAK,OAAO,MAAM;AAE3D,OAAK,MAAM,CAAC,aAAa,WAAW,MAAKC,KACvC,KAAI,gBAAgB,OAAO,OAAO,SAAS,MAAM,CAC/C,QAAO,OAAO,OAAO,QAAQ,MAAM,EAAE,EAAE;;;;;CAQ7C,AAAO,UAAU,KAAmB;AAClC,MAAI,KAAK,SAAS,EAChB;AAGF,QAAKD,OAAQ,MAAKA,KAAM,QAAQ,SAAS,KAAK,OAAO,IAAI;AACzD,QAAKC,KAAM,OAAO,IAAI;;CAGxB,IAAI,OAAe;AACjB,SAAO,MAAKD,KAAM;;CAGpB,AAAO,QAAc;AACnB,MAAI,KAAK,SAAS,EAChB;AAGF,QAAKA,KAAM,SAAS;AACpB,QAAKC,KAAM,OAAO;;CAGpB,UAAU,KAAa,QAA0C;AAC/D,SAAO,MAAKA,KAAM,IAAI,IAAI,IAAI,MAAKA,KAAM,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC"}