UNPKG

awesome-typescript-loader

Version:
63 lines (58 loc) 1.37 kB
export interface MapLike<T> { get(key: string): T | undefined has(key: string): boolean set(key: string, file: T) delete(key: string) forEach<R>(cb: (v: T, key: string) => R) map<R>(cb: (v: T, key: string) => R): R[] } export class CaseSensitiveMap<T> implements MapLike<T> { private store = new Map<string, T>() get(key: string) { return this.store.get(key) } delete(key: string) { return this.store.delete(key) } has(key: string) { return this.store.has(key) } set(key: string, file: T) { return this.store.set(key, file) } forEach<R>(cb: (v: T, key: string) => R) { this.store.forEach(cb) } map<R>(cb: (v: T, key: string) => R): R[] { const res = [] as R[] this.forEach((v, key) => { res.push(cb(v, key)) }) return res } } export class CaseInsensitiveMap<T> implements MapLike<T> { private store = new Map<string, T>() get(key: string) { return this.store.get(key.toLowerCase()) } delete(key: string) { return this.store.delete(key.toLowerCase()) } has(key: string) { return this.store.has(key.toLowerCase()) } set(key: string, file: T) { return this.store.set(key.toLowerCase(), file) } forEach<R>(cb: (v: T, key: string) => R) { this.store.forEach(cb) } map<R>(cb: (v: T, key: string) => R): R[] { const res = [] as R[] this.forEach((v, key) => { res.push(cb(v, key)) }) return res } }