summaryrefslogtreecommitdiff
path: root/node_modules/@jridgewell/set-array/dist/set-array.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@jridgewell/set-array/dist/set-array.mjs')
-rw-r--r--node_modules/@jridgewell/set-array/dist/set-array.mjs85
1 files changed, 53 insertions, 32 deletions
diff --git a/node_modules/@jridgewell/set-array/dist/set-array.mjs b/node_modules/@jridgewell/set-array/dist/set-array.mjs
index b7f1a9cc..8a2d60b8 100644
--- a/node_modules/@jridgewell/set-array/dist/set-array.mjs
+++ b/node_modules/@jridgewell/set-array/dist/set-array.mjs
@@ -1,17 +1,4 @@
/**
- * Gets the index associated with `key` in the backing array, if it is already present.
- */
-let get;
-/**
- * Puts `key` into the backing array, if it is not already present. Returns
- * the index of the `key` in the backing array.
- */
-let put;
-/**
- * Pops the last added item out of the SetArray.
- */
-let pop;
-/**
* SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the
* index of the `key` in the backing array.
*
@@ -25,24 +12,58 @@ class SetArray {
this.array = [];
}
}
-(() => {
- get = (strarr, key) => strarr._indexes[key];
- put = (strarr, key) => {
- // The key may or may not be present. If it is present, it's a number.
- const index = get(strarr, key);
- if (index !== undefined)
- return index;
- const { array, _indexes: indexes } = strarr;
- return (indexes[key] = array.push(key) - 1);
- };
- pop = (strarr) => {
- const { array, _indexes: indexes } = strarr;
- if (array.length === 0)
- return;
- const last = array.pop();
- indexes[last] = undefined;
- };
-})();
+/**
+ * Typescript doesn't allow friend access to private fields, so this just casts the set into a type
+ * with public access modifiers.
+ */
+function cast(set) {
+ return set;
+}
+/**
+ * Gets the index associated with `key` in the backing array, if it is already present.
+ */
+function get(setarr, key) {
+ return cast(setarr)._indexes[key];
+}
+/**
+ * Puts `key` into the backing array, if it is not already present. Returns
+ * the index of the `key` in the backing array.
+ */
+function put(setarr, key) {
+ // The key may or may not be present. If it is present, it's a number.
+ const index = get(setarr, key);
+ if (index !== undefined)
+ return index;
+ const { array, _indexes: indexes } = cast(setarr);
+ const length = array.push(key);
+ return (indexes[key] = length - 1);
+}
+/**
+ * Pops the last added item out of the SetArray.
+ */
+function pop(setarr) {
+ const { array, _indexes: indexes } = cast(setarr);
+ if (array.length === 0)
+ return;
+ const last = array.pop();
+ indexes[last] = undefined;
+}
+/**
+ * Removes the key, if it exists in the set.
+ */
+function remove(setarr, key) {
+ const index = get(setarr, key);
+ if (index === undefined)
+ return;
+ const { array, _indexes: indexes } = cast(setarr);
+ for (let i = index + 1; i < array.length; i++) {
+ const k = array[i];
+ array[i - 1] = k;
+ indexes[k]--;
+ }
+ indexes[key] = undefined;
+ array.pop();
+}
-export { SetArray, get, pop, put };
+export { SetArray, get, pop, put, remove };
//# sourceMappingURL=set-array.mjs.map