You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					59 lines
				
				2.1 KiB
			
		
		
			
		
	
	
					59 lines
				
				2.1 KiB
			| 
											3 years ago
										 | (function (global, factory) { | ||
|  |     typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||
|  |     typeof define === 'function' && define.amd ? define(['exports'], factory) : | ||
|  |     (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.setArray = {})); | ||
|  | })(this, (function (exports) { 'use strict'; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Gets the index associated with `key` in the backing array, if it is already present. | ||
|  |      */ | ||
|  |     exports.get = void 0; | ||
|  |     /** | ||
|  |      * Puts `key` into the backing array, if it is not already present. Returns | ||
|  |      * the index of the `key` in the backing array. | ||
|  |      */ | ||
|  |     exports.put = void 0; | ||
|  |     /** | ||
|  |      * Pops the last added item out of the SetArray. | ||
|  |      */ | ||
|  |     exports.pop = void 0; | ||
|  |     /** | ||
|  |      * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the | ||
|  |      * index of the `key` in the backing array. | ||
|  |      * | ||
|  |      * This is designed to allow synchronizing a second array with the contents of the backing array, | ||
|  |      * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`, | ||
|  |      * and there are never duplicates. | ||
|  |      */ | ||
|  |     class SetArray { | ||
|  |         constructor() { | ||
|  |             this._indexes = { __proto__: null }; | ||
|  |             this.array = []; | ||
|  |         } | ||
|  |     } | ||
|  |     (() => { | ||
|  |         exports.get = (strarr, key) => strarr._indexes[key]; | ||
|  |         exports.put = (strarr, key) => { | ||
|  |             // The key may or may not be present. If it is present, it's a number.
 | ||
|  |             const index = exports.get(strarr, key); | ||
|  |             if (index !== undefined) | ||
|  |                 return index; | ||
|  |             const { array, _indexes: indexes } = strarr; | ||
|  |             return (indexes[key] = array.push(key) - 1); | ||
|  |         }; | ||
|  |         exports.pop = (strarr) => { | ||
|  |             const { array, _indexes: indexes } = strarr; | ||
|  |             if (array.length === 0) | ||
|  |                 return; | ||
|  |             const last = array.pop(); | ||
|  |             indexes[last] = undefined; | ||
|  |         }; | ||
|  |     })(); | ||
|  | 
 | ||
|  |     exports.SetArray = SetArray; | ||
|  | 
 | ||
|  |     Object.defineProperty(exports, '__esModule', { value: true }); | ||
|  | 
 | ||
|  | })); | ||
|  | //# sourceMappingURL=set-array.umd.js.map
 |