@adgytec/adgytec-web-utils 0.0.3 → 0.0.5

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 (42) hide show
  1. package/dist/chunks/applicationError +10 -8
  2. package/dist/chunks/applicationError.map +1 -0
  3. package/dist/chunks/decode +21 -20
  4. package/dist/chunks/decode.map +1 -0
  5. package/dist/chunks/formParse +1 -0
  6. package/dist/chunks/formParse.map +1 -0
  7. package/dist/chunks/parse +26 -0
  8. package/dist/chunks/parse.map +1 -0
  9. package/dist/chunks/schema +219 -218
  10. package/dist/chunks/schema.map +1 -0
  11. package/dist/chunks/{upload → uploadDetails} +78 -77
  12. package/dist/chunks/uploadDetails.map +1 -0
  13. package/dist/constants/index.d.ts +1 -1
  14. package/dist/constants/index.js +7 -6
  15. package/dist/constants/index.js.map +1 -0
  16. package/dist/errorCodes/common.d.ts +3 -0
  17. package/dist/errorCodes/index.d.ts +5 -5
  18. package/dist/errorCodes/index.js +49 -45
  19. package/dist/errorCodes/index.js.map +1 -0
  20. package/dist/errorSchema/index.d.ts +6 -6
  21. package/dist/errorSchema/index.js +1 -0
  22. package/dist/errorSchema/index.js.map +1 -0
  23. package/dist/errors/applicationError.d.ts +2 -1
  24. package/dist/errors/index.d.ts +2 -2
  25. package/dist/errors/index.js +4 -1
  26. package/dist/errors/index.js.map +1 -0
  27. package/dist/errors/parse.d.ts +15 -0
  28. package/dist/index.js +25 -22
  29. package/dist/index.js.map +1 -0
  30. package/dist/media/index.d.ts +2 -2
  31. package/dist/media/index.js +2 -1
  32. package/dist/media/index.js.map +1 -0
  33. package/dist/media/mediaInfo.d.ts +1 -1
  34. package/dist/media/types/index.d.ts +3 -3
  35. package/dist/media/upload.d.ts +1 -1
  36. package/dist/response/decode.d.ts +1 -1
  37. package/dist/response/index.js +1 -0
  38. package/dist/response/index.js.map +1 -0
  39. package/dist/response/successReponse.d.ts +1 -1
  40. package/package.json +12 -4
  41. package/dist/errors/types.d.ts +0 -1
  42. package/dist/test.d.ts +0 -1
@@ -1,62 +1,38 @@
1
- import r from "zod";
2
1
  import { v7 as u } from "uuid";
3
- import { B as n, A as l } from "./applicationError";
2
+ import r from "zod";
4
3
  import { Queue as m } from "@datastructures-js/queue";
5
- import { d as y } from "./decode";
6
- import { httpMethods as c, httpReqHeaders as d, httpRequestCredentials as f } from "../constants/index.js";
7
- import { mediaCodes as p } from "../errorCodes/index.js";
8
- const w = r.object({
4
+ import { httpMethods as c, httpReqHeaders as l, httpRequestCredentials as y } from "../constants/index.js";
5
+ import { mediaCodes as d } from "../errorCodes/index.js";
6
+ import { A as p, B as n } from "./applicationError";
7
+ import { d as f } from "./decode";
8
+ const w = (a) => ({
9
+ id: u(),
10
+ name: a.name,
11
+ size: a.size,
12
+ file: a
13
+ }), I = (a) => a.map(w), g = (a) => ({
14
+ id: a.id,
15
+ size: a.size,
16
+ name: a.name
17
+ }), k = (a) => a.map(g), U = r.object({
9
18
  presignPut: r.url(),
10
19
  partNumber: r.int().positive().lte(1e4),
11
20
  partSize: r.int().positive().gt(0)
12
- }), g = r.object({
21
+ }), C = r.object({
13
22
  mediaID: r.uuidv7(),
14
23
  uploadType: r.literal("multipart"),
15
- multipartPresignPart: r.array(w).nonempty(),
24
+ multipartPresignPart: r.array(U).nonempty(),
16
25
  multipartSuccessCallback: r.url()
17
- }), U = r.object({
26
+ }), P = r.object({
18
27
  mediaID: r.uuidv7(),
19
28
  uploadType: r.literal("singlepart"),
20
29
  presignPut: r.url(),
21
30
  singlepartSuccessCallback: r.url()
22
- }), I = r.discriminatedUnion("uploadType", [
23
- g,
24
- U
25
- ]), C = (a) => ({
26
- id: u(),
27
- name: a.name,
28
- size: a.size,
29
- file: a
30
- }), k = (a) => a.map(C), P = (a) => ({
31
- id: a.id,
32
- size: a.size,
33
- name: a.name
34
- }), q = (a) => a.map(P), R = (a, t) => {
35
- if (a.id !== t.mediaID)
36
- throw new n("media item and response id mismatch");
37
- return {
38
- ...t,
39
- file: a.file,
40
- size: a.size
41
- };
42
- }, $ = (a, t) => {
43
- if (a.length !== t.length)
44
- throw new n(
45
- `items mismatch: mediaInfos=${a.length}, apiResponses=${t.length}`
46
- );
47
- const e = new Map(
48
- t.map((i) => [i.mediaID, i])
49
- );
50
- return a.map((i) => {
51
- const s = e.get(i.id);
52
- if (!s)
53
- throw new n(
54
- `Could not find a matching API response for media info with id: ${i.id}`
55
- );
56
- return R(i, s);
57
- });
58
- };
59
- class S {
31
+ }), q = r.discriminatedUnion("uploadType", [
32
+ C,
33
+ P
34
+ ]);
35
+ class R {
60
36
  #s;
61
37
  #t;
62
38
  #a;
@@ -108,7 +84,7 @@ class S {
108
84
  return this.#i.size;
109
85
  }
110
86
  }
111
- class N {
87
+ class S {
112
88
  #s;
113
89
  #t;
114
90
  #a;
@@ -136,18 +112,18 @@ class N {
136
112
  return this.#a;
137
113
  }
138
114
  }
139
- const L = {
115
+ const N = {
140
116
  concurrentUploads: 4,
141
117
  retryLimit: 3
142
118
  };
143
- class z {
119
+ class L {
144
120
  #s;
145
121
  #t;
146
122
  #a;
147
123
  #i;
148
124
  #e;
149
125
  #n;
150
- constructor(t, e, i = L, s) {
126
+ constructor(t, e, i = N, s) {
151
127
  this.#s = t, this.#t = e, this.#a = i.concurrentUploads, this.#i = i.retryLimit, this.#e = new m(), this.#n = s;
152
128
  }
153
129
  #o(t) {
@@ -178,7 +154,7 @@ class z {
178
154
  t.uploadURL,
179
155
  t.blob
180
156
  )).ok)
181
- throw new l(p.singlepartUploadFailed, {
157
+ throw new p(d.singlepartUploadFailed, {
182
158
  mediaID: t.id
183
159
  });
184
160
  t.allowComplete(), await this.#h(t);
@@ -198,8 +174,8 @@ class z {
198
174
  t.blob.slice(e.startByte, e.endByte)
199
175
  );
200
176
  if (!s.ok)
201
- throw new l(
202
- p.multipartPartUploadFailed,
177
+ throw new p(
178
+ d.multipartPartUploadFailed,
203
179
  {
204
180
  mediaID: t.id,
205
181
  partNumber: e.partNumber
@@ -207,7 +183,7 @@ class z {
207
183
  );
208
184
  const o = s.headers.get("ETag");
209
185
  if (!o)
210
- throw new l(p.missingETagValue, {
186
+ throw new p(d.missingETagValue, {
211
187
  mediaID: t.id,
212
188
  partNumber: e.partNumber
213
189
  });
@@ -237,15 +213,15 @@ class z {
237
213
  e && (i = JSON.stringify({
238
214
  partsInfo: e
239
215
  }), s = {
240
- [d.contentType.key]: d.contentType.valueApplicationJSON
241
- }), this.#n && (s = s || {}, s[d.userLocale.key] = this.#n);
216
+ [l.contentType.key]: l.contentType.valueApplicationJSON
217
+ }), this.#n && (s = s || {}, s[l.userLocale.key] = this.#n);
242
218
  const o = await fetch(t, {
243
219
  method: c.post,
244
220
  body: i,
245
221
  headers: s,
246
- credentials: f.include
222
+ credentials: y.include
247
223
  });
248
- await y(o);
224
+ await f(o);
249
225
  }
250
226
  async #h(t, e = 0) {
251
227
  if (t.canComplete)
@@ -277,7 +253,7 @@ class z {
277
253
  async *#m() {
278
254
  for (const t of this.#s) {
279
255
  if (t.uploadType === "singlepart") {
280
- const o = new N(
256
+ const o = new S(
281
257
  t.mediaID,
282
258
  t.file,
283
259
  t.presignPut,
@@ -288,7 +264,7 @@ class z {
288
264
  };
289
265
  continue;
290
266
  }
291
- const e = new S(
267
+ const e = new R(
292
268
  t.mediaID,
293
269
  t.file,
294
270
  t.multipartSuccessCallback,
@@ -333,9 +309,8 @@ class z {
333
309
  t.retryCount
334
310
  );
335
311
  default:
336
- const e = t;
337
312
  throw new n(
338
- `Unhandled retry task type: ${e.type}`
313
+ `Unhandled retry task type: ${t.type}`
339
314
  );
340
315
  }
341
316
  }
@@ -344,7 +319,8 @@ class z {
344
319
  for (; !this.#e.isEmpty(); ) {
345
320
  for (; !this.#e.isEmpty(); ) {
346
321
  const e = this.#e.dequeue();
347
- let i = this.#y(e).finally(
322
+ if (!e) break;
323
+ const i = this.#y(e).finally(
348
324
  () => t.delete(i)
349
325
  );
350
326
  t.add(i), t.size >= this.#a && await Promise.race(t);
@@ -353,19 +329,44 @@ class z {
353
329
  }
354
330
  }
355
331
  }
356
- const x = async (a, t, e, i) => {
357
- await D([a], t, e, i);
358
- }, D = async (a, t, e, i) => {
359
- await new z(a, t, e, i).init();
332
+ const $ = async (a, t, e, i) => {
333
+ await b([a], t, e, i);
334
+ }, b = async (a, t, e, i) => {
335
+ await new L(a, t, e, i).init();
336
+ }, z = (a, t) => {
337
+ if (a.id !== t.mediaID)
338
+ throw new n("media item and response id mismatch");
339
+ return {
340
+ ...t,
341
+ file: a.file,
342
+ size: a.size
343
+ };
344
+ }, F = (a, t) => {
345
+ if (a.length !== t.length)
346
+ throw new n(
347
+ `items mismatch: mediaInfos=${a.length}, apiResponses=${t.length}`
348
+ );
349
+ const e = new Map(
350
+ t.map((i) => [i.mediaID, i])
351
+ );
352
+ return a.map((i) => {
353
+ const s = e.get(i.id);
354
+ if (!s)
355
+ throw new n(
356
+ `Could not find a matching API response for media info with id: ${i.id}`
357
+ );
358
+ return z(i, s);
359
+ });
360
360
  };
361
361
  export {
362
- I as U,
363
- k as a,
364
- R as b,
365
- $ as c,
366
- q as d,
367
- D as e,
368
- C as n,
369
- P as t,
370
- x as u
362
+ q as U,
363
+ I as a,
364
+ z as b,
365
+ F as c,
366
+ k as d,
367
+ b as e,
368
+ w as n,
369
+ g as t,
370
+ $ as u
371
371
  };
372
+ //# sourceMappingURL=uploadDetails.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadDetails","sources":["../../src/media/mediaInfo.ts","../../src/media/toUploadPayload.ts","../../src/media/types/apiResponse.ts","../../src/media/multipartUtil.ts","../../src/media/singlepartUtil.ts","../../src/media/uploadUtil.ts","../../src/media/upload.ts","../../src/media/uploadDetails.ts"],"sourcesContent":["import { v7 as uuidv7 } from \"uuid\";\nimport type { NewMediaInfo, NewMediaInfos } from \"./types\";\n\nexport const newMediaInfo: NewMediaInfo = (item) => {\n return {\n id: uuidv7(),\n name: item.name,\n size: item.size,\n file: item,\n };\n};\n\nexport const newMediaInfos: NewMediaInfos = (items) => {\n return items.map(newMediaInfo);\n};\n","import type { ToUploadPayload, ToUploadPayloads } from \"./types\";\n\nexport const toUploadPayload: ToUploadPayload = (item) => {\n return {\n id: item.id,\n size: item.size,\n name: item.name,\n };\n};\n\nexport const toUploadPayloads: ToUploadPayloads = (items) => {\n return items.map(toUploadPayload);\n};\n","import z from \"zod\";\n\nconst MultipartPartUploadSchema = z.object({\n presignPut: z.url(),\n partNumber: z.int().positive().lte(10000),\n partSize: z.int().positive().gt(0),\n});\n\nconst MultipartSchema = z.object({\n mediaID: z.uuidv7(),\n uploadType: z.literal(\"multipart\"),\n multipartPresignPart: z.array(MultipartPartUploadSchema).nonempty(),\n multipartSuccessCallback: z.url(),\n});\n\nconst SinglepartSchema = z.object({\n mediaID: z.uuidv7(),\n uploadType: z.literal(\"singlepart\"),\n presignPut: z.url(),\n singlepartSuccessCallback: z.url(),\n});\n\nexport const UploadDetailsAPIResSchema = z.discriminatedUnion(\"uploadType\", [\n MultipartSchema,\n SinglepartSchema,\n]);\n\nexport type UploadDetailsAPIRes = z.infer<typeof UploadDetailsAPIResSchema>;\n","import type { MultipartUploadedPartDetails } from \"./types\";\n\nexport class MultipartUtil {\n #id: string;\n #blob: Blob;\n #response: MultipartUploadedPartDetails[];\n #parts: Set<number>;\n #totalParts: number;\n #completeURL: string;\n #failed: boolean;\n #complete: boolean;\n\n constructor(\n id: string,\n blob: Blob,\n completeURL: string,\n totalParts: number\n ) {\n this.#id = id;\n this.#blob = blob;\n this.#response = [];\n this.#parts = new Set();\n this.#totalParts = totalParts;\n this.#completeURL = completeURL;\n this.#failed = false;\n this.#complete = false;\n }\n\n get failed(): boolean {\n return this.#failed;\n }\n\n fail() {\n this.#failed = true;\n }\n\n get id(): string {\n return this.#id;\n }\n\n get completeURL(): string {\n return this.#completeURL;\n }\n\n get blob(): Blob {\n return this.#blob;\n }\n\n add(itemRes: MultipartUploadedPartDetails) {\n if (this.contains(itemRes.partNumber)) {\n return;\n }\n\n this.#response.push(itemRes);\n this.#parts.add(itemRes.partNumber);\n }\n\n contains(partNumber: number): boolean {\n return this.#parts.has(partNumber);\n }\n\n get list(): MultipartUploadedPartDetails[] {\n return this.#response\n .slice()\n .sort((a, b) => a.partNumber - b.partNumber);\n }\n\n get canComplete(): boolean {\n return !this.failed && this.#parts.size === this.#totalParts;\n }\n\n tryStartComplete(): boolean {\n if (this.#complete || !this.canComplete) return false;\n\n this.#complete = true;\n return true;\n }\n\n resetComplete() {\n this.#complete = false;\n }\n\n get totalPartsCount(): number {\n return this.#totalParts;\n }\n\n get uploadedPartsCount(): number {\n return this.#parts.size;\n }\n}\n","export class SinglepartUtil {\n #id: string;\n #blob: Blob;\n #uploadURL: string;\n #completeURL: string;\n #canComplete: boolean;\n\n constructor(\n id: string,\n blob: Blob,\n uploadURL: string,\n completeURL: string\n ) {\n this.#id = id;\n this.#blob = blob;\n this.#completeURL = completeURL;\n this.#uploadURL = uploadURL;\n this.#canComplete = false;\n }\n\n get canComplete(): boolean {\n return this.#canComplete;\n }\n\n allowComplete() {\n this.#canComplete = true;\n }\n\n get id(): string {\n return this.#id;\n }\n\n get blob(): Blob {\n return this.#blob;\n }\n\n get completeURL(): string {\n return this.#completeURL;\n }\n\n get uploadURL(): string {\n return this.#uploadURL;\n }\n}\n","import { Queue } from \"@datastructures-js/queue\";\nimport {\n httpMethods,\n httpReqHeaders,\n httpRequestCredentials,\n} from \"../constants\";\nimport { mediaCodes } from \"../errorCodes\";\nimport { ApplicationError, BaseError } from \"../errors\";\nimport { decodeAPIResponse } from \"../response\";\nimport { MultipartUtil } from \"./multipartUtil\";\nimport { SinglepartUtil } from \"./singlepartUtil\";\nimport type {\n LifecycleHandler,\n MultipartPartInfo,\n MultipartUploadedPartDetails,\n Retry,\n UploadDetails,\n UploadLimits,\n} from \"./types\";\n\nconst defaultUploadLimit: UploadLimits = {\n concurrentUploads: 4,\n retryLimit: 3,\n};\n\nexport class Upload {\n #items: UploadDetails[];\n #lifecycleHandler: LifecycleHandler;\n #concurrentUploads: number;\n #retryLimit: number;\n #retryQueue: Queue<Retry>;\n #languageTag?: string;\n\n constructor(\n uploadItems: UploadDetails[],\n handler: LifecycleHandler,\n limits: UploadLimits = defaultUploadLimit,\n languageTag?: string\n ) {\n this.#items = uploadItems;\n this.#lifecycleHandler = handler;\n this.#concurrentUploads = limits.concurrentUploads;\n this.#retryLimit = limits.retryLimit;\n this.#retryQueue = new Queue();\n this.#languageTag = languageTag;\n }\n\n #canRetry(currentCount: number): boolean {\n return currentCount < this.#retryLimit;\n }\n\n #addRetry(task: Retry) {\n this.#retryQueue.enqueue(task);\n }\n\n async init() {\n this.#lifecycleHandler.init(this.#items);\n\n const running = new Set<Promise<void>>();\n for await (const task of this.#generateTasks()) {\n const p = task().finally(() => running.delete(p));\n running.add(p);\n\n if (running.size >= this.#concurrentUploads) {\n await Promise.race(running);\n }\n }\n\n // wait for all initial task to complete\n await Promise.all(running);\n\n // complete retry action\n await this.#handleRetries();\n\n this.#lifecycleHandler.completed();\n }\n\n async #blobUpload(uploadURL: string, blob: Blob): Promise<Response> {\n return await fetch(uploadURL, {\n method: httpMethods.put,\n body: blob,\n });\n }\n\n async #singlepartUpload(\n singlepartObj: SinglepartUtil,\n retryCount: number = 0\n ) {\n if (singlepartObj.canComplete) {\n return;\n }\n\n try {\n const res = await this.#blobUpload(\n singlepartObj.uploadURL,\n singlepartObj.blob\n );\n if (!res.ok) {\n throw new ApplicationError(mediaCodes.singlepartUploadFailed, {\n mediaID: singlepartObj.id,\n });\n }\n\n singlepartObj.allowComplete();\n await this.#completeSinglepartUpload(singlepartObj);\n } catch (err) {\n if (this.#canRetry(retryCount)) {\n this.#lifecycleHandler.uploadRetrying(singlepartObj.id);\n this.#addRetry({\n type: \"singlepart-upload\",\n retryCount: retryCount + 1,\n singlepartObj: singlepartObj,\n });\n } else {\n this.#lifecycleHandler.failed(singlepartObj.id, err);\n }\n }\n }\n\n async #multipartUpload(\n multipartObj: MultipartUtil,\n partInfo: MultipartPartInfo,\n retryCount: number = 0\n ) {\n if (multipartObj.failed || multipartObj.contains(partInfo.partNumber)) {\n return;\n }\n\n try {\n const res = await this.#blobUpload(\n partInfo.uploadURL,\n multipartObj.blob.slice(partInfo.startByte, partInfo.endByte)\n );\n if (!res.ok) {\n throw new ApplicationError(\n mediaCodes.multipartPartUploadFailed,\n {\n mediaID: multipartObj.id,\n partNumber: partInfo.partNumber,\n }\n );\n }\n\n const etag = res.headers.get(\"ETag\");\n if (!etag) {\n throw new ApplicationError(mediaCodes.missingETagValue, {\n mediaID: multipartObj.id,\n partNumber: partInfo.partNumber,\n });\n }\n\n multipartObj.add({\n partNumber: partInfo.partNumber,\n etag: etag,\n });\n\n this.#lifecycleHandler.multipartPartUploaded(\n multipartObj.id,\n multipartObj.uploadedPartsCount,\n multipartObj.totalPartsCount\n );\n\n if (!multipartObj.canComplete) return;\n await this.#completeMultipartUpload(multipartObj);\n } catch (err) {\n if (this.#canRetry(retryCount)) {\n this.#lifecycleHandler.multipartPartUploadRetrying(\n multipartObj.id,\n partInfo.partNumber\n );\n\n this.#addRetry({\n type: \"multipart-part-upload\",\n retryCount: retryCount + 1,\n multipartObj: multipartObj,\n partInfo: partInfo,\n });\n } else {\n multipartObj.fail();\n this.#lifecycleHandler.failed(multipartObj.id, err);\n }\n }\n }\n\n async #completeUpload(\n completeURL: string,\n body?: MultipartUploadedPartDetails[]\n ) {\n let reqBody: BodyInit | undefined;\n let headers: Record<string, string> | undefined;\n if (body) {\n reqBody = JSON.stringify({\n partsInfo: body,\n });\n\n headers = {\n [httpReqHeaders.contentType.key]:\n httpReqHeaders.contentType.valueApplicationJSON,\n };\n }\n\n if (this.#languageTag) {\n headers = headers || {};\n headers[httpReqHeaders.userLocale.key] = this.#languageTag;\n }\n\n const apiRes = await fetch(completeURL, {\n method: httpMethods.post,\n body: reqBody,\n headers: headers,\n credentials: httpRequestCredentials.include,\n });\n await decodeAPIResponse(apiRes);\n }\n\n async #completeSinglepartUpload(\n singlepartObj: SinglepartUtil,\n retryCount: number = 0\n ) {\n if (!singlepartObj.canComplete) {\n return;\n }\n\n try {\n await this.#completeUpload(singlepartObj.completeURL);\n\n this.#lifecycleHandler.itemUploaded(singlepartObj.id);\n } catch (err) {\n if (this.#canRetry(retryCount)) {\n this.#lifecycleHandler.uploadRetrying(singlepartObj.id);\n this.#addRetry({\n type: \"singlepart-complete\",\n retryCount: retryCount + 1,\n singlepartObj: singlepartObj,\n });\n } else {\n this.#lifecycleHandler.failed(singlepartObj.id, err);\n }\n }\n }\n\n async #completeMultipartUpload(\n multipartObj: MultipartUtil,\n retryCount: number = 0\n ) {\n if (!multipartObj.tryStartComplete()) {\n return;\n }\n\n try {\n await this.#completeUpload(\n multipartObj.completeURL,\n multipartObj.list\n );\n\n this.#lifecycleHandler.itemUploaded(multipartObj.id);\n } catch (err) {\n multipartObj.resetComplete();\n\n if (this.#canRetry(retryCount)) {\n this.#lifecycleHandler.uploadRetrying(multipartObj.id);\n this.#addRetry({\n type: \"multipart-complete\",\n retryCount: retryCount + 1,\n multipartObj: multipartObj,\n });\n } else {\n multipartObj.fail();\n this.#lifecycleHandler.failed(multipartObj.id, err);\n }\n }\n }\n\n async *#generateTasks(): AsyncGenerator<() => Promise<void>> {\n for (const item of this.#items) {\n if (item.uploadType === \"singlepart\") {\n const singlepartObj = new SinglepartUtil(\n item.mediaID,\n item.file,\n item.presignPut,\n item.singlepartSuccessCallback\n );\n\n yield async () => {\n await this.#singlepartUpload(singlepartObj);\n };\n continue;\n }\n\n // multipart\n const multipartObj = new MultipartUtil(\n item.mediaID,\n item.file,\n item.multipartSuccessCallback,\n item.multipartPresignPart.length\n );\n\n // file slice byte range\n let startByte = 0;\n let endByte = 0;\n\n for (const partDetails of item.multipartPresignPart) {\n endByte += partDetails.partSize;\n\n const partInfo: MultipartPartInfo = {\n partNumber: partDetails.partNumber,\n uploadURL: partDetails.presignPut,\n startByte: startByte,\n endByte: endByte,\n };\n\n yield async () => {\n await this.#multipartUpload(multipartObj, partInfo);\n };\n\n startByte = endByte;\n }\n }\n }\n\n #retryTask(task: Retry): Promise<void> {\n // promise assignment\n switch (task.type) {\n case \"singlepart-upload\":\n return this.#singlepartUpload(\n task.singlepartObj,\n task.retryCount\n );\n case \"singlepart-complete\":\n return this.#completeSinglepartUpload(\n task.singlepartObj,\n task.retryCount\n );\n case \"multipart-part-upload\":\n return this.#multipartUpload(\n task.multipartObj,\n task.partInfo,\n task.retryCount\n );\n case \"multipart-complete\":\n return this.#completeMultipartUpload(\n task.multipartObj,\n task.retryCount\n );\n default: {\n const _exhaustiveCheck: never = task;\n void _exhaustiveCheck;\n\n throw new BaseError(\n `Unhandled retry task type: ${(task as { type: string }).type}`\n );\n }\n }\n }\n\n async #handleRetries() {\n const running = new Set<Promise<void>>();\n\n while (true) {\n if (this.#retryQueue.isEmpty()) break;\n\n while (!this.#retryQueue.isEmpty()) {\n const task = this.#retryQueue.dequeue();\n if (!task) break;\n\n const p: Promise<void> = this.#retryTask(task).finally(() =>\n running.delete(p)\n );\n running.add(p);\n\n if (running.size >= this.#concurrentUploads) {\n await Promise.race(running);\n }\n }\n\n await Promise.all(running);\n }\n }\n}\n","import type { UploadItem, UploadItems } from \"./types\";\nimport { Upload } from \"./uploadUtil\";\n\nexport const uploadItem: UploadItem = async (\n item,\n handler,\n limits,\n languageTag\n) => {\n await uploadItems([item], handler, limits, languageTag);\n};\n\nexport const uploadItems: UploadItems = async (\n items,\n handler,\n limits,\n languageTag\n) => {\n const uploadObj = new Upload(items, handler, limits, languageTag);\n await uploadObj.init();\n};\n","import { BaseError } from \"../errors\";\nimport type { NewUploadDetails, NewUploadsDetails } from \"./types\";\n\nexport const newUploadDetails: NewUploadDetails = (mediaInfo, apiResponse) => {\n if (mediaInfo.id !== apiResponse.mediaID) {\n throw new BaseError(\"media item and response id mismatch\");\n }\n\n return {\n ...apiResponse,\n file: mediaInfo.file,\n size: mediaInfo.size,\n };\n};\n\nexport const newUploadsDetails: NewUploadsDetails = (\n mediaInfos,\n apiResponses\n) => {\n if (mediaInfos.length !== apiResponses.length) {\n throw new BaseError(\n `items mismatch: mediaInfos=${mediaInfos.length}, apiResponses=${apiResponses.length}`\n );\n }\n\n const apiResponseMap = new Map(\n apiResponses.map((response) => [response.mediaID, response])\n );\n\n return mediaInfos.map((mediaInfo) => {\n const apiResponse = apiResponseMap.get(mediaInfo.id);\n if (!apiResponse) {\n // This case should not happen if lengths are equal and IDs are unique,\n // but it's good practice to handle it defensively.\n throw new BaseError(\n `Could not find a matching API response for media info with id: ${mediaInfo.id}`\n );\n }\n return newUploadDetails(mediaInfo, apiResponse);\n });\n};\n"],"names":["newMediaInfo","item","uuidv7","newMediaInfos","items","toUploadPayload","toUploadPayloads","MultipartPartUploadSchema","z","MultipartSchema","SinglepartSchema","UploadDetailsAPIResSchema","MultipartUtil","#id","#blob","#response","#parts","#totalParts","#completeURL","#failed","#complete","id","blob","completeURL","totalParts","itemRes","partNumber","a","b","SinglepartUtil","#uploadURL","#canComplete","uploadURL","defaultUploadLimit","Upload","#items","#lifecycleHandler","#concurrentUploads","#retryLimit","#retryQueue","#languageTag","uploadItems","handler","limits","languageTag","Queue","#canRetry","currentCount","#addRetry","task","running","#generateTasks","p","#handleRetries","#blobUpload","httpMethods","#singlepartUpload","singlepartObj","retryCount","ApplicationError","mediaCodes","#completeSinglepartUpload","err","#multipartUpload","multipartObj","partInfo","res","etag","#completeMultipartUpload","#completeUpload","body","reqBody","headers","httpReqHeaders","apiRes","httpRequestCredentials","decodeAPIResponse","startByte","endByte","partDetails","#retryTask","BaseError","uploadItem","newUploadDetails","mediaInfo","apiResponse","newUploadsDetails","mediaInfos","apiResponses","apiResponseMap","response"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export * from './http_methods';
2
- export * from './httpRequestHeaders';
3
2
  export * from './httpRequestCredentials';
3
+ export * from './httpRequestHeaders';
@@ -5,6 +5,10 @@ const e = {
5
5
  patch: "PATCH",
6
6
  delete: "DELETE"
7
7
  }, t = {
8
+ include: "include",
9
+ sameOrigin: "same-origin",
10
+ omit: "omit"
11
+ }, o = {
8
12
  contentType: {
9
13
  key: "Content-Type",
10
14
  valueApplicationJSON: "application/json"
@@ -17,13 +21,10 @@ const e = {
17
21
  userLocale: {
18
22
  key: "x-user-locale"
19
23
  }
20
- }, o = {
21
- include: "include",
22
- sameOrigin: "same-origin",
23
- omit: "omit"
24
24
  };
25
25
  export {
26
26
  e as httpMethods,
27
- t as httpReqHeaders,
28
- o as httpRequestCredentials
27
+ o as httpReqHeaders,
28
+ t as httpRequestCredentials
29
29
  };
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/constants/http_methods.ts","../../src/constants/httpRequestCredentials.ts","../../src/constants/httpRequestHeaders.ts"],"sourcesContent":["export const httpMethods = {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\",\n} as const;\n","export const httpRequestCredentials: Record<string, RequestCredentials> = {\n include: \"include\",\n sameOrigin: \"same-origin\",\n omit: \"omit\",\n} as const;\n","export const httpReqHeaders = {\n contentType: {\n key: \"Content-Type\",\n valueApplicationJSON: \"application/json\",\n },\n authorization: {\n key: \"Authorization\",\n schemeBearer: \"Bearer\",\n schemeBasic: \"Basic\",\n },\n userLocale: {\n key: \"x-user-locale\",\n },\n} as const;\n"],"names":["httpMethods","httpRequestCredentials","httpReqHeaders"],"mappings":"AAAO,MAAMA,IAAc;AAAA,EACvB,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AACZ,GCNaC,IAA6D;AAAA,EACtE,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,MAAM;AACV,GCJaC,IAAiB;AAAA,EAC1B,aAAa;AAAA,IACT,KAAK;AAAA,IACL,sBAAsB;AAAA,EAAA;AAAA,EAE1B,eAAe;AAAA,IACX,KAAK;AAAA,IACL,cAAc;AAAA,IACd,aAAa;AAAA,EAAA;AAAA,EAEjB,YAAY;AAAA,IACR,KAAK;AAAA,EAAA;AAEb;"}
@@ -2,4 +2,7 @@ export declare const commonCodes: {
2
2
  readonly invalidId: "invalid-id";
3
3
  readonly routeNotFound: "route-not-found";
4
4
  readonly methodNotAllowed: "method-not-allowed";
5
+ readonly networkError: "network-error";
6
+ readonly unexpectedError: "unexpected-error";
7
+ readonly zodError: "zod-error";
5
8
  };
@@ -1,8 +1,8 @@
1
- export * from './server';
2
- export * from './form';
3
1
  export * from './auth';
4
- export * from './reqBody';
5
- export * from './pagination';
6
2
  export * from './common';
7
- export * from './media';
3
+ export * from './form';
8
4
  export * from './iam';
5
+ export * from './media';
6
+ export * from './pagination';
7
+ export * from './reqBody';
8
+ export * from './server';
@@ -1,19 +1,33 @@
1
1
  const e = {
2
- malformedResponseBody: "malformed-response-body",
3
- malformedJsonFromServer: "malformed-json-from-server",
4
- invalidResponseShape: "invalid-response-shape",
5
- unknownServerError: "unknown-server-error",
6
- internalServerError: "internal-server-error"
2
+ invalidApiKey: "invalid-api-key",
3
+ userNotFound: "user-not-found",
4
+ jwtNotAcceptable: "jwt-not-acceptable",
5
+ invalidSignedUrl: "invalid-signed-url",
6
+ hashMismatch: "hash-mismatch",
7
+ invalidAuthHeaderValue: "invalid-auth-header-value",
8
+ unsupportedAuthScheme: "unsupported-auth-scheme",
9
+ organizationStatusBad: "bad-org-status",
10
+ userNotExistsInOrganizationManagement: "user-not-exists-in-organization-management",
11
+ userNotExistInOrganization: "user-not-exists-in-organization",
12
+ userDisabled: "user-disabled",
13
+ tokenNotFound: "token-not-found"
14
+ }, o = {
15
+ invalidId: "invalid-id",
16
+ routeNotFound: "route-not-found",
17
+ methodNotAllowed: "method-not-allowed",
18
+ networkError: "network-error",
19
+ unexpectedError: "unexpected-error",
20
+ zodError: "zod-error"
7
21
  }, i = {
8
22
  formValidationFailed: "validation-failed"
9
- }, o = {
23
+ }, n = {
10
24
  missing: "missing",
11
25
  overflow: "overflow",
12
26
  underflow: "underflow",
13
27
  length: "length",
14
28
  invalid: "invalid",
15
29
  unknown: "unknown"
16
- }, n = {
30
+ }, a = {
17
31
  invalidValue: "invalid-value",
18
32
  invalidEnumValue: "invalid-enum-value",
19
33
  requireHttps: "require-https",
@@ -29,31 +43,12 @@ const e = {
29
43
  notBase64UrlEncoded: "not-base64-url-encoded",
30
44
  invalidUrl: "invalid-url",
31
45
  nullValue: "null-value"
32
- }, a = {
33
- invalidApiKey: "invalid-api-key",
34
- userNotFound: "user-not-found",
35
- jwtNotAcceptable: "jwt-not-acceptable",
36
- invalidSignedUrl: "invalid-signed-url",
37
- hashMismatch: "hash-mismatch",
38
- invalidAuthHeaderValue: "invalid-auth-header-value",
39
- unsupportedAuthScheme: "unsupported-auth-scheme",
40
- organizationStatusBad: "bad-org-status",
41
- userNotExistsInOrganizationManagement: "user-not-exists-in-organization-management",
42
- userNotExistInOrganization: "user-not-exists-in-organization",
43
- userDisabled: "user-disabled",
44
- tokenNotFound: "token-not-found"
45
46
  }, t = {
46
- invalidRequestBody: "invalid-request-body",
47
- unknownFieldInRequestBody: "unknown-field-in-request-body",
48
- emptyRequestBody: "empty-request-body",
49
- requestBodyTooLarge: "request-body-too-large"
50
- }, s = {
51
- invalidCursorValue: "invalid-cursor-value"
52
- }, d = {
53
- invalidId: "invalid-id",
54
- routeNotFound: "route-not-found",
55
- methodNotAllowed: "method-not-allowed"
56
- }, l = {
47
+ selfPermissionMismatch: "self-permission-mismatch",
48
+ invalidActor: "invalid-actor",
49
+ permissionExplicitlyDenied: "permission-explicitly-denied",
50
+ missingPermission: "missing-permission"
51
+ }, r = {
57
52
  invalidMultipartNumber: "invalid-multipart-upload-part-number",
58
53
  mediaObjectNotFound: "object-not-found",
59
54
  mediaTooLarge: "media-too-large",
@@ -64,21 +59,30 @@ const e = {
64
59
  singlepartUploadFailed: "singlepart-upload-failed",
65
60
  multipartPartUploadFailed: "multipart-part-upload-failed",
66
61
  missingETagValue: "missing-etag-value"
67
- }, r = {
68
- selfPermissionMismatch: "self-permission-mismatch",
69
- invalidActor: "invalid-actor",
70
- permissionExplicitlyDenied: "permission-explicitly-denied",
71
- missingPermission: "missing-permission"
62
+ }, d = {
63
+ invalidCursorValue: "invalid-cursor-value"
64
+ }, s = {
65
+ invalidRequestBody: "invalid-request-body",
66
+ unknownFieldInRequestBody: "unknown-field-in-request-body",
67
+ emptyRequestBody: "empty-request-body",
68
+ requestBodyTooLarge: "request-body-too-large"
69
+ }, l = {
70
+ malformedResponseBody: "malformed-response-body",
71
+ malformedJsonFromServer: "malformed-json-from-server",
72
+ invalidResponseShape: "invalid-response-shape",
73
+ unknownServerError: "unknown-server-error",
74
+ internalServerError: "internal-server-error"
72
75
  };
73
76
  export {
74
- a as authCodes,
75
- d as commonCodes,
77
+ e as authCodes,
78
+ o as commonCodes,
76
79
  i as formCodes,
77
- n as formFieldInvalidTypeCauses,
78
- o as formFieldTypes,
79
- r as iamCodes,
80
- l as mediaCodes,
81
- s as paginationCodes,
82
- t as requestBodyCodes,
83
- e as serverCodes
80
+ a as formFieldInvalidTypeCauses,
81
+ n as formFieldTypes,
82
+ t as iamCodes,
83
+ r as mediaCodes,
84
+ d as paginationCodes,
85
+ s as requestBodyCodes,
86
+ l as serverCodes
84
87
  };
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/errorCodes/auth.ts","../../src/errorCodes/common.ts","../../src/errorCodes/form.ts","../../src/errorCodes/iam.ts","../../src/errorCodes/media.ts","../../src/errorCodes/pagination.ts","../../src/errorCodes/reqBody.ts","../../src/errorCodes/server.ts"],"sourcesContent":["export const authCodes = {\n invalidApiKey: \"invalid-api-key\",\n userNotFound: \"user-not-found\",\n jwtNotAcceptable: \"jwt-not-acceptable\",\n invalidSignedUrl: \"invalid-signed-url\",\n hashMismatch: \"hash-mismatch\",\n invalidAuthHeaderValue: \"invalid-auth-header-value\",\n unsupportedAuthScheme: \"unsupported-auth-scheme\",\n organizationStatusBad: \"bad-org-status\",\n userNotExistsInOrganizationManagement:\n \"user-not-exists-in-organization-management\",\n userNotExistInOrganization: \"user-not-exists-in-organization\",\n userDisabled: \"user-disabled\",\n tokenNotFound: \"token-not-found\",\n} as const;\n","export const commonCodes = {\n invalidId: \"invalid-id\",\n routeNotFound: \"route-not-found\",\n methodNotAllowed: \"method-not-allowed\",\n networkError: \"network-error\",\n unexpectedError: \"unexpected-error\",\n zodError: \"zod-error\",\n} as const;\n","export const formCodes = {\n formValidationFailed: \"validation-failed\",\n} as const;\n\nexport const formFieldTypes = {\n missing: \"missing\",\n overflow: \"overflow\",\n underflow: \"underflow\",\n length: \"length\",\n invalid: \"invalid\",\n unknown: \"unknown\",\n} as const;\n\nexport const formFieldInvalidTypeCauses = {\n invalidValue: \"invalid-value\",\n invalidEnumValue: \"invalid-enum-value\",\n requireHttps: \"require-https\",\n missingHost: \"missing-host\",\n containsPath: \"contains-path\",\n containsQuery: \"contains-query\",\n containsFragment: \"contains-fragment\",\n absoluteUrl: \"absolute-url\",\n nilID: \"nil-id\",\n invalidEmail: \"invalid-email\",\n missingMxRecords: \"missing-mx-records\",\n notDigit: \"not-digit\",\n notBase64UrlEncoded: \"not-base64-url-encoded\",\n invalidUrl: \"invalid-url\",\n nullValue: \"null-value\",\n} as const;\n","export const iamCodes = {\n selfPermissionMismatch: \"self-permission-mismatch\",\n invalidActor: \"invalid-actor\",\n permissionExplicitlyDenied: \"permission-explicitly-denied\",\n missingPermission: \"missing-permission\",\n} as const;\n","export const mediaCodes = {\n invalidMultipartNumber: \"invalid-multipart-upload-part-number\",\n mediaObjectNotFound: \"object-not-found\",\n mediaTooLarge: \"media-too-large\",\n mediaItemsLimitExceeded: \"media-items-limit-exceeded\",\n uploadAlreadyCompleted: \"upload-already-completed\",\n unsupportedObjectUploaded: \"unsupported-object-uploaded\",\n completeMultipartUploadCalledTooSoon:\n \"complete-multipart-upload-called-too-soon\",\n\n singlepartUploadFailed: \"singlepart-upload-failed\",\n multipartPartUploadFailed: \"multipart-part-upload-failed\",\n missingETagValue: \"missing-etag-value\",\n} as const;\n","export const paginationCodes = {\n invalidCursorValue: \"invalid-cursor-value\",\n} as const;\n","export const requestBodyCodes = {\n invalidRequestBody: \"invalid-request-body\",\n unknownFieldInRequestBody: \"unknown-field-in-request-body\",\n emptyRequestBody: \"empty-request-body\",\n requestBodyTooLarge: \"request-body-too-large\",\n} as const;\n","export const serverCodes = {\n malformedResponseBody: \"malformed-response-body\",\n malformedJsonFromServer: \"malformed-json-from-server\",\n invalidResponseShape: \"invalid-response-shape\",\n unknownServerError: \"unknown-server-error\",\n internalServerError: \"internal-server-error\",\n} as const;\n"],"names":["authCodes","commonCodes","formCodes","formFieldTypes","formFieldInvalidTypeCauses","iamCodes","mediaCodes","paginationCodes","requestBodyCodes","serverCodes"],"mappings":"AAAO,MAAMA,IAAY;AAAA,EACrB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,uCACI;AAAA,EACJ,4BAA4B;AAAA,EAC5B,cAAc;AAAA,EACd,eAAe;AACnB,GCdaC,IAAc;AAAA,EACvB,WAAW;AAAA,EACX,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,UAAU;AACd,GCPaC,IAAY;AAAA,EACrB,sBAAsB;AAC1B,GAEaC,IAAiB;AAAA,EAC1B,SAAS;AAAA,EACT,UAAU;AAAA,EACV,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AACb,GAEaC,IAA6B;AAAA,EACtC,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,cAAc;AAAA,EACd,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,OAAO;AAAA,EACP,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,UAAU;AAAA,EACV,qBAAqB;AAAA,EACrB,YAAY;AAAA,EACZ,WAAW;AACf,GC7BaC,IAAW;AAAA,EACpB,wBAAwB;AAAA,EACxB,cAAc;AAAA,EACd,4BAA4B;AAAA,EAC5B,mBAAmB;AACvB,GCLaC,IAAa;AAAA,EACtB,wBAAwB;AAAA,EACxB,qBAAqB;AAAA,EACrB,eAAe;AAAA,EACf,yBAAyB;AAAA,EACzB,wBAAwB;AAAA,EACxB,2BAA2B;AAAA,EAC3B,sCACI;AAAA,EAEJ,wBAAwB;AAAA,EACxB,2BAA2B;AAAA,EAC3B,kBAAkB;AACtB,GCbaC,IAAkB;AAAA,EAC3B,oBAAoB;AACxB,GCFaC,IAAmB;AAAA,EAC5B,oBAAoB;AAAA,EACpB,2BAA2B;AAAA,EAC3B,kBAAkB;AAAA,EAClB,qBAAqB;AACzB,GCLaC,IAAc;AAAA,EACvB,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,qBAAqB;AACzB;"}
@@ -1,12 +1,12 @@
1
- export * from './server';
1
+ export * from './auth';
2
+ export * from './common';
2
3
  export * from './form';
3
4
  export * from './formField';
4
5
  export * from './formFieldInvalid';
5
6
  export * from './formParse';
6
- export * from './auth';
7
- export * from './reqBody';
8
- export * from './pagination';
9
- export * from './common';
10
- export * from './media';
11
7
  export * from './iam';
8
+ export * from './media';
9
+ export * from './pagination';
10
+ export * from './reqBody';
12
11
  export * from './schema';
12
+ export * from './server';
@@ -67,3 +67,4 @@ export {
67
67
  la as userNotExistsInOrganizationManagementSchema,
68
68
  Sa as userNotFoundSchema
69
69
  };
70
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1,3 +1,4 @@
1
+ import { default as z } from 'zod';
1
2
  import { ErrorDetails } from '../errorSchema';
2
3
  import { BaseError } from './baseError';
3
4
  export declare class ApplicationError extends BaseError {
@@ -5,5 +6,5 @@ export declare class ApplicationError extends BaseError {
5
6
  constructor(code: string, details?: object);
6
7
  get details(): unknown;
7
8
  get code(): string;
8
- parse(): ErrorDetails;
9
+ parse(): ErrorDetails | z.ZodError;
9
10
  }
@@ -1,3 +1,3 @@
1
- export type * from './types';
2
- export * from './baseError';
3
1
  export * from './applicationError';
2
+ export * from './baseError';
3
+ export * from './parse';
@@ -1,5 +1,8 @@
1
1
  import { A as a, B as p } from "../chunks/applicationError";
2
+ import { p as e } from "../chunks/parse";
2
3
  export {
3
4
  a as ApplicationError,
4
- p as BaseError
5
+ p as BaseError,
6
+ e as parseError
5
7
  };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,15 @@
1
+ import { default as z } from 'zod';
2
+ import { commonCodes } from '../errorCodes';
3
+ import { ErrorDetails } from '../errorSchema';
4
+ type ParseErrorResponse = {
5
+ code: typeof commonCodes.networkError;
6
+ debugMessage: string;
7
+ } | {
8
+ code: typeof commonCodes.unexpectedError;
9
+ debugMessage: string;
10
+ } | {
11
+ code: typeof commonCodes.zodError;
12
+ error: z.ZodError;
13
+ } | ErrorDetails;
14
+ export declare function parseError(err: unknown): ParseErrorResponse;
15
+ export {};