@ardrive/turbo-sdk 1.10.0-alpha.2 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/bundles/web.bundle.min.js +43767 -52609
  2. package/lib/cjs/common/factory.js +2 -115
  3. package/lib/cjs/common/payment.js +2 -1
  4. package/lib/cjs/common/signer.js +4 -3
  5. package/lib/cjs/common/token/arweave.js +2 -1
  6. package/lib/cjs/common/token/solana.js +2 -1
  7. package/lib/cjs/common/upload.js +25 -2
  8. package/lib/cjs/node/factory.js +63 -0
  9. package/lib/cjs/node/signer.js +2 -1
  10. package/lib/cjs/node/upload.js +3 -3
  11. package/lib/cjs/utils/base64.js +2 -1
  12. package/lib/cjs/utils/common.js +30 -3
  13. package/lib/cjs/utils/readableStream.js +18 -1
  14. package/lib/cjs/version.js +1 -1
  15. package/lib/cjs/web/factory.js +7 -27
  16. package/lib/cjs/web/upload.js +3 -3
  17. package/lib/esm/common/factory.js +2 -115
  18. package/lib/esm/common/payment.js +1 -0
  19. package/lib/esm/common/signer.js +1 -0
  20. package/lib/esm/common/token/arweave.js +1 -0
  21. package/lib/esm/common/token/solana.js +1 -0
  22. package/lib/esm/common/upload.js +24 -1
  23. package/lib/esm/node/factory.js +63 -0
  24. package/lib/esm/node/signer.js +1 -0
  25. package/lib/esm/node/upload.js +1 -1
  26. package/lib/esm/utils/base64.js +1 -0
  27. package/lib/esm/utils/common.js +26 -0
  28. package/lib/esm/utils/readableStream.js +17 -0
  29. package/lib/esm/version.js +1 -1
  30. package/lib/esm/web/factory.js +9 -29
  31. package/lib/esm/web/upload.js +1 -1
  32. package/lib/types/common/factory.d.ts +19 -6
  33. package/lib/types/common/factory.d.ts.map +1 -1
  34. package/lib/types/common/payment.d.ts.map +1 -1
  35. package/lib/types/common/signer.d.ts +1 -0
  36. package/lib/types/common/signer.d.ts.map +1 -1
  37. package/lib/types/common/token/arweave.d.ts.map +1 -1
  38. package/lib/types/common/token/solana.d.ts.map +1 -1
  39. package/lib/types/common/upload.d.ts +1 -0
  40. package/lib/types/common/upload.d.ts.map +1 -1
  41. package/lib/types/node/factory.d.ts +5 -16
  42. package/lib/types/node/factory.d.ts.map +1 -1
  43. package/lib/types/node/signer.d.ts.map +1 -1
  44. package/lib/types/node/upload.d.ts +1 -1
  45. package/lib/types/node/upload.d.ts.map +1 -1
  46. package/lib/types/utils/base64.d.ts +1 -0
  47. package/lib/types/utils/base64.d.ts.map +1 -1
  48. package/lib/types/utils/common.d.ts +6 -16
  49. package/lib/types/utils/common.d.ts.map +1 -1
  50. package/lib/types/utils/readableStream.d.ts +1 -0
  51. package/lib/types/utils/readableStream.d.ts.map +1 -1
  52. package/lib/types/version.d.ts +1 -1
  53. package/lib/types/web/factory.d.ts.map +1 -1
  54. package/lib/types/web/upload.d.ts +1 -1
  55. package/lib/types/web/upload.d.ts.map +1 -1
  56. package/package.json +1 -1
@@ -1,34 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TurboBaseFactory = void 0;
4
- /**
5
- * Copyright (C) 2022-2024 Permanent Data Solutions, Inc. All Rights Reserved.
6
- *
7
- * This program is free software: you can redistribute it and/or modify
8
- * it under the terms of the GNU Affero General Public License as published by
9
- * the Free Software Foundation, either version 3 of the License, or
10
- * (at your option) any later version.
11
- *
12
- * This program is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- * GNU Affero General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU Affero General Public License
18
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
19
- */
20
- const arbundles_1 = require("arbundles");
21
- const signer_js_1 = require("../node/signer.js");
22
- const upload_js_1 = require("../node/upload.js");
23
- const types_js_1 = require("../types.js");
24
- const common_js_1 = require("../utils/common.js");
25
- const signer_js_2 = require("../web/signer.js");
26
- const upload_js_2 = require("../web/upload.js");
27
4
  const logger_js_1 = require("./logger.js");
28
5
  const payment_js_1 = require("./payment.js");
29
- const index_js_1 = require("./token/index.js");
30
6
  const turbo_js_1 = require("./turbo.js");
31
- const upload_js_3 = require("./upload.js");
7
+ const upload_js_1 = require("./upload.js");
32
8
  class TurboBaseFactory {
33
9
  /* @deprecated - use TurboWinstonLogger directly */
34
10
  static setLogLevel(level) {
@@ -43,7 +19,7 @@ class TurboBaseFactory {
43
19
  ...paymentServiceConfig,
44
20
  logger: this.logger,
45
21
  });
46
- const uploadService = new upload_js_3.TurboUnauthenticatedUploadService({
22
+ const uploadService = new upload_js_1.TurboUnauthenticatedUploadService({
47
23
  ...uploadServiceConfig,
48
24
  logger: this.logger,
49
25
  });
@@ -52,95 +28,6 @@ class TurboBaseFactory {
52
28
  paymentService,
53
29
  });
54
30
  }
55
- static getSigner(providedSigner, providedPrivateKey, token) {
56
- let signer;
57
- if (providedSigner !== undefined) {
58
- signer = providedSigner;
59
- }
60
- else if (providedPrivateKey !== undefined) {
61
- if (token === 'solana') {
62
- signer = new arbundles_1.HexSolanaSigner(providedPrivateKey);
63
- }
64
- else if (token === 'ethereum') {
65
- if (!(0, types_js_1.isEthPrivateKey)(providedPrivateKey)) {
66
- throw new Error('An Ethereum private key must be provided for EthereumSigner.');
67
- }
68
- signer = new arbundles_1.EthereumSigner(providedPrivateKey);
69
- }
70
- else {
71
- if (!(0, types_js_1.isJWK)(providedPrivateKey)) {
72
- throw new Error('A JWK must be provided for ArweaveSigner.');
73
- }
74
- signer = new arbundles_1.ArweaveSigner(providedPrivateKey);
75
- }
76
- }
77
- else {
78
- throw new Error('A privateKey or signer must be provided.');
79
- }
80
- if ((0, common_js_1.isWeb)()) {
81
- return new signer_js_2.TurboWebArweaveSigner({
82
- signer,
83
- logger: this.logger,
84
- });
85
- }
86
- return new signer_js_1.TurboNodeSigner({
87
- signer,
88
- logger: this.logger,
89
- });
90
- }
91
- static authenticated({ privateKey, signer: providedSigner, paymentServiceConfig = {}, uploadServiceConfig = {}, token, tokenMap, gatewayUrl, tokenTools, }) {
92
- if (!token) {
93
- if (providedSigner) {
94
- // Derive token from signer if not provided
95
- if (providedSigner instanceof arbundles_1.EthereumSigner) {
96
- token = 'ethereum';
97
- }
98
- else if (providedSigner instanceof arbundles_1.HexSolanaSigner) {
99
- token = 'solana';
100
- }
101
- else {
102
- token = 'arweave';
103
- }
104
- }
105
- else {
106
- token = 'arweave';
107
- }
108
- }
109
- const turboSigner = this.getSigner(providedSigner, privateKey, token);
110
- if (!tokenTools) {
111
- if (tokenMap && token === 'arweave') {
112
- tokenTools = tokenMap.arweave;
113
- }
114
- tokenTools = index_js_1.defaultTokenMap[token]?.({
115
- gatewayUrl,
116
- logger: this.logger,
117
- });
118
- }
119
- const paymentService = new payment_js_1.TurboAuthenticatedPaymentService({
120
- ...paymentServiceConfig,
121
- signer: turboSigner,
122
- logger: this.logger,
123
- token,
124
- tokenTools,
125
- });
126
- const uploadService = (0, common_js_1.isWeb)()
127
- ? new upload_js_2.TurboAuthenticatedWebUploadService({
128
- ...uploadServiceConfig,
129
- signer: turboSigner,
130
- logger: this.logger,
131
- token,
132
- })
133
- : new upload_js_1.TurboAuthenticatedNodeUploadService({
134
- ...uploadServiceConfig,
135
- signer: turboSigner,
136
- logger: this.logger,
137
- token,
138
- });
139
- return new turbo_js_1.TurboAuthenticatedClient({
140
- uploadService,
141
- paymentService,
142
- });
143
- }
144
31
  }
145
32
  exports.TurboBaseFactory = TurboBaseFactory;
146
33
  TurboBaseFactory.logger = logger_js_1.TurboWinstonLogger.default;
@@ -18,6 +18,7 @@ exports.TurboAuthenticatedPaymentService = exports.TurboUnauthenticatedPaymentSe
18
18
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19
19
  */
20
20
  const bignumber_js_1 = require("bignumber.js");
21
+ const node_buffer_1 = require("node:buffer");
21
22
  const http_js_1 = require("./http.js");
22
23
  const logger_js_1 = require("./logger.js");
23
24
  exports.developmentPaymentServiceURL = 'https://payment.ardrive.dev';
@@ -94,7 +95,7 @@ class TurboUnauthenticatedPaymentService {
94
95
  async submitFundTransaction({ txId, }) {
95
96
  const response = await this.httpService.post({
96
97
  endpoint: `/account/balance/${this.token}`,
97
- data: Buffer.from(JSON.stringify({ tx_id: txId })),
98
+ data: node_buffer_1.Buffer.from(JSON.stringify({ tx_id: txId })),
98
99
  });
99
100
  if ('creditedTransaction' in response) {
100
101
  return {
@@ -23,6 +23,7 @@ exports.TurboDataItemAbstractSigner = void 0;
23
23
  const arbundles_1 = require("arbundles");
24
24
  const crypto_1 = require("crypto");
25
25
  const ethers_1 = require("ethers");
26
+ const node_buffer_1 = require("node:buffer");
26
27
  const tweetnacl_1 = __importDefault(require("tweetnacl"));
27
28
  const base64_js_1 = require("../utils/base64.js");
28
29
  /**
@@ -54,13 +55,13 @@ class TurboDataItemAbstractSigner {
54
55
  }
55
56
  async generateSignedRequestHeaders() {
56
57
  const nonce = (0, crypto_1.randomBytes)(16).toString('hex');
57
- const buffer = Buffer.from(nonce);
58
+ const buffer = node_buffer_1.Buffer.from(nonce);
58
59
  const signature = await this.signer.sign(buffer);
59
60
  const publicKey = (0, base64_js_1.toB64Url)(this.signer.publicKey);
60
61
  return {
61
62
  'x-public-key': publicKey,
62
63
  'x-nonce': nonce,
63
- 'x-signature': (0, base64_js_1.toB64Url)(Buffer.from(signature)),
64
+ 'x-signature': (0, base64_js_1.toB64Url)(node_buffer_1.Buffer.from(signature)),
64
65
  };
65
66
  }
66
67
  async getPublicKey() {
@@ -71,7 +72,7 @@ class TurboDataItemAbstractSigner {
71
72
  if (!(this.signer instanceof arbundles_1.EthereumSigner)) {
72
73
  throw new Error('Only EthereumSigner is supported for sendTransaction API currently!');
73
74
  }
74
- const keyAsStringFromUint8Array = Buffer.from(this.signer.key).toString('hex');
75
+ const keyAsStringFromUint8Array = node_buffer_1.Buffer.from(this.signer.key).toString('hex');
75
76
  const ethWalletAndProvider = new ethers_1.Wallet(keyAsStringFromUint8Array, provider);
76
77
  const tx = await ethWalletAndProvider.sendTransaction({
77
78
  to: target,
@@ -22,6 +22,7 @@ exports.ARToTokenAmount = exports.WinstonToTokenAmount = exports.ArweaveToken =
22
22
  */
23
23
  const arweave_1 = __importDefault(require("@irys/arweave"));
24
24
  const bignumber_js_1 = require("bignumber.js");
25
+ const node_buffer_1 = require("node:buffer");
25
26
  const base64_js_1 = require("../../utils/base64.js");
26
27
  const common_js_1 = require("../../utils/common.js");
27
28
  const logger_js_1 = require("../logger.js");
@@ -59,7 +60,7 @@ class ArweaveToken {
59
60
  tx.setOwner(publicKeyB64Url);
60
61
  const dataToSign = await tx.getSignatureData();
61
62
  const signatureUint8Array = await signer.signData(dataToSign);
62
- const signatureBuffer = Buffer.from(signatureUint8Array);
63
+ const signatureBuffer = node_buffer_1.Buffer.from(signatureUint8Array);
63
64
  const id = (0, base64_js_1.sha256B64Url)(signatureBuffer);
64
65
  tx.setSignature({
65
66
  id: id,
@@ -23,6 +23,7 @@ exports.SolanaToken = exports.SOLToTokenAmount = exports.lamportToTokenAmount =
23
23
  const web3_js_1 = require("@solana/web3.js");
24
24
  const bignumber_js_1 = require("bignumber.js");
25
25
  const bs58_1 = __importDefault(require("bs58"));
26
+ const node_buffer_1 = require("node:buffer");
26
27
  const common_js_1 = require("../../utils/common.js");
27
28
  const logger_js_1 = require("../logger.js");
28
29
  const lamportToTokenAmount = (winston) => winston;
@@ -53,7 +54,7 @@ class SolanaToken {
53
54
  }));
54
55
  const serializedTx = tx.serializeMessage();
55
56
  const signature = await signer.signData(serializedTx);
56
- tx.addSignature(publicKey, Buffer.from(signature));
57
+ tx.addSignature(publicKey, node_buffer_1.Buffer.from(signature));
57
58
  const id = bs58_1.default.encode(signature);
58
59
  await this.submitTx(tx, id);
59
60
  return { id, target };
@@ -1,6 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TurboAuthenticatedBaseUploadService = exports.TurboUnauthenticatedUploadService = exports.defaultUploadServiceURL = exports.developmentUploadServiceURL = void 0;
4
+ /**
5
+ * Copyright (C) 2022-2024 Permanent Data Solutions, Inc. All Rights Reserved.
6
+ *
7
+ * This program is free software: you can redistribute it and/or modify
8
+ * it under the terms of the GNU Affero General Public License as published by
9
+ * the Free Software Foundation, either version 3 of the License, or
10
+ * (at your option) any later version.
11
+ *
12
+ * This program is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ * GNU Affero General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Affero General Public License
18
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+ */
20
+ const node_buffer_1 = require("node:buffer");
4
21
  const plimit_lit_1 = require("plimit-lit");
5
22
  const http_js_1 = require("./http.js");
6
23
  const logger_js_1 = require("./logger.js");
@@ -91,7 +108,8 @@ class TurboAuthenticatedBaseUploadService extends TurboUnauthenticatedUploadServ
91
108
  return this.contentTypeFromFile(file);
92
109
  }
93
110
  async uploadFolder(params) {
94
- const { dataItemOpts, signal, manifestOptions = {}, maxConcurrentUploads = 5, throwOnFailure = true, } = params;
111
+ this.logger.debug('Uploading folder...', { params });
112
+ const { dataItemOpts, signal, manifestOptions = {}, maxConcurrentUploads = 1, throwOnFailure = true, } = params;
95
113
  const { disableManifest, indexFile, fallbackFile } = manifestOptions;
96
114
  const paths = {};
97
115
  const response = {
@@ -130,6 +148,11 @@ class TurboAuthenticatedBaseUploadService extends TurboUnauthenticatedUploadServ
130
148
  const files = await this.getFiles(params);
131
149
  const limit = (0, plimit_lit_1.pLimit)(maxConcurrentUploads);
132
150
  await Promise.all(files.map((file) => limit(() => uploadFile(file))));
151
+ this.logger.debug('Finished uploading files', {
152
+ numFiles: files.length,
153
+ numErrors: errors.length,
154
+ results: response.fileResponses,
155
+ });
133
156
  if (errors.length > 0) {
134
157
  response.errors = errors;
135
158
  }
@@ -146,7 +169,7 @@ class TurboAuthenticatedBaseUploadService extends TurboUnauthenticatedUploadServ
146
169
  []),
147
170
  { name: 'Content-Type', value: 'application/x.arweave-manifest+json' },
148
171
  ];
149
- const manifestBuffer = Buffer.from(JSON.stringify(manifest));
172
+ const manifestBuffer = node_buffer_1.Buffer.from(JSON.stringify(manifest));
150
173
  const manifestResponse = await this.uploadFile({
151
174
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
152
175
  fileStreamFactory: () => this.createManifestStream(manifestBuffer),
@@ -17,7 +17,70 @@ exports.TurboFactory = void 0;
17
17
  * You should have received a copy of the GNU Affero General Public License
18
18
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19
19
  */
20
+ const arbundles_1 = require("arbundles");
20
21
  const factory_js_1 = require("../common/factory.js");
22
+ const index_js_1 = require("../common/index.js");
23
+ const payment_js_1 = require("../common/payment.js");
24
+ const turbo_js_1 = require("../common/turbo.js");
25
+ const common_js_1 = require("../utils/common.js");
26
+ const signer_js_1 = require("./signer.js");
27
+ const upload_js_1 = require("./upload.js");
21
28
  class TurboFactory extends factory_js_1.TurboBaseFactory {
29
+ static getSigner(providedSigner, providedPrivateKey, token) {
30
+ return new signer_js_1.TurboNodeSigner({
31
+ signer: (0, common_js_1.createTurboSigner)({
32
+ signer: providedSigner,
33
+ privateKey: providedPrivateKey,
34
+ token,
35
+ }),
36
+ logger: this.logger,
37
+ });
38
+ }
39
+ static authenticated({ privateKey, signer: providedSigner, paymentServiceConfig = {}, uploadServiceConfig = {}, token, tokenMap, gatewayUrl, tokenTools, }) {
40
+ if (!token) {
41
+ if (providedSigner) {
42
+ // Derive token from signer if not provided
43
+ if (providedSigner instanceof arbundles_1.EthereumSigner) {
44
+ token = 'ethereum';
45
+ }
46
+ else if (providedSigner instanceof arbundles_1.HexSolanaSigner) {
47
+ token = 'solana';
48
+ }
49
+ else {
50
+ token = 'arweave';
51
+ }
52
+ }
53
+ else {
54
+ token = 'arweave';
55
+ }
56
+ }
57
+ const turboSigner = this.getSigner(providedSigner, privateKey, token);
58
+ if (!tokenTools) {
59
+ if (tokenMap && token === 'arweave') {
60
+ tokenTools = tokenMap.arweave;
61
+ }
62
+ tokenTools = index_js_1.defaultTokenMap[token]?.({
63
+ gatewayUrl,
64
+ logger: this.logger,
65
+ });
66
+ }
67
+ const paymentService = new payment_js_1.TurboAuthenticatedPaymentService({
68
+ ...paymentServiceConfig,
69
+ signer: turboSigner,
70
+ logger: this.logger,
71
+ token,
72
+ tokenTools,
73
+ });
74
+ const uploadService = new upload_js_1.TurboAuthenticatedUploadService({
75
+ ...uploadServiceConfig,
76
+ signer: turboSigner,
77
+ logger: this.logger,
78
+ token,
79
+ });
80
+ return new turbo_js_1.TurboAuthenticatedClient({
81
+ uploadService,
82
+ paymentService,
83
+ });
84
+ }
22
85
  }
23
86
  exports.TurboFactory = TurboFactory;
@@ -22,6 +22,7 @@ Object.defineProperty(exports, "ArconnectSigner", { enumerable: true, get: funct
22
22
  Object.defineProperty(exports, "ArweaveSigner", { enumerable: true, get: function () { return arbundles_1.ArweaveSigner; } });
23
23
  Object.defineProperty(exports, "EthereumSigner", { enumerable: true, get: function () { return arbundles_1.EthereumSigner; } });
24
24
  Object.defineProperty(exports, "HexSolanaSigner", { enumerable: true, get: function () { return arbundles_1.HexSolanaSigner; } });
25
+ const node_buffer_1 = require("node:buffer");
25
26
  const signer_js_1 = require("../common/signer.js");
26
27
  const base64_js_1 = require("../utils/base64.js");
27
28
  /**
@@ -54,7 +55,7 @@ class TurboNodeSigner extends signer_js_1.TurboDataItemAbstractSigner {
54
55
  // ref: https://github.com/Irys-xyz/arbundles/blob/master/src/ar-data-create.ts#L18
55
56
  const _target = typeof target === 'string' ? (0, base64_js_1.fromB64Url)(target) : null;
56
57
  const targetLength = 1 + (_target ? _target.byteLength : 0);
57
- const _anchor = typeof anchor === 'string' ? Buffer.from(anchor) : null;
58
+ const _anchor = typeof anchor === 'string' ? node_buffer_1.Buffer.from(anchor) : null;
58
59
  const anchorLength = 1 + (_anchor ? _anchor.byteLength : 0);
59
60
  const serializedTags = tags && tags.length > 0 ? (0, arbundles_1.serializeTags)(tags) : null;
60
61
  const tagsLength = 16 + (serializedTags ? serializedTags.byteLength : 0);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TurboAuthenticatedNodeUploadService = void 0;
3
+ exports.TurboAuthenticatedUploadService = void 0;
4
4
  /**
5
5
  * Copyright (C) 2022-2024 Permanent Data Solutions, Inc. All Rights Reserved.
6
6
  *
@@ -23,7 +23,7 @@ const node_stream_1 = require("node:stream");
23
23
  const path_1 = require("path");
24
24
  const upload_js_1 = require("../common/upload.js");
25
25
  const types_js_1 = require("../types.js");
26
- class TurboAuthenticatedNodeUploadService extends upload_js_1.TurboAuthenticatedBaseUploadService {
26
+ class TurboAuthenticatedUploadService extends upload_js_1.TurboAuthenticatedBaseUploadService {
27
27
  constructor({ url = upload_js_1.defaultUploadServiceURL, retryConfig, signer, logger, token, }) {
28
28
  super({ url, retryConfig, logger, token, signer });
29
29
  }
@@ -69,4 +69,4 @@ class TurboAuthenticatedNodeUploadService extends upload_js_1.TurboAuthenticated
69
69
  return node_stream_1.Readable.from(manifestBuffer);
70
70
  }
71
71
  }
72
- exports.TurboAuthenticatedNodeUploadService = TurboAuthenticatedNodeUploadService;
72
+ exports.TurboAuthenticatedUploadService = TurboAuthenticatedUploadService;
@@ -24,6 +24,7 @@ exports.sha256B64Url = sha256B64Url;
24
24
  */
25
25
  const utils_js_1 = require("arweave/node/lib/utils.js");
26
26
  const crypto_1 = require("crypto");
27
+ const node_buffer_1 = require("node:buffer");
27
28
  exports.base64URLRegex = /^[a-zA-Z0-9_-]{43}$/;
28
29
  function jwkToPublicArweaveAddress(jwk) {
29
30
  return ownerToAddress(jwk.n);
@@ -37,7 +38,7 @@ function fromB64Url(input) {
37
38
  .replace(/-/g, '+')
38
39
  .replace(/_/g, '/')
39
40
  .concat('='.repeat(paddingLength));
40
- return Buffer.from(base64, 'base64');
41
+ return node_buffer_1.Buffer.from(base64, 'base64');
41
42
  }
42
43
  function toB64Url(buffer) {
43
44
  return (0, utils_js_1.bufferTob64Url)(buffer);
@@ -1,4 +1,8 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sleep = sleep;
4
+ exports.isWeb = isWeb;
5
+ exports.createTurboSigner = createTurboSigner;
2
6
  /**
3
7
  * Copyright (C) 2022-2024 Permanent Data Solutions, Inc. All Rights Reserved.
4
8
  *
@@ -15,12 +19,35 @@
15
19
  * You should have received a copy of the GNU Affero General Public License
16
20
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
21
  */
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.sleep = sleep;
20
- exports.isWeb = isWeb;
22
+ const arbundles_1 = require("arbundles");
23
+ const types_js_1 = require("../types.js");
21
24
  function sleep(ms) {
22
25
  return new Promise((resolve) => setTimeout(resolve, ms));
23
26
  }
24
27
  function isWeb() {
25
28
  return typeof window !== 'undefined';
26
29
  }
30
+ function createTurboSigner({ signer: clientProvidedSigner, privateKey: clientProvidedPrivateKey, token = 'arweave', }) {
31
+ if (clientProvidedSigner !== undefined) {
32
+ return clientProvidedSigner;
33
+ }
34
+ if (clientProvidedPrivateKey === undefined) {
35
+ throw new Error('A privateKey or signer must be provided.');
36
+ }
37
+ if (token === 'solana') {
38
+ // TODO: Add a type check for SOL private keys shape for detailed error message
39
+ return new arbundles_1.HexSolanaSigner(clientProvidedPrivateKey);
40
+ }
41
+ else if (token === 'ethereum') {
42
+ if (!(0, types_js_1.isEthPrivateKey)(clientProvidedPrivateKey)) {
43
+ throw new Error('An Ethereum private key must be provided for EthereumSigner.');
44
+ }
45
+ return new arbundles_1.EthereumSigner(clientProvidedPrivateKey);
46
+ }
47
+ else {
48
+ if (!(0, types_js_1.isJWK)(clientProvidedPrivateKey)) {
49
+ throw new Error('A JWK must be provided for ArweaveSigner.');
50
+ }
51
+ return new arbundles_1.ArweaveSigner(clientProvidedPrivateKey);
52
+ }
53
+ }
@@ -1,9 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.readableStreamToBuffer = readableStreamToBuffer;
4
+ /**
5
+ * Copyright (C) 2022-2024 Permanent Data Solutions, Inc. All Rights Reserved.
6
+ *
7
+ * This program is free software: you can redistribute it and/or modify
8
+ * it under the terms of the GNU Affero General Public License as published by
9
+ * the Free Software Foundation, either version 3 of the License, or
10
+ * (at your option) any later version.
11
+ *
12
+ * This program is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ * GNU Affero General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Affero General Public License
18
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+ */
20
+ const node_buffer_1 = require("node:buffer");
4
21
  async function readableStreamToBuffer({ stream, size, }) {
5
22
  const reader = stream.getReader();
6
- const buffer = Buffer.alloc(size);
23
+ const buffer = node_buffer_1.Buffer.alloc(size);
7
24
  let offset = 0;
8
25
  let done = false;
9
26
  while (!done) {
@@ -18,4 +18,4 @@
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.version = void 0;
20
20
  // AUTOMATICALLY GENERATED FILE - DO NOT TOUCH
21
- exports.version = '1.10.0-alpha.2';
21
+ exports.version = '1.10.0';
@@ -20,37 +20,17 @@ exports.TurboFactory = void 0;
20
20
  const arbundles_1 = require("arbundles");
21
21
  const factory_js_1 = require("../common/factory.js");
22
22
  const index_js_1 = require("../common/index.js");
23
- const types_js_1 = require("../types.js");
23
+ const common_js_1 = require("../utils/common.js");
24
24
  const signer_js_1 = require("./signer.js");
25
25
  const upload_js_1 = require("./upload.js");
26
26
  class TurboFactory extends factory_js_1.TurboBaseFactory {
27
27
  static getSigner(providedSigner, providedPrivateKey, token) {
28
- let signer;
29
- if (providedSigner !== undefined) {
30
- signer = providedSigner;
31
- }
32
- else if (providedPrivateKey !== undefined) {
33
- if (token === 'solana') {
34
- signer = new arbundles_1.HexSolanaSigner(providedPrivateKey);
35
- }
36
- else if (token === 'ethereum') {
37
- if (!(0, types_js_1.isEthPrivateKey)(providedPrivateKey)) {
38
- throw new Error('An Ethereum private key must be provided for EthereumSigner.');
39
- }
40
- signer = new arbundles_1.EthereumSigner(providedPrivateKey);
41
- }
42
- else {
43
- if (!(0, types_js_1.isJWK)(providedPrivateKey)) {
44
- throw new Error('A JWK must be provided for ArweaveSigner.');
45
- }
46
- signer = new arbundles_1.ArweaveSigner(providedPrivateKey);
47
- }
48
- }
49
- else {
50
- throw new Error('A privateKey or signer must be provided.');
51
- }
52
28
  return new signer_js_1.TurboWebArweaveSigner({
53
- signer,
29
+ signer: (0, common_js_1.createTurboSigner)({
30
+ signer: providedSigner,
31
+ privateKey: providedPrivateKey,
32
+ token,
33
+ }),
54
34
  logger: this.logger,
55
35
  });
56
36
  }
@@ -90,7 +70,7 @@ class TurboFactory extends factory_js_1.TurboBaseFactory {
90
70
  token,
91
71
  tokenTools,
92
72
  });
93
- const uploadService = new upload_js_1.TurboAuthenticatedWebUploadService({
73
+ const uploadService = new upload_js_1.TurboAuthenticatedUploadService({
94
74
  ...uploadServiceConfig,
95
75
  signer: turboSigner,
96
76
  logger: this.logger,
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TurboAuthenticatedWebUploadService = void 0;
3
+ exports.TurboAuthenticatedUploadService = void 0;
4
4
  /**
5
5
  * Copyright (C) 2022-2024 Permanent Data Solutions, Inc. All Rights Reserved.
6
6
  *
@@ -19,7 +19,7 @@ exports.TurboAuthenticatedWebUploadService = void 0;
19
19
  */
20
20
  const upload_js_1 = require("../common/upload.js");
21
21
  const types_js_1 = require("../types.js");
22
- class TurboAuthenticatedWebUploadService extends upload_js_1.TurboAuthenticatedBaseUploadService {
22
+ class TurboAuthenticatedUploadService extends upload_js_1.TurboAuthenticatedBaseUploadService {
23
23
  constructor({ url = upload_js_1.defaultUploadServiceURL, retryConfig, signer, logger, token, }) {
24
24
  super({ url, retryConfig, logger, token, signer });
25
25
  }
@@ -54,4 +54,4 @@ class TurboAuthenticatedWebUploadService extends upload_js_1.TurboAuthenticatedB
54
54
  return stream;
55
55
  }
56
56
  }
57
- exports.TurboAuthenticatedWebUploadService = TurboAuthenticatedWebUploadService;
57
+ exports.TurboAuthenticatedUploadService = TurboAuthenticatedUploadService;