@ardrive/turbo-sdk 1.23.2 → 1.23.3-alpha.test.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 +19665 -35948
- package/lib/cjs/cli/constants.js +1 -1
- package/lib/cjs/common/factory.js +3 -3
- package/lib/cjs/common/logger.js +41 -73
- package/lib/cjs/common/payment.js +2 -2
- package/lib/cjs/common/signer.js +1 -1
- package/lib/cjs/common/signing/signing.js +205 -0
- package/lib/cjs/common/token/arweave.js +1 -1
- package/lib/cjs/common/token/ethereum.js +1 -1
- package/lib/cjs/common/token/kyve.js +1 -1
- package/lib/cjs/common/token/polygon.js +1 -1
- package/lib/cjs/common/token/solana.js +1 -1
- package/lib/cjs/common/upload.js +1 -1
- package/lib/cjs/utils/axiosClient.js +2 -2
- package/lib/cjs/version.js +1 -1
- package/lib/esm/cli/constants.js +1 -1
- package/lib/esm/common/factory.js +4 -4
- package/lib/esm/common/logger.js +39 -71
- package/lib/esm/common/payment.js +3 -3
- package/lib/esm/common/signer.js +2 -2
- package/lib/esm/common/signing/signing.js +205 -0
- package/lib/esm/common/token/arweave.js +2 -2
- package/lib/esm/common/token/ethereum.js +2 -2
- package/lib/esm/common/token/kyve.js +2 -2
- package/lib/esm/common/token/polygon.js +2 -2
- package/lib/esm/common/token/solana.js +2 -2
- package/lib/esm/common/upload.js +2 -2
- package/lib/esm/utils/axiosClient.js +3 -3
- package/lib/esm/version.js +1 -1
- package/lib/types/common/factory.d.ts +5 -5
- package/lib/types/common/factory.d.ts.map +1 -1
- package/lib/types/common/logger.d.ts +12 -8
- package/lib/types/common/logger.d.ts.map +1 -1
- package/lib/types/common/signing/signing.d.ts +16 -0
- package/lib/types/common/signing/signing.d.ts.map +1 -0
- package/lib/types/types.d.ts +4 -4
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/version.d.ts +1 -1
- package/lib/types/version.d.ts.map +1 -1
- package/package.json +2 -3
package/lib/cjs/cli/constants.js
CHANGED
@@ -5,7 +5,7 @@ const version_js_1 = require("../version.js");
|
|
5
5
|
exports.turboCliTags = [
|
6
6
|
{ name: 'App-Name', value: 'Turbo-CLI' },
|
7
7
|
{ name: 'App-Version', value: version_js_1.version },
|
8
|
-
{ name: 'App-Platform', value: process
|
8
|
+
{ name: 'App-Platform', value: process?.platform },
|
9
9
|
];
|
10
10
|
exports.wincPerCredit = 1_000_000_000_000;
|
11
11
|
exports.defaultProdGatewayUrls = {
|
@@ -24,11 +24,11 @@ const index_js_1 = require("./token/index.js");
|
|
24
24
|
const turbo_js_1 = require("./turbo.js");
|
25
25
|
const upload_js_1 = require("./upload.js");
|
26
26
|
class TurboBaseFactory {
|
27
|
-
/* @deprecated - use
|
27
|
+
/* @deprecated - use ConsoleTurboLogger directly */
|
28
28
|
static setLogLevel(level) {
|
29
29
|
this.logger.setLogLevel(level);
|
30
30
|
}
|
31
|
-
/* @deprecated - use
|
31
|
+
/* @deprecated - use ConsoleTurboLogger directly */
|
32
32
|
static setLogFormat(format) {
|
33
33
|
this.logger.setLogFormat(format);
|
34
34
|
}
|
@@ -125,4 +125,4 @@ class TurboBaseFactory {
|
|
125
125
|
}
|
126
126
|
}
|
127
127
|
exports.TurboBaseFactory = TurboBaseFactory;
|
128
|
-
TurboBaseFactory.logger = logger_js_1.
|
128
|
+
TurboBaseFactory.logger = logger_js_1.ConsoleTurboLogger.default;
|
package/lib/cjs/common/logger.js
CHANGED
@@ -1,92 +1,60 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
4
|
-
/**
|
5
|
-
* Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
|
6
|
-
*
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
-
* you may not use this file except in compliance with the License.
|
9
|
-
* You may obtain a copy of the License at
|
10
|
-
*
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
-
*
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
-
* See the License for the specific language governing permissions and
|
17
|
-
* limitations under the License.
|
18
|
-
*/
|
19
|
-
const winston_1 = require("winston");
|
3
|
+
exports.ConsoleTurboLogger = void 0;
|
20
4
|
const version_js_1 = require("../version.js");
|
21
|
-
class
|
5
|
+
class ConsoleTurboLogger {
|
22
6
|
constructor({ level = 'info', logFormat = 'simple', } = {}) {
|
23
|
-
this.
|
24
|
-
|
25
|
-
|
26
|
-
}
|
27
|
-
if (typeof window !== 'undefined') {
|
28
|
-
this.logger = console;
|
29
|
-
}
|
30
|
-
else {
|
31
|
-
this.logger = (0, winston_1.createLogger)({
|
32
|
-
level,
|
33
|
-
silent: this.silent,
|
34
|
-
defaultMeta: {
|
35
|
-
name: 'turbo-sdk',
|
36
|
-
version: version_js_1.version,
|
37
|
-
},
|
38
|
-
format: winston_1.format.combine(winston_1.format.timestamp(), winston_1.format.json()),
|
39
|
-
transports: [
|
40
|
-
new winston_1.transports.Console({
|
41
|
-
format: getLogFormat(logFormat),
|
42
|
-
}),
|
43
|
-
],
|
44
|
-
});
|
45
|
-
}
|
7
|
+
this.level = level;
|
8
|
+
this.format = logFormat;
|
9
|
+
this.silent = level === 'none';
|
46
10
|
}
|
47
|
-
|
11
|
+
shouldLog(level) {
|
48
12
|
if (this.silent)
|
49
|
-
return;
|
50
|
-
|
13
|
+
return false;
|
14
|
+
const order = ['none', 'error', 'info', 'debug'];
|
15
|
+
return order.indexOf(level) <= order.indexOf(this.level);
|
16
|
+
}
|
17
|
+
formatMessage(level, message, args) {
|
18
|
+
const base = {
|
19
|
+
level,
|
20
|
+
message,
|
21
|
+
args,
|
22
|
+
version: version_js_1.version,
|
23
|
+
timestamp: new Date().toISOString(),
|
24
|
+
};
|
25
|
+
return this.format === 'json'
|
26
|
+
? JSON.stringify(base)
|
27
|
+
: `[${base.timestamp}] [${level.toUpperCase()}] ${message} ${args
|
28
|
+
.map((a) => JSON.stringify(a))
|
29
|
+
.join(' ')}`;
|
30
|
+
}
|
31
|
+
info(message, ...args) {
|
32
|
+
if (this.shouldLog('info')) {
|
33
|
+
console.info(this.formatMessage('info', message, args));
|
34
|
+
}
|
51
35
|
}
|
52
36
|
warn(message, ...args) {
|
53
|
-
if (this.
|
54
|
-
|
55
|
-
|
37
|
+
if (this.shouldLog('info')) {
|
38
|
+
console.warn(this.formatMessage('warn', message, args));
|
39
|
+
}
|
56
40
|
}
|
57
41
|
error(message, ...args) {
|
58
|
-
if (this.
|
59
|
-
|
60
|
-
|
42
|
+
if (this.shouldLog('error')) {
|
43
|
+
console.error(this.formatMessage('error', message, args));
|
44
|
+
}
|
61
45
|
}
|
62
46
|
debug(message, ...args) {
|
63
|
-
if (this.
|
64
|
-
|
65
|
-
|
47
|
+
if (this.shouldLog('debug')) {
|
48
|
+
console.debug(this.formatMessage('debug', message, args));
|
49
|
+
}
|
66
50
|
}
|
67
51
|
setLogLevel(level) {
|
52
|
+
this.level = level;
|
68
53
|
this.silent = level === 'none';
|
69
|
-
if ('silent' in this.logger) {
|
70
|
-
this.logger.silent = level === 'none';
|
71
|
-
}
|
72
|
-
if ('level' in this.logger) {
|
73
|
-
this.logger.level = level;
|
74
|
-
}
|
75
54
|
}
|
76
55
|
setLogFormat(logFormat) {
|
77
|
-
|
78
|
-
this.logger.format = getLogFormat(logFormat);
|
79
|
-
}
|
56
|
+
this.format = logFormat;
|
80
57
|
}
|
81
58
|
}
|
82
|
-
exports.
|
83
|
-
|
84
|
-
function getLogFormat(logFormat) {
|
85
|
-
return winston_1.format.combine((0, winston_1.format)((info) => {
|
86
|
-
if (info.stack && info.level !== 'error') {
|
87
|
-
delete info.stack;
|
88
|
-
}
|
89
|
-
return info;
|
90
|
-
})(), winston_1.format.errors({ stack: true }), // Ensure errors show a stack trace
|
91
|
-
winston_1.format.timestamp(), logFormat === 'json' ? winston_1.format.json() : winston_1.format.simple());
|
92
|
-
}
|
59
|
+
exports.ConsoleTurboLogger = ConsoleTurboLogger;
|
60
|
+
ConsoleTurboLogger.default = new ConsoleTurboLogger();
|
@@ -24,7 +24,7 @@ const index_js_1 = require("./token/index.js");
|
|
24
24
|
exports.developmentPaymentServiceURL = 'https://payment.ardrive.dev';
|
25
25
|
exports.defaultPaymentServiceURL = 'https://payment.ardrive.io';
|
26
26
|
class TurboUnauthenticatedPaymentService {
|
27
|
-
constructor({ url = exports.defaultPaymentServiceURL, retryConfig, logger = logger_js_1.
|
27
|
+
constructor({ url = exports.defaultPaymentServiceURL, retryConfig, logger = logger_js_1.ConsoleTurboLogger.default, token = 'arweave', }) {
|
28
28
|
this.logger = logger;
|
29
29
|
this.httpService = new http_js_1.TurboHTTPService({
|
30
30
|
url: `${url}/v1`,
|
@@ -197,7 +197,7 @@ class TurboUnauthenticatedPaymentService {
|
|
197
197
|
exports.TurboUnauthenticatedPaymentService = TurboUnauthenticatedPaymentService;
|
198
198
|
// NOTE: to avoid redundancy, we use inheritance here - but generally prefer composition over inheritance
|
199
199
|
class TurboAuthenticatedPaymentService extends TurboUnauthenticatedPaymentService {
|
200
|
-
constructor({ url = exports.defaultPaymentServiceURL, retryConfig, signer, logger = logger_js_1.
|
200
|
+
constructor({ url = exports.defaultPaymentServiceURL, retryConfig, signer, logger = logger_js_1.ConsoleTurboLogger.default, token = 'arweave', tokenTools, }) {
|
201
201
|
super({ url, retryConfig, logger, token });
|
202
202
|
this.signer = signer;
|
203
203
|
this.tokenTools = tokenTools;
|
package/lib/cjs/common/signer.js
CHANGED
@@ -38,7 +38,7 @@ const logger_js_1 = require("./logger.js");
|
|
38
38
|
* Abstract class for signing TurboDataItems.
|
39
39
|
*/
|
40
40
|
class TurboDataItemAbstractSigner {
|
41
|
-
constructor({ signer, logger = logger_js_1.
|
41
|
+
constructor({ signer, logger = logger_js_1.ConsoleTurboLogger.default, token, walletAdapter, }) {
|
42
42
|
this.logger = logger;
|
43
43
|
this.signer = signer;
|
44
44
|
this.token = token;
|
@@ -0,0 +1,205 @@
|
|
1
|
+
"use strict";
|
2
|
+
/**
|
3
|
+
* Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*/
|
17
|
+
// // Constants
|
18
|
+
// const SignatureConfig = {
|
19
|
+
// ARWEAVE: 1,
|
20
|
+
// ED25519: 2,
|
21
|
+
// ETHEREUM: 3,
|
22
|
+
// SOLANA: 4,
|
23
|
+
// };
|
24
|
+
// const SIG_CONFIG = {
|
25
|
+
// [SignatureConfig.ETHEREUM]: {
|
26
|
+
// sigLength: 65,
|
27
|
+
// pubLength: 65,
|
28
|
+
// },
|
29
|
+
// [SignatureConfig.SOLANA]: {
|
30
|
+
// sigLength: 64,
|
31
|
+
// pubLength: 32,
|
32
|
+
// },
|
33
|
+
// };
|
34
|
+
// // Utils
|
35
|
+
// function stringToBytes(str: string): Uint8Array {
|
36
|
+
// return new TextEncoder().encode(str);
|
37
|
+
// }
|
38
|
+
// function bytesToBase64(bytes: Uint8Array): string {
|
39
|
+
// return btoa(String.fromCharCode(...bytes));
|
40
|
+
// }
|
41
|
+
// // Signer base
|
42
|
+
// export abstract class Signer {
|
43
|
+
// abstract readonly publicKey: Buffer;
|
44
|
+
// abstract readonly signatureType: number;
|
45
|
+
// abstract readonly signatureLength: number;
|
46
|
+
// abstract readonly ownerLength: number;
|
47
|
+
// readonly pem?: string | Buffer;
|
48
|
+
// abstract sign(
|
49
|
+
// message: Uint8Array,
|
50
|
+
// _opts?: any,
|
51
|
+
// ): Promise<Uint8Array> | Uint8Array;
|
52
|
+
// static verify(
|
53
|
+
// _pk: string | Buffer,
|
54
|
+
// _message: Uint8Array,
|
55
|
+
// _signature: Uint8Array,
|
56
|
+
// _opts?: any,
|
57
|
+
// ): boolean {
|
58
|
+
// throw new Error('You must implement verify method on child');
|
59
|
+
// }
|
60
|
+
// }
|
61
|
+
// // SolanaSigner
|
62
|
+
// export class SolanaSigner extends Signer {
|
63
|
+
// readonly signatureType = SignatureConfig.SOLANA;
|
64
|
+
// readonly signatureLength = 64;
|
65
|
+
// readonly ownerLength = 32;
|
66
|
+
// private _key: string;
|
67
|
+
// private pk: string;
|
68
|
+
// constructor(_key: string) {
|
69
|
+
// super();
|
70
|
+
// const b = bs58.decode(_key);
|
71
|
+
// this.pk = bs58.encode(b.subarray(0, 32));
|
72
|
+
// this._key = bs58.encode(b.subarray(32, 64));
|
73
|
+
// }
|
74
|
+
// get publicKey(): Buffer {
|
75
|
+
// return Buffer.from(bs58.decode(this.pk));
|
76
|
+
// }
|
77
|
+
// get key(): Uint8Array {
|
78
|
+
// return bs58.decode(this._key);
|
79
|
+
// }
|
80
|
+
// async sign(message: Uint8Array): Promise<Uint8Array> {
|
81
|
+
// const keyPair = nacl.sign.keyPair.fromSeed(this.key);
|
82
|
+
// return nacl.sign.detached(message, keyPair.secretKey);
|
83
|
+
// }
|
84
|
+
// }
|
85
|
+
// // ArweaveSigner
|
86
|
+
// export class ArweaveSigner extends Signer {
|
87
|
+
// key: JsonWebKey;
|
88
|
+
// readonly signatureType = SignatureConfig.ARWEAVE;
|
89
|
+
// readonly signatureLength = 512;
|
90
|
+
// readonly ownerLength = 512;
|
91
|
+
// constructor(key: JsonWebKey) {
|
92
|
+
// super();
|
93
|
+
// this.key = key;
|
94
|
+
// }
|
95
|
+
// get publicKey(): Buffer {
|
96
|
+
// throw new Error('Not implemented');
|
97
|
+
// }
|
98
|
+
// async sign(message: Uint8Array): Promise<Uint8Array> {
|
99
|
+
// const key = await crypto.subtle.importKey(
|
100
|
+
// 'jwk',
|
101
|
+
// this.key,
|
102
|
+
// { name: 'RSA-PSS', hash: 'SHA-256' },
|
103
|
+
// false,
|
104
|
+
// ['sign'],
|
105
|
+
// );
|
106
|
+
// const sig = await crypto.subtle.sign(
|
107
|
+
// { name: 'RSA-PSS', saltLength: 32 },
|
108
|
+
// key,
|
109
|
+
// message,
|
110
|
+
// );
|
111
|
+
// return new Uint8Array(sig);
|
112
|
+
// }
|
113
|
+
// }
|
114
|
+
// // EthereumSigner
|
115
|
+
// export class EthereumSigner extends Signer {
|
116
|
+
// readonly signatureType = SignatureConfig.ETHEREUM;
|
117
|
+
// readonly signatureLength = SIG_CONFIG[SignatureConfig.ETHEREUM].sigLength;
|
118
|
+
// readonly ownerLength = SIG_CONFIG[SignatureConfig.ETHEREUM].pubLength;
|
119
|
+
// private wallet: any;
|
120
|
+
// public publicKey: Buffer;
|
121
|
+
// constructor(wallet: any) {
|
122
|
+
// super();
|
123
|
+
// this.wallet = wallet;
|
124
|
+
// }
|
125
|
+
// async sign(message: Uint8Array): Promise<Uint8Array> {
|
126
|
+
// const sig = await this.wallet.signMessage(message);
|
127
|
+
// return Buffer.from(sig.slice(2), 'hex');
|
128
|
+
// }
|
129
|
+
// static override verify(
|
130
|
+
// pk: Buffer,
|
131
|
+
// message: Uint8Array,
|
132
|
+
// signature: Uint8Array,
|
133
|
+
// ): boolean {
|
134
|
+
// const addr = computeAddress(pk);
|
135
|
+
// return verifyMessage(message, signature) === addr;
|
136
|
+
// }
|
137
|
+
// }
|
138
|
+
// // InjectedEthereumSigner
|
139
|
+
// export class InjectedEthereumSigner extends Signer {
|
140
|
+
// protected signer: {
|
141
|
+
// signMessage(message: string | Uint8Array): Promise<string>;
|
142
|
+
// };
|
143
|
+
// public publicKey: Buffer;
|
144
|
+
// readonly ownerLength = SIG_CONFIG[SignatureConfig.ETHEREUM].pubLength;
|
145
|
+
// readonly signatureLength = SIG_CONFIG[SignatureConfig.ETHEREUM].sigLength;
|
146
|
+
// readonly signatureType = SignatureConfig.ETHEREUM;
|
147
|
+
// constructor(provider: {
|
148
|
+
// getSigner(): { signMessage(message: string | Uint8Array): Promise<string> };
|
149
|
+
// }) {
|
150
|
+
// super();
|
151
|
+
// this.signer = provider.getSigner();
|
152
|
+
// }
|
153
|
+
// async setPublicKey(): Promise<void> {
|
154
|
+
// const address = 'sign this message to connect to Turbo SDK';
|
155
|
+
// const signedMsg = await this.signer.signMessage(address);
|
156
|
+
// const hash = hashMessage(address);
|
157
|
+
// const recoveredKey = recoverPublicKey(arrayify(hash), signedMsg);
|
158
|
+
// this.publicKey = Buffer.from(arrayify(recoveredKey));
|
159
|
+
// }
|
160
|
+
// async sign<Uint8Array>(message): Promise<Uint8Array> {
|
161
|
+
// const sig = await this.signer.signMessage(message);
|
162
|
+
// return Buffer.from(sig.slice(2), 'hex');
|
163
|
+
// }
|
164
|
+
// static override verify(
|
165
|
+
// pk: Buffer,
|
166
|
+
// message: Uint8Array,
|
167
|
+
// signature: Uint8Array,
|
168
|
+
// ): boolean {
|
169
|
+
// const address = computeAddress(pk);
|
170
|
+
// return verifyMessage(message, signature) === address;
|
171
|
+
// }
|
172
|
+
// }
|
173
|
+
// // ArConnectSigner
|
174
|
+
// export class ArConnectSigner extends Signer {
|
175
|
+
// readonly signatureType = SignatureConfig.ARWEAVE;
|
176
|
+
// readonly signatureLength = 512;
|
177
|
+
// readonly ownerLength = 512;
|
178
|
+
// public publicKey: Buffer;
|
179
|
+
// async sign(message: Uint8Array): Promise<Uint8Array> {
|
180
|
+
// if (!window.arweaveWallet) throw new Error('ArConnect not available');
|
181
|
+
// const sig = await window.arweaveWallet.sign(message, {
|
182
|
+
// name: 'Bundlr-ArConnect',
|
183
|
+
// });
|
184
|
+
// return new Uint8Array(sig.signature);
|
185
|
+
// }
|
186
|
+
// }
|
187
|
+
// // HexInjectedSolanaSigner
|
188
|
+
// export class HexInjectedSolanaSigner extends Signer {
|
189
|
+
// readonly signatureType = SignatureConfig.SOLANA;
|
190
|
+
// readonly signatureLength = 64;
|
191
|
+
// readonly ownerLength = 32;
|
192
|
+
// public publicKey: Buffer;
|
193
|
+
// constructor(
|
194
|
+
// public signer: {
|
195
|
+
// publicKey: string;
|
196
|
+
// signMessage: (message: Uint8Array) => Promise<Uint8Array>;
|
197
|
+
// },
|
198
|
+
// ) {
|
199
|
+
// super();
|
200
|
+
// this.publicKey = Buffer.from(bs58.decode(signer.publicKey));
|
201
|
+
// }
|
202
|
+
// async sign(message: Uint8Array): Promise<Uint8Array> {
|
203
|
+
// return this.signer.signMessage(message);
|
204
|
+
// }
|
205
|
+
// }
|
@@ -30,7 +30,7 @@ const ArweaveClass =
|
|
30
30
|
// @ts-ignore -- Access the correct class constructor for Arweave
|
31
31
|
arweave_1.default.default?.default || arweave_1.default.default || arweave_1.default;
|
32
32
|
class ArweaveToken {
|
33
|
-
constructor({ gatewayUrl = 'https://arweave.net', arweave, logger = logger_js_1.
|
33
|
+
constructor({ gatewayUrl = 'https://arweave.net', arweave, logger = logger_js_1.ConsoleTurboLogger.default, mintU = true, pollingOptions = {
|
34
34
|
maxAttempts: 10,
|
35
35
|
pollingIntervalMs: 3_000,
|
36
36
|
initialBackoffMs: 7_000,
|
@@ -25,7 +25,7 @@ exports.weiToTokenAmount = weiToTokenAmount;
|
|
25
25
|
const ETHToTokenAmount = (eth) => new bignumber_js_1.BigNumber(eth).times(1e18).valueOf();
|
26
26
|
exports.ETHToTokenAmount = ETHToTokenAmount;
|
27
27
|
class EthereumToken {
|
28
|
-
constructor({ logger = logger_js_1.
|
28
|
+
constructor({ logger = logger_js_1.ConsoleTurboLogger.default, gatewayUrl = constants_js_1.defaultProdGatewayUrls.ethereum, pollingOptions = {
|
29
29
|
maxAttempts: 10,
|
30
30
|
pollingIntervalMs: 4_000,
|
31
31
|
initialBackoffMs: 10_000,
|
@@ -36,7 +36,7 @@ exports.ukyveToTokenAmount = ukyveToTokenAmount;
|
|
36
36
|
const KYVEToTokenAmount = (sol) => new bignumber_js_1.BigNumber(sol).times(1e6).valueOf();
|
37
37
|
exports.KYVEToTokenAmount = KYVEToTokenAmount;
|
38
38
|
class KyveToken {
|
39
|
-
constructor({ logger = logger_js_1.
|
39
|
+
constructor({ logger = logger_js_1.ConsoleTurboLogger.default, gatewayUrl = constants_js_1.defaultProdGatewayUrls.kyve, pollingOptions = {
|
40
40
|
maxAttempts: 5,
|
41
41
|
pollingIntervalMs: 1_000,
|
42
42
|
initialBackoffMs: 500,
|
@@ -21,7 +21,7 @@ const logger_js_1 = require("../logger.js");
|
|
21
21
|
const ethereum_js_1 = require("./ethereum.js");
|
22
22
|
exports.POLToTokenAmount = ethereum_js_1.ETHToTokenAmount;
|
23
23
|
class PolygonToken extends ethereum_js_1.EthereumToken {
|
24
|
-
constructor({ logger = logger_js_1.
|
24
|
+
constructor({ logger = logger_js_1.ConsoleTurboLogger.default, gatewayUrl = constants_js_1.defaultProdGatewayUrls.pol, pollingOptions = {
|
25
25
|
maxAttempts: 10,
|
26
26
|
pollingIntervalMs: 4_000,
|
27
27
|
initialBackoffMs: 5_000,
|
@@ -31,7 +31,7 @@ exports.lamportToTokenAmount = lamportToTokenAmount;
|
|
31
31
|
const SOLToTokenAmount = (sol) => new bignumber_js_1.BigNumber(sol).times(1e9).valueOf();
|
32
32
|
exports.SOLToTokenAmount = SOLToTokenAmount;
|
33
33
|
class SolanaToken {
|
34
|
-
constructor({ logger = logger_js_1.
|
34
|
+
constructor({ logger = logger_js_1.ConsoleTurboLogger.default, gatewayUrl = constants_js_1.defaultProdGatewayUrls.solana, pollingOptions = {
|
35
35
|
maxAttempts: 10,
|
36
36
|
pollingIntervalMs: 2_500,
|
37
37
|
initialBackoffMs: 500,
|
package/lib/cjs/common/upload.js
CHANGED
@@ -33,7 +33,7 @@ exports.creditSharingTagNames = {
|
|
33
33
|
exports.developmentUploadServiceURL = 'https://upload.ardrive.dev';
|
34
34
|
exports.defaultUploadServiceURL = 'https://upload.ardrive.io';
|
35
35
|
class TurboUnauthenticatedUploadService {
|
36
|
-
constructor({ url = exports.defaultUploadServiceURL, logger = logger_js_1.
|
36
|
+
constructor({ url = exports.defaultUploadServiceURL, logger = logger_js_1.ConsoleTurboLogger.default, retryConfig = (0, axiosClient_js_1.defaultRetryConfig)(logger), token = 'arweave', }) {
|
37
37
|
this.token = token;
|
38
38
|
this.logger = logger;
|
39
39
|
this.httpService = new http_js_1.TurboHTTPService({
|
@@ -50,7 +50,7 @@ exports.defaultRequestHeaders = {
|
|
50
50
|
'x-turbo-source-version': version_js_1.version,
|
51
51
|
'x-turbo-source-identifier': 'turbo-sdk',
|
52
52
|
};
|
53
|
-
const defaultRetryConfig = (logger = logger_js_1.
|
53
|
+
const defaultRetryConfig = (logger = logger_js_1.ConsoleTurboLogger.default) => ({
|
54
54
|
retryDelay: axios_retry_1.default.exponentialDelay,
|
55
55
|
retries: 5,
|
56
56
|
retryCondition: (error) => {
|
@@ -63,7 +63,7 @@ const defaultRetryConfig = (logger = logger_js_1.TurboWinstonLogger.default) =>
|
|
63
63
|
},
|
64
64
|
});
|
65
65
|
exports.defaultRetryConfig = defaultRetryConfig;
|
66
|
-
const createAxiosInstance = ({ logger = logger_js_1.
|
66
|
+
const createAxiosInstance = ({ logger = logger_js_1.ConsoleTurboLogger.default, axiosConfig = {}, retryConfig = (0, exports.defaultRetryConfig)(logger), } = {}) => {
|
67
67
|
const axiosInstance = axios_1.default.create({
|
68
68
|
...axiosConfig,
|
69
69
|
headers: {
|
package/lib/cjs/version.js
CHANGED
package/lib/esm/cli/constants.js
CHANGED
@@ -2,7 +2,7 @@ import { version } from '../version.js';
|
|
2
2
|
export const turboCliTags = [
|
3
3
|
{ name: 'App-Name', value: 'Turbo-CLI' },
|
4
4
|
{ name: 'App-Version', value: version },
|
5
|
-
{ name: 'App-Platform', value: process
|
5
|
+
{ name: 'App-Platform', value: process?.platform },
|
6
6
|
];
|
7
7
|
export const wincPerCredit = 1_000_000_000_000;
|
8
8
|
export const defaultProdGatewayUrls = {
|
@@ -15,17 +15,17 @@
|
|
15
15
|
*/
|
16
16
|
import { EthereumSigner, HexInjectedSolanaSigner, HexSolanaSigner, InjectedEthereumSigner, } from '@dha-team/arbundles';
|
17
17
|
import { isEthereumWalletAdapter, isSolanaWalletAdapter, } from '../types.js';
|
18
|
-
import {
|
18
|
+
import { ConsoleTurboLogger } from './logger.js';
|
19
19
|
import { TurboAuthenticatedPaymentService, TurboUnauthenticatedPaymentService, } from './payment.js';
|
20
20
|
import { defaultTokenMap } from './token/index.js';
|
21
21
|
import { TurboAuthenticatedClient, TurboUnauthenticatedClient, } from './turbo.js';
|
22
22
|
import { TurboUnauthenticatedUploadService } from './upload.js';
|
23
23
|
export class TurboBaseFactory {
|
24
|
-
/* @deprecated - use
|
24
|
+
/* @deprecated - use ConsoleTurboLogger directly */
|
25
25
|
static setLogLevel(level) {
|
26
26
|
this.logger.setLogLevel(level);
|
27
27
|
}
|
28
|
-
/* @deprecated - use
|
28
|
+
/* @deprecated - use ConsoleTurboLogger directly */
|
29
29
|
static setLogFormat(format) {
|
30
30
|
this.logger.setLogFormat(format);
|
31
31
|
}
|
@@ -121,4 +121,4 @@ export class TurboBaseFactory {
|
|
121
121
|
throw new Error('Unsupported wallet adapter -- wallet adapter is currently only supported for Solana and Ethereum');
|
122
122
|
}
|
123
123
|
}
|
124
|
-
TurboBaseFactory.logger =
|
124
|
+
TurboBaseFactory.logger = ConsoleTurboLogger.default;
|
package/lib/esm/common/logger.js
CHANGED
@@ -1,88 +1,56 @@
|
|
1
|
-
/**
|
2
|
-
* Copyright (C) 2022-2024 Permanent Data Solutions, Inc.
|
3
|
-
*
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
* you may not use this file except in compliance with the License.
|
6
|
-
* You may obtain a copy of the License at
|
7
|
-
*
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
*
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
* See the License for the specific language governing permissions and
|
14
|
-
* limitations under the License.
|
15
|
-
*/
|
16
|
-
import { createLogger, format, transports } from 'winston';
|
17
1
|
import { version } from '../version.js';
|
18
|
-
export class
|
2
|
+
export class ConsoleTurboLogger {
|
19
3
|
constructor({ level = 'info', logFormat = 'simple', } = {}) {
|
20
|
-
this.
|
21
|
-
|
22
|
-
|
23
|
-
}
|
24
|
-
if (typeof window !== 'undefined') {
|
25
|
-
this.logger = console;
|
26
|
-
}
|
27
|
-
else {
|
28
|
-
this.logger = createLogger({
|
29
|
-
level,
|
30
|
-
silent: this.silent,
|
31
|
-
defaultMeta: {
|
32
|
-
name: 'turbo-sdk',
|
33
|
-
version,
|
34
|
-
},
|
35
|
-
format: format.combine(format.timestamp(), format.json()),
|
36
|
-
transports: [
|
37
|
-
new transports.Console({
|
38
|
-
format: getLogFormat(logFormat),
|
39
|
-
}),
|
40
|
-
],
|
41
|
-
});
|
42
|
-
}
|
4
|
+
this.level = level;
|
5
|
+
this.format = logFormat;
|
6
|
+
this.silent = level === 'none';
|
43
7
|
}
|
44
|
-
|
8
|
+
shouldLog(level) {
|
45
9
|
if (this.silent)
|
46
|
-
return;
|
47
|
-
|
10
|
+
return false;
|
11
|
+
const order = ['none', 'error', 'info', 'debug'];
|
12
|
+
return order.indexOf(level) <= order.indexOf(this.level);
|
13
|
+
}
|
14
|
+
formatMessage(level, message, args) {
|
15
|
+
const base = {
|
16
|
+
level,
|
17
|
+
message,
|
18
|
+
args,
|
19
|
+
version,
|
20
|
+
timestamp: new Date().toISOString(),
|
21
|
+
};
|
22
|
+
return this.format === 'json'
|
23
|
+
? JSON.stringify(base)
|
24
|
+
: `[${base.timestamp}] [${level.toUpperCase()}] ${message} ${args
|
25
|
+
.map((a) => JSON.stringify(a))
|
26
|
+
.join(' ')}`;
|
27
|
+
}
|
28
|
+
info(message, ...args) {
|
29
|
+
if (this.shouldLog('info')) {
|
30
|
+
console.info(this.formatMessage('info', message, args));
|
31
|
+
}
|
48
32
|
}
|
49
33
|
warn(message, ...args) {
|
50
|
-
if (this.
|
51
|
-
|
52
|
-
|
34
|
+
if (this.shouldLog('info')) {
|
35
|
+
console.warn(this.formatMessage('warn', message, args));
|
36
|
+
}
|
53
37
|
}
|
54
38
|
error(message, ...args) {
|
55
|
-
if (this.
|
56
|
-
|
57
|
-
|
39
|
+
if (this.shouldLog('error')) {
|
40
|
+
console.error(this.formatMessage('error', message, args));
|
41
|
+
}
|
58
42
|
}
|
59
43
|
debug(message, ...args) {
|
60
|
-
if (this.
|
61
|
-
|
62
|
-
|
44
|
+
if (this.shouldLog('debug')) {
|
45
|
+
console.debug(this.formatMessage('debug', message, args));
|
46
|
+
}
|
63
47
|
}
|
64
48
|
setLogLevel(level) {
|
49
|
+
this.level = level;
|
65
50
|
this.silent = level === 'none';
|
66
|
-
if ('silent' in this.logger) {
|
67
|
-
this.logger.silent = level === 'none';
|
68
|
-
}
|
69
|
-
if ('level' in this.logger) {
|
70
|
-
this.logger.level = level;
|
71
|
-
}
|
72
51
|
}
|
73
52
|
setLogFormat(logFormat) {
|
74
|
-
|
75
|
-
this.logger.format = getLogFormat(logFormat);
|
76
|
-
}
|
53
|
+
this.format = logFormat;
|
77
54
|
}
|
78
55
|
}
|
79
|
-
|
80
|
-
function getLogFormat(logFormat) {
|
81
|
-
return format.combine(format((info) => {
|
82
|
-
if (info.stack && info.level !== 'error') {
|
83
|
-
delete info.stack;
|
84
|
-
}
|
85
|
-
return info;
|
86
|
-
})(), format.errors({ stack: true }), // Ensure errors show a stack trace
|
87
|
-
format.timestamp(), logFormat === 'json' ? format.json() : format.simple());
|
88
|
-
}
|
56
|
+
ConsoleTurboLogger.default = new ConsoleTurboLogger();
|