@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.
- package/CHANGELOG.md +97 -0
- package/LatchwayReactNative.podspec +33 -0
- package/NOTICE +7 -0
- package/README.md +286 -3
- package/SECURITY.md +69 -0
- package/android/build.gradle.kts +62 -0
- package/android/consumer-rules.pro +2 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +9 -0
- package/android/gradle.properties +4 -0
- package/android/gradlew +251 -0
- package/android/gradlew.bat +94 -0
- package/android/settings.gradle.kts +33 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/java/dev/latchway/reactnative/LatchwayReactNativePackage.kt +25 -0
- package/android/src/main/java/dev/latchway/reactnative/NativeLatchwayModule.kt +964 -0
- package/android/src/test/java/dev/latchway/reactnative/NativeLatchwayModuleTest.kt +521 -0
- package/contract.lock +7 -0
- package/docs/architecture.md +145 -0
- package/docs/conformance.md +68 -0
- package/docs/native-installation.md +172 -0
- package/docs/physical-device-evidence.md +559 -0
- package/docs/releasing.md +360 -0
- package/docs/security.md +55 -0
- package/ios/LatchwayNativeBridge.swift +1551 -0
- package/ios/RCTNativeLatchway.h +9 -0
- package/ios/RCTNativeLatchway.mm +175 -0
- package/lib/client.d.ts +29 -0
- package/lib/client.d.ts.map +1 -0
- package/lib/client.js +939 -0
- package/lib/client.js.map +1 -0
- package/lib/component-client.d.ts +15 -0
- package/lib/component-client.d.ts.map +1 -0
- package/lib/component-client.js +141 -0
- package/lib/component-client.js.map +1 -0
- package/lib/config.d.ts +25 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/config.js +261 -0
- package/lib/config.js.map +1 -0
- package/lib/coordinator.d.ts +19 -0
- package/lib/coordinator.d.ts.map +1 -0
- package/lib/coordinator.js +167 -0
- package/lib/coordinator.js.map +1 -0
- package/lib/errors.d.ts +5 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +201 -0
- package/lib/errors.js.map +1 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +13 -0
- package/lib/index.js.map +1 -0
- package/lib/native/NativeLatchway.d.ts +25 -0
- package/lib/native/NativeLatchway.d.ts.map +1 -0
- package/lib/native/NativeLatchway.js +3 -0
- package/lib/native/NativeLatchway.js.map +1 -0
- package/lib/native/bridge.d.ts +5 -0
- package/lib/native/bridge.d.ts.map +1 -0
- package/lib/native/bridge.js +17 -0
- package/lib/native/bridge.js.map +1 -0
- package/lib/native-output.d.ts +3 -0
- package/lib/native-output.d.ts.map +1 -0
- package/lib/native-output.js +43 -0
- package/lib/native-output.js.map +1 -0
- package/lib/request-id.d.ts +2 -0
- package/lib/request-id.d.ts.map +1 -0
- package/lib/request-id.js +5 -0
- package/lib/request-id.js.map +1 -0
- package/lib/testing.d.ts +7 -0
- package/lib/testing.d.ts.map +1 -0
- package/lib/testing.js +9 -0
- package/lib/testing.js.map +1 -0
- package/lib/types.d.ts +200 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/version.d.ts +8 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +8 -0
- package/lib/version.js.map +1 -0
- package/package.json +130 -6
- package/react-native.config.cjs +7 -0
- package/release-compatibility.json +64 -0
- package/src/client.ts +1022 -0
- package/src/component-client.ts +158 -0
- package/src/config.ts +368 -0
- package/src/coordinator.ts +195 -0
- package/src/errors.ts +225 -0
- package/src/index.ts +53 -0
- package/src/native/NativeLatchway.ts +75 -0
- package/src/native/bridge.ts +23 -0
- package/src/native-output.ts +43 -0
- package/src/request-id.ts +5 -0
- package/src/testing.ts +11 -0
- package/src/types.ts +241 -0
- package/src/version.ts +7 -0
|
@@ -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
|
package/lib/client.d.ts
ADDED
|
@@ -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"}
|