expo-modules-core 55.0.2 → 55.0.4

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 (37) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/cpp/JSIContext.cpp +14 -2
  4. package/android/src/main/cpp/JSIContext.h +5 -14
  5. package/android/src/main/cpp/JavaScriptArrayBuffer.cpp +11 -12
  6. package/android/src/main/cpp/JavaScriptArrayBuffer.h +2 -7
  7. package/android/src/main/cpp/JavaScriptFunction.cpp +9 -13
  8. package/android/src/main/cpp/JavaScriptFunction.h +1 -7
  9. package/android/src/main/cpp/JavaScriptObject.cpp +78 -44
  10. package/android/src/main/cpp/JavaScriptObject.h +12 -17
  11. package/android/src/main/cpp/JavaScriptRuntime.cpp +1 -5
  12. package/android/src/main/cpp/JavaScriptRuntime.h +7 -1
  13. package/android/src/main/cpp/JavaScriptTypedArray.cpp +16 -18
  14. package/android/src/main/cpp/JavaScriptTypedArray.h +0 -6
  15. package/android/src/main/cpp/JavaScriptValue.cpp +48 -32
  16. package/android/src/main/cpp/JavaScriptValue.h +1 -7
  17. package/android/src/main/cpp/JavaScriptWeakObject.cpp +21 -15
  18. package/android/src/main/cpp/JavaScriptWeakObject.h +13 -10
  19. package/android/src/main/java/expo/modules/kotlin/AppContext.kt +13 -4
  20. package/android/src/main/java/expo/modules/kotlin/jni/JNIDeallocator.kt +10 -9
  21. package/android/src/main/java/expo/modules/kotlin/jni/JSIContext.kt +4 -4
  22. package/android/src/main/java/expo/modules/kotlin/jni/JavaCallback.kt +3 -3
  23. package/android/src/main/java/expo/modules/kotlin/jni/JavaScriptArrayBuffer.kt +3 -3
  24. package/android/src/main/java/expo/modules/kotlin/jni/JavaScriptFunction.kt +3 -3
  25. package/android/src/main/java/expo/modules/kotlin/jni/JavaScriptModuleObject.kt +4 -4
  26. package/android/src/main/java/expo/modules/kotlin/jni/JavaScriptObject.kt +3 -3
  27. package/android/src/main/java/expo/modules/kotlin/jni/JavaScriptValue.kt +3 -3
  28. package/android/src/main/java/expo/modules/kotlin/jni/JavaScriptWeakObject.kt +4 -3
  29. package/android/src/main/java/expo/modules/kotlin/jni/NativeArrayBuffer.kt +3 -3
  30. package/android/src/main/java/expo/modules/kotlin/jni/PromiseImpl.kt +5 -5
  31. package/android/src/main/java/expo/modules/kotlin/jni/decorators/JSDecoratorsBridgingObject.kt +4 -4
  32. package/android/src/main/java/expo/modules/kotlin/jni/worklets/Serializable.kt +3 -3
  33. package/ios/Core/Objects/ConstantDefinition.swift +9 -0
  34. package/ios/DevTools/ModuleDefinitionEncoder.swift +11 -14
  35. package/package.json +3 -3
  36. package/android/src/main/cpp/WeakRuntimeHolder.cpp +0 -24
  37. package/android/src/main/cpp/WeakRuntimeHolder.h +0 -40
@@ -16,7 +16,12 @@ class ModuleDefinitionEncoder: Encodable {
16
16
  func encode(to encoder: Encoder) throws {
17
17
  var container = encoder.container(keyedBy: CodingKeys.self)
18
18
  try container.encode(definition.name, forKey: .name)
19
- try container.encode(definition.legacyConstants.map({ LegacyConstantsDefinitionEncoder($0) }), forKey: .constants)
19
+ var allConstants: [[ConstantEncoder]] = []
20
+ allConstants.append(contentsOf: definition.legacyConstants.map({ LegacyConstantsDefinitionEncoder($0).getEncoders() }))
21
+ if !definition.constants.isEmpty {
22
+ allConstants.append(definition.constants.values.map({ ConstantEncoder($0.name, value: $0.getRawValue()) }))
23
+ }
24
+ try container.encode(allConstants, forKey: .constants)
20
25
  try container.encode(definition.properties.values.map({ PropertyDefinitionEncoder($0) }), forKey: .properties)
21
26
  try container.encode(definition.functions.values.map({ FunctionDefinitionEncoder($0) }), forKey: .functions)
22
27
  try container.encode(definition.views.values.map({ ViewDefinitionEncoder($0) }), forKey: .views)
@@ -130,10 +135,10 @@ class ConstantEncoder: Encodable {
130
135
  case nil:
131
136
  try container.encodeNil(forKey: .value)
132
137
  try container.encode("null", forKey: .type)
133
- case let value as [String: Any]:
138
+ case _ as [String: Any]:
134
139
  try container.encodeNil(forKey: .value)
135
140
  try container.encode("object", forKey: .type)
136
- case let value as [Any]:
141
+ case _ as [Any]:
137
142
  try container.encodeNil(forKey: .value)
138
143
  try container.encode("array", forKey: .type)
139
144
  default:
@@ -143,24 +148,16 @@ class ConstantEncoder: Encodable {
143
148
  }
144
149
  }
145
150
 
146
- class LegacyConstantsDefinitionEncoder: Encodable {
151
+ class LegacyConstantsDefinitionEncoder {
147
152
  private let definition: ConstantsDefinition
148
153
 
149
154
  init(_ definition: ConstantsDefinition) {
150
155
  self.definition = definition
151
156
  }
152
157
 
153
- enum CodingKeys: String, CodingKey {
154
- case name
155
- case value
156
- }
157
-
158
- func encode(to encoder: Encoder) throws {
159
- var container = encoder.unkeyedContainer()
158
+ func getEncoders() -> [ConstantEncoder] {
160
159
  let constants = definition.body()
161
- for (key, value) in constants {
162
- try container.encode(ConstantEncoder(key, value: value))
163
- }
160
+ return constants.map { (key, value) in ConstantEncoder(key, value: value) }
164
161
  }
165
162
  }
166
163
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-modules-core",
3
- "version": "55.0.2",
3
+ "version": "55.0.4",
4
4
  "description": "The core of Expo Modules architecture",
5
5
  "main": "src/index.ts",
6
6
  "types": "build/index.d.ts",
@@ -64,7 +64,7 @@
64
64
  },
65
65
  "devDependencies": {
66
66
  "@testing-library/react-native": "^13.2.0",
67
- "expo-module-scripts": "^55.0.1"
67
+ "expo-module-scripts": "^55.0.2"
68
68
  },
69
- "gitHead": "9e6e4e518083f0516edf32a14a39f8afbbd049e4"
69
+ "gitHead": "7d7f6762fc6907c27a329953c682134a84410dea"
70
70
  }
@@ -1,24 +0,0 @@
1
- #include "WeakRuntimeHolder.h"
2
- #include "JavaScriptRuntime.h"
3
- #include "JSIContext.h"
4
-
5
- namespace expo {
6
- WeakRuntimeHolder::WeakRuntimeHolder(std::weak_ptr<JavaScriptRuntime> runtime)
7
- : std::weak_ptr<JavaScriptRuntime>(std::move(runtime)) {}
8
-
9
- jsi::Runtime &WeakRuntimeHolder::getJSRuntime() const {
10
- auto runtime = lock();
11
- assert((runtime != nullptr) && "JS Runtime was used after deallocation");
12
- return runtime->get();
13
- }
14
-
15
- void WeakRuntimeHolder::ensureRuntimeIsValid() {
16
- assert((!expired()) && "JS Runtime was used after deallocation");
17
- }
18
-
19
- JSIContext *WeakRuntimeHolder::getJSIContext() {
20
- auto runtime = lock();
21
- assert((runtime != nullptr) && "JS Runtime was used after deallocation");
22
- return expo::getJSIContext(runtime->get());
23
- }
24
- } // namespace expo
@@ -1,40 +0,0 @@
1
- // Copyright © 2021-present 650 Industries, Inc. (aka Expo)
2
-
3
- #pragma once
4
-
5
- #include <jsi/jsi.h>
6
-
7
- #include <memory>
8
-
9
- namespace jsi = facebook::jsi;
10
-
11
- namespace expo {
12
-
13
- class JavaScriptRuntime;
14
-
15
- class JSIContext;
16
-
17
- /**
18
- * A convenient class to access underlying jni::Runtime and hold a weak reference to expo::JavaScriptRuntime.
19
- * It's working like std::weak_ptr but can have more helper methods.
20
- */
21
- class WeakRuntimeHolder : public std::weak_ptr<JavaScriptRuntime> {
22
- public:
23
- WeakRuntimeHolder() = default;
24
-
25
- WeakRuntimeHolder(WeakRuntimeHolder const &) = default;
26
-
27
- WeakRuntimeHolder(WeakRuntimeHolder &&) = default;
28
-
29
- WeakRuntimeHolder(std::weak_ptr<JavaScriptRuntime> runtime);
30
-
31
- /**
32
- * @return an reference to the jsi::Runtime.
33
- */
34
- jsi::Runtime &getJSRuntime() const;
35
-
36
- JSIContext *getJSIContext();
37
-
38
- void ensureRuntimeIsValid();
39
- };
40
- } // namespace expo