UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

166 lines (164 loc) 5.47 kB
"use strict"; 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 injectRouteHelpers_exports = {}; __export(injectRouteHelpers_exports, { injectRouteHelpers: () => injectRouteHelpers }); module.exports = __toCommonJS(injectRouteHelpers_exports); var import_fs = require("fs"); var import_promises = require("fs/promises"); async function injectRouteHelpers(filePath, routePath, mode) { if (!(0, import_fs.existsSync)(filePath)) { return false; } try { var content = await (0, import_promises.readFile)(filePath, "utf-8"); var modified = false; var hasTypeRoute = /^type\s+Route\s*=/m.test(content); var hasConstRoute = /^const\s+route\s*=/m.test(content); if (mode === "runtime" && !hasConstRoute) { var { updatedContent } = addCreateRouteImport(content); content = updatedContent; var routeDeclaration = `const route = createRoute<'${routePath}'>()`; content = insertAfterImports(content, routeDeclaration); modified = true; } if (mode === "type" && !hasTypeRoute) { var { updatedContent: updatedContent1 } = addRouteTypeImport(content); content = updatedContent1; var typeDeclaration = `type Route = RouteType<'${routePath}'>`; content = insertAfterImports(content, typeDeclaration); modified = true; } if (modified) { await (0, import_promises.writeFile)(filePath, content, "utf-8"); return true; } return false; } catch (error) { console.error(`Failed to inject route helpers into ${filePath}:`, error); return false; } } function addCreateRouteImport(content) { if (/import\s+[^'"]*createRoute[^'"]*from\s+['"]one['"]/m.test(content)) { return { updatedContent: content, importAdded: false }; } var oneImportRegex = /import\s+{([^}]*)}\s+from\s+['"]one['"]/m; var match = content.match(oneImportRegex); if (match) { var existingImports = match[1].trim(); var newImports = existingImports ? `${existingImports}, createRoute` : "createRoute"; var updatedContent = content.replace(oneImportRegex, `import { ${newImports} } from 'one'`); return { updatedContent, importAdded: true }; } var lastImportIndex = findLastImportIndex(content); if (lastImportIndex >= 0) { var lines = content.split("\n"); lines.splice(lastImportIndex + 1, 0, `import { createRoute } from 'one'`); return { updatedContent: lines.join("\n"), importAdded: true }; } var newImport = `import { createRoute } from 'one' `; return { updatedContent: newImport + content, importAdded: true }; } function addRouteTypeImport(content) { if (/import\s+type\s+[^'"]*RouteType[^'"]*from\s+['"]one['"]/m.test(content)) { return { updatedContent: content, importAdded: false }; } var oneTypeImportRegex = /import\s+type\s+{([^}]*)}\s+from\s+['"]one['"]/m; var match = content.match(oneTypeImportRegex); if (match) { var existingImports = match[1].trim(); var newImports = existingImports ? `${existingImports}, RouteType` : "RouteType"; var updatedContent = content.replace(oneTypeImportRegex, `import type { ${newImports} } from 'one'`); return { updatedContent, importAdded: true }; } var lastImportIndex = findLastImportIndex(content); if (lastImportIndex >= 0) { var lines = content.split("\n"); lines.splice(lastImportIndex + 1, 0, `import type { RouteType } from 'one'`); return { updatedContent: lines.join("\n"), importAdded: true }; } var newImport = `import type { RouteType } from 'one' `; return { updatedContent: newImport + content, importAdded: true }; } function findLastImportIndex(content) { var lines = content.split("\n"); var lastImportIndex = -1; for (var i = 0; i < lines.length; i++) { var line = lines[i].trim(); if (line.startsWith("import ") || lastImportIndex >= 0 && (line.startsWith("from ") || line === "}")) { lastImportIndex = i; } else if (lastImportIndex >= 0 && line && !line.startsWith("//")) { break; } } return lastImportIndex; } function insertAfterImports(content, codeToInsert) { var lines = content.split("\n"); var lastImportIndex = findLastImportIndex(content); if (lastImportIndex >= 0) { var nextLine = lines[lastImportIndex + 1]; var hasBlankLine = nextLine === ""; if (hasBlankLine) { lines.splice(lastImportIndex + 2, 0, codeToInsert, ""); } else { lines.splice(lastImportIndex + 1, 0, "", codeToInsert, ""); } return lines.join("\n"); } return codeToInsert + "\n\n" + content; } //# sourceMappingURL=injectRouteHelpers.native.js.map