the reminder not showing content on the card at dashboard view and the quizes are hardcoded must move to the db make api's for it
85 lines
2.6 KiB
JavaScript
85 lines
2.6 KiB
JavaScript
'use strict';
|
|
|
|
var GetIntrinsic = require('get-intrinsic');
|
|
var callBound = require('call-bound');
|
|
var inspect = require('object-inspect');
|
|
var getSideChannelMap = require('side-channel-map');
|
|
|
|
var $TypeError = require('es-errors/type');
|
|
var $WeakMap = GetIntrinsic('%WeakMap%', true);
|
|
|
|
/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */
|
|
var $weakMapGet = callBound('WeakMap.prototype.get', true);
|
|
/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */
|
|
var $weakMapSet = callBound('WeakMap.prototype.set', true);
|
|
/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */
|
|
var $weakMapHas = callBound('WeakMap.prototype.has', true);
|
|
/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */
|
|
var $weakMapDelete = callBound('WeakMap.prototype.delete', true);
|
|
|
|
/** @type {import('.')} */
|
|
module.exports = $WeakMap
|
|
? /** @type {Exclude<import('.'), false>} */ function getSideChannelWeakMap() {
|
|
/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel */
|
|
/** @typedef {Parameters<Channel['get']>[0]} K */
|
|
/** @typedef {Parameters<Channel['set']>[1]} V */
|
|
|
|
/** @type {WeakMap<K & object, V> | undefined} */ var $wm;
|
|
/** @type {Channel | undefined} */ var $m;
|
|
|
|
/** @type {Channel} */
|
|
var channel = {
|
|
assert: function (key) {
|
|
if (!channel.has(key)) {
|
|
throw new $TypeError('Side channel does not contain ' + inspect(key));
|
|
}
|
|
},
|
|
'delete': function (key) {
|
|
if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
|
|
if ($wm) {
|
|
return $weakMapDelete($wm, key);
|
|
}
|
|
} else if (getSideChannelMap) {
|
|
if ($m) {
|
|
return $m['delete'](key);
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
get: function (key) {
|
|
if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
|
|
if ($wm) {
|
|
return $weakMapGet($wm, key);
|
|
}
|
|
}
|
|
return $m && $m.get(key);
|
|
},
|
|
has: function (key) {
|
|
if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
|
|
if ($wm) {
|
|
return $weakMapHas($wm, key);
|
|
}
|
|
}
|
|
return !!$m && $m.has(key);
|
|
},
|
|
set: function (key, value) {
|
|
if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
|
|
if (!$wm) {
|
|
$wm = new $WeakMap();
|
|
}
|
|
$weakMapSet($wm, key, value);
|
|
} else if (getSideChannelMap) {
|
|
if (!$m) {
|
|
$m = getSideChannelMap();
|
|
}
|
|
// eslint-disable-next-line no-extra-parens
|
|
/** @type {NonNullable<typeof $m>} */ ($m).set(key, value);
|
|
}
|
|
}
|
|
};
|
|
|
|
// @ts-expect-error TODO: figure out why this is erroring
|
|
return channel;
|
|
}
|
|
: getSideChannelMap;
|