one
Version:
One is a React framework for web, iOS, and Android apps.
98 lines (95 loc) • 5.46 kB
JavaScript
;
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 swiftPackageModule_exports = {};
__export(swiftPackageModule_exports, { renderSwiftPackageModule: () => renderSwiftPackageModule });
module.exports = __toCommonJS(swiftPackageModule_exports);
var import_fs = require("fs");
var import_module = require("module");
var import_path = require("path");
var import_swift_package_id = require("vxrn/swift-package-id");
var import_nativeSourceWires = require("./nativeSourceWires.native.js");
function renderSwiftPackageModule(id, platform, root) {
var _app_dependencies, _app_devDependencies;
if (platform !== "ios") {
throw new Error(`[one] ${id} is Swift source and cannot be imported into an Android build; use an .android.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 packageDir = (0, import_swift_package_id.swiftPackageDirOf)(id);
if (!packageDir) {
throw new Error(`[one] ${id} is not inside a swift package (no Package.swift above it)`);
}
var packageName = (0, import_swift_package_id.swiftPackageId)(packageDir);
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")) {
var podspec = (0, import_path.join)(root, "ios", "OneSwiftPackages", packageName, `${packageName}.podspec`);
if (!(0, import_fs.existsSync)(podspec)) {
throw new Error(`[one] ${id} needs one prebuild, or Expo prebuild with nativeSource enabled in the vxrn config plugin and ios generated`);
}
}
var requireFromFile = (0, import_module.createRequire)(id);
var { writeNativeSourceDeclaration, writeSwiftPackageArtifacts } = requireFromFile("vxrn/native-source-contract");
var contract = writeNativeSourceDeclaration(id);
var artifacts = writeSwiftPackageArtifacts(packageDir);
var hash = artifacts.hash;
var watchFiles = Object.keys(artifacts.files).map(function(file) {
return (0, import_path.join)(packageDir, file);
});
var fill = /@main\s+struct\s+\w+\s*:\s*(SwiftUI\.)?App\b/.test((0, import_fs.readFileSync)(id, "utf8"));
var oneRoot = (0, import_path.dirname)(requireFromFile.resolve("one/package.json"));
var swiftHost = (0, import_path.join)(oneRoot, "dist/esm/platform/swift/index.native.js");
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 structs = needsWire || needsEvents ? `
const nativeSourceStructs = ${JSON.stringify((0, import_nativeSourceWires.toNativeSourceStructs)(contract.structs))}
` : "";
var exports = contract.modules.map(function(module2) {
return `export const ${module2.name} = Object.freeze({${module2.methods.map(function(method) {
return (0, import_nativeSourceWires.renderMethodCall)(`${packageName}.${module2.name}`, method, hash);
}).join(",")}})`;
}).join("\n");
var views = contract.views.map(function(view) {
return `export function ${view.name}(props) { return createElement(SwiftPackageView, { packageName: ${JSON.stringify(packageName)}, view: ${JSON.stringify(view.name)}, contractHash: ${JSON.stringify(hash)}, props, fill: false${(0, import_nativeSourceWires.renderViewWires)(view, contract.structs)} }) }`;
}).join("\n");
var code = `${contract.modules.length > 0 ? `import { callNativeSource } from ${JSON.stringify(nativeSource)}
` : ""}${needsWire ? `import { encodeNativeSourceArgs, decodeNativeSourceResult } from ${JSON.stringify(wireModule)}
` : ""}${needsEvents ? `import { subscribeNativeSourceEvent } from ${JSON.stringify(eventsModule)}
` : ""}${contract.defaultView || views ? `import { createElement } from 'react'
import { SwiftPackageView } from ${JSON.stringify(swiftHost)}
` : ""}${structs}${contract.defaultView ? `export default function SwiftPackage(props) {
return createElement(SwiftPackageView, { packageName: ${JSON.stringify(packageName)}, view: '', contractHash: '', props, fill: ${fill} })
}
` : ""}${exports}
${views}
`;
return {
code,
watchFiles
};
}
//# sourceMappingURL=swiftPackageModule.native.js.map