PHP 7.4.33
Preview: RAMBundleRegistry.cpp Size: 2.37 KB
/var/www/uibuilder.cmshelp.dk/httpdocs/node_modules/react-native/ReactCommon/cxxreact/RAMBundleRegistry.cpp
/*
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

#include "RAMBundleRegistry.h"

#include <folly/String.h>

#include <memory>

namespace facebook::react {

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated"
constexpr uint32_t RAMBundleRegistry::MAIN_BUNDLE_ID;
#pragma clang diagnostic pop

std::unique_ptr<RAMBundleRegistry> RAMBundleRegistry::singleBundleRegistry(
    std::unique_ptr<JSModulesUnbundle> mainBundle) {
  return std::make_unique<RAMBundleRegistry>(std::move(mainBundle));
}

std::unique_ptr<RAMBundleRegistry> RAMBundleRegistry::multipleBundlesRegistry(
    std::unique_ptr<JSModulesUnbundle> mainBundle,
    std::function<std::unique_ptr<JSModulesUnbundle>(std::string)> factory) {
  return std::make_unique<RAMBundleRegistry>(
      std::move(mainBundle), std::move(factory));
}

RAMBundleRegistry::RAMBundleRegistry(
    std::unique_ptr<JSModulesUnbundle> mainBundle,
    std::function<std::unique_ptr<JSModulesUnbundle>(std::string)> factory)
    : m_factory(std::move(factory)) {
  m_bundles.emplace(MAIN_BUNDLE_ID, std::move(mainBundle));
}

void RAMBundleRegistry::registerBundle(
    uint32_t bundleId,
    std::string bundlePath) {
  m_bundlePaths.emplace(bundleId, std::move(bundlePath));
}

JSModulesUnbundle::Module RAMBundleRegistry::getModule(
    uint32_t bundleId,
    uint32_t moduleId) {
  if (m_bundles.find(bundleId) == m_bundles.end()) {
    if (!m_factory) {
      throw std::runtime_error(
          "You need to register factory function in order to "
          "support multiple RAM bundles.");
    }

    auto bundlePath = m_bundlePaths.find(bundleId);
    if (bundlePath == m_bundlePaths.end()) {
      throw std::runtime_error(
          "In order to fetch RAM bundle from the registry, its file "
          "path needs to be registered first.");
    }
    m_bundles.emplace(bundleId, m_factory(bundlePath->second));
  }

  auto module = getBundle(bundleId)->getModule(moduleId);
  if (bundleId == MAIN_BUNDLE_ID) {
    return module;
  }
  return {
      folly::to<std::string>("seg-", bundleId, '_', std::move(module.name)),
      std::move(module.code),
  };
}

JSModulesUnbundle* RAMBundleRegistry::getBundle(uint32_t bundleId) const {
  return m_bundles.at(bundleId).get();
}

} // namespace facebook::react

Directory Contents

Dirs: 1 × Files: 40
Name Size Perms Modified Actions
tests DIR
- drwxr-xr-x 2025-03-28 11:04:39
Edit Download
801 B lrw-r--r-- 2025-03-28 11:04:43
Edit Download
7.28 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
7.83 KB lrw-r--r-- 2025-03-28 11:04:39
Edit Download
1.90 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
1.42 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
12.30 KB lrw-r--r-- 2025-03-28 11:04:39
Edit Download
6.16 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
2.98 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
4.39 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
3.18 KB lrw-r--r-- 2025-03-28 11:04:39
Edit Download
3.22 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
1018 B lrw-r--r-- 2025-03-28 11:04:39
Edit Download
1.75 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
1006 B lrw-r--r-- 2025-03-28 11:04:39
Edit Download
4.40 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
4.01 KB lrw-r--r-- 2025-03-28 11:04:39
Edit Download
1.91 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
1.15 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
760 B lrw-r--r-- 2025-03-28 11:04:41
Edit Download
2.42 KB lrw-r--r-- 2025-03-28 11:04:39
Edit Download
715 B lrw-r--r-- 2025-03-28 11:04:41
Edit Download
7.53 KB lrw-r--r-- 2025-03-28 11:04:39
Edit Download
2.70 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
4.33 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
1.09 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
11.58 KB lrw-r--r-- 2025-03-28 11:04:39
Edit Download
4.14 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
552 B lrw-r--r-- 2025-03-28 11:04:43
Edit Download
2.37 KB lrw-r--r-- 2025-03-28 11:04:39
Edit Download
1.63 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
2.64 KB lrw-r--r-- 2025-03-28 11:04:43
Edit Download
3.50 KB lrw-r--r-- 2025-03-28 11:04:39
Edit Download
3.14 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
503 B lrw-r--r-- 2025-03-28 11:04:41
Edit Download
1.09 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
4.67 KB lrw-r--r-- 2025-03-28 11:04:39
Edit Download
1.38 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
1.07 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
789 B lrw-r--r-- 2025-03-28 11:04:41
Edit Download
5.11 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).