aboutsummaryrefslogtreecommitdiff
path: root/common/once.mjs
diff options
context:
space:
mode:
authorWojtek Kosior <wk@koszkonutek-tmp.pl.eu.org>2021-05-12 16:00:09 +0200
committerWojtek Kosior <wk@koszkonutek-tmp.pl.eu.org>2021-05-12 16:00:09 +0200
commit7f368d46ea06164da025c1ac4ed9a65ad23b25ef (patch)
treee5b740ebcb3cdc58e9c87f25556c20d8bfdccadd /common/once.mjs
parent89db6823fae5099816732c3cd2ba39700c1c4607 (diff)
downloadbrowser-extension-7f368d46ea06164da025c1ac4ed9a65ad23b25ef.tar.gz
browser-extension-7f368d46ea06164da025c1ac4ed9a65ad23b25ef.zip
stop using js modules
Diffstat (limited to 'common/once.mjs')
-rw-r--r--common/once.mjs42
1 files changed, 0 insertions, 42 deletions
diff --git a/common/once.mjs b/common/once.mjs
deleted file mode 100644
index 0f76366..0000000
--- a/common/once.mjs
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
-* Myext feature initialization promise
-*
-* Copyright (C) 2021 Wojtek Kosior
-*
-* Dual-licensed under:
-* - 0BSD license
-* - GPLv3 or (at your option) any later version
-*/
-
-"use strict";
-
-/*
- * This module provides an easy way to wrap an async function into a promise
- * so that it only gets executed once.
- */
-
-async function assign_result(state, result_producer)
-{
- state.result = await result_producer();
- state.ready = true;
- for (let cb of state.waiting)
- setTimeout(cb, 0, state.result);
- state.waiting = undefined;
-}
-
-async function get_result(state)
-{
- if (state.ready)
- return state.result;
-
- return new Promise((resolve, reject) => state.waiting.push(resolve));
-}
-
-export function make_once(result_producer)
-{
- let state = {waiting : [], ready : false, result : undefined};
- assign_result(state, result_producer);
- return () => get_result(state);
-}
-
-export default make_once;