react-native-wgpu 0.5.6 → 0.5.8

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.
@@ -2,9 +2,10 @@
2
2
 
3
3
  #import "RNWebGPUManager.h"
4
4
  #import <RNWgpuViewSpec/RNWgpuViewSpec.h>
5
+ #import <React/RCTCallInvokerModule.h>
5
6
  #import <React/RCTEventEmitter.h>
6
7
 
7
- @interface WebGPUModule : RCTEventEmitter <NativeWebGPUModuleSpec>
8
+ @interface WebGPUModule : RCTEventEmitter <NativeWebGPUModuleSpec, RCTCallInvokerModule>
8
9
 
9
10
  + (std::shared_ptr<rnwgpu::RNWebGPUManager>)getManager;
10
11
 
@@ -3,6 +3,7 @@
3
3
  #import "GPUCanvasContext.h"
4
4
 
5
5
  #import <React/RCTBridge+Private.h>
6
+ #import <React/RCTCallInvoker.h>
6
7
  #import <React/RCTLog.h>
7
8
  #import <ReactCommon/RCTTurboModule.h>
8
9
  #import <jsi/jsi.h>
@@ -11,12 +12,25 @@
11
12
  namespace jsi = facebook::jsi;
12
13
  namespace react = facebook::react;
13
14
 
15
+ // Category to declare the runtime property on RCTBridge/RCTBridgeProxy.
16
+ // In Bridgeless mode, self.bridge is an RCTBridgeProxy which implements
17
+ // -(void *)runtime. In Legacy mode, self.bridge is the real RCTBridge
18
+ // (backed by RCTCxxBridge) which also implements it.
19
+ @interface RCTBridge (JSIRuntime)
20
+ - (void *)runtime;
21
+ @end
22
+
14
23
  @implementation WebGPUModule
15
24
 
16
25
  RCT_EXPORT_MODULE(WebGPUModule)
17
26
 
18
27
  static std::shared_ptr<rnwgpu::RNWebGPUManager> webgpuManager;
19
28
 
29
+ // Synthesize callInvoker so RCTTurboModuleManager injects the JS CallInvoker.
30
+ // When the module conforms to RCTCallInvokerModule, the TurboModule infra
31
+ // calls setCallInvoker: during module initialization.
32
+ @synthesize callInvoker = _callInvoker;
33
+
20
34
  + (std::shared_ptr<rnwgpu::RNWebGPUManager>)getManager {
21
35
  return webgpuManager;
22
36
  }
@@ -28,9 +42,6 @@ static std::shared_ptr<rnwgpu::RNWebGPUManager> webgpuManager;
28
42
  }
29
43
 
30
44
  - (void)invalidate {
31
- // if (_webgpuManager != nil) {
32
- // [_webgpuManager invalidate];
33
- // }
34
45
  webgpuManager = nil;
35
46
  }
36
47
 
@@ -43,31 +54,26 @@ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install) {
43
54
  // Already initialized, ignore call.
44
55
  return @true;
45
56
  }
46
- RCTCxxBridge *cxxBridge = (RCTCxxBridge *)[RCTBridge currentBridge];
47
- if (!cxxBridge.runtime) {
48
- NSLog(@"Failed to install react-native-wgpu: RCTBridge is not a "
49
- @"RCTCxxBridge!");
50
- return [NSNumber numberWithBool:NO];
51
- }
52
57
 
53
- jsi::Runtime *runtime = (jsi::Runtime *)cxxBridge.runtime;
58
+ // self.bridge works in both Legacy (RCTBridge) and Bridgeless (RCTBridgeProxy).
59
+ jsi::Runtime *runtime = (jsi::Runtime *)self.bridge.runtime;
54
60
  if (!runtime) {
55
- NSLog(@"Failed to install react-native-wgpu: jsi::Runtime* was null!");
61
+ NSLog(@"Failed to install react-native-wgpu: jsi::Runtime* was null! "
62
+ @"(self.bridge=%@)", self.bridge);
56
63
  return [NSNumber numberWithBool:NO];
57
64
  }
58
- std::shared_ptr<react::CallInvoker> jsInvoker = cxxBridge.jsCallInvoker;
65
+
66
+ // _callInvoker is injected by RCTTurboModuleManager because we conform to
67
+ // RCTCallInvokerModule. Works in both Legacy and Bridgeless.
68
+ std::shared_ptr<react::CallInvoker> jsInvoker = _callInvoker.callInvoker;
59
69
  if (!jsInvoker) {
60
70
  NSLog(@"Failed to install react-native-wgpu: react::CallInvoker was "
61
71
  @"null!");
62
72
  return [NSNumber numberWithBool:NO];
63
73
  }
64
74
 
65
- if (!jsInvoker) {
66
- jsInvoker = cxxBridge.jsCallInvoker;
67
- }
68
75
  std::shared_ptr<rnwgpu::PlatformContext> platformContext =
69
76
  std::make_shared<rnwgpu::ApplePlatformContext>();
70
- // TODO: remove allocation here
71
77
  webgpuManager = std::make_shared<rnwgpu::RNWebGPUManager>(runtime, jsInvoker,
72
78
  platformContext);
73
79
  return @true;
@@ -49,8 +49,13 @@ template <> struct JSIConverter<std::shared_ptr<ArrayBuffer>> {
49
49
  auto buff = bufferProp.getObject(runtime);
50
50
  auto bytesPerElements =
51
51
  obj.getProperty(runtime, "BYTES_PER_ELEMENT").asNumber();
52
- return createArrayBufferFromJSI(
53
- runtime, buff.getArrayBuffer(runtime),
52
+ auto arrayBuffer = buff.getArrayBuffer(runtime);
53
+ auto byteOffset = static_cast<size_t>(
54
+ obj.getProperty(runtime, "byteOffset").asNumber());
55
+ auto byteLength = static_cast<size_t>(
56
+ obj.getProperty(runtime, "byteLength").asNumber());
57
+ return std::make_shared<ArrayBuffer>(
58
+ arrayBuffer.data(runtime) + byteOffset, byteLength,
54
59
  static_cast<size_t>(bytesPerElements));
55
60
  }
56
61
  }
@@ -20,7 +20,6 @@ const registerWebGPUForReanimated = () => {
20
20
  }
21
21
  isRegistered = true;
22
22
  try {
23
- // eslint-disable-next-line @typescript-eslint/no-var-requires
24
23
  const {
25
24
  registerCustomSerializable
26
25
  } = require("react-native-worklets");
@@ -1 +1 @@
1
- {"version":3,"names":["isRegistered","registerWebGPUForReanimated","registerCustomSerializable","require","name","determine","value","__webgpuIsWebGPUObject","pack","__webgpuBox","unpack","boxed","unbox","exports"],"sourceRoot":"../../../../src","sources":["external/reanimated/registerWebGPUForReanimated.ts"],"mappings":";;;;;;AAAA;;AAMA,IAAIA,YAAY,GAAG,KAAK;;AAExB;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,2BAA2B,GAAGA,CAAA,KAAM;EAC/C,IAAID,YAAY,EAAE;IAChB;EACF;EACAA,YAAY,GAAG,IAAI;EAEnB,IAAI;IACF;IACA,MAAM;MAAEE;IAA2B,CAAC,GAAGC,OAAO,CAAC,uBAAuB,CAAC;IAEvED,0BAA0B,CAAC;MACzBE,IAAI,EAAE,QAAQ;MACdC,SAAS,EAAGC,KAAa,IAAsB;QAC7C,SAAS;;QACT,OAAOC,sBAAsB,CAACD,KAAK,CAAC;MACtC,CAAC;MACDE,IAAI,EAAGF,KAAa,IAAK;QACvB,SAAS;;QACT,OAAOG,WAAW,CAACH,KAAK,CAAC;MAC3B,CAAC;MACDI,MAAM,EAAGC,KAA8B,IAAK;QAC1C,SAAS;;QACT,OAAOA,KAAK,CAACC,KAAK,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ,CAAC;AAACC,OAAA,CAAAZ,2BAAA,GAAAA,2BAAA","ignoreList":[]}
1
+ {"version":3,"names":["isRegistered","registerWebGPUForReanimated","registerCustomSerializable","require","name","determine","value","__webgpuIsWebGPUObject","pack","__webgpuBox","unpack","boxed","unbox","exports"],"sourceRoot":"../../../../src","sources":["external/reanimated/registerWebGPUForReanimated.ts"],"mappings":";;;;;;AAAA;;AAOA,IAAIA,YAAY,GAAG,KAAK;;AAExB;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,2BAA2B,GAAGA,CAAA,KAAM;EAC/C,IAAID,YAAY,EAAE;IAChB;EACF;EACAA,YAAY,GAAG,IAAI;EAEnB,IAAI;IACF,MAAM;MAAEE;IAA2B,CAAC,GAAGC,OAAO,CAAC,uBAAuB,CAAC;IAEvED,0BAA0B,CAAC;MACzBE,IAAI,EAAE,QAAQ;MACdC,SAAS,EAAGC,KAAa,IAAsB;QAC7C,SAAS;;QACT,OAAOC,sBAAsB,CAACD,KAAK,CAAC;MACtC,CAAC;MACDE,IAAI,EAAGF,KAAa,IAAK;QACvB,SAAS;;QACT,OAAOG,WAAW,CAACH,KAAK,CAAC;MAC3B,CAAC;MACDI,MAAM,EAAGC,KAA8B,IAAK;QAC1C,SAAS;;QACT,OAAOA,KAAK,CAACC,KAAK,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ,CAAC;AAACC,OAAA,CAAAZ,2BAAA,GAAAA,2BAAA","ignoreList":[]}
@@ -63,25 +63,29 @@ Object.keys(_hooks).forEach(function (key) {
63
63
  });
64
64
  });
65
65
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
66
- _NativeWebGPUModule.default.install();
66
+ const _installOk = _NativeWebGPUModule.default.install();
67
67
  (0, _external.registerWebGPUForReanimated)();
68
- if (!navigator) {
69
- // @ts-expect-error Navigation object is more complex than this, setting it to an empty object to add gpu property
70
- navigator = {
71
- gpu: RNWebGPU.gpu,
72
- userAgent: "react-native"
73
- };
74
- } else {
75
- navigator.gpu = RNWebGPU.gpu;
76
- if (typeof navigator.userAgent !== "string") {
77
- try {
78
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
79
- // @ts-ignore - Hermes navigator may not include a userAgent, align with the polyfill if needed
80
- navigator.userAgent = "react-native";
81
- } catch {
82
- // navigator.userAgent can be read-only; ignore if assignment fails
68
+ if (typeof RNWebGPU !== "undefined") {
69
+ if (!navigator) {
70
+ // @ts-expect-error Navigation object is more complex than this, setting it to an empty object to add gpu property
71
+ navigator = {
72
+ gpu: RNWebGPU.gpu,
73
+ userAgent: "react-native"
74
+ };
75
+ } else {
76
+ navigator.gpu = RNWebGPU.gpu;
77
+ if (typeof navigator.userAgent !== "string") {
78
+ try {
79
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
80
+ // @ts-ignore - Hermes navigator may not include a userAgent, align with the polyfill if needed
81
+ navigator.userAgent = "react-native";
82
+ } catch {
83
+ // navigator.userAgent can be read-only; ignore if assignment fails
84
+ }
83
85
  }
84
86
  }
87
+ global.createImageBitmap = global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
88
+ } else {
89
+ console.warn(`[react-native-wgpu] install() returned ${_installOk} but RNWebGPU global is not available`);
85
90
  }
86
- global.createImageBitmap = global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
87
91
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_external","require","_NativeWebGPUModule","_interopRequireDefault","_Canvas","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Offscreen","_WebGPUViewNativeComponent","_hooks","e","__esModule","default","WebGPUModule","install","registerWebGPUForReanimated","navigator","gpu","RNWebGPU","userAgent","global","createImageBitmap","bind"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_external","require","_NativeWebGPUModule","_interopRequireDefault","_Canvas","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Offscreen","_WebGPUViewNativeComponent","_hooks","e","__esModule","default","_installOk","WebGPUModule","install","registerWebGPUForReanimated","RNWebGPU","navigator","gpu","userAgent","global","createImageBitmap","bind","console","warn"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -14,7 +14,6 @@ export const registerWebGPUForReanimated = () => {
14
14
  }
15
15
  isRegistered = true;
16
16
  try {
17
- // eslint-disable-next-line @typescript-eslint/no-var-requires
18
17
  const {
19
18
  registerCustomSerializable
20
19
  } = require("react-native-worklets");
@@ -1 +1 @@
1
- {"version":3,"names":["isRegistered","registerWebGPUForReanimated","registerCustomSerializable","require","name","determine","value","__webgpuIsWebGPUObject","pack","__webgpuBox","unpack","boxed","unbox"],"sourceRoot":"../../../../src","sources":["external/reanimated/registerWebGPUForReanimated.ts"],"mappings":"AAAA;;AAMA,IAAIA,YAAY,GAAG,KAAK;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,2BAA2B,GAAGA,CAAA,KAAM;EAC/C,IAAID,YAAY,EAAE;IAChB;EACF;EACAA,YAAY,GAAG,IAAI;EAEnB,IAAI;IACF;IACA,MAAM;MAAEE;IAA2B,CAAC,GAAGC,OAAO,CAAC,uBAAuB,CAAC;IAEvED,0BAA0B,CAAC;MACzBE,IAAI,EAAE,QAAQ;MACdC,SAAS,EAAGC,KAAa,IAAsB;QAC7C,SAAS;;QACT,OAAOC,sBAAsB,CAACD,KAAK,CAAC;MACtC,CAAC;MACDE,IAAI,EAAGF,KAAa,IAAK;QACvB,SAAS;;QACT,OAAOG,WAAW,CAACH,KAAK,CAAC;MAC3B,CAAC;MACDI,MAAM,EAAGC,KAA8B,IAAK;QAC1C,SAAS;;QACT,OAAOA,KAAK,CAACC,KAAK,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["isRegistered","registerWebGPUForReanimated","registerCustomSerializable","require","name","determine","value","__webgpuIsWebGPUObject","pack","__webgpuBox","unpack","boxed","unbox"],"sourceRoot":"../../../../src","sources":["external/reanimated/registerWebGPUForReanimated.ts"],"mappings":"AAAA;;AAOA,IAAIA,YAAY,GAAG,KAAK;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,2BAA2B,GAAGA,CAAA,KAAM;EAC/C,IAAID,YAAY,EAAE;IAChB;EACF;EACAA,YAAY,GAAG,IAAI;EAEnB,IAAI;IACF,MAAM;MAAEE;IAA2B,CAAC,GAAGC,OAAO,CAAC,uBAAuB,CAAC;IAEvED,0BAA0B,CAAC;MACzBE,IAAI,EAAE,QAAQ;MACdC,SAAS,EAAGC,KAAa,IAAsB;QAC7C,SAAS;;QACT,OAAOC,sBAAsB,CAACD,KAAK,CAAC;MACtC,CAAC;MACDE,IAAI,EAAGF,KAAa,IAAK;QACvB,SAAS;;QACT,OAAOG,WAAW,CAACH,KAAK,CAAC;MAC3B,CAAC;MACDI,MAAM,EAAGC,KAA8B,IAAK;QAC1C,SAAS;;QACT,OAAOA,KAAK,CAACC,KAAK,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ,CAAC","ignoreList":[]}
@@ -5,25 +5,29 @@ export * from "../Offscreen";
5
5
  export * from "../WebGPUViewNativeComponent";
6
6
  export * from "../hooks";
7
7
  export { default as WebGPUModule } from "../NativeWebGPUModule";
8
- WebGPUModule.install();
8
+ const _installOk = WebGPUModule.install();
9
9
  registerWebGPUForReanimated();
10
- if (!navigator) {
11
- // @ts-expect-error Navigation object is more complex than this, setting it to an empty object to add gpu property
12
- navigator = {
13
- gpu: RNWebGPU.gpu,
14
- userAgent: "react-native"
15
- };
16
- } else {
17
- navigator.gpu = RNWebGPU.gpu;
18
- if (typeof navigator.userAgent !== "string") {
19
- try {
20
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
21
- // @ts-ignore - Hermes navigator may not include a userAgent, align with the polyfill if needed
22
- navigator.userAgent = "react-native";
23
- } catch {
24
- // navigator.userAgent can be read-only; ignore if assignment fails
10
+ if (typeof RNWebGPU !== "undefined") {
11
+ if (!navigator) {
12
+ // @ts-expect-error Navigation object is more complex than this, setting it to an empty object to add gpu property
13
+ navigator = {
14
+ gpu: RNWebGPU.gpu,
15
+ userAgent: "react-native"
16
+ };
17
+ } else {
18
+ navigator.gpu = RNWebGPU.gpu;
19
+ if (typeof navigator.userAgent !== "string") {
20
+ try {
21
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
22
+ // @ts-ignore - Hermes navigator may not include a userAgent, align with the polyfill if needed
23
+ navigator.userAgent = "react-native";
24
+ } catch {
25
+ // navigator.userAgent can be read-only; ignore if assignment fails
26
+ }
25
27
  }
26
28
  }
29
+ global.createImageBitmap = global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
30
+ } else {
31
+ console.warn(`[react-native-wgpu] install() returned ${_installOk} but RNWebGPU global is not available`);
27
32
  }
28
- global.createImageBitmap = global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
29
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["registerWebGPUForReanimated","WebGPUModule","default","install","navigator","gpu","RNWebGPU","userAgent","global","createImageBitmap","bind"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":"AAAA,SAASA,2BAA2B,QAAQ,aAAa;AACzD,OAAOC,YAAY,MAAM,uBAAuB;AAEhD,cAAc,WAAW;AACzB,cAAc,cAAc;AAC5B,cAAc,8BAA8B;AAC5C,cAAc,UAAU;AAExB,SAASC,OAAO,IAAID,YAAY,QAAQ,uBAAuB;AAE/DA,YAAY,CAACE,OAAO,CAAC,CAAC;AAEtBH,2BAA2B,CAAC,CAAC;AAE7B,IAAI,CAACI,SAAS,EAAE;EACd;EACAA,SAAS,GAAG;IACVC,GAAG,EAAEC,QAAQ,CAACD,GAAG;IACjBE,SAAS,EAAE;EACb,CAAC;AACH,CAAC,MAAM;EACLH,SAAS,CAACC,GAAG,GAAGC,QAAQ,CAACD,GAAG;EAC5B,IAAI,OAAOD,SAAS,CAACG,SAAS,KAAK,QAAQ,EAAE;IAC3C,IAAI;MACF;MACA;MACAH,SAAS,CAACG,SAAS,GAAG,cAAc;IACtC,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;AACF;AAEAC,MAAM,CAACC,iBAAiB,GACtBD,MAAM,CAACC,iBAAiB,IAAIH,QAAQ,CAACG,iBAAiB,CAACC,IAAI,CAACJ,QAAQ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["registerWebGPUForReanimated","WebGPUModule","default","_installOk","install","RNWebGPU","navigator","gpu","userAgent","global","createImageBitmap","bind","console","warn"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":"AAAA,SAASA,2BAA2B,QAAQ,aAAa;AACzD,OAAOC,YAAY,MAAM,uBAAuB;AAEhD,cAAc,WAAW;AACzB,cAAc,cAAc;AAC5B,cAAc,8BAA8B;AAC5C,cAAc,UAAU;AAExB,SAASC,OAAO,IAAID,YAAY,QAAQ,uBAAuB;AAE/D,MAAME,UAAU,GAAGF,YAAY,CAACG,OAAO,CAAC,CAAC;AAEzCJ,2BAA2B,CAAC,CAAC;AAE7B,IAAI,OAAOK,QAAQ,KAAK,WAAW,EAAE;EACnC,IAAI,CAACC,SAAS,EAAE;IACd;IACAA,SAAS,GAAG;MACVC,GAAG,EAAEF,QAAQ,CAACE,GAAG;MACjBC,SAAS,EAAE;IACb,CAAC;EACH,CAAC,MAAM;IACLF,SAAS,CAACC,GAAG,GAAGF,QAAQ,CAACE,GAAG;IAC5B,IAAI,OAAOD,SAAS,CAACE,SAAS,KAAK,QAAQ,EAAE;MAC3C,IAAI;QACF;QACA;QACAF,SAAS,CAACE,SAAS,GAAG,cAAc;MACtC,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF;EACAC,MAAM,CAACC,iBAAiB,GACtBD,MAAM,CAACC,iBAAiB,IAAIL,QAAQ,CAACK,iBAAiB,CAACC,IAAI,CAACN,QAAQ,CAAC;AACzE,CAAC,MAAM;EACLO,OAAO,CAACC,IAAI,CACV,0CAA0CV,UAAU,uCACtD,CAAC;AACH","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"registerWebGPUForReanimated.d.ts","sourceRoot":"","sources":["../../../../../commonjs/external/reanimated/registerWebGPUForReanimated.js"],"names":[],"mappings":";AAUA;;;;;GAKG;AACH,oDA+BC"}
1
+ {"version":3,"file":"registerWebGPUForReanimated.d.ts","sourceRoot":"","sources":["../../../../../commonjs/external/reanimated/registerWebGPUForReanimated.js"],"names":[],"mappings":";AAUA;;;;;GAKG;AACH,oDA8BC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registerWebGPUForReanimated.d.ts","sourceRoot":"","sources":["../../../../../module/external/reanimated/registerWebGPUForReanimated.js"],"names":[],"mappings":"AAUO,oDA+BN"}
1
+ {"version":3,"file":"registerWebGPUForReanimated.d.ts","sourceRoot":"","sources":["../../../../../module/external/reanimated/registerWebGPUForReanimated.js"],"names":[],"mappings":"AAUO,oDA8BN"}
@@ -1 +1 @@
1
- {"version":3,"file":"registerWebGPUForReanimated.d.ts","sourceRoot":"","sources":["../../../../../src/external/reanimated/registerWebGPUForReanimated.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,YA4BvC,CAAC"}
1
+ {"version":3,"file":"registerWebGPUForReanimated.d.ts","sourceRoot":"","sources":["../../../../../src/external/reanimated/registerWebGPUForReanimated.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,YA2BvC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-wgpu",
3
- "version": "0.5.6",
3
+ "version": "0.5.8",
4
4
  "description": "React Native WebGPU",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -6,7 +6,7 @@ type ImportType = ReturnType<typeof require>;
6
6
  * This is useful for lazily requiring optional dependencies.
7
7
  */
8
8
  export const createModuleProxy = <TModule>(
9
- getModule: () => ImportType
9
+ getModule: () => ImportType,
10
10
  ): TModule => {
11
11
  const holder: { module: TModule | undefined } = { module: undefined };
12
12
 
@@ -1,8 +1,9 @@
1
1
  // Declare global WebGPU worklet helper functions (installed by native module)
2
2
  declare function __webgpuIsWebGPUObject(obj: unknown): boolean;
3
- declare function __webgpuBox(
4
- obj: object
5
- ): { unbox: () => object; __boxedWebGPU: true };
3
+ declare function __webgpuBox(obj: object): {
4
+ unbox: () => object;
5
+ __boxedWebGPU: true;
6
+ };
6
7
 
7
8
  let isRegistered = false;
8
9
 
@@ -19,7 +20,6 @@ export const registerWebGPUForReanimated = () => {
19
20
  isRegistered = true;
20
21
 
21
22
  try {
22
- // eslint-disable-next-line @typescript-eslint/no-var-requires
23
23
  const { registerCustomSerializable } = require("react-native-worklets");
24
24
 
25
25
  registerCustomSerializable({
@@ -8,28 +8,33 @@ export * from "../hooks";
8
8
 
9
9
  export { default as WebGPUModule } from "../NativeWebGPUModule";
10
10
 
11
- WebGPUModule.install();
11
+ const _installOk = WebGPUModule.install();
12
12
 
13
13
  registerWebGPUForReanimated();
14
14
 
15
- if (!navigator) {
16
- // @ts-expect-error Navigation object is more complex than this, setting it to an empty object to add gpu property
17
- navigator = {
18
- gpu: RNWebGPU.gpu,
19
- userAgent: "react-native",
20
- };
21
- } else {
22
- navigator.gpu = RNWebGPU.gpu;
23
- if (typeof navigator.userAgent !== "string") {
24
- try {
25
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
26
- // @ts-ignore - Hermes navigator may not include a userAgent, align with the polyfill if needed
27
- navigator.userAgent = "react-native";
28
- } catch {
29
- // navigator.userAgent can be read-only; ignore if assignment fails
15
+ if (typeof RNWebGPU !== "undefined") {
16
+ if (!navigator) {
17
+ // @ts-expect-error Navigation object is more complex than this, setting it to an empty object to add gpu property
18
+ navigator = {
19
+ gpu: RNWebGPU.gpu,
20
+ userAgent: "react-native",
21
+ };
22
+ } else {
23
+ navigator.gpu = RNWebGPU.gpu;
24
+ if (typeof navigator.userAgent !== "string") {
25
+ try {
26
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
27
+ // @ts-ignore - Hermes navigator may not include a userAgent, align with the polyfill if needed
28
+ navigator.userAgent = "react-native";
29
+ } catch {
30
+ // navigator.userAgent can be read-only; ignore if assignment fails
31
+ }
30
32
  }
31
33
  }
34
+ global.createImageBitmap =
35
+ global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
36
+ } else {
37
+ console.warn(
38
+ `[react-native-wgpu] install() returned ${_installOk} but RNWebGPU global is not available`,
39
+ );
32
40
  }
33
-
34
- global.createImageBitmap =
35
- global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);