UNPKG

smartfacecloud-emulator-dispatcher

Version:

Handles Emulator Dispatcher Part of SmartfaceCloud

112 lines (94 loc) 2.59 kB
const path = require('path'); function findScriptFilePath(basePath, options) { return path.join(basePath, options.fileName); } function findImageFilePath(basePath, options) { if (options.params && options.params.path) return path.join(basePath, options.params.path); else if (options.params && options.params.density) basePath = path.join(basePath, options.params.density); return path.join(basePath, options.fileName); } function findAssetFilePath(basePath, options) { return path.join(basePath, options.fileName); } function findFontFilePath(basePath, options) { return path.join(basePath, options.fileName); } function findConfigFilePath(basePath, options) { return path.join(basePath, options.fileName); } function parseURI(uri) { var uriParts = /^(.*)\:\/\/(.*)/.exec(uri); if (!uriParts || uriParts.length < 3) return null; var parsedUri = { schema: uriParts[1] }; if (uriParts[2].indexOf('?') > -1) { uriParts = /^(.*)\?(.*)/.exec(uriParts[2]); parsedUri.fileName = uriParts[1]; if (uriParts[2].indexOf('=') > -1) { parsedUri.params = {}; var optionsStr = uriParts[2].split('&'); for (var i = 0; i < optionsStr.length; i++) { var parts = optionsStr[i].split("="); if (!parts || parts.length < 2) { parsedUri.params[parts[0]] = true; } else { parsedUri.params[parts[0]] = parts[1]; } } } } else { parsedUri.fileName = uriParts[2]; } return parsedUri; } function parse(file, isIOS) { var parsedUri = parseURI(file); var schema = parsedUri.schema; var fileName = parsedUri.fileName; var result; switch (true) { case schema === "font": case isIOS && schema === "image": fileName = path.basename(fileName); result = { fileName: fileName, fileNameWithSchema: schema + "://" + fileName }; break; default: result = { fileName: fileName, fileNameWithSchema: file }; } return result; } function findFilePath(basePaths, file) { var parsedUri = parseURI(file); switch (parsedUri.schema) { case "script": return findScriptFilePath(basePaths.scripts, parsedUri); case "image": return findImageFilePath(basePaths.images, parsedUri); case "asset": return findAssetFilePath(basePaths.assets, parsedUri); case "font": return findFontFilePath(basePaths.fonts, parsedUri); case "config": return findConfigFilePath(basePaths.config, parsedUri); } } function generateURI(parsedUri) { return parsedUri.schema + "://" + parsedUri.fileName; } module.exports = { parse: parse, generateURI: generateURI, findFilePath: findFilePath };