@sparkvault/sdk-mobile 7.0.0 → 7.0.2

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/dist/ingots.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { readForgeTransferUrl } from './app-sdk/forge-url.js';
2
2
  import { INGOT_ACCESS_EVENT_TYPES, readIngotAccess } from './app-sdk/ingot-access-log.js';
3
- import { IngotNameHeldError, IngotNotReadyError, isRetryableDownloadError, SparkVaultMobileError, SparkVaultValidationError, } from './errors.js';
3
+ import { IngotNameHeldError, IngotNotReadyError, isRetryableDownloadError, SparkVaultMobileError, SparkVaultValidationError, TusUploadError, } from './errors.js';
4
4
  import { allowsHost, MobileTusUploader } from './tus.js';
5
5
  import { validateIngotId, validateResourceId, validateVaultId } from './validation.js';
6
6
  import { apiPath } from './request-path.js';
@@ -92,6 +92,7 @@ export class MobileIngotsClient {
92
92
  filename: name,
93
93
  forgeUrl: init.forgeUrl,
94
94
  onSessionCreated: session => options.onSessionCreated?.({ ...session, ingotId: init.ingotId, created }),
95
+ onSessionExpiry: options.onSessionExpiry,
95
96
  transport: options.transport,
96
97
  transferPolicy: options.transferPolicy,
97
98
  onProgress: options.onProgress,
@@ -99,7 +100,7 @@ export class MobileIngotsClient {
99
100
  abortBehavior: options.abortBehavior,
100
101
  debug: options.debug,
101
102
  });
102
- const ingot = await this.verifyIngotActive(options.vaultId, init.ingotId, options.vat, options.debug);
103
+ const ingot = await this.verifyIngotActive({ vaultId: options.vaultId, ingotId: init.ingotId, vat: options.vat }, { filename: name, fileSize: options.fileSize }, options.debug);
103
104
  return {
104
105
  ingot_id: init.ingotId,
105
106
  name,
@@ -119,10 +120,10 @@ export class MobileIngotsClient {
119
120
  * sent, then the ingot is verified active exactly as a fresh upload is.
120
121
  *
121
122
  * A `TusUploadError` with `sessionLost` means Forge no longer has the
122
- * session (expired or terminated); the caller drops it and starts over
123
- * with `uploadFromUri`. A session `uploadUrl` that is not an upload session
124
- * on an allowed transfer host is refused (SparkVaultValidationError) before
125
- * the ISTK or a byte is sent anywhere.
123
+ * session (its expiry passed, or it was terminated); the caller drops it
124
+ * and starts over with `uploadFromUri`. A session `uploadUrl` that is not
125
+ * an upload session on an allowed transfer host is refused
126
+ * (SparkVaultValidationError) before the ISTK or a byte is sent anywhere.
126
127
  */
127
128
  async resumeUpload(options) {
128
129
  validateVaultId(options.vaultId);
@@ -135,6 +136,7 @@ export class MobileIngotsClient {
135
136
  fileSize: options.fileSize,
136
137
  filename: options.name,
137
138
  resume: options.session,
139
+ onSessionExpiry: options.onSessionExpiry,
138
140
  transport: options.transport,
139
141
  transferPolicy: options.transferPolicy,
140
142
  onProgress: options.onProgress,
@@ -142,7 +144,7 @@ export class MobileIngotsClient {
142
144
  abortBehavior: options.abortBehavior,
143
145
  debug: options.debug,
144
146
  });
145
- const ingot = await this.verifyIngotActive(options.vaultId, options.ingotId, options.vat, options.debug);
147
+ const ingot = await this.verifyIngotActive({ vaultId: options.vaultId, ingotId: options.ingotId, vat: options.vat }, { filename: options.name, fileSize: options.fileSize }, options.debug);
146
148
  return {
147
149
  ingot_id: options.ingotId,
148
150
  name: options.name,
@@ -240,6 +242,7 @@ export class MobileIngotsClient {
240
242
  forgeUrl: response.data.forge_url,
241
243
  // A replace never mints an ingot: the row is the caller's existing one.
242
244
  onSessionCreated: session => options.onSessionCreated?.({ ...session, ingotId, created: false }),
245
+ onSessionExpiry: options.onSessionExpiry,
243
246
  transport: options.transport,
244
247
  transferPolicy: options.transferPolicy,
245
248
  onProgress,
@@ -247,7 +250,7 @@ export class MobileIngotsClient {
247
250
  abortBehavior: options.abortBehavior,
248
251
  debug,
249
252
  });
250
- const ingot = await this.verifyIngotActive(vaultId, response.data.ingot_id, vat, debug);
253
+ const ingot = await this.verifyIngotActive({ vaultId, ingotId: response.data.ingot_id, vat }, { filename: name, fileSize }, debug);
251
254
  return {
252
255
  ingot_id: response.data.ingot_id,
253
256
  name,
@@ -473,17 +476,20 @@ export class MobileIngotsClient {
473
476
  throw new SparkVaultValidationError('Ingot audit logs are read-only. Configure vault access-log retention to expire old entries.');
474
477
  }
475
478
  /**
476
- * Wait for a just-uploaded ingot to finish server-side finalization.
479
+ * Read a just-uploaded ingot until the server reports it `active`.
477
480
  *
478
- * The bytes are already fully uploaded and the ingot record exists before
479
- * this runs, so this NEVER re-creates or re-uploads anything - it only polls
480
- * status. A still-`uploading` ingot after the poll budget
481
- * is returned as success, not thrown: the transport completed and the ingot
482
- * exists, so treating it as a failure would make the caller re-run the whole
483
- * upload and mint a DUPLICATE ingot (re-streaming the entire file and
484
- * double-billing storage). Finalization completes asynchronously server-side.
481
+ * The upload resolved on Forge's receipt (a 2xx to the PATCH at the final
482
+ * offset, which Forge answers only once the ingot is published), so a read
483
+ * that is not `active` yet is a read lagging that publication, which the
484
+ * poll waits out. It never re-creates or re-uploads anything. A row still
485
+ * not `active` past the poll budget is never reported as a success: it
486
+ * throws a `TusUploadError` whose `retryLater` is set (every byte is
487
+ * received, publication is unconfirmed), so the caller resumes the session
488
+ * it persisted later, which asks Forge for the receipt again and sends no
489
+ * bytes, rather than recording a backup the vault may not hold.
485
490
  */
486
- async verifyIngotActive(vaultId, ingotId, vat, debug) {
491
+ async verifyIngotActive(ingotRef, upload, debug) {
492
+ const { vaultId, ingotId, vat } = ingotRef;
487
493
  const deadline = Date.now() + MobileIngotsClient.INGOT_STATUS_POLL_BUDGET_MS;
488
494
  let delay = MobileIngotsClient.INGOT_STATUS_POLL_INITIAL_MS;
489
495
  let ingot = await this.get(vaultId, ingotId, vat);
@@ -491,8 +497,8 @@ export class MobileIngotsClient {
491
497
  const remaining = deadline - Date.now();
492
498
  if (remaining <= 0) {
493
499
  debug?.log(`Ingot ${ingotId} still '${ingot.status}' after ${MobileIngotsClient.INGOT_STATUS_POLL_BUDGET_MS}ms; ` +
494
- 'upload transport is complete, finalizing asynchronously');
495
- return ingot;
500
+ 'the upload is received and will be confirmed on a later attempt');
501
+ throw new TusUploadError(`Upload received; the vault has not confirmed ingot ${ingotId} published yet (status ${ingot.status ?? 'unknown'})`, { ...upload, phase: 'finalize', retryLater: true });
496
502
  }
497
503
  await new Promise(resolve => setTimeout(resolve, Math.min(delay, remaining)));
498
504
  delay = Math.min(delay * 2, MobileIngotsClient.INGOT_STATUS_POLL_MAX_MS);
@@ -1 +1 @@
1
- {"version":3,"file":"ingots.js","sourceRoot":"","sources":["../src/ingots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingots.js","sourceRoot":"","sources":["../src/ingots.ts"],"names":[],"mappings":"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"}
package/dist/tus.d.ts CHANGED
@@ -13,21 +13,31 @@ export interface ParsedForgeUrl {
13
13
  *
14
14
  * A resume that cannot use the session throws a `TusUploadError` whose
15
15
  * `sessionLost` is true exactly when the session is worthless for this file
16
- * and the caller should drop it and start fresh: Forge no longer has it
16
+ * and the caller should drop it and start fresh: the expiry the caller holds
17
+ * for it has passed (refused before any request), Forge no longer has it
17
18
  * (404/410), or its `Upload-Length` is not this file's size (it belongs to a
18
- * different file). A transient HEAD failure (5xx, timeout) is NOT
19
- * `sessionLost`; the session is intact and the same resume can be retried.
19
+ * different file). A HEAD that keeps failing transiently (5xx, timeouts) past
20
+ * the upload's retry budget is NOT `sessionLost`; the session is intact and
21
+ * the same resume can be retried.
20
22
  */
21
23
  export interface TusResumeSession {
22
24
  uploadUrl: string;
23
25
  /** The session's ISTK. Falls back to the one in `forgeUrl` when omitted. */
24
26
  istk?: string;
27
+ /**
28
+ * The session's expiry as the caller holds it (`expiresAt` from
29
+ * `onSessionCreated`, kept current through `onSessionExpiry`). Null or
30
+ * omitted is unknown, and Forge's HEAD decides.
31
+ */
32
+ expiresAt?: number | null;
25
33
  }
26
34
  /** Where a tus session stands server-side, as reported by HEAD. */
27
35
  export interface TusSessionProbe {
28
36
  offset: number;
29
37
  length: number;
30
38
  chunkSize: number;
39
+ /** When the session lapses (epoch ms, Forge's `Upload-Expires`), or null when the HEAD named none. */
40
+ expiresAt: number | null;
31
41
  }
32
42
  export interface TusUploadFromUriOptions {
33
43
  fileUri: string;
@@ -48,6 +58,17 @@ export interface TusUploadFromUriOptions {
48
58
  * relaunch. Not invoked on resume. A throw here fails the upload.
49
59
  */
50
60
  onSessionCreated?: (session: TusSessionInfo) => void;
61
+ /**
62
+ * Invoked whenever the session's expiry, as its latest answer named it,
63
+ * changes: Forge slides it forward with every committed chunk and names it
64
+ * on its answers (`Upload-Expires`). It is null (unknown) after an answer
65
+ * that named none, and from the hand-off of a request the OS carries on
66
+ * without JS (the transfer engine's range, the single-chunk background
67
+ * PATCH): either may have moved it unread. A caller that persists the
68
+ * session keeps its `expiresAt` current with this, so a session it judges
69
+ * expired (`isSessionExpired`) really is. A throw here fails the upload.
70
+ */
71
+ onSessionExpiry?: (expiresAt: number | null) => void;
51
72
  /**
52
73
  * `background` rides the best suspension-proof engine the app provides:
53
74
  * the OS transfer engine (`backgroundTransfer`) for the whole remaining
@@ -95,16 +116,42 @@ interface TusErrorContext {
95
116
  /**
96
117
  * True when a Forge status says the tus session is gone (expired or
97
118
  * terminated): the persisted session is worthless, and a caller starts a
98
- * fresh upload instead of retrying it.
119
+ * fresh upload instead of retrying it. It is the transfer policy's GONE
120
+ * verdict, so every request that can meet a dead session (HEAD, a PATCH, the
121
+ * OS engine's PATCHes, DELETE) and the app's own session bookkeeping agree on
122
+ * what "gone" is.
99
123
  */
100
124
  export declare function isSessionGone(status: number): boolean;
125
+ /**
126
+ * How far past the expiry Forge named a session still counts as live: the
127
+ * allowance for a device clock running ahead of Forge's. `Upload-Expires` is
128
+ * read off Forge's clock and compared with the device's; a phone on automatic
129
+ * time is within seconds of Forge, one set by hand is typically minutes fast.
130
+ * The two mistakes cost very differently: a live session judged expired is
131
+ * dropped and its file sent again from byte 0, an expired one judged live
132
+ * costs a single HEAD (Forge answers 410, `sessionLost`). So the margin errs
133
+ * long, and stays small against the 72 h idle window a session lives from its
134
+ * last commit (`@sparkvault/app-sdk/upload-expiry`): a session the clock says
135
+ * lapsed hours ago is still dropped without a request.
136
+ */
137
+ export declare const SESSION_EXPIRY_CLOCK_MARGIN_MS: number;
138
+ /**
139
+ * True when the expiry Forge named for a session (`TusSessionInfo.expiresAt`,
140
+ * kept current through `onSessionExpiry`) is past by more than the clock
141
+ * margin: Forge refuses every request to a session past its expiry, so a
142
+ * caller drops it without asking. Within the margin the session is live for
143
+ * all the device clock can tell, and Forge's HEAD decides. An unknown expiry
144
+ * (null) never has passed: only Forge's HEAD can say.
145
+ */
146
+ export declare function isSessionExpired(expiresAt: number | null | undefined, now?: number): boolean;
101
147
  /**
102
148
  * Translate what the OS transfer adapter reports into the SDK's one error
103
149
  * taxonomy, so a caller sees the same `TusUploadError` phases and typed gate
104
150
  * errors whichever engine carried the bytes. Forge's status and body ride
105
- * through untouched: a 402 becomes the gate error the XHR path throws, a
106
- * status `isSessionGone` recognises marks the session lost exactly as HEAD
107
- * would, and any other status keeps its number for the caller's own policy
151
+ * through untouched: the refusal Core decided is `upload_refused` in Core's
152
+ * words as on the XHR path, a 402 becomes the gate error the XHR path
153
+ * throws, a status `isSessionGone` recognises marks the session lost exactly
154
+ * as HEAD would, and any other status keeps its number for the caller's own policy
108
155
  * (a 409 during finalize is a retry-later, not a lost session). The
109
156
  * remaining kinds are transport
110
157
  * outcomes: the caller's own abort is `cancelled`; an OS-ended task
@@ -117,16 +164,134 @@ export declare function mapBackgroundTransferError(err: unknown, context?: TusEr
117
164
  export declare class MobileTusUploader {
118
165
  private readonly config;
119
166
  constructor(config: ResolvedMobileConfig);
167
+ /**
168
+ * Upload a file over tus: create the session (or resume a kept one), send
169
+ * the bytes Forge does not hold, and resolve once Forge has confirmed the
170
+ * ingot published.
171
+ *
172
+ * Every answer is read through the platform's transfer policy
173
+ * (`@sparkvault/app-sdk/transfer-retry`), and one budget per call bounds
174
+ * every retry, the create's included: a request that got no answer, 408,
175
+ * 425, 429, a 5xx or a lease-held 409 waits its backoff (never shorter than
176
+ * `Retry-After`), then asks Forge where the session stands (HEAD) and sends
177
+ * from there; a 409 carrying `Upload-Offset` continues from that offset at
178
+ * once; a receipt Forge defers (503 with `Retry-After`) is asked again,
179
+ * each time after a longer backoff, without spending a failure until the
180
+ * idle limit ends the upload as `upload_received_publishing`
181
+ * (`retryLater`); a gone session is `sessionLost` (`coreCode` naming the
182
+ * code Core ended it with, when the answer named one); a final refusal of
183
+ * Core's (`UPLOAD_POOL_FULL`, `UPLOAD_SUPERSEDED`) is `upload_refused` in
184
+ * Core's words (`coreCode`); any other 4xx ends the upload with the
185
+ * server's answer. No chunk is ever sent at an offset the server did not just name. While the device is offline (`isOnline`), a request that got
186
+ * no answer spends nothing: the upload waits for the network. The OS
187
+ * transfer engine's range is the exception: the engine chains its own
188
+ * requests, and its failure ends the call for the caller's own retry.
189
+ */
120
190
  uploadFromUri(options: TusUploadFromUriOptions): Promise<void>;
191
+ /**
192
+ * Open the upload's session. A create the transfer policy calls RETRY (no
193
+ * answer, 408, 425, 429, a 5xx) is sent again under the upload's budget,
194
+ * its backoff never shorter than `Retry-After`: Forge refuses such a create
195
+ * before it claims the token, or hands the claim back on a transient
196
+ * key-service failure (503), so the same ISTK opens the session on a later
197
+ * attempt. Every other answer is final and never a lost session, a 401
198
+ * included: the token was already used, by an earlier create whose answer
199
+ * was lost, and no Location survives to continue that session from. No
200
+ * session URL exists yet to spread the retries by, and the ISTK never feeds
201
+ * one, so they spread by a key of the endpoint (`transferJitterKey`).
202
+ */
203
+ private createSession;
204
+ /**
205
+ * Where a kept session stands, asked of Forge (HEAD) under the upload's
206
+ * budget, so resume never re-sends bytes the server holds: it is the only
207
+ * way to learn what a background transfer delivered after the process was
208
+ * killed, and what a failed attempt left behind. A HEAD that gets no
209
+ * answer or a transient one is asked again after its backoff; a gone
210
+ * session is `sessionLost`, so the caller drops it and creates a fresh one
211
+ * rather than retrying a dead URL. A session is bound to one file: a length that
212
+ * is not this file's means the persisted session belongs to another file
213
+ * (or this file changed), and PATCHing into it would corrupt the ingot.
214
+ * That makes it as worthless as a gone one: `sessionLost` too.
215
+ */
216
+ private readResumePoint;
217
+ /**
218
+ * Ask Forge once where the session stands (tus HEAD): the probe on a 2xx,
219
+ * or the failure its answer amounts to. Forge re-drives a received
220
+ * upload's publication on its HEAD and answers the full offset whatever the
221
+ * re-drive came to, so an offset at the total proves receipt only: the
222
+ * receipt PATCH (`confirmReceipt`) is what says published.
223
+ */
224
+ private headSession;
225
+ /**
226
+ * Send the chunk that starts at `offset`. Answers where the upload stands
227
+ * next: past the chunk on its 2xx, which for the last chunk is also the
228
+ * publication receipt (Forge answers it only once the ingot is published),
229
+ * or wherever the server says after a failure.
230
+ */
231
+ private sendChunkAt;
232
+ /** PATCH the chunk at `offset` on the transport the upload rides, resolving with Forge's answer. */
233
+ private sendChunk;
234
+ /**
235
+ * Where the upload stands after a failed chunk PATCH, in the server's
236
+ * words: a 409's own `Upload-Offset` at once, otherwise the session's HEAD
237
+ * after the backoff, the HEAD itself retried the same way out of the same
238
+ * budget. A PATCH whose answer was lost may have landed, and one sent at a
239
+ * stale offset is refused, so no chunk is ever sent again at an offset the
240
+ * server did not just name.
241
+ */
242
+ private positionAfterFailure;
243
+ /**
244
+ * Continue from the offset a 409 named, at once and without a HEAD: the
245
+ * server just said where the session stands. Past what this upload sent,
246
+ * the server holds more than it knew, which is progress; anywhere else the
247
+ * answer contradicts the request, so it spends the budget like any failure
248
+ * and repeating it ends the upload.
249
+ */
250
+ private resyncedPosition;
251
+ /**
252
+ * Every byte is on the server but publication is unconfirmed: the final
253
+ * chunk's answer was lost or deferred, or a HEAD's offset proved receipt
254
+ * only. A zero-length PATCH at the final offset re-drives publication if it
255
+ * did not finish (a transient Core or billing failure after the last chunk)
256
+ * and answers 204 once the ingot is published, which is the receipt every
257
+ * upload resolves on. While another request finalizes it answers 409 with
258
+ * `Retry-After`, asked again as a failure; while the publication is
259
+ * deferred, 503 with `Retry-After`, asked again, each time after a longer
260
+ * backoff, without spending a failure until the idle limit ends the upload
261
+ * as `upload_received_publishing` (`retryLater`); a 503 naming no
262
+ * `Retry-After` is no deferral of Forge's, asked again as a failure. A 409
263
+ * naming an earlier offset means bytes are missing, and the upload
264
+ * continues from there. Forge answers it only after its own call to Core,
265
+ * so it waits `HEAD_AND_RECEIPT_TIMEOUT_MS`, as a HEAD does.
266
+ */
267
+ private confirmReceipt;
268
+ /**
269
+ * Wait out the backoff of a failed request, spending a retry of the
270
+ * upload's budget, or of a deferred receipt, spending none for as long as
271
+ * the idle limit allows; never shorter than the answer's `Retry-After`.
272
+ * Throws the failure no retry follows (a gone session, the server's
273
+ * verdict), and the last one, or the deferral, once the budget is spent. A
274
+ * request that got no answer while the device is offline spends nothing:
275
+ * the upload waits for the network (or the caller's abort), the idle clock
276
+ * starts over when it is back, and the next request asks again at once.
277
+ */
278
+ private waitToRetry;
121
279
  /**
122
280
  * Where a persisted session stands, or `null` when Forge no longer has it
123
- * (404/410 — expired or terminated). Any other failure throws with
124
- * `sessionLost` false (a 5xx or timeout says nothing about the session).
125
- * The probe reports the session's own length; whether that length is the
126
- * caller's file is for the caller (or `uploadFromUri`'s resume, which
127
- * throws `sessionLost` on a mismatch) to judge. Lets a caller reconcile
128
- * sessions on relaunch (a completed one just needs its ingot verified; a
129
- * lost one needs a fresh create) before spending an upload slot on it.
281
+ * (404/410 — expired or terminated), from one HEAD and no retry. Any other
282
+ * failure throws with `sessionLost` false (a 5xx or a timeout says nothing
283
+ * against the session), carrying the answer's `retryAfterMs`; a final
284
+ * refusal Core decided on the HEAD's re-drive (`UPLOAD_POOL_FULL` or
285
+ * `UPLOAD_SUPERSEDED` in `X-Upload-Refusal`) throws as `upload_refused`,
286
+ * which no fresh create remedies, and any other code Core ended the session
287
+ * with reads as gone (null). An offset at
288
+ * the session's length proves every byte received, not published: a
289
+ * resume of it sends the receipt. The probe reports the session's own length;
290
+ * whether that length is the caller's file is for the caller (or
291
+ * `uploadFromUri`'s resume, which throws `sessionLost` on a mismatch) to
292
+ * judge. Lets a caller reconcile sessions on relaunch (a completed one just
293
+ * needs its ingot verified; a lost one needs a fresh create) before
294
+ * spending an upload slot on it.
130
295
  *
131
296
  * @throws SparkVaultValidationError, before any request, when `uploadUrl`
132
297
  * is not an upload session on an allowed transfer host.