This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
8.4 KiB
177 lines
8.4 KiB
'use strict'; |
|
|
|
/* globals |
|
Set, |
|
Map, |
|
WeakSet, |
|
WeakMap, |
|
|
|
Promise, |
|
|
|
Symbol, |
|
Proxy, |
|
|
|
Atomics, |
|
SharedArrayBuffer, |
|
|
|
ArrayBuffer, |
|
DataView, |
|
Uint8Array, |
|
Float32Array, |
|
Float64Array, |
|
Int8Array, |
|
Int16Array, |
|
Int32Array, |
|
Uint8ClampedArray, |
|
Uint16Array, |
|
Uint32Array, |
|
*/ |
|
|
|
var undefined; // eslint-disable-line no-shadow-restricted-names |
|
|
|
var ThrowTypeError = Object.getOwnPropertyDescriptor |
|
? (function () { return Object.getOwnPropertyDescriptor(arguments, 'callee').get; }()) |
|
: function () { throw new TypeError(); }; |
|
|
|
var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'; |
|
|
|
var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto |
|
|
|
var generator; // = function * () {}; |
|
var generatorFunction = generator ? getProto(generator) : undefined; |
|
var asyncFn; // async function() {}; |
|
var asyncFunction = asyncFn ? asyncFn.constructor : undefined; |
|
var asyncGen; // async function * () {}; |
|
var asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined; |
|
var asyncGenIterator = asyncGen ? asyncGen() : undefined; |
|
|
|
var TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array); |
|
|
|
var INTRINSICS = { |
|
'$ %Array%': Array, |
|
'$ %ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, |
|
'$ %ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype, |
|
'$ %ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined, |
|
'$ %ArrayPrototype%': Array.prototype, |
|
'$ %ArrayProto_entries%': Array.prototype.entries, |
|
'$ %ArrayProto_forEach%': Array.prototype.forEach, |
|
'$ %ArrayProto_keys%': Array.prototype.keys, |
|
'$ %ArrayProto_values%': Array.prototype.values, |
|
'$ %AsyncFromSyncIteratorPrototype%': undefined, |
|
'$ %AsyncFunction%': asyncFunction, |
|
'$ %AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined, |
|
'$ %AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined, |
|
'$ %AsyncGeneratorFunction%': asyncGenFunction, |
|
'$ %AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined, |
|
'$ %AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined, |
|
'$ %Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, |
|
'$ %Boolean%': Boolean, |
|
'$ %BooleanPrototype%': Boolean.prototype, |
|
'$ %DataView%': typeof DataView === 'undefined' ? undefined : DataView, |
|
'$ %DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype, |
|
'$ %Date%': Date, |
|
'$ %DatePrototype%': Date.prototype, |
|
'$ %decodeURI%': decodeURI, |
|
'$ %decodeURIComponent%': decodeURIComponent, |
|
'$ %encodeURI%': encodeURI, |
|
'$ %encodeURIComponent%': encodeURIComponent, |
|
'$ %Error%': Error, |
|
'$ %ErrorPrototype%': Error.prototype, |
|
'$ %eval%': eval, // eslint-disable-line no-eval |
|
'$ %EvalError%': EvalError, |
|
'$ %EvalErrorPrototype%': EvalError.prototype, |
|
'$ %Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, |
|
'$ %Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype, |
|
'$ %Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, |
|
'$ %Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype, |
|
'$ %Function%': Function, |
|
'$ %FunctionPrototype%': Function.prototype, |
|
'$ %Generator%': generator ? getProto(generator()) : undefined, |
|
'$ %GeneratorFunction%': generatorFunction, |
|
'$ %GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined, |
|
'$ %Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array, |
|
'$ %Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype, |
|
'$ %Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array, |
|
'$ %Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype, |
|
'$ %Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, |
|
'$ %Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype, |
|
'$ %isFinite%': isFinite, |
|
'$ %isNaN%': isNaN, |
|
'$ %IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined, |
|
'$ %JSON%': JSON, |
|
'$ %JSONParse%': JSON.parse, |
|
'$ %Map%': typeof Map === 'undefined' ? undefined : Map, |
|
'$ %MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()), |
|
'$ %MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype, |
|
'$ %Math%': Math, |
|
'$ %Number%': Number, |
|
'$ %NumberPrototype%': Number.prototype, |
|
'$ %Object%': Object, |
|
'$ %ObjectPrototype%': Object.prototype, |
|
'$ %ObjProto_toString%': Object.prototype.toString, |
|
'$ %ObjProto_valueOf%': Object.prototype.valueOf, |
|
'$ %parseFloat%': parseFloat, |
|
'$ %parseInt%': parseInt, |
|
'$ %Promise%': typeof Promise === 'undefined' ? undefined : Promise, |
|
'$ %PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype, |
|
'$ %PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then, |
|
'$ %Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all, |
|
'$ %Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject, |
|
'$ %Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve, |
|
'$ %Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, |
|
'$ %RangeError%': RangeError, |
|
'$ %RangeErrorPrototype%': RangeError.prototype, |
|
'$ %ReferenceError%': ReferenceError, |
|
'$ %ReferenceErrorPrototype%': ReferenceError.prototype, |
|
'$ %Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, |
|
'$ %RegExp%': RegExp, |
|
'$ %RegExpPrototype%': RegExp.prototype, |
|
'$ %Set%': typeof Set === 'undefined' ? undefined : Set, |
|
'$ %SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()), |
|
'$ %SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype, |
|
'$ %SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, |
|
'$ %SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype, |
|
'$ %String%': String, |
|
'$ %StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined, |
|
'$ %StringPrototype%': String.prototype, |
|
'$ %Symbol%': hasSymbols ? Symbol : undefined, |
|
'$ %SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined, |
|
'$ %SyntaxError%': SyntaxError, |
|
'$ %SyntaxErrorPrototype%': SyntaxError.prototype, |
|
'$ %ThrowTypeError%': ThrowTypeError, |
|
'$ %TypedArray%': TypedArray, |
|
'$ %TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined, |
|
'$ %TypeError%': TypeError, |
|
'$ %TypeErrorPrototype%': TypeError.prototype, |
|
'$ %Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array, |
|
'$ %Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype, |
|
'$ %Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, |
|
'$ %Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype, |
|
'$ %Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, |
|
'$ %Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype, |
|
'$ %Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, |
|
'$ %Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype, |
|
'$ %URIError%': URIError, |
|
'$ %URIErrorPrototype%': URIError.prototype, |
|
'$ %WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, |
|
'$ %WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype, |
|
'$ %WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet, |
|
'$ %WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype |
|
}; |
|
|
|
module.exports = function GetIntrinsic(name, allowMissing) { |
|
if (arguments.length > 1 && typeof allowMissing !== 'boolean') { |
|
throw new TypeError('"allowMissing" argument must be a boolean'); |
|
} |
|
|
|
var key = '$ ' + name; |
|
if (!(key in INTRINSICS)) { |
|
throw new SyntaxError('intrinsic ' + name + ' does not exist!'); |
|
} |
|
|
|
// istanbul ignore if // hopefully this is impossible to test :-) |
|
if (typeof INTRINSICS[key] === 'undefined' && !allowMissing) { |
|
throw new TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); |
|
} |
|
return INTRINSICS[key]; |
|
};
|
|
|