@npaw/forge-react-native 9.7.5 → 10.0.0

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 (27) hide show
  1. package/android/build.gradle +1 -1
  2. package/android/src/main/java/com/npaw/forge/reactnative/ForgeDtoMapper.java +3 -0
  3. package/android/src/main/java/com/npaw/forge/reactnative/NPAWForgeModule.java +10 -0
  4. package/ios/ForgeApple/ForgeKernelFFI.xcframework/Info.plist +4 -4
  5. package/ios/ForgeApple/ForgeKernelFFI.xcframework/ios-arm64/Headers/forge_kernelFFI.h +11 -0
  6. package/ios/ForgeApple/ForgeKernelFFI.xcframework/ios-arm64/libForgeKernelFFI.a +0 -0
  7. package/ios/ForgeApple/ForgeKernelFFI.xcframework/ios-arm64_x86_64-simulator/Headers/forge_kernelFFI.h +11 -0
  8. package/ios/ForgeApple/ForgeKernelFFI.xcframework/ios-arm64_x86_64-simulator/libForgeKernelFFI.a +0 -0
  9. package/ios/ForgeApple/ForgeKernelFFI.xcframework/tvos-arm64/Headers/forge_kernelFFI.h +11 -0
  10. package/ios/ForgeApple/ForgeKernelFFI.xcframework/tvos-arm64/libForgeKernelFFI.a +0 -0
  11. package/ios/ForgeApple/ForgeKernelFFI.xcframework/tvos-arm64-simulator/Headers/forge_kernelFFI.h +11 -0
  12. package/ios/ForgeApple/ForgeKernelFFI.xcframework/tvos-arm64-simulator/libForgeKernelFFI.a +0 -0
  13. package/ios/ForgeApple/Sources/ForgeKernelUniFFI/forge_kernel.swift +201 -12
  14. package/ios/ForgeApple/Sources/ForgeKernelUniFFI/forge_kernelFFI.h +11 -0
  15. package/ios/ForgeApple/Sources/NPAWForgeCore/ForgeApple.swift +48 -8
  16. package/ios/ForgeApple/Sources/NPAWForgeCore/ForgeRuntime.swift +22 -2
  17. package/ios/ForgeApple/Sources/NPAWForgeCore/NPAWForge.swift +34 -2
  18. package/ios/ForgeApple/Sources/NPAWForgeCore/NativeUniFFIRuntime.swift +42 -7
  19. package/ios/ForgeApple/Sources/NPAWForgeCore/ObjectiveCWrappers.swift +14 -0
  20. package/ios/ForgeApple/Sources/NPAWForgeCore/VideoAdapter.swift +5 -5
  21. package/ios/ForgeApple/Sources/NPAWForgeCore/WireValue.swift +207 -0
  22. package/ios/ForgeModuleImpl.swift +33 -0
  23. package/ios/NPAWForgeTurboModule.mm +10 -0
  24. package/package.json +1 -1
  25. package/src/NPAWForge.ts +22 -0
  26. package/src/specs/NativeNPAWForge.ts +3 -0
  27. package/src/types.ts +8 -0
@@ -135,6 +135,16 @@ RCT_EXPORT_METHOD(trackSessionError : (NSString *)instanceId errorCode : (NSStri
135
135
  [ForgeModuleImpl.shared trackSessionError:instanceId errorCode:errorCode errorMessage:errorMessage metadata:metadata resolve:resolve reject:ForgeMakeReject(reject)];
136
136
  }
137
137
 
138
+ RCT_EXPORT_METHOD(updateSession : (NSString *)instanceId metadata : (NSDictionary *)metadata resolve : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)reject)
139
+ {
140
+ [ForgeModuleImpl.shared updateSession:instanceId metadata:metadata resolve:resolve reject:ForgeMakeReject(reject)];
141
+ }
142
+
143
+ RCT_EXPORT_METHOD(updateSessionMetrics : (NSString *)instanceId metrics : (NSDictionary *)metrics resolve : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)reject)
144
+ {
145
+ [ForgeModuleImpl.shared updateSessionMetrics:instanceId metrics:metrics resolve:resolve reject:ForgeMakeReject(reject)];
146
+ }
147
+
138
148
  RCT_EXPORT_METHOD(loginSuccess : (NSString *)instanceId userId : (NSString *)userId options : (NSDictionary *)options resolve : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)reject)
139
149
  {
140
150
  [ForgeModuleImpl.shared loginSuccess:instanceId userId:userId options:options resolve:resolve reject:ForgeMakeReject(reject)];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@npaw/forge-react-native",
3
- "version": "9.7.5",
3
+ "version": "10.0.0",
4
4
  "description": "NPAW Forge analytics for React Native: New Architecture TurboModule facade over the native Forge Android/Apple SDKs.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Victor Soto <victor.soto@nicepeopleatwork.com>",
package/src/NPAWForge.ts CHANGED
@@ -77,6 +77,28 @@ export class NPAWForge {
77
77
  return asOutcome(NativeNPAWForge.trackSessionError(this.instanceId, errorCode, errorMessage, metadata));
78
78
  }
79
79
 
80
+ /**
81
+ * Hot-updates session-level dimensions without a session boundary:
82
+ * `param1`..`param20` extraparams, `screenName`, or any dimension the NQS
83
+ * parameter registry marks updatable — new backend dimensions work without
84
+ * an SDK release. Identity keys are rejected (use the typed identity API);
85
+ * blank values are dropped because NQS never erases a session value.
86
+ * Requires the account's remote config to enable session updates.
87
+ */
88
+ updateSession(metadata: ForgeParams): Promise<ForgeOutcome> {
89
+ return asOutcome(NativeNPAWForge.updateSession(this.instanceId, metadata));
90
+ }
91
+
92
+ /**
93
+ * Reports numeric session metrics (account-registered custom metrics).
94
+ * Values aggregate server-side per the account's registered operation and
95
+ * settle on the session close row; re-sending an unchanged value is a
96
+ * no-op. Same remote-config gating as `updateSession`.
97
+ */
98
+ updateSessionMetrics(metrics: Record<string, number>): Promise<ForgeOutcome> {
99
+ return asOutcome(NativeNPAWForge.updateSessionMetrics(this.instanceId, metrics));
100
+ }
101
+
80
102
  // ---- identity ----
81
103
 
82
104
  loginSuccess(userId: string, options: ForgeParams = {}): Promise<ForgeOutcome> {
@@ -35,6 +35,9 @@ export interface Spec extends TurboModule {
35
35
  metadata: UnsafeObject
36
36
  ): Promise<UnsafeObject>;
37
37
 
38
+ updateSession(instanceId: string, metadata: UnsafeObject): Promise<UnsafeObject>;
39
+ updateSessionMetrics(instanceId: string, metrics: UnsafeObject): Promise<UnsafeObject>;
40
+
38
41
  // ---- identity ----
39
42
  loginSuccess(instanceId: string, userId: string, options: UnsafeObject): Promise<UnsafeObject>;
40
43
  loginFailed(instanceId: string, options: UnsafeObject): Promise<UnsafeObject>;
package/src/types.ts CHANGED
@@ -83,6 +83,14 @@ export type ForgeConfig = {
83
83
  processEventsBeforeSessionStart?: boolean;
84
84
  preSessionEventQueueLimitEvents?: number;
85
85
  preSessionEventQueueMaxAgeMs?: number;
86
+ /**
87
+ * Logout guard window in milliseconds (session-update mode only): after
88
+ * `logout()` closes the session, the kernel holds the replacement session
89
+ * back for this long so a follow-up `loginSuccess` attaches its own
90
+ * session directly; events raised inside the window are buffered with
91
+ * their original timestamps. `0` disables the guard. Default 30 000.
92
+ */
93
+ logoutSessionGuardMs?: number;
86
94
  allowLocalHttpForTesting?: boolean;
87
95
  deviceUuid?: string;
88
96
  autoDeviceIdentityEnabled?: boolean;