UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

80 lines (78 loc) • 2.75 kB
function isRecord(value) { return typeof value === "object" && value !== null && !Array.isArray(value); } function isAsset(value) { return isRecord(value) && typeof value.hash === "string" && typeof value.url === "string" && typeof value.path === "string"; } function isMetadataValue(value) { var type = typeof value; return type === "string" || type === "number" || type === "boolean"; } function parseUpdateManifest(json) { var parsed; try { parsed = JSON.parse(json); } catch (unused) { throw new Error("Updates: received a manifest that is not valid json."); } if (!isRecord(parsed) || typeof parsed.id !== "string" || typeof parsed.createdAt !== "string" || typeof parsed.runtimeVersion !== "string" || !isAsset(parsed.launchAsset) || !Array.isArray(parsed.assets) || !parsed.assets.every(isAsset) || !isRecord(parsed.metadata) || !Object.values(parsed.metadata).every(isMetadataValue) || Number.isNaN(Date.parse(parsed.createdAt))) { throw new Error("Updates: received a manifest with an unexpected shape."); } var assets = []; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0; try { for (var _iterator = parsed.assets[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var asset = _step.value; if (isAsset(asset)) assets.push(asset); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } var metadata = {}; var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0; try { for (var _iterator1 = Object.entries(parsed.metadata)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { var [key, value] = _step1.value; if (isMetadataValue(value)) metadata[key] = value; } } catch (err) { _didIteratorError1 = true; _iteratorError1 = err; } finally { try { if (!_iteratorNormalCompletion1 && _iterator1.return != null) { _iterator1.return(); } } finally { if (_didIteratorError1) { throw _iteratorError1; } } } return { id: parsed.id, createdAt: parsed.createdAt, runtimeVersion: parsed.runtimeVersion, launchAsset: parsed.launchAsset, assets, metadata }; } function assertStagedListener(listener) { if (typeof listener !== "function") { throw new Error("Updates.addStagedListener: listener must be a function."); } } export { assertStagedListener, parseUpdateManifest }; //# sourceMappingURL=validate.native.js.map