UNPKG

one

Version:

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

86 lines (83 loc) • 4.76 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 kotlinSourceModule_exports = {}; __export(kotlinSourceModule_exports, { renderKotlinSourceModule: () => renderKotlinSourceModule }); module.exports = __toCommonJS(kotlinSourceModule_exports); var import_fs = require("fs"); var import_module = require("module"); var import_path = require("path"); var import_nativeSourceWires = require("./nativeSourceWires.native.js"); function renderKotlinSourceModule(id, platform, root) { var _app_dependencies, _app_devDependencies; if (platform !== "android") { throw new Error(`[one] ${id} is Kotlin source and cannot be imported into an iOS build; use an .ios.ts entry`); } var appManifest = (0, import_path.join)(root, "package.json"); var app = (0, import_fs.existsSync)(appManifest) ? JSON.parse((0, import_fs.readFileSync)(appManifest, "utf8")) : {}; var requireFromFile = (0, import_module.createRequire)(id); var { kotlinSourceId, renderKotlinSourceGlue, writeNativeSourceDeclaration } = requireFromFile("vxrn/native-source-contract"); var contract = writeNativeSourceDeclaration(id); var sourceId = kotlinSourceId(root, id); if (Object.hasOwn((_app_dependencies = app.dependencies) !== null && _app_dependencies !== void 0 ? _app_dependencies : {}, "expo") || Object.hasOwn((_app_devDependencies = app.devDependencies) !== null && _app_devDependencies !== void 0 ? _app_devDependencies : {}, "expo")) { if (!(0, import_fs.existsSync)((0, import_path.join)(root, "android", "app", "src", "main", "java", "one", "source", sourceId))) { throw new Error(`[one] ${id} needs one prebuild, or Expo prebuild with nativeSource enabled in the vxrn config plugin and android generated`); } } var hash = renderKotlinSourceGlue(sourceId, contract).hash; var oneRoot = (0, import_path.dirname)(requireFromFile.resolve("one/package.json")); var nativeSource = (0, import_path.join)(oneRoot, "dist/esm/platform/native-source/index.native.js"); var wireModule = (0, import_path.join)(oneRoot, "dist/esm/platform/native-source/wire.native.js"); var eventsModule = (0, import_path.join)(oneRoot, "dist/esm/platform/native-source/events.native.js"); var needsWire = contract.modules.some(function(module2) { return module2.methods.some(import_nativeSourceWires.methodWired); }); var needsEvents = contract.modules.some(function(module2) { return module2.methods.some(import_nativeSourceWires.methodSubscribed); }); var exports = contract.modules.map(function(module2) { return `export const ${module2.name} = Object.freeze({${module2.methods.map(function(method) { return (0, import_nativeSourceWires.renderMethodCall)(`${sourceId}.${module2.name}`, method, hash); }).join(",")}})`; }).join("\n"); var viewHost = (0, import_path.join)(oneRoot, "dist/esm/platform/native-source/view.native.js"); var views = contract.views.map(function(view) { return `export function ${view.name}(props) { return createElement(KotlinSourceView, { source: ${JSON.stringify(sourceId)}, view: ${JSON.stringify(view.name)}, contractHash: ${JSON.stringify(hash)}, props${(0, import_nativeSourceWires.renderViewWires)(view, contract.structs)} }) }`; }).join("\n"); if (!exports && !views) { throw new Error(`[one] ${id} has no OneModule object or public @Composable function to import`); } var code = [ exports && `import { callNativeSource } from ${JSON.stringify(nativeSource)}`, needsWire && `import { encodeNativeSourceArgs, decodeNativeSourceResult } from ${JSON.stringify(wireModule)}`, needsEvents && `import { subscribeNativeSourceEvent } from ${JSON.stringify(eventsModule)}`, (needsWire || needsEvents) && `const nativeSourceStructs = ${JSON.stringify((0, import_nativeSourceWires.toNativeSourceStructs)(contract.structs))}`, views && `import { createElement } from 'react' import { KotlinSourceView } from ${JSON.stringify(viewHost)}`, exports, views ].filter(Boolean).join("\n") + "\n"; return { code, watchFiles: [id] }; } //# sourceMappingURL=kotlinSourceModule.native.js.map