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.
128 lines
4.6 KiB
128 lines
4.6 KiB
'use strict'; |
|
|
|
Object.defineProperty(exports, "__esModule", { |
|
value: true |
|
}); |
|
|
|
var _constants; |
|
|
|
function _load_constants() { |
|
return _constants = _interopRequireDefault(require('./constants')); |
|
} |
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
|
|
|
const EMPTY_MAP = {}; /** |
|
* Copyright (c) 2014-present, Facebook, Inc. All rights reserved. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
* |
|
* |
|
*/ |
|
|
|
class ModuleMap { |
|
|
|
constructor(raw) { |
|
this._raw = raw; |
|
} |
|
|
|
getModule(name, platform, supportsNativePlatform, type) { |
|
if (!type) { |
|
type = (_constants || _load_constants()).default.MODULE; |
|
} |
|
const module = this._getModuleMetadata(name, platform, !!supportsNativePlatform); |
|
if (module && module[(_constants || _load_constants()).default.TYPE] === type) { |
|
return module[(_constants || _load_constants()).default.PATH]; |
|
} |
|
return null; |
|
} |
|
|
|
getPackage(name, platform, supportsNativePlatform) { |
|
return this.getModule(name, platform, null, (_constants || _load_constants()).default.PACKAGE); |
|
} |
|
|
|
getMockModule(name) { |
|
return this._raw.mocks[name]; |
|
} |
|
|
|
getRawModuleMap() { |
|
return { |
|
duplicates: this._raw.duplicates, |
|
map: this._raw.map, |
|
mocks: this._raw.mocks |
|
}; |
|
} |
|
|
|
/** |
|
* When looking up a module's data, we walk through each eligible platform for |
|
* the query. For each platform, we want to check if there are known |
|
* duplicates for that name+platform pair. The duplication logic normally |
|
* removes elements from the `map` object, but we want to check upfront to be |
|
* extra sure. If metadata exists both in the `duplicates` object and the |
|
* `map`, this would be a bug. |
|
*/ |
|
_getModuleMetadata(name, platform, supportsNativePlatform) { |
|
const map = this._raw.map[name] || EMPTY_MAP; |
|
const dupMap = this._raw.duplicates[name] || EMPTY_MAP; |
|
if (platform != null) { |
|
this._assertNoDuplicates(name, platform, supportsNativePlatform, dupMap[platform]); |
|
if (map[platform] != null) { |
|
return map[platform]; |
|
} |
|
} |
|
if (supportsNativePlatform) { |
|
this._assertNoDuplicates(name, (_constants || _load_constants()).default.NATIVE_PLATFORM, supportsNativePlatform, dupMap[(_constants || _load_constants()).default.NATIVE_PLATFORM]); |
|
if (map[(_constants || _load_constants()).default.NATIVE_PLATFORM]) { |
|
return map[(_constants || _load_constants()).default.NATIVE_PLATFORM]; |
|
} |
|
} |
|
this._assertNoDuplicates(name, (_constants || _load_constants()).default.GENERIC_PLATFORM, supportsNativePlatform, dupMap[(_constants || _load_constants()).default.GENERIC_PLATFORM]); |
|
if (map[(_constants || _load_constants()).default.GENERIC_PLATFORM]) { |
|
return map[(_constants || _load_constants()).default.GENERIC_PLATFORM]; |
|
} |
|
return null; |
|
} |
|
|
|
_assertNoDuplicates(name, platform, supportsNativePlatform, set) { |
|
if (set == null) { |
|
return; |
|
} |
|
throw new DuplicateHasteCandidatesError(name, platform, supportsNativePlatform, set); |
|
} |
|
} |
|
|
|
exports.default = ModuleMap; |
|
class DuplicateHasteCandidatesError extends Error { |
|
|
|
constructor(name, platform, supportsNativePlatform, duplicatesSet) { |
|
const platformMessage = getPlatformMessage(platform); |
|
super(`The name \`${name}\` was looked up in the Haste module map. It ` + `cannot be resolved, because there exists several different ` + `files, or packages, that provide a module for ` + `that particular name and platform. ${platformMessage} You must ` + `delete or blacklist files until there remains only one of these:\n\n` + Object.keys(duplicatesSet).sort().map(dupFilePath => { |
|
const typeMessage = getTypeMessage(duplicatesSet[dupFilePath]); |
|
return ` * \`${dupFilePath}\` (${typeMessage})\n`; |
|
}).join('')); |
|
this.hasteName = name; |
|
this.platform = platform; |
|
this.supportsNativePlatform = supportsNativePlatform; |
|
this.duplicatesSet = duplicatesSet; |
|
} |
|
} |
|
|
|
function getPlatformMessage(platform) { |
|
if (platform === (_constants || _load_constants()).default.GENERIC_PLATFORM) { |
|
return 'The platform is generic (no extension).'; |
|
} |
|
return `The platform extension is \`${platform}\`.`; |
|
} |
|
|
|
function getTypeMessage(type) { |
|
switch (type) { |
|
case (_constants || _load_constants()).default.MODULE: |
|
return 'module'; |
|
case (_constants || _load_constants()).default.PACKAGE: |
|
return 'package'; |
|
} |
|
return 'unknown'; |
|
} |
|
|
|
ModuleMap.DuplicateHasteCandidatesError = DuplicateHasteCandidatesError; |