UNPKG

one

Version:

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

75 lines (74 loc) • 2.58 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var closure_exports = {}; __export(closure_exports, { FORBIDDEN_EXPO_PATTERN_SOURCES: () => FORBIDDEN_EXPO_PATTERN_SOURCES, auditUnpackedManifest: () => auditUnpackedManifest, createResolutionRecorder: () => createResolutionRecorder, findForbiddenDependencies: () => findForbiddenDependencies, isForbiddenExpoSpecifier: () => isForbiddenExpoSpecifier }); module.exports = __toCommonJS(closure_exports); const FORBIDDEN_EXPO_PATTERN_SOURCES = [ "^expo$", "^expo-.*", "^@expo/.*", "^expo-modules-core$", "^@expo/config-plugins$", "^babel-preset-expo$" ]; const FORBIDDEN_EXPO_PATTERNS = FORBIDDEN_EXPO_PATTERN_SOURCES.map((source) => new RegExp(source)); function isForbiddenExpoSpecifier(specifier) { const bare = specifier.split("?")[0].split("#")[0]; const name = bare.startsWith("@") ? bare.split("/").slice(0, 2).join("/") : bare.split("/")[0]; return FORBIDDEN_EXPO_PATTERNS.some((pattern) => pattern.test(name)); } function findForbiddenDependencies(resolved) { const names = Array.isArray(resolved) ? resolved : Object.keys(resolved); return [...new Set(names.filter(isForbiddenExpoSpecifier))].sort(); } function auditUnpackedManifest(manifest) { return findForbiddenDependencies({ ...manifest.dependencies, ...manifest.devDependencies, ...manifest.peerDependencies }); } function createResolutionRecorder() { const events = []; return { record(specifier, importer) { if (isForbiddenExpoSpecifier(specifier)) { throw new Error(`[one] forbidden expo specifier resolves: "${specifier}"`); } if (specifier.includes("/expo/") || specifier.includes("expo-modules-core")) { throw new Error(`[one] forbidden expo source path resolves: "${specifier}"`); } events.push({ specifier, importer }); }, events() { return [...events]; } }; }