npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@vovkasm/jsc-android

v0.0.2

Published

Pre-build version of JavaScriptCore to be used by React Native apps

Downloads

3

Readme

Differences with jsc-android-buildscripts

Current version is 0.0.1, it is unstable and work-in-progress

  • ICU and Webkit sources forked and embedded in repo
    • ICU 71.1 official distr
    • WebKit 7615.1.7.1 (tag: WebKit-7615.1.7.1, or canonical: [email protected])
  • All sources built with -Oz and LTO
  • DFG JIT enabled
  • It use static libc++ and expose only C API, it makes used NDK maximally independed from other components. So please use latest NDK, if possible (tested with NDK 25.1.8937393).

Install

android/build.gradle

  maven {
      // Android JSC is installed from npm
      // Replace this:
      // url("$rootDir/../node_modules/jsc-android/dist")
      // to:
      url("$rootDir/../node_modules/@vovkasm/jsc-android/dist")
  }

  ...

  mavenCentral {
      // We don't want to fetch react-native from Maven Central as there are
      // older versions over there.
      content {
          excludeGroup "com.facebook.react"
          excludeGroup "org.webkit" // <--- add this line
      }
  }

android/app/build.gradle

    if (enableHermes) {
        //noinspection GradleDynamicVersion
        implementation("com.facebook.react:hermes-engine:+") { // From node_modules
            exclude group:'com.facebook.fbjni'
        }
    } else {
      //noinspection GradleDynamicVersion
        implementation 'org.webkit:android-jsc:+' // <--- use this!
    }

android/app/src/main/java/.../MainApplication.java

import org.webkit.androidjsc.JscManager; // <--- add this line

  public void onCreate() {
    super.onCreate();
    JscManager.init(this.getAssets()); // <--- add this line
    // If you opted-in for the New Architecture, we enable the TurboModule system
    ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
    SoLoader.init(this, /* native exopackage */ false);
  }

Building from source

Define ANDROID_NDK_HOME env var.

npm run clean
npm run native
npm run dist

Update Webkit

  1. Clone webkit repo
  2. Switch to required branch
  3. From jsc-android root directory: ./import-webkit.sh <path-to-webkit>
  4. (may be hard) Reapply all patches
  • git format-patch, then git am, or maybe rebase/cherry-pick