aboutsummaryrefslogtreecommitdiff
path: root/background/reverse_use_info.js
diff options
context:
space:
mode:
Diffstat (limited to 'background/reverse_use_info.js')
-rw-r--r--background/reverse_use_info.js117
1 files changed, 0 insertions, 117 deletions
diff --git a/background/reverse_use_info.js b/background/reverse_use_info.js
deleted file mode 100644
index f609ebe..0000000
--- a/background/reverse_use_info.js
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- * Myext scripts and bags usage index
- *
- * Copyright (C) 2021 Wojtek Kosior
- *
- * This code is dual-licensed under:
- * - Asshole license 1.0,
- * - GPLv3 or (at your option) any later version
- *
- * "dual-licensed" means you can choose the license you prefer.
- *
- * This code is released under a permissive license because I disapprove of
- * copyright and wouldn't be willing to sue a violator. Despite not putting
- * this code under copyleft (which is also kind of copyright), I do not want
- * it to be made proprietary. Hence, the permissive alternative to GPL is the
- * Asshole license 1.0 that allows me to call you an asshole if you use it.
- * This means you're legally ok regardless of how you utilize this code but if
- * you make it into something nonfree, you're an asshole.
- *
- * You should have received a copy of both GPLv3 and Asshole license 1.0
- * together with this code. If not, please see:
- * - https://www.gnu.org/licenses/gpl-3.0.en.html
- * - https://koszko.org/asshole-license.txt
- */
-
-"use strict";
-
-/*
- * Warning!
- * This script file has not been used for some time and underlying storage
- * model has changed since then! Fix required!
- */
-
-/*
- * We want to count referenes to scripts and bags in order to know,
- * for example, whether one can be safely deleted.
- */
-
-(() => {
- const TYPE_PREFIX = window.TYPE_PREFIX;
- const get_storage = window.get_storage;
- const make_once = window.make_once;
-
- var component_uses = new Map();
- var storage;
-
- function add_use_info_by_item(prefix, item, components)
- {
- for (let component of components) {
- component = component.join("");
-
- let used_by_info = component_uses.get(component);
-
- if (used_by_info === undefined) {
- used_by_info = {};
- component_uses.set(component, used_by_info);
- }
-
- if (used_by_info[prefix] === undefined)
- used_by_info[prefix] = new Set();
-
- used_by_info[prefix].add(item);
- }
- }
-
- function remove_use_info_by_item(prefix, item, components)
- {
- for (let component of components) {
- used_by_info = component_uses.get(component.join(""));
- if (used_by_info === undefined ||
- used_by_info[prefix] === undefined)
- return;
-
- used_by_info[prefix].delete(item);
- }
- }
-
- function build_reverse_uses_info(entries_it, type_prefix)
- {
- for (let [item, components] of storage.get_all_it(type_prefix))
- add_use_info_by_item(type_prefix, item, components);
- }
-
- function handle_change(change)
- {
- if (change.old_val !== undefined)
- remove_use_info_by_item(change.prefix, change.item, change.old_val);
-
- if (change.new_val !== undefined)
- add_use_info_by_item(change.prefix, change.item, change.new_val);
- }
-
- function get_uses(arg1, arg2=undefined)
- {
- let [prefix, item] = [arg1, arg2];
-
- if (arg2 === undefined)
- [prefix, item] = arg1;
-
- return component_uses.get(prefix + item);
- }
-
- async function init()
- {
- storage = await get_storage();
-
- prefixes = [TYPE_PREFIX.PAGE, TYPE_PREFIX.BAG];
- for (let prefix of prefixes)
- build_reverse_uses_info(prefix);
-
- storage.add_change_listener(handle_change, prefixes);
-
- return get_uses;
- }
-
- window.get_reverse_use_info = make_once(init);
-})();