12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- (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
|