react-native-ariel 0.1.0-dev.5 → 0.1.0-dev.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/Ariel.podspec +2 -2
  2. package/README.md +74 -98
  3. package/android/build.gradle +11 -9
  4. package/android/generated/{android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs → java/com/ariel}/NativeArielSpec.java +1 -1
  5. package/android/generated/{android/app/build/generated/source/codegen/jni → jni}/CMakeLists.txt +9 -1
  6. package/android/generated/jni/react/renderer/components/ArielSpec/ArielSpecJSI-generated.cpp +32 -0
  7. package/android/generated/jni/react/renderer/components/ArielSpec/ArielSpecJSI.h +80 -0
  8. package/android/proguard-rules.pro +4 -0
  9. package/android/src/main/java/com/ariel/ArielModule.kt +11 -1
  10. package/cpp/generated/mermaid_wrapper.cpp +2369 -0
  11. package/cpp/generated/mermaid_wrapper.hpp +77 -0
  12. package/cpp/mermaid_wrapper.cpp +1 -0
  13. package/ios/generated/ArielSpecJSI-generated.cpp +32 -0
  14. package/ios/generated/ArielSpecJSI.h +80 -0
  15. package/lib/module/generated/web/wasm-bindgen/react_native_ariel.d.ts +202 -0
  16. package/lib/module/generated/web/wasm-bindgen/react_native_ariel.js +579 -0
  17. package/lib/module/generated/web/wasm-bindgen/react_native_ariel_bg.wasm +0 -0
  18. package/lib/module/generated/web/wasm-bindgen/react_native_ariel_bg.wasm.d.ts +116 -0
  19. package/lib/module/index.web.js +4 -6
  20. package/lib/module/index.web.js.map +1 -2
  21. package/package.json +31 -25
  22. package/react-native.config.js +0 -1
  23. package/android/CMakeLists.txt +0 -79
  24. package/android/generated/android/app/build/generated/source/codegen/jni/react/renderer/components/ArielSpec/ArielSpecJSI.h +0 -45
  25. package/ios/generated/build/generated/ios/ReactCodegen/ArielSpecJSI.h +0 -45
  26. package/lib/typescript/src/index.web.d.ts +0 -8
  27. package/lib/typescript/src/index.web.d.ts.map +0 -1
  28. package/src/generated/web/wasm-bindgen/package.json +0 -15
  29. /package/android/generated/{android/app/build/generated/source/codegen/jni → jni}/ArielSpec-generated.cpp +0 -0
  30. /package/android/generated/{android/app/build/generated/source/codegen/jni → jni}/ArielSpec.h +0 -0
  31. /package/ios/generated/{build/generated/ios/ReactCodegen/ArielSpec → ArielSpec}/ArielSpec-generated.mm +0 -0
  32. /package/ios/generated/{build/generated/ios/ReactCodegen/ArielSpec → ArielSpec}/ArielSpec.h +0 -0
@@ -3,6 +3,10 @@
3
3
  // Generated by uniffi-bindgen-react-native
4
4
  // Export the generated bindings to the app.
5
5
  export * from "./generated/web/mermaid_wrapper.js";
6
+
7
+ // Now import the bindings so we can:
8
+ // - intialize them
9
+ // - export them as namespaced objects as the default export.
6
10
  import * as mermaid_wrapper from "./generated/web/mermaid_wrapper.js";
7
11
  import initAsync from './generated/web/wasm-bindgen/react_native_ariel.js';
8
12
  import wasmPath from './generated/web/wasm-bindgen/react_native_ariel_bg.wasm';
@@ -10,12 +14,6 @@ export async function uniffiInitAsync() {
10
14
  await initAsync({
11
15
  module_or_path: wasmPath
12
16
  });
13
- mermaid_wrapper.default.initialize();
14
- }
15
- export default {
16
- mermaid_wrapper
17
- };
18
- //# sourceMappingURL=index.web.js.map});
19
17
 
20
18
  // Initialize the generated bindings: mostly checksums, but also callbacks.
21
19
  // - the boolean flag ensures this loads exactly once, even if the JS code
@@ -1,2 +1 @@
1
- {"version":3,"names":["mermaid_wrapper","initAsync","wasmPath","uniffiInitAsync","module_or_path","default","initialize"],"sourceRoot":"../../src","sources":["index.web.tsx"],"mappings":";;AAAA;AACA;AACA,cAAc,oCAAiC;AAE/C,OAAO,KAAKA,eAAe,MAAM,oCAAiC;AAElE,OAAOC,SAAS,MAAM,oDAAoD;AAC1E,OAAOC,QAAQ,MAAM,yDAAyD;AAE9E,OAAO,eAAeC,eAAeA,CAAA,EAAG;EACtC,MAAMF,SAAS,CAAC;IAAEG,cAAc,EAAEF;EAAS,CAAC,CAAC;EAC7CF,eAAe,CAACK,OAAO,CAACC,UAAU,CAAC,CAAC;AACtC;AAEA,eAAe;EACbN;AACF,CAAC","ignoreList":[]}
2
- Ae;EACbN;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["mermaid_wrapper","initAsync","wasmPath","uniffiInitAsync","module_or_path","default","initialize"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":";;AAAA;AACA;AACA,cAAc,oCAAiC;;AAE/C;AACA;AACA;AACA,OAAO,KAAKA,eAAe,MAAM,oCAAiC;AAElE,OAAOC,SAAS,MAAM,oDAAoD;AAC1E,OAAOC,QAAQ,MAAM,yDAAyD;AAE9E,OAAO,eAAeC,eAAeA,CAAA,EAAG;EACtC,MAAMF,SAAS,CAAC;IAAEG,cAAc,EAAEF;EAAS,CAAC,CAAC;;EAE7C;EACA;EACA;EACAF,eAAe,CAACK,OAAO,CAACC,UAAU,CAAC,CAAC;AACtC;;AAEA;AACA,eAAe;EACbN;AACF,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "react-native-ariel",
3
- "version": "0.1.0-dev.5",
3
+ "version": "0.1.0-dev.52",
4
4
  "description": "Mermaid diagrams for React Native and React Native Web. No DOM. No WebView. Pure Rust.",
5
5
  "main": "./lib/module/index.js",
6
6
  "source": "./src/index.tsx",
7
7
  "types": "./lib/typescript/src/index.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
+ "browser": "./lib/module/index.web.js",
10
11
  "source": "./src/index.tsx",
11
12
  "types": "./lib/typescript/src/index.d.ts",
12
13
  "default": "./lib/module/index.js"
@@ -33,15 +34,11 @@
33
34
  "!**/.*"
34
35
  ],
35
36
  "scripts": {
36
- "example": "yarn workspace react-native-ariel-example",
37
- "example:android": "yarn workspace react-native-ariel-example android",
38
- "example:ios": "yarn workspace react-native-ariel-example ios",
39
- "example:web": "yarn workspace react-native-ariel-example web",
40
- "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
41
- "prepare": "bob build",
37
+ "clean": "del-cli android/build lib",
38
+ "prepare": "bob build && node scripts/copy-wasm-to-lib.js",
42
39
  "typecheck": "tsc",
43
40
  "test": "jest",
44
- "ubrn:ios": "ubrn build ios && (cd example/ios && pod install)",
41
+ "ubrn:ios": "ubrn build ios",
45
42
  "ubrn:ios-ci": "ubrn build ios",
46
43
  "ubrn:android": "ubrn build android",
47
44
  "ubrn:web": "wasm-pack build rust_modules/wasm --target web --out-dir ../../src/generated/web/wasm-bindgen && node scripts/patch-wasm.js",
@@ -53,44 +50,51 @@
53
50
  "keywords": [
54
51
  "react-native",
55
52
  "ios",
56
- "android"
53
+ "android",
54
+ "mermaid",
55
+ "mermaid-js",
56
+ "svg",
57
+ "diagram",
58
+ "flowchart",
59
+ "rust",
60
+ "wasm",
61
+ "web",
62
+ "no-webview",
63
+ "turbo-module",
64
+ "jsi"
57
65
  ],
58
66
  "repository": {
59
67
  "type": "git",
60
- "url": "git+https://github.com/rinfi/ariel.git"
68
+ "url": "git+https://github.com/rinfimate/ariel.git"
61
69
  },
62
- "author": "Rochanglien Infimate <r.infimate@gmail.com> (https://github.com/rinfi)",
70
+ "author": "Rochanglien Infimate <r.infimate@gmail.com> (https://github.com/rinfimate)",
63
71
  "license": "MIT",
64
72
  "bugs": {
65
- "url": "https://github.com/rinfi/ariel/issues"
73
+ "url": "https://github.com/rinfimate/ariel/issues"
66
74
  },
67
- "homepage": "https://github.com/rinfi/ariel#readme",
75
+ "homepage": "https://github.com/rinfimate/ariel#readme",
68
76
  "publishConfig": {
69
77
  "registry": "https://registry.npmjs.org/"
70
78
  },
71
79
  "devDependencies": {
72
80
  "@jest/globals": "^30.0.0",
73
81
  "@react-native-community/cli": "20.1.0",
74
- "@react-native/babel-preset": "0.85.0",
75
- "@react-native/jest-preset": "0.85.0",
76
- "@types/react": "^19.2.0",
82
+ "@react-native/babel-preset": "0.77.0",
83
+ "@types/react": "^18.3.0",
77
84
  "del-cli": "^7.0.0",
78
85
  "jest": "^30.3.0",
79
86
  "prettier": "^3.8.3",
80
- "react": "19.2.3",
81
- "react-native": "0.85.0",
87
+ "react": "18.3.1",
88
+ "react-native": "0.77.0",
82
89
  "react-native-builder-bob": "^0.41.0",
83
90
  "turbo": "^2.8.21",
84
91
  "typescript": "^6.0.2"
85
92
  },
86
93
  "peerDependencies": {
87
94
  "react": "*",
88
- "react-native": "*",
95
+ "react-native": ">=0.73.0",
89
96
  "react-native-svg": ">=13.0.0"
90
97
  },
91
- "workspaces": [
92
- "example"
93
- ],
94
98
  "packageManager": "yarn@4.11.0",
95
99
  "react-native-builder-bob": {
96
100
  "source": "src",
@@ -123,12 +127,14 @@
123
127
  "android": {
124
128
  "javaPackageName": "com.ariel"
125
129
  },
126
- "includesGeneratedCode": false
130
+ "includesGeneratedCode": true
127
131
  },
128
132
  "jest": {
129
- "preset": "@react-native/jest-preset",
133
+ "testEnvironment": "node",
134
+ "transform": {
135
+ "^.+\\.(ts|tsx|js|jsx)$": "babel-jest"
136
+ },
130
137
  "modulePathIgnorePatterns": [
131
- "<rootDir>/example/node_modules",
132
138
  "<rootDir>/lib/"
133
139
  ]
134
140
  },
@@ -8,7 +8,6 @@ module.exports = {
8
8
  cmakeListsPath: 'generated/jni/CMakeLists.txt',
9
9
  cxxModuleCMakeListsModuleName: 'react-native-ariel',
10
10
  cxxModuleCMakeListsPath: 'CMakeLists.txt',
11
- cxxModuleHeaderName: 'ArielImpl',
12
11
  },
13
12
  },
14
13
  },
@@ -1,79 +0,0 @@
1
- # Generated by uniffi-bindgen-react-native
2
- cmake_minimum_required(VERSION 3.9.0)
3
- project(Ariel)
4
-
5
- set (CMAKE_VERBOSE_MAKEFILE ON)
6
- set (CMAKE_CXX_STANDARD 17)
7
-
8
- # Resolve the path to the uniffi-bindgen-react-native package
9
- execute_process(
10
- COMMAND node -p "require.resolve('uniffi-bindgen-react-native/package.json')"
11
- OUTPUT_VARIABLE UNIFFI_BINDGEN_PATH
12
- OUTPUT_STRIP_TRAILING_WHITESPACE
13
- )
14
- # Get the directory; get_filename_component and cmake_path will normalize
15
- # paths with Windows path separators.
16
- get_filename_component(UNIFFI_BINDGEN_PATH "${UNIFFI_BINDGEN_PATH}" DIRECTORY)
17
-
18
- # Specifies a path to native header files.
19
- include_directories(
20
- ../cpp
21
- ../cpp/generated
22
-
23
- ${UNIFFI_BINDGEN_PATH}/cpp/includes
24
- )
25
-
26
- add_library(react-native-ariel SHARED
27
- ../cpp/react-native-ariel.cpp
28
- ../cpp/generated/mermaid_wrapper.cpp
29
- cpp-adapter.cpp
30
- )
31
-
32
- # Set C++ compiler flags
33
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
34
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions")
35
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti")
36
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-all")
37
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
38
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
39
-
40
- # Set linker flags for 16KB page size alignment (required for Android 15+)
41
- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,max-page-size=16384")
42
-
43
- cmake_path(
44
- SET MY_RUST_LIB
45
- ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libmermaid_wrapper.a
46
- NORMALIZE
47
- )
48
- add_library(my_rust_lib STATIC IMPORTED)
49
- set_target_properties(my_rust_lib PROPERTIES IMPORTED_LOCATION ${MY_RUST_LIB})
50
-
51
- # Add ReactAndroid libraries, being careful to account for different versions.
52
- find_package(ReactAndroid REQUIRED CONFIG)
53
- find_library(LOGCAT log)
54
-
55
- # REACTNATIVE_MERGED_SO seems to be only be set in a build.gradle.kt file,
56
- # which we don't use. Thus falling back to version number sniffing.
57
- if (ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
58
- set(REACTNATIVE_MERGED_SO true)
59
- endif()
60
-
61
- # https://github.com/react-native-community/discussions-and-proposals/discussions/816
62
- # This if-then-else can be removed once this library does not support version below 0.76
63
- if (REACTNATIVE_MERGED_SO)
64
- target_link_libraries(react-native-ariel ReactAndroid::reactnative)
65
- else()
66
- target_link_libraries(react-native-ariel
67
- ReactAndroid::turbomodulejsijni
68
- ReactAndroid::react_nativemodule_core
69
- )
70
- endif()
71
-
72
- find_package(fbjni REQUIRED CONFIG)
73
- target_link_libraries(
74
- react-native-ariel
75
- fbjni::fbjni
76
- ReactAndroid::jsi
77
- ${LOGCAT}
78
- my_rust_lib
79
- )
@@ -1,45 +0,0 @@
1
- /**
2
- * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
- *
4
- * Do not edit this file as changes may cause incorrect behavior and will be lost
5
- * once the code is regenerated.
6
- *
7
- * @generated by codegen project: GenerateModuleH.js
8
- */
9
-
10
- #pragma once
11
-
12
- #include <ReactCommon/TurboModule.h>
13
- #include <react/bridging/Bridging.h>
14
-
15
- namespace facebook::react {
16
-
17
-
18
- template <typename T>
19
- class JSI_EXPORT NativeArielCxxSpec : public TurboModule {
20
- public:
21
- static constexpr std::string_view kModuleName = "Ariel";
22
-
23
- protected:
24
- NativeArielCxxSpec(std::shared_ptr<CallInvoker> jsInvoker) : TurboModule(std::string{NativeArielCxxSpec::kModuleName}, jsInvoker) {
25
- methodMap_["installRustCrate"] = MethodMetadata {.argCount = 0, .invoker = __installRustCrate};
26
- methodMap_["cleanupRustCrate"] = MethodMetadata {.argCount = 0, .invoker = __cleanupRustCrate};
27
- }
28
-
29
- private:
30
- static jsi::Value __installRustCrate(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
31
- static_assert(
32
- bridging::getParameterCount(&T::installRustCrate) == 1,
33
- "Expected installRustCrate(...) to have 1 parameters");
34
- return bridging::callFromJs<bool>(rt, &T::installRustCrate, static_cast<NativeArielCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
35
- }
36
-
37
- static jsi::Value __cleanupRustCrate(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
38
- static_assert(
39
- bridging::getParameterCount(&T::cleanupRustCrate) == 1,
40
- "Expected cleanupRustCrate(...) to have 1 parameters");
41
- return bridging::callFromJs<bool>(rt, &T::cleanupRustCrate, static_cast<NativeArielCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
42
- }
43
- };
44
-
45
- } // namespace facebook::react
@@ -1,45 +0,0 @@
1
- /**
2
- * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
- *
4
- * Do not edit this file as changes may cause incorrect behavior and will be lost
5
- * once the code is regenerated.
6
- *
7
- * @generated by codegen project: GenerateModuleH.js
8
- */
9
-
10
- #pragma once
11
-
12
- #include <ReactCommon/TurboModule.h>
13
- #include <react/bridging/Bridging.h>
14
-
15
- namespace facebook::react {
16
-
17
-
18
- template <typename T>
19
- class JSI_EXPORT NativeArielCxxSpec : public TurboModule {
20
- public:
21
- static constexpr std::string_view kModuleName = "Ariel";
22
-
23
- protected:
24
- NativeArielCxxSpec(std::shared_ptr<CallInvoker> jsInvoker) : TurboModule(std::string{NativeArielCxxSpec::kModuleName}, jsInvoker) {
25
- methodMap_["installRustCrate"] = MethodMetadata {.argCount = 0, .invoker = __installRustCrate};
26
- methodMap_["cleanupRustCrate"] = MethodMetadata {.argCount = 0, .invoker = __cleanupRustCrate};
27
- }
28
-
29
- private:
30
- static jsi::Value __installRustCrate(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
31
- static_assert(
32
- bridging::getParameterCount(&T::installRustCrate) == 1,
33
- "Expected installRustCrate(...) to have 1 parameters");
34
- return bridging::callFromJs<bool>(rt, &T::installRustCrate, static_cast<NativeArielCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
35
- }
36
-
37
- static jsi::Value __cleanupRustCrate(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
38
- static_assert(
39
- bridging::getParameterCount(&T::cleanupRustCrate) == 1,
40
- "Expected cleanupRustCrate(...) to have 1 parameters");
41
- return bridging::callFromJs<bool>(rt, &T::cleanupRustCrate, static_cast<NativeArielCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
42
- }
43
- };
44
-
45
- } // namespace facebook::react
@@ -1,8 +0,0 @@
1
- export * from './generated/web/mermaid_wrapper';
2
- import * as mermaid_wrapper from './generated/web/mermaid_wrapper';
3
- export declare function uniffiInitAsync(): Promise<void>;
4
- declare const _default: {
5
- mermaid_wrapper: typeof mermaid_wrapper;
6
- };
7
- export default _default;
8
- //# sourceMappingURL=index.web.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../src/index.web.ts"],"names":[],"mappings":"AAEA,cAAc,iCAAiC,CAAC;AAKhD,OAAO,KAAK,eAAe,MAAM,iCAAiC,CAAC;AAKnE,wBAAsB,eAAe,kBAOpC;;;;AAGD,wBAEE"}
@@ -1,15 +0,0 @@
1
- {
2
- "name": "react-native-ariel",
3
- "type": "module",
4
- "version": "0.1.0",
5
- "files": [
6
- "react_native_ariel_bg.wasm",
7
- "react_native_ariel.js",
8
- "react_native_ariel.d.ts"
9
- ],
10
- "main": "react_native_ariel.js",
11
- "types": "react_native_ariel.d.ts",
12
- "sideEffects": [
13
- "./snippets/*"
14
- ]
15
- }