@latchway/react-native 0.0.0-bootstrap.0 → 1.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 (95) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/LatchwayReactNative.podspec +33 -0
  3. package/NOTICE +7 -0
  4. package/README.md +286 -3
  5. package/SECURITY.md +69 -0
  6. package/android/build.gradle.kts +62 -0
  7. package/android/consumer-rules.pro +2 -0
  8. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  9. package/android/gradle/wrapper/gradle-wrapper.properties +9 -0
  10. package/android/gradle.properties +4 -0
  11. package/android/gradlew +251 -0
  12. package/android/gradlew.bat +94 -0
  13. package/android/settings.gradle.kts +33 -0
  14. package/android/src/main/AndroidManifest.xml +3 -0
  15. package/android/src/main/java/dev/latchway/reactnative/LatchwayReactNativePackage.kt +25 -0
  16. package/android/src/main/java/dev/latchway/reactnative/NativeLatchwayModule.kt +964 -0
  17. package/android/src/test/java/dev/latchway/reactnative/NativeLatchwayModuleTest.kt +521 -0
  18. package/contract.lock +7 -0
  19. package/docs/architecture.md +145 -0
  20. package/docs/conformance.md +68 -0
  21. package/docs/native-installation.md +172 -0
  22. package/docs/physical-device-evidence.md +559 -0
  23. package/docs/releasing.md +360 -0
  24. package/docs/security.md +55 -0
  25. package/ios/LatchwayNativeBridge.swift +1551 -0
  26. package/ios/RCTNativeLatchway.h +9 -0
  27. package/ios/RCTNativeLatchway.mm +175 -0
  28. package/lib/client.d.ts +29 -0
  29. package/lib/client.d.ts.map +1 -0
  30. package/lib/client.js +939 -0
  31. package/lib/client.js.map +1 -0
  32. package/lib/component-client.d.ts +15 -0
  33. package/lib/component-client.d.ts.map +1 -0
  34. package/lib/component-client.js +141 -0
  35. package/lib/component-client.js.map +1 -0
  36. package/lib/config.d.ts +25 -0
  37. package/lib/config.d.ts.map +1 -0
  38. package/lib/config.js +261 -0
  39. package/lib/config.js.map +1 -0
  40. package/lib/coordinator.d.ts +19 -0
  41. package/lib/coordinator.d.ts.map +1 -0
  42. package/lib/coordinator.js +167 -0
  43. package/lib/coordinator.js.map +1 -0
  44. package/lib/errors.d.ts +5 -0
  45. package/lib/errors.d.ts.map +1 -0
  46. package/lib/errors.js +201 -0
  47. package/lib/errors.js.map +1 -0
  48. package/lib/index.d.ts +8 -0
  49. package/lib/index.d.ts.map +1 -0
  50. package/lib/index.js +13 -0
  51. package/lib/index.js.map +1 -0
  52. package/lib/native/NativeLatchway.d.ts +25 -0
  53. package/lib/native/NativeLatchway.d.ts.map +1 -0
  54. package/lib/native/NativeLatchway.js +3 -0
  55. package/lib/native/NativeLatchway.js.map +1 -0
  56. package/lib/native/bridge.d.ts +5 -0
  57. package/lib/native/bridge.d.ts.map +1 -0
  58. package/lib/native/bridge.js +17 -0
  59. package/lib/native/bridge.js.map +1 -0
  60. package/lib/native-output.d.ts +3 -0
  61. package/lib/native-output.d.ts.map +1 -0
  62. package/lib/native-output.js +43 -0
  63. package/lib/native-output.js.map +1 -0
  64. package/lib/request-id.d.ts +2 -0
  65. package/lib/request-id.d.ts.map +1 -0
  66. package/lib/request-id.js +5 -0
  67. package/lib/request-id.js.map +1 -0
  68. package/lib/testing.d.ts +7 -0
  69. package/lib/testing.d.ts.map +1 -0
  70. package/lib/testing.js +9 -0
  71. package/lib/testing.js.map +1 -0
  72. package/lib/types.d.ts +200 -0
  73. package/lib/types.d.ts.map +1 -0
  74. package/lib/types.js +2 -0
  75. package/lib/types.js.map +1 -0
  76. package/lib/version.d.ts +8 -0
  77. package/lib/version.d.ts.map +1 -0
  78. package/lib/version.js +8 -0
  79. package/lib/version.js.map +1 -0
  80. package/package.json +130 -6
  81. package/react-native.config.cjs +7 -0
  82. package/release-compatibility.json +64 -0
  83. package/src/client.ts +1022 -0
  84. package/src/component-client.ts +158 -0
  85. package/src/config.ts +368 -0
  86. package/src/coordinator.ts +195 -0
  87. package/src/errors.ts +225 -0
  88. package/src/index.ts +53 -0
  89. package/src/native/NativeLatchway.ts +75 -0
  90. package/src/native/bridge.ts +23 -0
  91. package/src/native-output.ts +43 -0
  92. package/src/request-id.ts +5 -0
  93. package/src/testing.ts +11 -0
  94. package/src/types.ts +241 -0
  95. package/src/version.ts +7 -0
@@ -0,0 +1,9 @@
1
+ #import <Foundation/Foundation.h>
2
+ #import <LatchwayReactNativeSpec/LatchwayReactNativeSpec.h>
3
+
4
+ NS_ASSUME_NONNULL_BEGIN
5
+
6
+ @interface RCTNativeLatchway : NSObject <NativeLatchwaySpec>
7
+ @end
8
+
9
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,175 @@
1
+ #import "RCTNativeLatchway.h"
2
+ #if __has_include(<LatchwayReactNative/LatchwayReactNative-Swift.h>)
3
+ #import <LatchwayReactNative/LatchwayReactNative-Swift.h>
4
+ #else
5
+ #import "LatchwayReactNative-Swift.h"
6
+ #endif
7
+
8
+ @implementation RCTNativeLatchway {
9
+ LatchwayNativeBridge *_bridge;
10
+ }
11
+
12
+ RCT_EXPORT_MODULE(NativeLatchway)
13
+
14
+ - (instancetype)init {
15
+ if ((self = [super init])) {
16
+ _bridge = [LatchwayNativeBridge new];
17
+ }
18
+ return self;
19
+ }
20
+
21
+ - (void)configure:(NSString *)clientID
22
+ configurationJSON:(NSString *)configurationJSON
23
+ resolve:(RCTPromiseResolveBlock)resolve
24
+ reject:(RCTPromiseRejectBlock)reject {
25
+ [_bridge configureWithClientID:clientID configurationJSON:configurationJSON resolve:resolve reject:reject];
26
+ }
27
+
28
+ - (void)configureComponent:(NSString *)clientID
29
+ configurationJSON:(NSString *)configurationJSON
30
+ componentJSON:(NSString *)componentJSON
31
+ resolve:(RCTPromiseResolveBlock)resolve
32
+ reject:(RCTPromiseRejectBlock)reject {
33
+ [_bridge configureComponentWithClientID:clientID configurationJSON:configurationJSON componentJSON:componentJSON resolve:resolve reject:reject];
34
+ }
35
+
36
+ - (void)startRequest:(NSString *)clientID
37
+ operationID:(NSString *)operationID
38
+ identityToken:(NSString *)identityToken
39
+ requestJSON:(NSString *)requestJSON
40
+ resolve:(RCTPromiseResolveBlock)resolve
41
+ reject:(RCTPromiseRejectBlock)reject {
42
+ [_bridge startRequestWithClientID:clientID operationID:operationID identityToken:identityToken requestJSON:requestJSON resolve:resolve reject:reject];
43
+ }
44
+
45
+ - (void)readResponseChunk:(NSString *)clientID
46
+ operationID:(NSString *)operationID
47
+ responseID:(NSString *)responseID
48
+ maximumBytes:(double)maximumBytes
49
+ resolve:(RCTPromiseResolveBlock)resolve
50
+ reject:(RCTPromiseRejectBlock)reject {
51
+ [_bridge readResponseChunkWithClientID:clientID operationID:operationID responseID:responseID maximumBytes:maximumBytes resolve:resolve reject:reject];
52
+ }
53
+
54
+ - (void)closeResponse:(NSString *)clientID
55
+ responseID:(NSString *)responseID
56
+ resolve:(RCTPromiseResolveBlock)resolve
57
+ reject:(RCTPromiseRejectBlock)reject {
58
+ [_bridge closeResponseWithClientID:clientID responseID:responseID resolve:^{ resolve(nil); } reject:reject];
59
+ }
60
+
61
+ - (void)refresh:(NSString *)clientID
62
+ operationID:(NSString *)operationID
63
+ identityToken:(NSString *)identityToken
64
+ resolve:(RCTPromiseResolveBlock)resolve
65
+ reject:(RCTPromiseRejectBlock)reject {
66
+ [_bridge refreshWithClientID:clientID operationID:operationID identityToken:identityToken resolve:^{ resolve(nil); } reject:reject];
67
+ }
68
+
69
+ - (void)quota:(NSString *)clientID
70
+ operationID:(NSString *)operationID
71
+ identityToken:(NSString *)identityToken
72
+ feature:(NSString *)feature
73
+ resolve:(RCTPromiseResolveBlock)resolve
74
+ reject:(RCTPromiseRejectBlock)reject {
75
+ [_bridge quotaWithClientID:clientID operationID:operationID identityToken:identityToken feature:feature resolve:resolve reject:reject];
76
+ }
77
+
78
+ - (void)diagnostics:(NSString *)clientID
79
+ operationID:(NSString *)operationID
80
+ identityToken:(NSString *)identityToken
81
+ resolve:(RCTPromiseResolveBlock)resolve
82
+ reject:(RCTPromiseRejectBlock)reject {
83
+ [_bridge diagnosticsWithClientID:clientID operationID:operationID identityToken:identityToken resolve:resolve reject:reject];
84
+ }
85
+
86
+ - (void)establishDirectAttestation:(NSString *)clientID
87
+ operationID:(NSString *)operationID
88
+ resolve:(RCTPromiseResolveBlock)resolve
89
+ reject:(RCTPromiseRejectBlock)reject {
90
+ [_bridge establishDirectAttestationWithClientID:clientID operationID:operationID resolve:^{ resolve(nil); } reject:reject];
91
+ }
92
+
93
+ - (void)componentDiagnostics:(NSString *)clientID
94
+ operationID:(NSString *)operationID
95
+ resolve:(RCTPromiseResolveBlock)resolve
96
+ reject:(RCTPromiseRejectBlock)reject {
97
+ [_bridge componentDiagnosticsWithClientID:clientID operationID:operationID resolve:resolve reject:reject];
98
+ }
99
+
100
+ - (void)prepareComponents:(NSString *)clientID
101
+ operationID:(NSString *)operationID
102
+ identityToken:(NSString *)identityToken
103
+ componentsJSON:(NSString *)componentsJSON
104
+ resolve:(RCTPromiseResolveBlock)resolve
105
+ reject:(RCTPromiseRejectBlock)reject {
106
+ [_bridge prepareComponentsWithClientID:clientID operationID:operationID identityToken:identityToken componentsJSON:componentsJSON resolve:resolve reject:reject];
107
+ }
108
+
109
+ - (void)replaceComponent:(NSString *)clientID
110
+ operationID:(NSString *)operationID
111
+ identityToken:(NSString *)identityToken
112
+ componentJSON:(NSString *)componentJSON
113
+ resolve:(RCTPromiseResolveBlock)resolve
114
+ reject:(RCTPromiseRejectBlock)reject {
115
+ [_bridge replaceComponentWithClientID:clientID operationID:operationID identityToken:identityToken componentJSON:componentJSON resolve:resolve reject:reject];
116
+ }
117
+
118
+ - (void)rootComponentDiagnostics:(NSString *)clientID
119
+ operationID:(NSString *)operationID
120
+ componentJSON:(NSString *)componentJSON
121
+ resolve:(RCTPromiseResolveBlock)resolve
122
+ reject:(RCTPromiseRejectBlock)reject {
123
+ [_bridge rootComponentDiagnosticsWithClientID:clientID operationID:operationID componentJSON:componentJSON resolve:resolve reject:reject];
124
+ }
125
+
126
+ - (void)revokeComponent:(NSString *)clientID
127
+ operationID:(NSString *)operationID
128
+ identityToken:(NSString *)identityToken
129
+ componentJSON:(NSString *)componentJSON
130
+ resolve:(RCTPromiseResolveBlock)resolve
131
+ reject:(RCTPromiseRejectBlock)reject {
132
+ [_bridge revokeComponentWithClientID:clientID operationID:operationID identityToken:identityToken componentJSON:componentJSON resolve:^{ resolve(nil); } reject:reject];
133
+ }
134
+
135
+ - (void)revoke:(NSString *)clientID
136
+ operationID:(NSString *)operationID
137
+ identityToken:(NSString *)identityToken
138
+ resolve:(RCTPromiseResolveBlock)resolve
139
+ reject:(RCTPromiseRejectBlock)reject {
140
+ [_bridge revokeWithClientID:clientID operationID:operationID identityToken:identityToken resolve:^{ resolve(nil); } reject:reject];
141
+ }
142
+
143
+ - (void)revokeFamily:(NSString *)clientID
144
+ operationID:(NSString *)operationID
145
+ identityToken:(NSString *)identityToken
146
+ resolve:(RCTPromiseResolveBlock)resolve
147
+ reject:(RCTPromiseRejectBlock)reject {
148
+ [_bridge revokeFamilyWithClientID:clientID operationID:operationID identityToken:identityToken resolve:^{ resolve(nil); } reject:reject];
149
+ }
150
+
151
+ - (void)revokeFamilyWithComponents:(NSString *)clientID
152
+ operationID:(NSString *)operationID
153
+ identityToken:(NSString *)identityToken
154
+ componentsJSON:(NSString *)componentsJSON
155
+ resolve:(RCTPromiseResolveBlock)resolve
156
+ reject:(RCTPromiseRejectBlock)reject {
157
+ [_bridge revokeFamilyWithComponentsWithClientID:clientID operationID:operationID identityToken:identityToken componentsJSON:componentsJSON resolve:^{ resolve(nil); } reject:reject];
158
+ }
159
+
160
+ - (void)cancel:(NSString *)clientID operationID:(NSString *)operationID {
161
+ [_bridge cancelWithClientID:clientID operationID:operationID];
162
+ }
163
+
164
+ - (void)dispose:(NSString *)clientID
165
+ resolve:(RCTPromiseResolveBlock)resolve
166
+ reject:(RCTPromiseRejectBlock)reject {
167
+ [_bridge disposeWithClientID:clientID resolve:^{ resolve(nil); } reject:reject];
168
+ }
169
+
170
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
171
+ (const facebook::react::ObjCTurboModule::InitParams &)params {
172
+ return std::make_shared<facebook::react::NativeLatchwaySpecJSI>(params);
173
+ }
174
+
175
+ @end
@@ -0,0 +1,29 @@
1
+ import type { RuntimeConfiguration } from "./config.js";
2
+ import type { LatchwayClient, LatchwayFetch, LatchwayFetchInit, QuotaSnapshot, ReactNativeDiagnostics, ReactNativeComponentDiagnostics, ReactNativeIOSComponent } from "./types.js";
3
+ export declare class DefaultLatchwayClient implements LatchwayClient {
4
+ private readonly config;
5
+ readonly gatewayURL: string;
6
+ readonly ready: Promise<void>;
7
+ private readonly lease;
8
+ private disposed;
9
+ constructor(config: RuntimeConfiguration);
10
+ fetch(input: RequestInfo | URL, init?: LatchwayFetchInit): Promise<Response>;
11
+ fetchFor(feature: string): LatchwayFetch;
12
+ quota(feature: string): Promise<QuotaSnapshot>;
13
+ diagnostics(): Promise<ReactNativeDiagnostics>;
14
+ refresh(): Promise<void>;
15
+ prepareComponents(components: readonly ReactNativeIOSComponent[]): Promise<ReactNativeComponentDiagnostics[]>;
16
+ revokeComponent(component: ReactNativeIOSComponent): Promise<void>;
17
+ replaceComponent(component: ReactNativeIOSComponent): Promise<ReactNativeComponentDiagnostics>;
18
+ componentDiagnostics(component: ReactNativeIOSComponent): Promise<ReactNativeComponentDiagnostics>;
19
+ revokeCurrentInstallation(): Promise<void>;
20
+ revokeCurrentInstallationFamily(retiring?: readonly ReactNativeIOSComponent[]): Promise<void>;
21
+ dispose(): Promise<void>;
22
+ private nativeString;
23
+ private nativeVoid;
24
+ private nativeComponentOperation;
25
+ private createRequest;
26
+ private assertGatewayTarget;
27
+ private assertActive;
28
+ }
29
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAMxD,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EAEjB,aAAa,EACb,sBAAsB,EACtB,+BAA+B,EAC/B,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAgJpB,qBAAa,qBAAsB,YAAW,cAAc;IAM9C,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAS;gBAEI,MAAM,EAAE,oBAAoB;IAMnD,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmEtF,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAQlC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAO9C,WAAW,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAQ9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB,iBAAiB,CACrB,UAAU,EAAE,SAAS,uBAAuB,EAAE,GAC7C,OAAO,CAAC,+BAA+B,EAAE,CAAC;IAWvC,eAAe,CAAC,SAAS,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IASlE,gBAAgB,CAAC,SAAS,EAAE,uBAAuB,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAW9F,oBAAoB,CAAC,SAAS,EAAE,uBAAuB,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAiBlG,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1C,+BAA+B,CAAC,QAAQ,GAAE,SAAS,uBAAuB,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAajG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAOhB,YAAY;YAeZ,UAAU;YAaV,wBAAwB;IAqBtC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,YAAY;CAKrB"}