@ardrive/turbo-sdk 1.9.1-alpha.1 → 1.10.0-alpha.1

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 (73) hide show
  1. package/README.md +58 -0
  2. package/bundles/web.bundle.min.js +25370 -12548
  3. package/lib/cjs/common/factory.js +19 -9
  4. package/lib/cjs/common/http.js +1 -1
  5. package/lib/cjs/common/logger.js +1 -1
  6. package/lib/cjs/common/token/arweave.js +2 -2
  7. package/lib/cjs/common/token/ethereum.js +2 -2
  8. package/lib/cjs/common/token/solana.js +2 -2
  9. package/lib/cjs/common/turbo.js +3 -0
  10. package/lib/cjs/common/upload.js +106 -3
  11. package/lib/cjs/node/index.js +1 -0
  12. package/lib/cjs/node/upload.js +72 -0
  13. package/lib/cjs/types.js +6 -2
  14. package/lib/cjs/utils/base64.js +6 -6
  15. package/lib/cjs/utils/common.js +5 -2
  16. package/lib/cjs/utils/readableStream.js +1 -2
  17. package/lib/cjs/version.js +1 -1
  18. package/lib/cjs/web/factory.js +2 -1
  19. package/lib/cjs/web/index.js +1 -0
  20. package/lib/cjs/web/upload.js +57 -0
  21. package/lib/esm/common/factory.js +18 -8
  22. package/lib/esm/common/http.js +1 -1
  23. package/lib/esm/common/logger.js +1 -1
  24. package/lib/esm/common/token/arweave.js +2 -2
  25. package/lib/esm/common/token/ethereum.js +2 -2
  26. package/lib/esm/common/token/solana.js +2 -2
  27. package/lib/esm/common/turbo.js +3 -0
  28. package/lib/esm/common/upload.js +104 -1
  29. package/lib/esm/node/index.js +1 -0
  30. package/lib/esm/node/upload.js +68 -0
  31. package/lib/esm/types.js +2 -0
  32. package/lib/esm/utils/common.js +3 -0
  33. package/lib/esm/version.js +1 -1
  34. package/lib/esm/web/factory.js +3 -2
  35. package/lib/esm/web/index.js +1 -0
  36. package/lib/esm/web/upload.js +53 -0
  37. package/lib/types/common/factory.d.ts.map +1 -1
  38. package/lib/types/common/http.d.ts +0 -3
  39. package/lib/types/common/http.d.ts.map +1 -1
  40. package/lib/types/common/logger.d.ts.map +1 -1
  41. package/lib/types/common/signer.d.ts +0 -1
  42. package/lib/types/common/signer.d.ts.map +1 -1
  43. package/lib/types/common/token/arweave.d.ts.map +1 -1
  44. package/lib/types/common/token/ethereum.d.ts.map +1 -1
  45. package/lib/types/common/token/solana.d.ts.map +1 -1
  46. package/lib/types/common/turbo.d.ts +2 -1
  47. package/lib/types/common/turbo.d.ts.map +1 -1
  48. package/lib/types/common/upload.d.ts +18 -2
  49. package/lib/types/common/upload.d.ts.map +1 -1
  50. package/lib/types/node/index.d.ts +1 -0
  51. package/lib/types/node/index.d.ts.map +1 -1
  52. package/lib/types/node/signer.d.ts +0 -1
  53. package/lib/types/node/signer.d.ts.map +1 -1
  54. package/lib/types/node/upload.d.ts +15 -0
  55. package/lib/types/node/upload.d.ts.map +1 -0
  56. package/lib/types/types.d.ts +40 -4
  57. package/lib/types/types.d.ts.map +1 -1
  58. package/lib/types/utils/base64.d.ts +0 -1
  59. package/lib/types/utils/base64.d.ts.map +1 -1
  60. package/lib/types/utils/common.d.ts +1 -0
  61. package/lib/types/utils/common.d.ts.map +1 -1
  62. package/lib/types/utils/readableStream.d.ts +0 -2
  63. package/lib/types/utils/readableStream.d.ts.map +1 -1
  64. package/lib/types/version.d.ts +1 -1
  65. package/lib/types/version.d.ts.map +1 -1
  66. package/lib/types/web/factory.d.ts.map +1 -1
  67. package/lib/types/web/index.d.ts +1 -0
  68. package/lib/types/web/index.d.ts.map +1 -1
  69. package/lib/types/web/signer.d.ts +0 -1
  70. package/lib/types/web/signer.d.ts.map +1 -1
  71. package/lib/types/web/upload.d.ts +29 -0
  72. package/lib/types/web/upload.d.ts.map +1 -0
  73. package/package.json +6 -2
package/README.md CHANGED
@@ -49,6 +49,9 @@ Welcome to the `@ardrive/turbo-sdk`! This SDK provides functionality for interac
49
49
  - [`getWincForFiat({ amount, promoCodes })`](#getwincforfiat-amount-promocodes-)
50
50
  - [`createCheckoutSession({ amount, owner, promoCodes })`](#createcheckoutsession-amount-owner-promocodes-)
51
51
  - [`uploadFile({ fileStreamFactory, fileSizeFactory, signal, dataItemOpts })`](#uploadfile-filestreamfactory-filesizefactory-signal-dataitemopts-)
52
+ - [`uploadFolder({ folderPath, files, dataItemOpts, signal, maxConcurrentUploads, throwOnFailure, manifestOptions })`](#uploadfolder-folderpath-files-dataitemopts-signal-maxconcurrentuploads-throwonfailure-manifestoptions-)
53
+ - [NodeJS Upload Folder](#nodejs-upload-folder)
54
+ - [Browser Upload Folder](#browser-upload-folder)
52
55
  - [`topUpWithTokens({ tokenAmount, feeMultiplier })`](#topupwithtokens-tokenamount-feemultiplier-)
53
56
  - [Ethereum (ETH)](#ethereum-eth-1)
54
57
  - [Solana (SOL)](#solana-sol-1)
@@ -471,6 +474,61 @@ const uploadResult = await turbo.uploadFile({
471
474
  });
472
475
  ```
473
476
 
477
+ #### `uploadFolder({ folderPath, files, dataItemOpts, signal, maxConcurrentUploads, throwOnFailure, manifestOptions })`
478
+
479
+ Signs and uploads a folder of files. For NodeJS, the `folderPath` of the folder to upload is required. For the browser, an array of `files` is required. The `dataItemOpts` is an optional object that can be used to configure tags, target, and anchor for the data item upload. The `signal` is an optional [AbortSignal] that can be used to cancel the upload or timeout the request. The `maxConcurrentUploads` is an optional number that can be used to limit the number of concurrent uploads. The `throwOnFailure` is an optional boolean that can be used to throw an error if any upload fails. The `manifestOptions` is an optional object that can be used to configure the manifest file, including a custom index file, fallback file, or whether to disable manifests altogether. Manifests are enabled by default.
480
+
481
+ ##### NodeJS Upload Folder
482
+
483
+ ```typescript
484
+ const folderPath = path.join(__dirname, './my-folder');
485
+ const { manifest, fileResponses, manifestResponse } = await turbo.uploadFolder({
486
+ folderPath,
487
+ dataItemOpts: {
488
+ // optional
489
+ tags: [
490
+ {
491
+ // User defined content type will overwrite file content type
492
+ name: 'Content-Type',
493
+ value: 'text/plain',
494
+ },
495
+ {
496
+ name: 'My-Custom-Tag',
497
+ value: 'my-custom-value',
498
+ },
499
+ ],
500
+ // no timeout or AbortSignal provided
501
+ },
502
+ manifestOptions: {
503
+ // optional
504
+ indexFile: 'custom-index.html',
505
+ fallbackFile: 'custom-fallback.html',
506
+ disableManifests: false,
507
+ },
508
+ });
509
+ ```
510
+
511
+ ##### Browser Upload Folder
512
+
513
+ ```html
514
+ <input type="file" id="folder" name="folder" webkitdirectory />
515
+ <script type="module">
516
+ const folderInput = document.getElementById('folder');
517
+
518
+ folderInput.addEventListener('change', async (event) => {
519
+ const selectedFiles = folderInput.files;
520
+ console.log('Folder selected:', selectedFiles);
521
+
522
+ const { manifest, fileResponses, manifestResponse } =
523
+ await turbo.uploadFolder({
524
+ files: Array.from(selectedFiles).map((file) => file),
525
+ });
526
+
527
+ console.log(manifest, fileResponses, manifestResponse);
528
+ });
529
+ </script>
530
+ ```
531
+
474
532
  #### `topUpWithTokens({ tokenAmount, feeMultiplier })`
475
533
 
476
534
  Tops up the connected wallet with Credits by submitting a payment transaction for the token amount to the Turbo wallet and then submitting that transaction id to Turbo Payment Service for top up processing.