@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.
- package/bundles/web.bundle.min.js +43767 -52609
- package/lib/cjs/common/factory.js +2 -115
- package/lib/cjs/common/payment.js +2 -1
- package/lib/cjs/common/signer.js +4 -3
- package/lib/cjs/common/token/arweave.js +2 -1
- package/lib/cjs/common/token/solana.js +2 -1
- package/lib/cjs/common/upload.js +25 -2
- package/lib/cjs/node/factory.js +63 -0
- package/lib/cjs/node/signer.js +2 -1
- package/lib/cjs/node/upload.js +3 -3
- package/lib/cjs/utils/base64.js +2 -1
- package/lib/cjs/utils/common.js +30 -3
- package/lib/cjs/utils/readableStream.js +18 -1
- package/lib/cjs/version.js +1 -1
- package/lib/cjs/web/factory.js +7 -27
- package/lib/cjs/web/upload.js +3 -3
- package/lib/esm/common/factory.js +2 -115
- package/lib/esm/common/payment.js +1 -0
- package/lib/esm/common/signer.js +1 -0
- package/lib/esm/common/token/arweave.js +1 -0
- package/lib/esm/common/token/solana.js +1 -0
- package/lib/esm/common/upload.js +24 -1
- package/lib/esm/node/factory.js +63 -0
- package/lib/esm/node/signer.js +1 -0
- package/lib/esm/node/upload.js +1 -1
- package/lib/esm/utils/base64.js +1 -0
- package/lib/esm/utils/common.js +26 -0
- package/lib/esm/utils/readableStream.js +17 -0
- package/lib/esm/version.js +1 -1
- package/lib/esm/web/factory.js +9 -29
- package/lib/esm/web/upload.js +1 -1
- package/lib/types/common/factory.d.ts +19 -6
- package/lib/types/common/factory.d.ts.map +1 -1
- package/lib/types/common/payment.d.ts.map +1 -1
- package/lib/types/common/signer.d.ts +1 -0
- package/lib/types/common/signer.d.ts.map +1 -1
- package/lib/types/common/token/arweave.d.ts.map +1 -1
- package/lib/types/common/token/solana.d.ts.map +1 -1
- package/lib/types/common/upload.d.ts +1 -0
- package/lib/types/common/upload.d.ts.map +1 -1
- package/lib/types/node/factory.d.ts +5 -16
- package/lib/types/node/factory.d.ts.map +1 -1
- package/lib/types/node/signer.d.ts.map +1 -1
- package/lib/types/node/upload.d.ts +1 -1
- package/lib/types/node/upload.d.ts.map +1 -1
- package/lib/types/utils/base64.d.ts +1 -0
- package/lib/types/utils/base64.d.ts.map +1 -1
- package/lib/types/utils/common.d.ts +6 -16
- package/lib/types/utils/common.d.ts.map +1 -1
- package/lib/types/utils/readableStream.d.ts +1 -0
- package/lib/types/utils/readableStream.d.ts.map +1 -1
- package/lib/types/version.d.ts +1 -1
- package/lib/types/web/factory.d.ts.map +1 -1
- package/lib/types/web/upload.d.ts +1 -1
- package/lib/types/web/upload.d.ts.map +1 -1
- 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
|
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
|
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 {
|
package/lib/cjs/common/signer.js
CHANGED
@@ -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 };
|
package/lib/cjs/common/upload.js
CHANGED
@@ -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
|
-
|
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),
|
package/lib/cjs/node/factory.js
CHANGED
@@ -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;
|
package/lib/cjs/node/signer.js
CHANGED
@@ -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);
|
package/lib/cjs/node/upload.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
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
|
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.
|
72
|
+
exports.TurboAuthenticatedUploadService = TurboAuthenticatedUploadService;
|
package/lib/cjs/utils/base64.js
CHANGED
@@ -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);
|
package/lib/cjs/utils/common.js
CHANGED
@@ -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
|
-
|
19
|
-
|
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) {
|
package/lib/cjs/version.js
CHANGED
package/lib/cjs/web/factory.js
CHANGED
@@ -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
|
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.
|
73
|
+
const uploadService = new upload_js_1.TurboAuthenticatedUploadService({
|
94
74
|
...uploadServiceConfig,
|
95
75
|
signer: turboSigner,
|
96
76
|
logger: this.logger,
|
package/lib/cjs/web/upload.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
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
|
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.
|
57
|
+
exports.TurboAuthenticatedUploadService = TurboAuthenticatedUploadService;
|