@bota.dev/react-native-app-sdk 2.0.0-beta.10 → 2.0.0-beta.11

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 (41) hide show
  1. package/README.md +12 -1
  2. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKPackage.kt +9 -0
  3. package/android/src/main/java/dev/bota/sdk/reactnative/upload/BotaUploadV2BackendModule.kt +66 -0
  4. package/android/src/main/java/dev/bota/sdk/reactnative/upload/NativeUpload.kt +400 -0
  5. package/android/src/main/java/dev/bota/sdk/reactnative/upload/UploadHttp.kt +158 -0
  6. package/android/src/main/java/dev/bota/sdk/reactnative/upload/UploadJournal.kt +112 -0
  7. package/android/src/main/java/dev/bota/sdk/reactnative/upload/UploadModels.kt +171 -0
  8. package/generated/codegen-contract.json +167 -8
  9. package/ios/BotaUploadV2Backend.mm +49 -0
  10. package/ios/UploadBackend/BotaUploadV2BackendBridge.swift +98 -0
  11. package/ios/UploadBackend/UploadCoordinator.swift +84 -0
  12. package/ios/UploadBackend/UploadHTTP.swift +82 -0
  13. package/ios/UploadBackend/UploadJournal.swift +187 -0
  14. package/ios/UploadBackend/UploadModels.swift +273 -0
  15. package/ios/UploadBackend/UploadOperation.swift +391 -0
  16. package/lib/commonjs/encryptedUploadV2Backend.js +200 -0
  17. package/lib/commonjs/encryptedUploadV2Backend.js.map +1 -0
  18. package/lib/commonjs/index.js +5 -0
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/commonjs/sdkIdentity.js +1 -1
  21. package/lib/commonjs/specs/NativeBotaUploadV2Backend.js +11 -0
  22. package/lib/commonjs/specs/NativeBotaUploadV2Backend.js.map +1 -0
  23. package/lib/module/encryptedUploadV2Backend.js +196 -0
  24. package/lib/module/encryptedUploadV2Backend.js.map +1 -0
  25. package/lib/module/index.js +3 -0
  26. package/lib/module/index.js.map +1 -1
  27. package/lib/module/sdkIdentity.js +1 -1
  28. package/lib/module/specs/NativeBotaUploadV2Backend.js +9 -0
  29. package/lib/module/specs/NativeBotaUploadV2Backend.js.map +1 -0
  30. package/lib/typescript/encryptedUploadV2Backend.d.ts +41 -0
  31. package/lib/typescript/encryptedUploadV2Backend.d.ts.map +1 -0
  32. package/lib/typescript/index.d.ts +3 -0
  33. package/lib/typescript/index.d.ts.map +1 -1
  34. package/lib/typescript/sdkIdentity.d.ts +1 -1
  35. package/lib/typescript/specs/NativeBotaUploadV2Backend.d.ts +18 -0
  36. package/lib/typescript/specs/NativeBotaUploadV2Backend.d.ts.map +1 -0
  37. package/package.json +1 -1
  38. package/src/encryptedUploadV2Backend.ts +171 -0
  39. package/src/index.ts +6 -0
  40. package/src/sdkIdentity.ts +1 -1
  41. package/src/specs/NativeBotaUploadV2Backend.ts +19 -0
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createManagedEncryptedUploadV2Backend = createManagedEncryptedUploadV2Backend;
7
+ /** @internal Dependency injection keeps the public facade and host tests on the same implementation. */
8
+ function createManagedEncryptedUploadV2Backend(native, recordings, options) {
9
+ // Capture identity once; mutating the caller's object cannot repoint an active request.
10
+ const config = {
11
+ ...options
12
+ };
13
+ const url = new URL(config.baseUrl);
14
+ const path = url.pathname.replace(/\/$/, '');
15
+ if (url.protocol !== 'https:' || url.username || url.password || url.search || url.hash || !/^(\/[A-Za-z0-9_-]+)+$/.test(path) || !config.scopeKey || !config.signal) {
16
+ throw new Error('Invalid encrypted upload backend configuration');
17
+ }
18
+ const apiOrigin = url.origin;
19
+ const attempts = new Set();
20
+ let disposed = false;
21
+ const backend = {
22
+ async sync(device, recording, target) {
23
+ device = {
24
+ ...device
25
+ };
26
+ recording = {
27
+ ...recording
28
+ };
29
+ target = {
30
+ ...target,
31
+ priorUpload: target.priorUpload && {
32
+ ...target.priorUpload
33
+ }
34
+ };
35
+ if (!native) throw new Error('Encrypted upload backend requires the matching native SDK binary');
36
+ if (disposed || config.signal.aborted || target.signal?.aborted) throw new Error('Encrypted upload cancelled');
37
+ const signal = new AbortController();
38
+ let operationId;
39
+ let selected;
40
+ let cancelTask;
41
+ let completed = false;
42
+ const check = () => {
43
+ if (disposed || signal.signal.aborted || config.signal.aborted || target.signal?.aborted) {
44
+ throw new Error('Encrypted upload cancelled');
45
+ }
46
+ };
47
+ const cancel = () => {
48
+ signal.abort();
49
+ if (operationId) cancelTask ??= Promise.resolve().then(() => native.cancel(operationId));
50
+ return cancelTask ?? Promise.resolve();
51
+ };
52
+ // Event callbacks must not create unhandled rejections; disposal awaits the same task.
53
+ const abort = () => {
54
+ void cancel().catch(() => {});
55
+ };
56
+ let settle;
57
+ const settled = new Promise(resolve => {
58
+ settle = resolve;
59
+ });
60
+ const attempt = {
61
+ cancel,
62
+ settled
63
+ };
64
+ attempts.add(attempt);
65
+ let subscription;
66
+ try {
67
+ config.signal.addEventListener('abort', abort, {
68
+ once: true
69
+ });
70
+ target.signal?.addEventListener('abort', abort, {
71
+ once: true
72
+ });
73
+ subscription = native.onCredentialsRequested(event => {
74
+ if (!operationId || event.operationId !== operationId) return;
75
+ void (async () => {
76
+ try {
77
+ check();
78
+ const token = await config.getAccessToken(signal.signal);
79
+ check();
80
+ await native.resolveCredentials(event.requestId, token);
81
+ } catch {
82
+ await native.rejectCredentials(event.requestId).catch(() => {});
83
+ }
84
+ })();
85
+ });
86
+ check();
87
+ await recordings.syncEncryptedRecordingV2(device, recording, async context => {
88
+ check();
89
+ if (!context.operationId || operationId && operationId !== context.operationId) {
90
+ throw new Error('Encrypted upload operation changed');
91
+ }
92
+ operationId = context.operationId;
93
+ const value = JSON.parse(await native.prepare(JSON.stringify({
94
+ operationId,
95
+ scope: {
96
+ apiOrigin,
97
+ apiBasePath: path,
98
+ scopeKey: config.scopeKey,
99
+ accountId: config.accountId,
100
+ projectId: config.projectId,
101
+ endUserId: config.endUserId,
102
+ organizationId: config.organizationId ?? '',
103
+ environment: config.environment,
104
+ deviceId: target.deviceId,
105
+ bindingGeneration: target.bindingGeneration,
106
+ serialNumber: device.serialNumber,
107
+ nativeDeviceId: device.id
108
+ },
109
+ recording: {
110
+ uuid: context.recording.uuid,
111
+ generation: context.recording.generation,
112
+ ciphertextLength: context.recording.ciphertextLength,
113
+ ciphertextSha256: context.recording.ciphertextSha256,
114
+ startedAtMs: context.recording.startedAtMs,
115
+ durationMs: context.recording.durationMs,
116
+ plaintextLength: context.recording.plaintextLength,
117
+ storageFormat: context.recording.storageFormat
118
+ },
119
+ capability: {
120
+ rawValueHex: context.capability.rawValueHex,
121
+ flags: context.capability.flags
122
+ },
123
+ ...(context.checkpoint === undefined ? {} : {
124
+ checkpoint: {
125
+ version: context.checkpoint.version,
126
+ uploadSessionId: context.checkpoint.uploadSessionId,
127
+ ownerRevision: context.checkpoint.ownerRevision,
128
+ revision: context.checkpoint.revision,
129
+ nextCiphertextOffset: context.checkpoint.nextCiphertextOffset,
130
+ prefixSha256: context.checkpoint.prefixSha256,
131
+ highestContiguousSequence: context.checkpoint.highestContiguousSequence,
132
+ transportSessionId: context.checkpoint.transportSessionId,
133
+ sinkRegistrationId: context.checkpoint.sinkRegistrationId,
134
+ windowPackets: context.checkpoint.windowPackets,
135
+ dataPayloadBytes: context.checkpoint.dataPayloadBytes
136
+ }
137
+ }),
138
+ ...(target.priorUpload === undefined ? {} : {
139
+ priorJournalEntry: {
140
+ recordingId: target.priorUpload.recordingId,
141
+ sessionId: target.priorUpload.sessionId,
142
+ ownerRevision: target.priorUpload.ownerRevision
143
+ }
144
+ })
145
+ })));
146
+ check();
147
+ const result = value;
148
+ if (!result || result.profile !== 'encrypted_upload_v2' || !/^rec_[A-Za-z0-9_-]+$/.test(result.recordingId) || !/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/.test(result.uploadSessionId) || !Number.isSafeInteger(result.ownerRevision) || result.ownerRevision < 1 || !result.materialRegistrationId || !['legacy_allowed', 'v2_preferred', 'v2_required'].includes(result.securityPolicy)) {
149
+ throw new Error('Invalid encrypted upload backend response');
150
+ }
151
+ selected = result;
152
+ return {
153
+ profile: result.profile,
154
+ uploadSessionId: result.uploadSessionId,
155
+ ownerRevision: result.ownerRevision,
156
+ securityPolicy: result.securityPolicy,
157
+ materialRegistrationId: result.materialRegistrationId
158
+ };
159
+ }, progress => {
160
+ if (!signal.signal.aborted) target.onProgress?.(progress);
161
+ }, {
162
+ signal: signal.signal
163
+ });
164
+ check();
165
+ if (!operationId || !selected) throw new Error('Encrypted upload confirmation is missing');
166
+ // The native sync only resolves after signed receipt/CONFIRM. Never infer this from HTTP 2xx.
167
+ await native.complete(operationId);
168
+ completed = true;
169
+ return {
170
+ recordingId: selected.recordingId
171
+ };
172
+ } finally {
173
+ // Native complete already releases the operation. A later bridge cancellation
174
+ // failure must not turn confirmed device cleanup into a retryable sync failure.
175
+ try {
176
+ if (completed) signal.abort();else await cancel();
177
+ } finally {
178
+ attempts.delete(attempt);
179
+ config.signal.removeEventListener('abort', abort);
180
+ target.signal?.removeEventListener('abort', abort);
181
+ subscription?.remove();
182
+ settle();
183
+ }
184
+ }
185
+ },
186
+ async dispose() {
187
+ disposed = true;
188
+ const results = await Promise.allSettled([...attempts].map(async attempt => {
189
+ try {
190
+ await attempt.cancel();
191
+ } finally {
192
+ await attempt.settled;
193
+ }
194
+ }));
195
+ if (results.some(result => result.status === 'rejected')) throw new Error('Encrypted upload cancellation failed');
196
+ }
197
+ };
198
+ return backend;
199
+ }
200
+ //# sourceMappingURL=encryptedUploadV2Backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createManagedEncryptedUploadV2Backend","native","recordings","options","config","url","URL","baseUrl","path","pathname","replace","protocol","username","password","search","hash","test","scopeKey","signal","Error","apiOrigin","origin","attempts","Set","disposed","backend","sync","device","recording","target","priorUpload","aborted","AbortController","operationId","selected","cancelTask","completed","check","cancel","abort","Promise","resolve","then","catch","settle","settled","attempt","add","subscription","addEventListener","once","onCredentialsRequested","event","token","getAccessToken","resolveCredentials","requestId","rejectCredentials","syncEncryptedRecordingV2","context","value","JSON","parse","prepare","stringify","scope","apiBasePath","accountId","projectId","endUserId","organizationId","environment","deviceId","bindingGeneration","serialNumber","nativeDeviceId","id","uuid","generation","ciphertextLength","ciphertextSha256","startedAtMs","durationMs","plaintextLength","storageFormat","capability","rawValueHex","flags","checkpoint","undefined","version","uploadSessionId","ownerRevision","revision","nextCiphertextOffset","prefixSha256","highestContiguousSequence","transportSessionId","sinkRegistrationId","windowPackets","dataPayloadBytes","priorJournalEntry","recordingId","sessionId","result","profile","Number","isSafeInteger","materialRegistrationId","includes","securityPolicy","progress","onProgress","complete","delete","removeEventListener","remove","dispose","results","allSettled","map","some","status"],"sourceRoot":"../../src","sources":["encryptedUploadV2Backend.ts"],"mappings":";;;;;;AAsCA;AACO,SAASA,qCAAqCA,CACnDC,MAAmB,EAAEC,UAAwC,EAC7DC,OAAwC,EACd;EAC1B;EACA,MAAMC,MAAM,GAAG;IAAE,GAAGD;EAAQ,CAAC;EAC7B,MAAME,GAAG,GAAG,IAAIC,GAAG,CAACF,MAAM,CAACG,OAAO,CAAC;EACnC,MAAMC,IAAI,GAAGH,GAAG,CAACI,QAAQ,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EAC5C,IAAIL,GAAG,CAACM,QAAQ,KAAK,QAAQ,IAAIN,GAAG,CAACO,QAAQ,IAAIP,GAAG,CAACQ,QAAQ,IAAIR,GAAG,CAACS,MAAM,IAAIT,GAAG,CAACU,IAAI,IACrF,CAAC,uBAAuB,CAACC,IAAI,CAACR,IAAI,CAAC,IAAI,CAACJ,MAAM,CAACa,QAAQ,IAAI,CAACb,MAAM,CAACc,MAAM,EAAE;IAC3E,MAAM,IAAIC,KAAK,CAAC,gDAAgD,CAAC;EACnE;EACA,MAAMC,SAAS,GAAGf,GAAG,CAACgB,MAAM;EAC5B,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAAsD,CAAC;EAC/E,IAAIC,QAAQ,GAAG,KAAK;EACpB,MAAMC,OAAiC,GAAG;IACxC,MAAMC,IAAIA,CAACC,MAAM,EAAEC,SAAS,EAAEC,MAAM,EAAE;MACpCF,MAAM,GAAG;QAAE,GAAGA;MAAO,CAAC;MACtBC,SAAS,GAAG;QAAE,GAAGA;MAAU,CAAC;MAC5BC,MAAM,GAAG;QAAE,GAAGA,MAAM;QAAEC,WAAW,EAAED,MAAM,CAACC,WAAW,IAAI;UAAE,GAAGD,MAAM,CAACC;QAAY;MAAE,CAAC;MACpF,IAAI,CAAC7B,MAAM,EAAE,MAAM,IAAIkB,KAAK,CAAC,kEAAkE,CAAC;MAChG,IAAIK,QAAQ,IAAIpB,MAAM,CAACc,MAAM,CAACa,OAAO,IAAIF,MAAM,CAACX,MAAM,EAAEa,OAAO,EAAE,MAAM,IAAIZ,KAAK,CAAC,4BAA4B,CAAC;MAC9G,MAAMD,MAAM,GAAG,IAAIc,eAAe,CAAC,CAAC;MACpC,IAAIC,WAA+B;MACnC,IAAIC,QAAsF;MAC1F,IAAIC,UAAqC;MACzC,IAAIC,SAAS,GAAG,KAAK;MACrB,MAAMC,KAAK,GAAGA,CAAA,KAAM;QAClB,IAAIb,QAAQ,IAAIN,MAAM,CAACA,MAAM,CAACa,OAAO,IAAI3B,MAAM,CAACc,MAAM,CAACa,OAAO,IAAIF,MAAM,CAACX,MAAM,EAAEa,OAAO,EAAE;UACxF,MAAM,IAAIZ,KAAK,CAAC,4BAA4B,CAAC;QAC/C;MACF,CAAC;MACD,MAAMmB,MAAM,GAAGA,CAAA,KAAM;QACnBpB,MAAM,CAACqB,KAAK,CAAC,CAAC;QACd,IAAIN,WAAW,EAAEE,UAAU,KAAKK,OAAO,CAACC,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,MAAMzC,MAAM,CAACqC,MAAM,CAACL,WAAY,CAAC,CAAC;QACzF,OAAOE,UAAU,IAAIK,OAAO,CAACC,OAAO,CAAC,CAAC;MACxC,CAAC;MACD;MACA,MAAMF,KAAK,GAAGA,CAAA,KAAM;QAAE,KAAKD,MAAM,CAAC,CAAC,CAACK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;MAAE,CAAC;MACtD,IAAIC,MAAmB;MACvB,MAAMC,OAAO,GAAG,IAAIL,OAAO,CAAOC,OAAO,IAAI;QAAEG,MAAM,GAAGH,OAAO;MAAE,CAAC,CAAC;MACnE,MAAMK,OAAO,GAAG;QAAER,MAAM;QAAEO;MAAQ,CAAC;MACnCvB,QAAQ,CAACyB,GAAG,CAACD,OAAO,CAAC;MACrB,IAAIE,YAA4C;MAChD,IAAI;QACF5C,MAAM,CAACc,MAAM,CAAC+B,gBAAgB,CAAC,OAAO,EAAEV,KAAK,EAAE;UAAEW,IAAI,EAAE;QAAK,CAAC,CAAC;QAC9DrB,MAAM,CAACX,MAAM,EAAE+B,gBAAgB,CAAC,OAAO,EAAEV,KAAK,EAAE;UAAEW,IAAI,EAAE;QAAK,CAAC,CAAC;QAC/DF,YAAY,GAAG/C,MAAM,CAACkD,sBAAsB,CAACC,KAAK,IAAI;UACpD,IAAI,CAACnB,WAAW,IAAImB,KAAK,CAACnB,WAAW,KAAKA,WAAW,EAAE;UACvD,KAAK,CAAC,YAAY;YAChB,IAAI;cACFI,KAAK,CAAC,CAAC;cACP,MAAMgB,KAAK,GAAG,MAAMjD,MAAM,CAACkD,cAAc,CAACpC,MAAM,CAACA,MAAM,CAAC;cACxDmB,KAAK,CAAC,CAAC;cACP,MAAMpC,MAAM,CAACsD,kBAAkB,CAACH,KAAK,CAACI,SAAS,EAAEH,KAAK,CAAC;YACzD,CAAC,CAAC,MAAM;cAAE,MAAMpD,MAAM,CAACwD,iBAAiB,CAACL,KAAK,CAACI,SAAS,CAAC,CAACb,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAAE;UAC7E,CAAC,EAAE,CAAC;QACN,CAAC,CAAC;QACFN,KAAK,CAAC,CAAC;QACP,MAAMnC,UAAU,CAACwD,wBAAwB,CAAC/B,MAAM,EAAEC,SAAS,EAAE,MAAM+B,OAAO,IAAI;UAC5EtB,KAAK,CAAC,CAAC;UACP,IAAI,CAACsB,OAAO,CAAC1B,WAAW,IAAKA,WAAW,IAAIA,WAAW,KAAK0B,OAAO,CAAC1B,WAAY,EAAE;YAChF,MAAM,IAAId,KAAK,CAAC,oCAAoC,CAAC;UACvD;UACAc,WAAW,GAAG0B,OAAO,CAAC1B,WAAW;UACjC,MAAM2B,KAAc,GAAGC,IAAI,CAACC,KAAK,CAAC,MAAM7D,MAAM,CAAC8D,OAAO,CAACF,IAAI,CAACG,SAAS,CAAC;YACpE/B,WAAW;YACXgC,KAAK,EAAE;cAAE7C,SAAS;cAAE8C,WAAW,EAAE1D,IAAI;cAAES,QAAQ,EAAEb,MAAM,CAACa,QAAQ;cAC9DkD,SAAS,EAAE/D,MAAM,CAAC+D,SAAS;cAAEC,SAAS,EAAEhE,MAAM,CAACgE,SAAS;cAAEC,SAAS,EAAEjE,MAAM,CAACiE,SAAS;cACrFC,cAAc,EAAElE,MAAM,CAACkE,cAAc,IAAI,EAAE;cAAEC,WAAW,EAAEnE,MAAM,CAACmE,WAAW;cAC5EC,QAAQ,EAAE3C,MAAM,CAAC2C,QAAQ;cAAEC,iBAAiB,EAAE5C,MAAM,CAAC4C,iBAAiB;cACtEC,YAAY,EAAE/C,MAAM,CAAC+C,YAAY;cAAEC,cAAc,EAAEhD,MAAM,CAACiD;YAAG,CAAC;YAChEhD,SAAS,EAAE;cAAEiD,IAAI,EAAElB,OAAO,CAAC/B,SAAS,CAACiD,IAAI;cAAEC,UAAU,EAAEnB,OAAO,CAAC/B,SAAS,CAACkD,UAAU;cACjFC,gBAAgB,EAAEpB,OAAO,CAAC/B,SAAS,CAACmD,gBAAgB;cAAEC,gBAAgB,EAAErB,OAAO,CAAC/B,SAAS,CAACoD,gBAAgB;cAC1GC,WAAW,EAAEtB,OAAO,CAAC/B,SAAS,CAACqD,WAAW;cAAEC,UAAU,EAAEvB,OAAO,CAAC/B,SAAS,CAACsD,UAAU;cACpFC,eAAe,EAAExB,OAAO,CAAC/B,SAAS,CAACuD,eAAe;cAAEC,aAAa,EAAEzB,OAAO,CAAC/B,SAAS,CAACwD;YAAc,CAAC;YACtGC,UAAU,EAAE;cAAEC,WAAW,EAAE3B,OAAO,CAAC0B,UAAU,CAACC,WAAW;cAAEC,KAAK,EAAE5B,OAAO,CAAC0B,UAAU,CAACE;YAAM,CAAC;YAC5F,IAAI5B,OAAO,CAAC6B,UAAU,KAAKC,SAAS,GAAG,CAAC,CAAC,GAAG;cAAED,UAAU,EAAE;gBACxDE,OAAO,EAAE/B,OAAO,CAAC6B,UAAU,CAACE,OAAO;gBAAEC,eAAe,EAAEhC,OAAO,CAAC6B,UAAU,CAACG,eAAe;gBACxFC,aAAa,EAAEjC,OAAO,CAAC6B,UAAU,CAACI,aAAa;gBAAEC,QAAQ,EAAElC,OAAO,CAAC6B,UAAU,CAACK,QAAQ;gBACtFC,oBAAoB,EAAEnC,OAAO,CAAC6B,UAAU,CAACM,oBAAoB;gBAAEC,YAAY,EAAEpC,OAAO,CAAC6B,UAAU,CAACO,YAAY;gBAC5GC,yBAAyB,EAAErC,OAAO,CAAC6B,UAAU,CAACQ,yBAAyB;gBACvEC,kBAAkB,EAAEtC,OAAO,CAAC6B,UAAU,CAACS,kBAAkB;gBAAEC,kBAAkB,EAAEvC,OAAO,CAAC6B,UAAU,CAACU,kBAAkB;gBACpHC,aAAa,EAAExC,OAAO,CAAC6B,UAAU,CAACW,aAAa;gBAAEC,gBAAgB,EAAEzC,OAAO,CAAC6B,UAAU,CAACY;cACxF;YAAE,CAAC,CAAC;YACJ,IAAIvE,MAAM,CAACC,WAAW,KAAK2D,SAAS,GAAG,CAAC,CAAC,GAAG;cAAEY,iBAAiB,EAAE;gBAC/DC,WAAW,EAAEzE,MAAM,CAACC,WAAW,CAACwE,WAAW;gBAAEC,SAAS,EAAE1E,MAAM,CAACC,WAAW,CAACyE,SAAS;gBACpFX,aAAa,EAAE/D,MAAM,CAACC,WAAW,CAAC8D;cAAc;YAAE,CAAC;UACvD,CAAC,CAAC,CAAC,CAAC;UACJvD,KAAK,CAAC,CAAC;UACP,MAAMmE,MAAM,GAAG5C,KAAqC;UACpD,IAAI,CAAC4C,MAAM,IAAIA,MAAM,CAACC,OAAO,KAAK,qBAAqB,IACrD,CAAC,sBAAsB,CAACzF,IAAI,CAACwF,MAAM,CAACF,WAAW,CAAC,IAChD,CAAC,+CAA+C,CAACtF,IAAI,CAACwF,MAAM,CAACb,eAAe,CAAC,IAC7E,CAACe,MAAM,CAACC,aAAa,CAACH,MAAM,CAACZ,aAAa,CAAC,IAAIY,MAAM,CAACZ,aAAa,GAAG,CAAC,IACvE,CAACY,MAAM,CAACI,sBAAsB,IAAI,CAAC,CAAC,gBAAgB,EAAE,cAAc,EAAE,aAAa,CAAC,CAACC,QAAQ,CAACL,MAAM,CAACM,cAAc,CAAC,EAAE;YACtH,MAAM,IAAI3F,KAAK,CAAC,2CAA2C,CAAC;UAC9D;UACAe,QAAQ,GAAGsE,MAAM;UACjB,OAAO;YAAEC,OAAO,EAAED,MAAM,CAACC,OAAO;YAAEd,eAAe,EAAEa,MAAM,CAACb,eAAe;YACvEC,aAAa,EAAEY,MAAM,CAACZ,aAAa;YAAEkB,cAAc,EAAEN,MAAM,CAACM,cAAc;YAC1EF,sBAAsB,EAAEJ,MAAM,CAACI;UAAuB,CAAC;QAC3D,CAAC,EAAEG,QAAQ,IAAI;UAAE,IAAI,CAAC7F,MAAM,CAACA,MAAM,CAACa,OAAO,EAAEF,MAAM,CAACmF,UAAU,GAAGD,QAAQ,CAAC;QAAE,CAAC,EAAE;UAAE7F,MAAM,EAAEA,MAAM,CAACA;QAAO,CAAC,CAAC;QACzGmB,KAAK,CAAC,CAAC;QACP,IAAI,CAACJ,WAAW,IAAI,CAACC,QAAQ,EAAE,MAAM,IAAIf,KAAK,CAAC,0CAA0C,CAAC;QAC1F;QACA,MAAMlB,MAAM,CAACgH,QAAQ,CAAChF,WAAW,CAAC;QAClCG,SAAS,GAAG,IAAI;QAChB,OAAO;UAAEkE,WAAW,EAAEpE,QAAQ,CAACoE;QAAY,CAAC;MAC9C,CAAC,SAAS;QACR;QACA;QACA,IAAI;UAAE,IAAIlE,SAAS,EAAElB,MAAM,CAACqB,KAAK,CAAC,CAAC,CAAC,KAAM,MAAMD,MAAM,CAAC,CAAC;QAAE,CAAC,SACnD;UACNhB,QAAQ,CAAC4F,MAAM,CAACpE,OAAO,CAAC;UACxB1C,MAAM,CAACc,MAAM,CAACiG,mBAAmB,CAAC,OAAO,EAAE5E,KAAK,CAAC;UACjDV,MAAM,CAACX,MAAM,EAAEiG,mBAAmB,CAAC,OAAO,EAAE5E,KAAK,CAAC;UAClDS,YAAY,EAAEoE,MAAM,CAAC,CAAC;UACtBxE,MAAM,CAAC,CAAC;QACV;MACF;IACF,CAAC;IACD,MAAMyE,OAAOA,CAAA,EAAG;MACd7F,QAAQ,GAAG,IAAI;MACf,MAAM8F,OAAO,GAAG,MAAM9E,OAAO,CAAC+E,UAAU,CAAC,CAAC,GAAGjG,QAAQ,CAAC,CAACkG,GAAG,CAAC,MAAM1E,OAAO,IAAI;QAC1E,IAAI;UAAE,MAAMA,OAAO,CAACR,MAAM,CAAC,CAAC;QAAE,CAAC,SAAS;UAAE,MAAMQ,OAAO,CAACD,OAAO;QAAE;MACnE,CAAC,CAAC,CAAC;MACH,IAAIyE,OAAO,CAACG,IAAI,CAACjB,MAAM,IAAIA,MAAM,CAACkB,MAAM,KAAK,UAAU,CAAC,EAAE,MAAM,IAAIvG,KAAK,CAAC,sCAAsC,CAAC;IACnH;EACF,CAAC;EACD,OAAOM,OAAO;AAChB","ignoreList":[]}
@@ -101,6 +101,7 @@ Object.defineProperty(exports, "createBotaDeviceSDK", {
101
101
  return _client.createBotaDeviceSDK;
102
102
  }
103
103
  });
104
+ exports.createEncryptedUploadV2Backend = void 0;
104
105
  Object.defineProperty(exports, "createUploadRecoveryProvider", {
105
106
  enumerable: true,
106
107
  get: function () {
@@ -133,6 +134,8 @@ Object.defineProperty(exports, "readClientPresenceObservation", {
133
134
  });
134
135
  var _NativeBotaDeviceSDK = _interopRequireDefault(require("./specs/NativeBotaDeviceSDK"));
135
136
  var _client = require("./client");
137
+ var _NativeBotaUploadV2Backend = _interopRequireDefault(require("./specs/NativeBotaUploadV2Backend"));
138
+ var _encryptedUploadV2Backend = require("./encryptedUploadV2Backend");
136
139
  var _runtime = require("./compatibility/runtime");
137
140
  var _BotaClient = require("./BotaClient");
138
141
  var _clientPresence = require("./clientPresence");
@@ -147,6 +150,8 @@ var _errors = require("./utils/errors");
147
150
  var _syncStatus = require("./sync/syncStatus");
148
151
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
149
152
  const BotaDeviceSDK = exports.BotaDeviceSDK = (0, _client.createBotaDeviceSDK)(_NativeBotaDeviceSDK.default);
153
+ const createEncryptedUploadV2Backend = options => (0, _encryptedUploadV2Backend.createManagedEncryptedUploadV2Backend)(_NativeBotaUploadV2Backend.default, BotaDeviceSDK.recordings, options);
154
+ exports.createEncryptedUploadV2Backend = createEncryptedUploadV2Backend;
150
155
  (0, _runtime.setDefaultCompatibilityClient)(BotaDeviceSDK);
151
156
  const UPLOAD_RECOVERY_VERSION = exports.UPLOAD_RECOVERY_VERSION = 1;
152
157
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_NativeBotaDeviceSDK","_interopRequireDefault","require","_client","_runtime","_BotaClient","_clientPresence","_uploadRecovery","_deviceLogs","_deviceDiagnostics","_DeviceManager","_OTAManager","_RecordingManager","_StreamingSession","_errors","_syncStatus","e","__esModule","default","BotaDeviceSDK","exports","createBotaDeviceSDK","NativeBotaDeviceSDK","setDefaultCompatibilityClient","UPLOAD_RECOVERY_VERSION"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAsDA,IAAAG,WAAA,GAAAH,OAAA;AAEA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AAgFA,IAAAM,WAAA,GAAAN,OAAA;AACA,IAAAO,kBAAA,GAAAP,OAAA;AACA,IAAAQ,cAAA,GAAAR,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AACA,IAAAU,iBAAA,GAAAV,OAAA;AAEA,IAAAW,iBAAA,GAAAX,OAAA;AACA,IAAAY,OAAA,GAAAZ,OAAA;AAWA,IAAAa,WAAA,GAAAb,OAAA;AAAqD,SAAAD,uBAAAe,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAxG9C,MAAMG,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,IAAAE,2BAAmB,EAACC,4BAAmB,CAAC;AACrE,IAAAC,sCAA6B,EAACJ,aAAa,CAAC;AA0FrC,MAAMK,uBAAuB,GAAAJ,OAAA,CAAAI,uBAAA,GAAG,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_NativeBotaDeviceSDK","_interopRequireDefault","require","_client","_NativeBotaUploadV2Backend","_encryptedUploadV2Backend","_runtime","_BotaClient","_clientPresence","_uploadRecovery","_deviceLogs","_deviceDiagnostics","_DeviceManager","_OTAManager","_RecordingManager","_StreamingSession","_errors","_syncStatus","e","__esModule","default","BotaDeviceSDK","exports","createBotaDeviceSDK","NativeBotaDeviceSDK","createEncryptedUploadV2Backend","options","createManagedEncryptedUploadV2Backend","NativeBotaUploadV2Backend","recordings","setDefaultCompatibilityClient","UPLOAD_RECOVERY_VERSION"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,0BAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,yBAAA,GAAAH,OAAA;AAEA,IAAAI,QAAA,GAAAJ,OAAA;AAyDA,IAAAK,WAAA,GAAAL,OAAA;AAEA,IAAAM,eAAA,GAAAN,OAAA;AACA,IAAAO,eAAA,GAAAP,OAAA;AAgFA,IAAAQ,WAAA,GAAAR,OAAA;AACA,IAAAS,kBAAA,GAAAT,OAAA;AACA,IAAAU,cAAA,GAAAV,OAAA;AACA,IAAAW,WAAA,GAAAX,OAAA;AACA,IAAAY,iBAAA,GAAAZ,OAAA;AAEA,IAAAa,iBAAA,GAAAb,OAAA;AACA,IAAAc,OAAA,GAAAd,OAAA;AAWA,IAAAe,WAAA,GAAAf,OAAA;AAAqD,SAAAD,uBAAAiB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA3G9C,MAAMG,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,IAAAE,2BAAmB,EAACC,4BAAmB,CAAC;AAC9D,MAAMC,8BAA8B,GAAIC,OAAwC,IACrF,IAAAC,+DAAqC,EAACC,kCAAyB,EAAEP,aAAa,CAACQ,UAAU,EAAEH,OAAO,CAAC;AAACJ,OAAA,CAAAG,8BAAA,GAAAA,8BAAA;AAEtG,IAAAK,sCAA6B,EAACT,aAAa,CAAC;AA0FrC,MAAMU,uBAAuB,GAAAT,OAAA,CAAAS,uBAAA,GAAG,CAAC","ignoreList":[]}
@@ -6,5 +6,5 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.SDK_VERSION = exports.SDK_PACKAGE = void 0;
7
7
  // Generated by cargo xtask client-identity generate. Do not edit.
8
8
  const SDK_PACKAGE = exports.SDK_PACKAGE = '@bota.dev/react-native-app-sdk';
9
- const SDK_VERSION = exports.SDK_VERSION = '2.0.0-beta.10';
9
+ const SDK_VERSION = exports.SDK_VERSION = '2.0.0-beta.11';
10
10
  //# sourceMappingURL=sdkIdentity.js.map
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ /** Preparation/result JSON contains only bounded identity metadata. Signed
9
+ * documents and recording bytes stay in the native backend adapter. */
10
+ var _default = exports.default = _reactNative.TurboModuleRegistry.get('BotaUploadV2Backend');
11
+ //# sourceMappingURL=NativeBotaUploadV2Backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","get"],"sourceRoot":"../../../src","sources":["specs/NativeBotaUploadV2Backend.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAGA;AACA;AADA,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAceC,gCAAmB,CAACC,GAAG,CAAO,qBAAqB,CAAC","ignoreList":[]}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+
3
+ /** @internal Dependency injection keeps the public facade and host tests on the same implementation. */
4
+ export function createManagedEncryptedUploadV2Backend(native, recordings, options) {
5
+ // Capture identity once; mutating the caller's object cannot repoint an active request.
6
+ const config = {
7
+ ...options
8
+ };
9
+ const url = new URL(config.baseUrl);
10
+ const path = url.pathname.replace(/\/$/, '');
11
+ if (url.protocol !== 'https:' || url.username || url.password || url.search || url.hash || !/^(\/[A-Za-z0-9_-]+)+$/.test(path) || !config.scopeKey || !config.signal) {
12
+ throw new Error('Invalid encrypted upload backend configuration');
13
+ }
14
+ const apiOrigin = url.origin;
15
+ const attempts = new Set();
16
+ let disposed = false;
17
+ const backend = {
18
+ async sync(device, recording, target) {
19
+ device = {
20
+ ...device
21
+ };
22
+ recording = {
23
+ ...recording
24
+ };
25
+ target = {
26
+ ...target,
27
+ priorUpload: target.priorUpload && {
28
+ ...target.priorUpload
29
+ }
30
+ };
31
+ if (!native) throw new Error('Encrypted upload backend requires the matching native SDK binary');
32
+ if (disposed || config.signal.aborted || target.signal?.aborted) throw new Error('Encrypted upload cancelled');
33
+ const signal = new AbortController();
34
+ let operationId;
35
+ let selected;
36
+ let cancelTask;
37
+ let completed = false;
38
+ const check = () => {
39
+ if (disposed || signal.signal.aborted || config.signal.aborted || target.signal?.aborted) {
40
+ throw new Error('Encrypted upload cancelled');
41
+ }
42
+ };
43
+ const cancel = () => {
44
+ signal.abort();
45
+ if (operationId) cancelTask ??= Promise.resolve().then(() => native.cancel(operationId));
46
+ return cancelTask ?? Promise.resolve();
47
+ };
48
+ // Event callbacks must not create unhandled rejections; disposal awaits the same task.
49
+ const abort = () => {
50
+ void cancel().catch(() => {});
51
+ };
52
+ let settle;
53
+ const settled = new Promise(resolve => {
54
+ settle = resolve;
55
+ });
56
+ const attempt = {
57
+ cancel,
58
+ settled
59
+ };
60
+ attempts.add(attempt);
61
+ let subscription;
62
+ try {
63
+ config.signal.addEventListener('abort', abort, {
64
+ once: true
65
+ });
66
+ target.signal?.addEventListener('abort', abort, {
67
+ once: true
68
+ });
69
+ subscription = native.onCredentialsRequested(event => {
70
+ if (!operationId || event.operationId !== operationId) return;
71
+ void (async () => {
72
+ try {
73
+ check();
74
+ const token = await config.getAccessToken(signal.signal);
75
+ check();
76
+ await native.resolveCredentials(event.requestId, token);
77
+ } catch {
78
+ await native.rejectCredentials(event.requestId).catch(() => {});
79
+ }
80
+ })();
81
+ });
82
+ check();
83
+ await recordings.syncEncryptedRecordingV2(device, recording, async context => {
84
+ check();
85
+ if (!context.operationId || operationId && operationId !== context.operationId) {
86
+ throw new Error('Encrypted upload operation changed');
87
+ }
88
+ operationId = context.operationId;
89
+ const value = JSON.parse(await native.prepare(JSON.stringify({
90
+ operationId,
91
+ scope: {
92
+ apiOrigin,
93
+ apiBasePath: path,
94
+ scopeKey: config.scopeKey,
95
+ accountId: config.accountId,
96
+ projectId: config.projectId,
97
+ endUserId: config.endUserId,
98
+ organizationId: config.organizationId ?? '',
99
+ environment: config.environment,
100
+ deviceId: target.deviceId,
101
+ bindingGeneration: target.bindingGeneration,
102
+ serialNumber: device.serialNumber,
103
+ nativeDeviceId: device.id
104
+ },
105
+ recording: {
106
+ uuid: context.recording.uuid,
107
+ generation: context.recording.generation,
108
+ ciphertextLength: context.recording.ciphertextLength,
109
+ ciphertextSha256: context.recording.ciphertextSha256,
110
+ startedAtMs: context.recording.startedAtMs,
111
+ durationMs: context.recording.durationMs,
112
+ plaintextLength: context.recording.plaintextLength,
113
+ storageFormat: context.recording.storageFormat
114
+ },
115
+ capability: {
116
+ rawValueHex: context.capability.rawValueHex,
117
+ flags: context.capability.flags
118
+ },
119
+ ...(context.checkpoint === undefined ? {} : {
120
+ checkpoint: {
121
+ version: context.checkpoint.version,
122
+ uploadSessionId: context.checkpoint.uploadSessionId,
123
+ ownerRevision: context.checkpoint.ownerRevision,
124
+ revision: context.checkpoint.revision,
125
+ nextCiphertextOffset: context.checkpoint.nextCiphertextOffset,
126
+ prefixSha256: context.checkpoint.prefixSha256,
127
+ highestContiguousSequence: context.checkpoint.highestContiguousSequence,
128
+ transportSessionId: context.checkpoint.transportSessionId,
129
+ sinkRegistrationId: context.checkpoint.sinkRegistrationId,
130
+ windowPackets: context.checkpoint.windowPackets,
131
+ dataPayloadBytes: context.checkpoint.dataPayloadBytes
132
+ }
133
+ }),
134
+ ...(target.priorUpload === undefined ? {} : {
135
+ priorJournalEntry: {
136
+ recordingId: target.priorUpload.recordingId,
137
+ sessionId: target.priorUpload.sessionId,
138
+ ownerRevision: target.priorUpload.ownerRevision
139
+ }
140
+ })
141
+ })));
142
+ check();
143
+ const result = value;
144
+ if (!result || result.profile !== 'encrypted_upload_v2' || !/^rec_[A-Za-z0-9_-]+$/.test(result.recordingId) || !/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/.test(result.uploadSessionId) || !Number.isSafeInteger(result.ownerRevision) || result.ownerRevision < 1 || !result.materialRegistrationId || !['legacy_allowed', 'v2_preferred', 'v2_required'].includes(result.securityPolicy)) {
145
+ throw new Error('Invalid encrypted upload backend response');
146
+ }
147
+ selected = result;
148
+ return {
149
+ profile: result.profile,
150
+ uploadSessionId: result.uploadSessionId,
151
+ ownerRevision: result.ownerRevision,
152
+ securityPolicy: result.securityPolicy,
153
+ materialRegistrationId: result.materialRegistrationId
154
+ };
155
+ }, progress => {
156
+ if (!signal.signal.aborted) target.onProgress?.(progress);
157
+ }, {
158
+ signal: signal.signal
159
+ });
160
+ check();
161
+ if (!operationId || !selected) throw new Error('Encrypted upload confirmation is missing');
162
+ // The native sync only resolves after signed receipt/CONFIRM. Never infer this from HTTP 2xx.
163
+ await native.complete(operationId);
164
+ completed = true;
165
+ return {
166
+ recordingId: selected.recordingId
167
+ };
168
+ } finally {
169
+ // Native complete already releases the operation. A later bridge cancellation
170
+ // failure must not turn confirmed device cleanup into a retryable sync failure.
171
+ try {
172
+ if (completed) signal.abort();else await cancel();
173
+ } finally {
174
+ attempts.delete(attempt);
175
+ config.signal.removeEventListener('abort', abort);
176
+ target.signal?.removeEventListener('abort', abort);
177
+ subscription?.remove();
178
+ settle();
179
+ }
180
+ }
181
+ },
182
+ async dispose() {
183
+ disposed = true;
184
+ const results = await Promise.allSettled([...attempts].map(async attempt => {
185
+ try {
186
+ await attempt.cancel();
187
+ } finally {
188
+ await attempt.settled;
189
+ }
190
+ }));
191
+ if (results.some(result => result.status === 'rejected')) throw new Error('Encrypted upload cancellation failed');
192
+ }
193
+ };
194
+ return backend;
195
+ }
196
+ //# sourceMappingURL=encryptedUploadV2Backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createManagedEncryptedUploadV2Backend","native","recordings","options","config","url","URL","baseUrl","path","pathname","replace","protocol","username","password","search","hash","test","scopeKey","signal","Error","apiOrigin","origin","attempts","Set","disposed","backend","sync","device","recording","target","priorUpload","aborted","AbortController","operationId","selected","cancelTask","completed","check","cancel","abort","Promise","resolve","then","catch","settle","settled","attempt","add","subscription","addEventListener","once","onCredentialsRequested","event","token","getAccessToken","resolveCredentials","requestId","rejectCredentials","syncEncryptedRecordingV2","context","value","JSON","parse","prepare","stringify","scope","apiBasePath","accountId","projectId","endUserId","organizationId","environment","deviceId","bindingGeneration","serialNumber","nativeDeviceId","id","uuid","generation","ciphertextLength","ciphertextSha256","startedAtMs","durationMs","plaintextLength","storageFormat","capability","rawValueHex","flags","checkpoint","undefined","version","uploadSessionId","ownerRevision","revision","nextCiphertextOffset","prefixSha256","highestContiguousSequence","transportSessionId","sinkRegistrationId","windowPackets","dataPayloadBytes","priorJournalEntry","recordingId","sessionId","result","profile","Number","isSafeInteger","materialRegistrationId","includes","securityPolicy","progress","onProgress","complete","delete","removeEventListener","remove","dispose","results","allSettled","map","some","status"],"sourceRoot":"../../src","sources":["encryptedUploadV2Backend.ts"],"mappings":"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","ignoreList":[]}
@@ -2,9 +2,12 @@
2
2
 
3
3
  import NativeBotaDeviceSDK from './specs/NativeBotaDeviceSDK';
4
4
  import { createBotaDeviceSDK } from './client';
5
+ import NativeBotaUploadV2Backend from './specs/NativeBotaUploadV2Backend';
6
+ import { createManagedEncryptedUploadV2Backend } from './encryptedUploadV2Backend';
5
7
  import { setDefaultCompatibilityClient } from './compatibility/runtime';
6
8
  export { BotaNativeModuleError, createBotaDeviceSDK } from './client';
7
9
  export const BotaDeviceSDK = createBotaDeviceSDK(NativeBotaDeviceSDK);
10
+ export const createEncryptedUploadV2Backend = options => createManagedEncryptedUploadV2Backend(NativeBotaUploadV2Backend, BotaDeviceSDK.recordings, options);
8
11
  setDefaultCompatibilityClient(BotaDeviceSDK);
9
12
  export { BotaClient } from './BotaClient';
10
13
  export { readClientPresenceObservation } from './clientPresence';
@@ -1 +1 @@
1
- {"version":3,"names":["NativeBotaDeviceSDK","createBotaDeviceSDK","setDefaultCompatibilityClient","BotaNativeModuleError","BotaDeviceSDK","BotaClient","readClientPresenceObservation","createUploadRecoveryProvider","DeviceLogDecoder","DeviceDiagnosticsDecoder","diagnosticEventIdCommand","DeviceManager","OTAManager","RecordingManager","UPLOAD_RECOVERY_VERSION","StreamingSession","BotaError","BluetoothError","DeviceError","ProvisioningError","SdkError","TransferError","UploadError","isBotaError","deriveSyncStatus"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,OAAOA,mBAAmB,MAAM,6BAA6B;AAC7D,SAASC,mBAAmB,QAAQ,UAAU;AAC9C,SAASC,6BAA6B,QAAQ,yBAAyB;AAEvE,SACEC,qBAAqB,EACrBF,mBAAmB,QACd,UAAU;AA8CjB,OAAO,MAAMG,aAAa,GAAGH,mBAAmB,CAACD,mBAAmB,CAAC;AACrEE,6BAA6B,CAACE,aAAa,CAAC;AAE5C,SAASC,UAAU,QAAQ,cAAc;AAEzC,SAASC,6BAA6B,QAAQ,kBAAkB;AAChE,SAASC,4BAA4B,QAAQ,kBAAkB;AAgF/D,SAASC,gBAAgB,QAAQ,kBAAkB;AACnD,SAASC,wBAAwB,EAAEC,wBAAwB,QAAQ,yBAAyB;AAC5F,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAASC,gBAAgB,QAAQ,6BAA6B;AAC9D,OAAO,MAAMC,uBAAuB,GAAG,CAAC;AACxC,SAASC,gBAAgB,QAAQ,6BAA6B;AAC9D,SACEC,SAAS,EACTC,cAAc,EACdC,WAAW,EACXC,iBAAiB,EACjBC,QAAQ,EACRC,aAAa,EACbC,WAAW,EACXC,WAAW,QACN,gBAAgB;AAEvB,SAASC,gBAAgB,QAAQ,mBAAmB","ignoreList":[]}
1
+ {"version":3,"names":["NativeBotaDeviceSDK","createBotaDeviceSDK","NativeBotaUploadV2Backend","createManagedEncryptedUploadV2Backend","setDefaultCompatibilityClient","BotaNativeModuleError","BotaDeviceSDK","createEncryptedUploadV2Backend","options","recordings","BotaClient","readClientPresenceObservation","createUploadRecoveryProvider","DeviceLogDecoder","DeviceDiagnosticsDecoder","diagnosticEventIdCommand","DeviceManager","OTAManager","RecordingManager","UPLOAD_RECOVERY_VERSION","StreamingSession","BotaError","BluetoothError","DeviceError","ProvisioningError","SdkError","TransferError","UploadError","isBotaError","deriveSyncStatus"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,OAAOA,mBAAmB,MAAM,6BAA6B;AAC7D,SAASC,mBAAmB,QAAQ,UAAU;AAC9C,OAAOC,yBAAyB,MAAM,mCAAmC;AACzE,SAASC,qCAAqC,QAAQ,4BAA4B;AAElF,SAASC,6BAA6B,QAAQ,yBAAyB;AAEvE,SACEC,qBAAqB,EACrBJ,mBAAmB,QACd,UAAU;AA8CjB,OAAO,MAAMK,aAAa,GAAGL,mBAAmB,CAACD,mBAAmB,CAAC;AACrE,OAAO,MAAMO,8BAA8B,GAAIC,OAAwC,IACrFL,qCAAqC,CAACD,yBAAyB,EAAEI,aAAa,CAACG,UAAU,EAAED,OAAO,CAAC;AAErGJ,6BAA6B,CAACE,aAAa,CAAC;AAE5C,SAASI,UAAU,QAAQ,cAAc;AAEzC,SAASC,6BAA6B,QAAQ,kBAAkB;AAChE,SAASC,4BAA4B,QAAQ,kBAAkB;AAgF/D,SAASC,gBAAgB,QAAQ,kBAAkB;AACnD,SAASC,wBAAwB,EAAEC,wBAAwB,QAAQ,yBAAyB;AAC5F,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAASC,gBAAgB,QAAQ,6BAA6B;AAC9D,OAAO,MAAMC,uBAAuB,GAAG,CAAC;AACxC,SAASC,gBAAgB,QAAQ,6BAA6B;AAC9D,SACEC,SAAS,EACTC,cAAc,EACdC,WAAW,EACXC,iBAAiB,EACjBC,QAAQ,EACRC,aAAa,EACbC,WAAW,EACXC,WAAW,QACN,gBAAgB;AAEvB,SAASC,gBAAgB,QAAQ,mBAAmB","ignoreList":[]}
@@ -2,5 +2,5 @@
2
2
 
3
3
  // Generated by cargo xtask client-identity generate. Do not edit.
4
4
  export const SDK_PACKAGE = '@bota.dev/react-native-app-sdk';
5
- export const SDK_VERSION = '2.0.0-beta.10';
5
+ export const SDK_VERSION = '2.0.0-beta.11';
6
6
  //# sourceMappingURL=sdkIdentity.js.map
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+
5
+ /** Preparation/result JSON contains only bounded identity metadata. Signed
6
+ * documents and recording bytes stay in the native backend adapter. */
7
+
8
+ export default TurboModuleRegistry.get('BotaUploadV2Backend');
9
+ //# sourceMappingURL=NativeBotaUploadV2Backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../../src","sources":["specs/NativeBotaUploadV2Backend.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAGlD;AACA;;AAaA,eAAeA,mBAAmB,CAACC,GAAG,CAAO,qBAAqB,CAAC","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ import type { BotaDeviceSDKRecordingClient, BotaEncryptedUploadV2Recording, BotaEncryptedUploadV2Progress } from './client';
2
+ import type { ConnectedDevice } from './models/Device';
3
+ import type { Spec } from './specs/NativeBotaUploadV2Backend';
4
+ export interface EncryptedUploadV2BackendOptions {
5
+ /** Customer-authenticated HTTPS proxy exposing the v2 routes, e.g. https://api.example.com/v1. */
6
+ baseUrl: string;
7
+ /** Stable, non-secret account/project/environment identity. */
8
+ scopeKey: string;
9
+ accountId: string;
10
+ projectId: string;
11
+ endUserId: string;
12
+ environment: string;
13
+ /** Only needed by an organization-scoped backend bridge. */
14
+ organizationId?: string;
15
+ /** Abort permanently on logout or any account/project/binding change. */
16
+ signal: AbortSignal;
17
+ /** Return an application access token, never a Bota secret API key. */
18
+ getAccessToken(signal: AbortSignal): Promise<string>;
19
+ }
20
+ export interface EncryptedUploadV2SyncTarget {
21
+ deviceId: string;
22
+ bindingGeneration: number;
23
+ signal?: AbortSignal;
24
+ onProgress?: (progress: BotaEncryptedUploadV2Progress) => void;
25
+ /** Optional import of an existing integration's exact cloud identity. */
26
+ priorUpload?: {
27
+ recordingId: string;
28
+ sessionId?: string;
29
+ ownerRevision?: number;
30
+ };
31
+ }
32
+ export interface EncryptedUploadV2Backend {
33
+ /** Reinvoking after restart/reconnect resumes the native journal for this exact recording. */
34
+ sync(device: ConnectedDevice, recording: BotaEncryptedUploadV2Recording, target: EncryptedUploadV2SyncTarget): Promise<{
35
+ recordingId: string;
36
+ }>;
37
+ dispose(): Promise<void>;
38
+ }
39
+ /** @internal Dependency injection keeps the public facade and host tests on the same implementation. */
40
+ export declare function createManagedEncryptedUploadV2Backend(native: Spec | null, recordings: BotaDeviceSDKRecordingClient, options: EncryptedUploadV2BackendOptions): EncryptedUploadV2Backend;
41
+ //# sourceMappingURL=encryptedUploadV2Backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryptedUploadV2Backend.d.ts","sourceRoot":"","sources":["../../src/encryptedUploadV2Backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,8BAA8B,EAClC,6BAA6B,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAE9D,MAAM,WAAW,+BAA+B;IAC9C,kGAAkG;IAClG,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,MAAM,EAAE,WAAW,CAAC;IACpB,uEAAuE;IACvE,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,6BAA6B,KAAK,IAAI,CAAC;IAC/D,yEAAyE;IACzE,WAAW,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnF;AAED,MAAM,WAAW,wBAAwB;IACvC,8FAA8F;IAC9F,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,8BAA8B,EACrE,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,wGAAwG;AACxG,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,UAAU,EAAE,4BAA4B,EAC7D,OAAO,EAAE,+BAA+B,GACvC,wBAAwB,CAgI1B"}
@@ -1,6 +1,9 @@
1
+ import type { EncryptedUploadV2BackendOptions } from './encryptedUploadV2Backend';
1
2
  export { BotaNativeModuleError, createBotaDeviceSDK, } from './client';
2
3
  export type { BotaClientPresenceContext, BotaClientPresence, BotaAsyncEventSubscription, BotaDeviceSDKCapabilities, BotaDeviceSDKClient, BotaDeviceSDKConfiguration, BotaEncryptedUploadV2Capability, BotaEncryptedUploadV2Checkpoint, BotaEncryptedUploadV2ProfileDecision, BotaEncryptedUploadV2ProfileProvider, BotaEncryptedUploadV2Progress, BotaEncryptedUploadV2ProgressPhase, BotaEncryptedUploadV2ProviderContext, BotaEncryptedUploadV2Recording, BotaEncryptedUploadV2PendingRecording, BotaEncryptedUploadV2SyncOptions, BotaEncryptedUploadV2SecurityPolicy, BotaDeprovisionResult, BotaDeviceSDKDeviceClient, BotaDeviceSDKFactoryResetClient, BotaDeviceSDKLogClient, BotaDeviceSDKWiFiClient, BotaDeviceSDKProvisioningClient, BotaDeviceSDKRecordingClient, BotaDeviceSDKStreamingClient, BotaDeviceSDKState, BotaEventSubscription, BotaFactoryResetCompletion, BotaFactoryResetGrantProvider, BotaFactoryResetGrantRequest, BotaFactoryResetOptions, BotaFirmwareImage, BotaFirmwareUpdatePhase, BotaFirmwareUpdateProgress, BotaLogLevel, BotaDeviceSDKOTAClient, BotaProvisioningMaterial, BotaProvisioningMaterialProvider, BotaProvisioningMaterialRequest, BotaRecordingTransferProgress, BotaUploadOwnershipRequest, BotaUploadOwnershipResult, } from './client';
3
4
  export declare const BotaDeviceSDK: import("./client").BotaDeviceSDKClient;
5
+ export declare const createEncryptedUploadV2Backend: (options: EncryptedUploadV2BackendOptions) => import("./encryptedUploadV2Backend").EncryptedUploadV2Backend;
6
+ export type { EncryptedUploadV2BackendOptions, EncryptedUploadV2Backend, EncryptedUploadV2SyncTarget } from './encryptedUploadV2Backend';
4
7
  export { BotaClient } from './BotaClient';
5
8
  export type { ClientPresence, SdkClientContext } from './clientPresence';
6
9
  export { readClientPresenceObservation } from './clientPresence';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export declare const SDK_PACKAGE = "@bota.dev/react-native-app-sdk";
2
- export declare const SDK_VERSION = "2.0.0-beta.10";
2
+ export declare const SDK_VERSION = "2.0.0-beta.11";
3
3
  //# sourceMappingURL=sdkIdentity.d.ts.map