@ardrive/turbo-sdk 1.9.1-alpha.1 → 1.10.0-alpha.2
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/README.md +58 -0
- package/bundles/web.bundle.min.js +26379 -13352
- package/lib/cjs/common/factory.js +22 -10
- package/lib/cjs/common/http.js +1 -1
- package/lib/cjs/common/logger.js +43 -10
- package/lib/cjs/common/payment.js +2 -2
- package/lib/cjs/common/token/arweave.js +3 -3
- package/lib/cjs/common/token/ethereum.js +3 -3
- package/lib/cjs/common/token/solana.js +3 -3
- package/lib/cjs/common/turbo.js +3 -0
- package/lib/cjs/common/upload.js +107 -4
- package/lib/cjs/node/index.js +1 -0
- package/lib/cjs/node/upload.js +72 -0
- package/lib/cjs/types.js +6 -2
- package/lib/cjs/utils/axiosClient.js +1 -1
- package/lib/cjs/utils/base64.js +6 -6
- package/lib/cjs/utils/common.js +5 -2
- package/lib/cjs/utils/readableStream.js +1 -2
- package/lib/cjs/version.js +1 -1
- package/lib/cjs/web/factory.js +2 -1
- package/lib/cjs/web/index.js +1 -0
- package/lib/cjs/web/upload.js +57 -0
- package/lib/esm/common/factory.js +21 -9
- package/lib/esm/common/http.js +1 -1
- package/lib/esm/common/logger.js +43 -10
- package/lib/esm/common/payment.js +2 -2
- package/lib/esm/common/token/arweave.js +3 -3
- package/lib/esm/common/token/ethereum.js +3 -3
- package/lib/esm/common/token/solana.js +3 -3
- package/lib/esm/common/turbo.js +3 -0
- package/lib/esm/common/upload.js +105 -2
- package/lib/esm/node/index.js +1 -0
- package/lib/esm/node/upload.js +68 -0
- package/lib/esm/types.js +2 -0
- package/lib/esm/utils/axiosClient.js +1 -1
- package/lib/esm/utils/common.js +3 -0
- package/lib/esm/version.js +1 -1
- package/lib/esm/web/factory.js +3 -2
- package/lib/esm/web/index.js +1 -0
- package/lib/esm/web/upload.js +53 -0
- package/lib/types/common/factory.d.ts.map +1 -1
- package/lib/types/common/http.d.ts +0 -3
- package/lib/types/common/http.d.ts.map +1 -1
- package/lib/types/common/logger.d.ts +3 -1
- package/lib/types/common/logger.d.ts.map +1 -1
- package/lib/types/common/payment.d.ts.map +1 -1
- package/lib/types/common/signer.d.ts +0 -1
- 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/ethereum.d.ts.map +1 -1
- package/lib/types/common/token/solana.d.ts.map +1 -1
- package/lib/types/common/turbo.d.ts +2 -1
- package/lib/types/common/turbo.d.ts.map +1 -1
- package/lib/types/common/upload.d.ts +18 -2
- package/lib/types/common/upload.d.ts.map +1 -1
- package/lib/types/node/index.d.ts +1 -0
- package/lib/types/node/index.d.ts.map +1 -1
- package/lib/types/node/signer.d.ts +0 -1
- package/lib/types/node/signer.d.ts.map +1 -1
- package/lib/types/node/upload.d.ts +15 -0
- package/lib/types/node/upload.d.ts.map +1 -0
- package/lib/types/types.d.ts +40 -4
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/utils/base64.d.ts +0 -1
- package/lib/types/utils/base64.d.ts.map +1 -1
- package/lib/types/utils/common.d.ts +1 -0
- package/lib/types/utils/common.d.ts.map +1 -1
- package/lib/types/utils/readableStream.d.ts +0 -2
- package/lib/types/utils/readableStream.d.ts.map +1 -1
- package/lib/types/version.d.ts +1 -1
- package/lib/types/version.d.ts.map +1 -1
- package/lib/types/web/factory.d.ts.map +1 -1
- package/lib/types/web/index.d.ts +1 -0
- package/lib/types/web/index.d.ts.map +1 -1
- package/lib/types/web/signer.d.ts +0 -1
- package/lib/types/web/signer.d.ts.map +1 -1
- package/lib/types/web/upload.d.ts +29 -0
- package/lib/types/web/upload.d.ts.map +1 -0
- package/package.json +7 -3
@@ -16,17 +16,22 @@
|
|
16
16
|
*/
|
17
17
|
import { ArweaveSigner, EthereumSigner, HexSolanaSigner } from 'arbundles';
|
18
18
|
import { TurboNodeSigner } from '../node/signer.js';
|
19
|
+
import { TurboAuthenticatedNodeUploadService } from '../node/upload.js';
|
19
20
|
import { isEthPrivateKey, isJWK, } from '../types.js';
|
21
|
+
import { isWeb } from '../utils/common.js';
|
20
22
|
import { TurboWebArweaveSigner } from '../web/signer.js';
|
23
|
+
import { TurboAuthenticatedWebUploadService } from '../web/upload.js';
|
21
24
|
import { TurboWinstonLogger } from './logger.js';
|
22
25
|
import { TurboAuthenticatedPaymentService, TurboUnauthenticatedPaymentService, } from './payment.js';
|
23
26
|
import { defaultTokenMap } from './token/index.js';
|
24
27
|
import { TurboAuthenticatedClient, TurboUnauthenticatedClient, } from './turbo.js';
|
25
|
-
import {
|
28
|
+
import { TurboUnauthenticatedUploadService } from './upload.js';
|
26
29
|
export class TurboBaseFactory {
|
30
|
+
/* @deprecated - use TurboWinstonLogger directly */
|
27
31
|
static setLogLevel(level) {
|
28
32
|
this.logger.setLogLevel(level);
|
29
33
|
}
|
34
|
+
/* @deprecated - use TurboWinstonLogger directly */
|
30
35
|
static setLogFormat(format) {
|
31
36
|
this.logger.setLogFormat(format);
|
32
37
|
}
|
@@ -69,7 +74,7 @@ export class TurboBaseFactory {
|
|
69
74
|
else {
|
70
75
|
throw new Error('A privateKey or signer must be provided.');
|
71
76
|
}
|
72
|
-
if (
|
77
|
+
if (isWeb()) {
|
73
78
|
return new TurboWebArweaveSigner({
|
74
79
|
signer,
|
75
80
|
logger: this.logger,
|
@@ -115,16 +120,23 @@ export class TurboBaseFactory {
|
|
115
120
|
token,
|
116
121
|
tokenTools,
|
117
122
|
});
|
118
|
-
const uploadService =
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
123
|
+
const uploadService = isWeb()
|
124
|
+
? new TurboAuthenticatedWebUploadService({
|
125
|
+
...uploadServiceConfig,
|
126
|
+
signer: turboSigner,
|
127
|
+
logger: this.logger,
|
128
|
+
token,
|
129
|
+
})
|
130
|
+
: new TurboAuthenticatedNodeUploadService({
|
131
|
+
...uploadServiceConfig,
|
132
|
+
signer: turboSigner,
|
133
|
+
logger: this.logger,
|
134
|
+
token,
|
135
|
+
});
|
124
136
|
return new TurboAuthenticatedClient({
|
125
137
|
uploadService,
|
126
138
|
paymentService,
|
127
139
|
});
|
128
140
|
}
|
129
141
|
}
|
130
|
-
TurboBaseFactory.logger =
|
142
|
+
TurboBaseFactory.logger = TurboWinstonLogger.default;
|
package/lib/esm/common/http.js
CHANGED
@@ -6,7 +6,7 @@ export class TurboHTTPService {
|
|
6
6
|
this.axios = createAxiosInstance({
|
7
7
|
axiosConfig: {
|
8
8
|
baseURL: url,
|
9
|
-
maxRedirects: 0,
|
9
|
+
maxRedirects: 0, // prevents backpressure issues when uploading larger streams via https
|
10
10
|
onUploadProgress: (progressEvent) => {
|
11
11
|
this.logger.debug(`Uploading...`, {
|
12
12
|
percent: Math.floor((progressEvent.progress ?? 0) * 100),
|
package/lib/esm/common/logger.js
CHANGED
@@ -17,34 +17,67 @@
|
|
17
17
|
import { createLogger, format, transports } from 'winston';
|
18
18
|
import { version } from '../version.js';
|
19
19
|
export class TurboWinstonLogger {
|
20
|
-
constructor({ level = '
|
21
|
-
this.
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
}
|
20
|
+
constructor({ level = 'info', logFormat = 'simple', } = {}) {
|
21
|
+
this.silent = false;
|
22
|
+
if (level === 'none') {
|
23
|
+
this.silent = true;
|
24
|
+
}
|
25
|
+
if (typeof window !== 'undefined') {
|
26
|
+
this.logger = console;
|
27
|
+
}
|
28
|
+
else {
|
29
|
+
this.logger = createLogger({
|
30
|
+
level,
|
31
|
+
silent: this.silent,
|
32
|
+
defaultMeta: {
|
33
|
+
name: 'turbo-sdk',
|
34
|
+
version,
|
35
|
+
},
|
36
|
+
format: format.combine(format.timestamp(), format.json()),
|
37
|
+
transports: [
|
38
|
+
new transports.Console({
|
39
|
+
format: getLogFormat(logFormat),
|
40
|
+
}),
|
41
|
+
],
|
42
|
+
});
|
43
|
+
}
|
28
44
|
}
|
29
45
|
info(message, ...args) {
|
46
|
+
if (this.silent)
|
47
|
+
return;
|
30
48
|
this.logger.info(message, ...args);
|
31
49
|
}
|
32
50
|
warn(message, ...args) {
|
51
|
+
if (this.silent)
|
52
|
+
return;
|
33
53
|
this.logger.warn(message, ...args);
|
34
54
|
}
|
35
55
|
error(message, ...args) {
|
56
|
+
if (this.silent)
|
57
|
+
return;
|
36
58
|
this.logger.error(message, ...args);
|
37
59
|
}
|
38
60
|
debug(message, ...args) {
|
61
|
+
if (this.silent)
|
62
|
+
return;
|
39
63
|
this.logger.debug(message, ...args);
|
40
64
|
}
|
41
65
|
setLogLevel(level) {
|
42
|
-
this.
|
66
|
+
this.silent = level === 'none';
|
67
|
+
if ('silent' in this.logger) {
|
68
|
+
this.logger.silent = level === 'none';
|
69
|
+
}
|
70
|
+
if ('level' in this.logger) {
|
71
|
+
this.logger.level = level;
|
72
|
+
}
|
43
73
|
}
|
44
74
|
setLogFormat(logFormat) {
|
45
|
-
this.logger
|
75
|
+
if ('format' in this.logger) {
|
76
|
+
this.logger.format = getLogFormat(logFormat);
|
77
|
+
}
|
46
78
|
}
|
47
79
|
}
|
80
|
+
TurboWinstonLogger.default = new TurboWinstonLogger();
|
48
81
|
function getLogFormat(logFormat) {
|
49
82
|
return format.combine(format((info) => {
|
50
83
|
if (info.stack && info.level !== 'error') {
|
@@ -20,7 +20,7 @@ import { TurboWinstonLogger } from './logger.js';
|
|
20
20
|
export const developmentPaymentServiceURL = 'https://payment.ardrive.dev';
|
21
21
|
export const defaultPaymentServiceURL = 'https://payment.ardrive.io';
|
22
22
|
export class TurboUnauthenticatedPaymentService {
|
23
|
-
constructor({ url = defaultPaymentServiceURL, retryConfig, logger =
|
23
|
+
constructor({ url = defaultPaymentServiceURL, retryConfig, logger = TurboWinstonLogger.default, token = 'arweave', }) {
|
24
24
|
this.logger = logger;
|
25
25
|
this.httpService = new TurboHTTPService({
|
26
26
|
url: `${url}/v1`,
|
@@ -129,7 +129,7 @@ export class TurboUnauthenticatedPaymentService {
|
|
129
129
|
}
|
130
130
|
// NOTE: to avoid redundancy, we use inheritance here - but generally prefer composition over inheritance
|
131
131
|
export class TurboAuthenticatedPaymentService extends TurboUnauthenticatedPaymentService {
|
132
|
-
constructor({ url = defaultPaymentServiceURL, retryConfig, signer, logger =
|
132
|
+
constructor({ url = defaultPaymentServiceURL, retryConfig, signer, logger = TurboWinstonLogger.default, token = 'arweave', tokenTools, }) {
|
133
133
|
super({ url, retryConfig, logger, token });
|
134
134
|
this.signer = signer;
|
135
135
|
this.tokenTools = tokenTools;
|
@@ -22,10 +22,10 @@ import { TurboWinstonLogger } from '../logger.js';
|
|
22
22
|
export class ArweaveToken {
|
23
23
|
constructor({ gatewayUrl = 'https://arweave.net', arweave = Arweave.init({
|
24
24
|
url: gatewayUrl,
|
25
|
-
}), logger =
|
25
|
+
}), logger = TurboWinstonLogger.default, mintU = true, pollingOptions = {
|
26
26
|
maxAttempts: 10,
|
27
|
-
pollingIntervalMs:
|
28
|
-
initialBackoffMs:
|
27
|
+
pollingIntervalMs: 3_000,
|
28
|
+
initialBackoffMs: 7_000,
|
29
29
|
}, } = {}) {
|
30
30
|
this.arweave = arweave;
|
31
31
|
this.logger = logger;
|
@@ -20,10 +20,10 @@ import { TurboWinstonLogger } from '../logger.js';
|
|
20
20
|
export const weiToTokenAmount = (wei) => wei;
|
21
21
|
export const ETHToTokenAmount = (eth) => new BigNumber(eth).times(1e18).valueOf();
|
22
22
|
export class EthereumToken {
|
23
|
-
constructor({ logger =
|
23
|
+
constructor({ logger = TurboWinstonLogger.default, gatewayUrl = 'https://cloudflare-eth.com/', pollingOptions = {
|
24
24
|
maxAttempts: 10,
|
25
|
-
pollingIntervalMs:
|
26
|
-
initialBackoffMs:
|
25
|
+
pollingIntervalMs: 4_000,
|
26
|
+
initialBackoffMs: 10_000,
|
27
27
|
}, } = {}) {
|
28
28
|
this.logger = logger;
|
29
29
|
this.gatewayUrl = gatewayUrl;
|
@@ -22,10 +22,10 @@ import { TurboWinstonLogger } from '../logger.js';
|
|
22
22
|
export const lamportToTokenAmount = (winston) => winston;
|
23
23
|
export const SOLToTokenAmount = (sol) => new BigNumber(sol).times(1e9).valueOf();
|
24
24
|
export class SolanaToken {
|
25
|
-
constructor({ logger =
|
25
|
+
constructor({ logger = TurboWinstonLogger.default, gatewayUrl = 'https://api.mainnet-beta.solana.com', pollingOptions = {
|
26
26
|
maxAttempts: 10,
|
27
|
-
pollingIntervalMs:
|
28
|
-
initialBackoffMs:
|
27
|
+
pollingIntervalMs: 5_000,
|
28
|
+
initialBackoffMs: 7_000,
|
29
29
|
}, } = {}) {
|
30
30
|
this.logger = logger;
|
31
31
|
this.gatewayUrl = gatewayUrl;
|
package/lib/esm/common/turbo.js
CHANGED
@@ -110,6 +110,9 @@ export class TurboAuthenticatedClient extends TurboUnauthenticatedClient {
|
|
110
110
|
dataItemOpts,
|
111
111
|
});
|
112
112
|
}
|
113
|
+
uploadFolder(p) {
|
114
|
+
return this.uploadService.uploadFolder(p);
|
115
|
+
}
|
113
116
|
/**
|
114
117
|
* Submits fund transaction to the token's blockchain then sends
|
115
118
|
* the transaction ID to the Turbo Payment Service for processing.
|
package/lib/esm/common/upload.js
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
+
import { pLimit } from 'plimit-lit';
|
1
2
|
import { TurboHTTPService } from './http.js';
|
2
3
|
import { TurboWinstonLogger } from './logger.js';
|
3
4
|
export const developmentUploadServiceURL = 'https://upload.ardrive.dev';
|
4
5
|
export const defaultUploadServiceURL = 'https://upload.ardrive.io';
|
5
6
|
export class TurboUnauthenticatedUploadService {
|
6
|
-
constructor({ url = defaultUploadServiceURL, retryConfig, logger =
|
7
|
+
constructor({ url = defaultUploadServiceURL, retryConfig, logger = TurboWinstonLogger.default, token = 'arweave', }) {
|
7
8
|
this.token = token;
|
8
9
|
this.logger = logger;
|
9
10
|
this.httpService = new TurboHTTPService({
|
@@ -28,7 +29,7 @@ export class TurboUnauthenticatedUploadService {
|
|
28
29
|
}
|
29
30
|
}
|
30
31
|
// NOTE: to avoid redundancy, we use inheritance here - but generally prefer composition over inheritance
|
31
|
-
export class
|
32
|
+
export class TurboAuthenticatedBaseUploadService extends TurboUnauthenticatedUploadService {
|
32
33
|
constructor({ url = defaultUploadServiceURL, retryConfig, signer, logger, token, }) {
|
33
34
|
super({ url, retryConfig, logger, token });
|
34
35
|
this.signer = signer;
|
@@ -53,4 +54,106 @@ export class TurboAuthenticatedUploadService extends TurboUnauthenticatedUploadS
|
|
53
54
|
},
|
54
55
|
});
|
55
56
|
}
|
57
|
+
async generateManifest({ paths, indexFile, fallbackFile, }) {
|
58
|
+
const indexPath =
|
59
|
+
// Use the user provided index file if it exists,
|
60
|
+
indexFile !== undefined && paths[indexFile]?.id !== undefined
|
61
|
+
? indexFile
|
62
|
+
: // Else use index.html if it exists,
|
63
|
+
paths['index.html']?.id !== undefined
|
64
|
+
? 'index.html'
|
65
|
+
: // Else use the first file in the paths object.
|
66
|
+
Object.keys(paths)[0];
|
67
|
+
const fallbackId =
|
68
|
+
// Use the user provided fallback file if it exists,
|
69
|
+
fallbackFile !== undefined && paths[fallbackFile]?.id !== undefined
|
70
|
+
? paths[fallbackFile].id
|
71
|
+
: // Else use 404.html if it exists, else use the index path.
|
72
|
+
paths['404.html']?.id ?? paths[indexPath].id;
|
73
|
+
const manifest = {
|
74
|
+
manifest: 'arweave/paths',
|
75
|
+
version: '0.2.0',
|
76
|
+
index: { path: indexPath },
|
77
|
+
paths,
|
78
|
+
fallback: { id: fallbackId },
|
79
|
+
};
|
80
|
+
return manifest;
|
81
|
+
}
|
82
|
+
getContentType(file, dataItemOpts) {
|
83
|
+
const userDefinedContentType = dataItemOpts?.tags?.find((tag) => tag.name === 'Content-Type')?.value;
|
84
|
+
if (userDefinedContentType !== undefined) {
|
85
|
+
return userDefinedContentType;
|
86
|
+
}
|
87
|
+
return this.contentTypeFromFile(file);
|
88
|
+
}
|
89
|
+
async uploadFolder(params) {
|
90
|
+
const { dataItemOpts, signal, manifestOptions = {}, maxConcurrentUploads = 5, throwOnFailure = true, } = params;
|
91
|
+
const { disableManifest, indexFile, fallbackFile } = manifestOptions;
|
92
|
+
const paths = {};
|
93
|
+
const response = {
|
94
|
+
fileResponses: [],
|
95
|
+
};
|
96
|
+
const errors = [];
|
97
|
+
const uploadFile = async (file) => {
|
98
|
+
const contentType = this.getContentType(file, dataItemOpts);
|
99
|
+
const dataItemOptsWithContentType = {
|
100
|
+
...dataItemOpts,
|
101
|
+
tags: [
|
102
|
+
...(dataItemOpts?.tags?.filter((tag) => tag.name !== 'Content-Type') ?? []),
|
103
|
+
{ name: 'Content-Type', value: contentType },
|
104
|
+
],
|
105
|
+
};
|
106
|
+
try {
|
107
|
+
const result = await this.uploadFile({
|
108
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
109
|
+
fileStreamFactory: () => this.getFileStreamForFile(file),
|
110
|
+
fileSizeFactory: () => this.getFileSize(file),
|
111
|
+
signal,
|
112
|
+
dataItemOpts: dataItemOptsWithContentType,
|
113
|
+
});
|
114
|
+
const relativePath = this.getRelativePath(file, params);
|
115
|
+
paths[relativePath] = { id: result.id };
|
116
|
+
response.fileResponses.push(result);
|
117
|
+
}
|
118
|
+
catch (error) {
|
119
|
+
if (throwOnFailure) {
|
120
|
+
throw error;
|
121
|
+
}
|
122
|
+
this.logger.error(`Error uploading file: ${file}`, error);
|
123
|
+
errors.push(error);
|
124
|
+
}
|
125
|
+
};
|
126
|
+
const files = await this.getFiles(params);
|
127
|
+
const limit = pLimit(maxConcurrentUploads);
|
128
|
+
await Promise.all(files.map((file) => limit(() => uploadFile(file))));
|
129
|
+
if (errors.length > 0) {
|
130
|
+
response.errors = errors;
|
131
|
+
}
|
132
|
+
if (disableManifest) {
|
133
|
+
return response;
|
134
|
+
}
|
135
|
+
const manifest = await this.generateManifest({
|
136
|
+
paths,
|
137
|
+
indexFile,
|
138
|
+
fallbackFile,
|
139
|
+
});
|
140
|
+
const tagsWithManifestContentType = [
|
141
|
+
...(dataItemOpts?.tags?.filter((tag) => tag.name !== 'Content-Type') ??
|
142
|
+
[]),
|
143
|
+
{ name: 'Content-Type', value: 'application/x.arweave-manifest+json' },
|
144
|
+
];
|
145
|
+
const manifestBuffer = Buffer.from(JSON.stringify(manifest));
|
146
|
+
const manifestResponse = await this.uploadFile({
|
147
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
148
|
+
fileStreamFactory: () => this.createManifestStream(manifestBuffer),
|
149
|
+
fileSizeFactory: () => manifestBuffer.byteLength,
|
150
|
+
signal,
|
151
|
+
dataItemOpts: { ...dataItemOpts, tags: tagsWithManifestContentType },
|
152
|
+
});
|
153
|
+
return {
|
154
|
+
...response,
|
155
|
+
manifest,
|
156
|
+
manifestResponse,
|
157
|
+
};
|
158
|
+
}
|
56
159
|
}
|
package/lib/esm/node/index.js
CHANGED
@@ -0,0 +1,68 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (C) 2022-2024 Permanent Data Solutions, Inc. All Rights Reserved.
|
3
|
+
*
|
4
|
+
* This program is free software: you can redistribute it and/or modify
|
5
|
+
* it under the terms of the GNU Affero General Public License as published by
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
7
|
+
* (at your option) any later version.
|
8
|
+
*
|
9
|
+
* This program is distributed in the hope that it will be useful,
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
* GNU Affero General Public License for more details.
|
13
|
+
*
|
14
|
+
* You should have received a copy of the GNU Affero General Public License
|
15
|
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
*/
|
17
|
+
import { createReadStream, promises, statSync } from 'fs';
|
18
|
+
import { lookup } from 'mime-types';
|
19
|
+
import { Readable } from 'node:stream';
|
20
|
+
import { join } from 'path';
|
21
|
+
import { TurboAuthenticatedBaseUploadService, defaultUploadServiceURL, } from '../common/upload.js';
|
22
|
+
import { isNodeUploadFolderParams, } from '../types.js';
|
23
|
+
export class TurboAuthenticatedNodeUploadService extends TurboAuthenticatedBaseUploadService {
|
24
|
+
constructor({ url = defaultUploadServiceURL, retryConfig, signer, logger, token, }) {
|
25
|
+
super({ url, retryConfig, logger, token, signer });
|
26
|
+
}
|
27
|
+
async getAbsoluteFilePathsFromFolder(folderPath) {
|
28
|
+
const absoluteFilePaths = [];
|
29
|
+
// Walk the directory and add all file paths to the array
|
30
|
+
const files = await promises.readdir(folderPath);
|
31
|
+
for (const file of files) {
|
32
|
+
const absoluteFilePath = join(folderPath, file);
|
33
|
+
const stat = await promises.stat(absoluteFilePath);
|
34
|
+
if (stat.isDirectory()) {
|
35
|
+
absoluteFilePaths.push(...(await this.getAbsoluteFilePathsFromFolder(absoluteFilePath)));
|
36
|
+
}
|
37
|
+
else {
|
38
|
+
absoluteFilePaths.push(absoluteFilePath);
|
39
|
+
}
|
40
|
+
}
|
41
|
+
return absoluteFilePaths;
|
42
|
+
}
|
43
|
+
getFiles(params) {
|
44
|
+
if (!isNodeUploadFolderParams(params)) {
|
45
|
+
throw new Error('folderPath is required for node uploadFolder');
|
46
|
+
}
|
47
|
+
return this.getAbsoluteFilePathsFromFolder(params.folderPath);
|
48
|
+
}
|
49
|
+
getFileStreamForFile(file) {
|
50
|
+
return createReadStream(file);
|
51
|
+
}
|
52
|
+
getFileSize(file) {
|
53
|
+
return statSync(file).size;
|
54
|
+
}
|
55
|
+
getFileName(file) {
|
56
|
+
return file;
|
57
|
+
}
|
58
|
+
getRelativePath(file, params) {
|
59
|
+
return file.replace(params.folderPath + '/', '');
|
60
|
+
}
|
61
|
+
contentTypeFromFile(file) {
|
62
|
+
const mimeType = lookup(file);
|
63
|
+
return mimeType !== false ? mimeType : 'application/octet-stream';
|
64
|
+
}
|
65
|
+
createManifestStream(manifestBuffer) {
|
66
|
+
return Readable.from(manifestBuffer);
|
67
|
+
}
|
68
|
+
}
|
package/lib/esm/types.js
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
export const tokenTypes = ['arweave', 'solana', 'ethereum'];
|
2
|
+
export const isNodeUploadFolderParams = (p) => p.folderPath !== undefined;
|
3
|
+
export const isWebUploadFolderParams = (p) => p.files !== undefined;
|
2
4
|
export function isEthPrivateKey(wallet) {
|
3
5
|
if (typeof wallet !== 'string')
|
4
6
|
return false;
|
@@ -22,7 +22,7 @@ export const defaultRequestHeaders = {
|
|
22
22
|
'x-turbo-source-version': version,
|
23
23
|
'x-turbo-source-identifier': 'turbo-sdk',
|
24
24
|
};
|
25
|
-
export const createAxiosInstance = ({ logger =
|
25
|
+
export const createAxiosInstance = ({ logger = TurboWinstonLogger.default, axiosConfig = {}, retryConfig = {
|
26
26
|
retryDelay: axiosRetry.exponentialDelay,
|
27
27
|
retries: 3,
|
28
28
|
retryCondition: (error) => {
|
package/lib/esm/utils/common.js
CHANGED
package/lib/esm/version.js
CHANGED
package/lib/esm/web/factory.js
CHANGED
@@ -16,9 +16,10 @@
|
|
16
16
|
*/
|
17
17
|
import { ArweaveSigner, EthereumSigner, HexSolanaSigner } from 'arbundles';
|
18
18
|
import { TurboBaseFactory } from '../common/factory.js';
|
19
|
-
import { TurboAuthenticatedClient, TurboAuthenticatedPaymentService,
|
19
|
+
import { TurboAuthenticatedClient, TurboAuthenticatedPaymentService, defaultTokenMap, } from '../common/index.js';
|
20
20
|
import { isEthPrivateKey, isJWK, } from '../types.js';
|
21
21
|
import { TurboWebArweaveSigner } from './signer.js';
|
22
|
+
import { TurboAuthenticatedWebUploadService } from './upload.js';
|
22
23
|
export class TurboFactory extends TurboBaseFactory {
|
23
24
|
static getSigner(providedSigner, providedPrivateKey, token) {
|
24
25
|
let signer;
|
@@ -86,7 +87,7 @@ export class TurboFactory extends TurboBaseFactory {
|
|
86
87
|
token,
|
87
88
|
tokenTools,
|
88
89
|
});
|
89
|
-
const uploadService = new
|
90
|
+
const uploadService = new TurboAuthenticatedWebUploadService({
|
90
91
|
...uploadServiceConfig,
|
91
92
|
signer: turboSigner,
|
92
93
|
logger: this.logger,
|
package/lib/esm/web/index.js
CHANGED
@@ -0,0 +1,53 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (C) 2022-2024 Permanent Data Solutions, Inc. All Rights Reserved.
|
3
|
+
*
|
4
|
+
* This program is free software: you can redistribute it and/or modify
|
5
|
+
* it under the terms of the GNU Affero General Public License as published by
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
7
|
+
* (at your option) any later version.
|
8
|
+
*
|
9
|
+
* This program is distributed in the hope that it will be useful,
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
* GNU Affero General Public License for more details.
|
13
|
+
*
|
14
|
+
* You should have received a copy of the GNU Affero General Public License
|
15
|
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
*/
|
17
|
+
import { TurboAuthenticatedBaseUploadService, defaultUploadServiceURL, } from '../common/upload.js';
|
18
|
+
import { isWebUploadFolderParams, } from '../types.js';
|
19
|
+
export class TurboAuthenticatedWebUploadService extends TurboAuthenticatedBaseUploadService {
|
20
|
+
constructor({ url = defaultUploadServiceURL, retryConfig, signer, logger, token, }) {
|
21
|
+
super({ url, retryConfig, logger, token, signer });
|
22
|
+
}
|
23
|
+
getFiles(params) {
|
24
|
+
if (!isWebUploadFolderParams(params)) {
|
25
|
+
throw new Error('files are required for web uploadFolder');
|
26
|
+
}
|
27
|
+
return Promise.resolve(params.files);
|
28
|
+
}
|
29
|
+
getFileStreamForFile(file) {
|
30
|
+
return file.stream();
|
31
|
+
}
|
32
|
+
getFileSize(file) {
|
33
|
+
return file.size;
|
34
|
+
}
|
35
|
+
getFileName(file) {
|
36
|
+
return file.name;
|
37
|
+
}
|
38
|
+
getRelativePath(file) {
|
39
|
+
return file.name || file.webkitRelativePath;
|
40
|
+
}
|
41
|
+
contentTypeFromFile(file) {
|
42
|
+
return file.type || 'application/octet-stream';
|
43
|
+
}
|
44
|
+
createManifestStream(manifestBuffer) {
|
45
|
+
const stream = new ReadableStream({
|
46
|
+
start(controller) {
|
47
|
+
controller.enqueue(manifestBuffer);
|
48
|
+
controller.close();
|
49
|
+
},
|
50
|
+
});
|
51
|
+
return stream;
|
52
|
+
}
|
53
|
+
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/common/factory.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/common/factory.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,SAAS,EACT,+BAA+B,EAC/B,WAAW,EACX,iCAAiC,EACjC,WAAW,EAGZ,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAKjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAGpB,qBAAa,gBAAgB;IAC3B,SAAS,CAAC,MAAM,CAAC,MAAM,qBAA8B;IAGrD,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM;IAKhC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM;IAIlC,MAAM,CAAC,eAAe,CAAC,EACrB,oBAAyB,EACzB,mBAAwB,GACzB,GAAE,iCAAsC;IAezC,SAAS,CAAC,MAAM,CAAC,SAAS,CACxB,cAAc,EAAE,WAAW,GAAG,SAAS,EACvC,kBAAkB,EAAE,WAAW,GAAG,SAAS,EAC3C,KAAK,EAAE,SAAS,GACf,2BAA2B;IAqC9B,MAAM,CAAC,aAAa,CAAC,EACnB,UAAU,EACV,MAAM,EAAE,cAAc,EACtB,oBAAyB,EACzB,mBAAwB,EACxB,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,GACX,EAAE,+BAA+B;CAqDnC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/common/http.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/common/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AAIrB,qBAAa,gBAAiB,YAAW,yBAAyB;IAChE,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC;IAC/B,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;gBAElB,EACV,GAAG,EACH,WAAW,EACX,MAAM,GACP,EAAE;QACD,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,iBAAiB,CAAC;QAChC,MAAM,EAAE,WAAW,CAAC;KACrB;IAqBK,GAAG,CAAC,CAAC,EAAE,EACX,QAAQ,EACR,MAAM,EACN,eAA4B,EAC5B,OAAO,GACR,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACvE,GAAG,OAAO,CAAC,CAAC,CAAC;IAiBR,IAAI,CAAC,CAAC,EAAE,EACZ,QAAQ,EACR,MAAM,EACN,eAA4B,EAC5B,OAAO,EACP,IAAI,GACL,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;KAC1C,GAAG,OAAO,CAAC,CAAC,CAAC;CAoBf"}
|
@@ -17,7 +17,9 @@
|
|
17
17
|
import winston from 'winston';
|
18
18
|
import { TurboLogger } from '../types.js';
|
19
19
|
export declare class TurboWinstonLogger implements TurboLogger {
|
20
|
-
protected logger: winston.Logger;
|
20
|
+
protected logger: winston.Logger | Console;
|
21
|
+
private silent;
|
22
|
+
static default: TurboWinstonLogger;
|
21
23
|
constructor({ level, logFormat, }?: {
|
22
24
|
level?: 'info' | 'debug' | 'error' | 'none' | undefined;
|
23
25
|
logFormat?: 'simple' | 'json' | undefined;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/common/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,OAA6C,MAAM,SAAS,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,qBAAa,kBAAmB,YAAW,WAAW;IACpD,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/common/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,OAA6C,MAAM,SAAS,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,qBAAa,kBAAmB,YAAW,WAAW;IACpD,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;IAC3C,OAAO,CAAC,MAAM,CAAS;IAEvB,MAAM,CAAC,OAAO,qBAA4B;gBAE9B,EACV,KAAc,EACd,SAAoB,GACrB,GAAE;QACD,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;QACxD,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;KACtC;IAwBN,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAMxC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAMxC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAMzC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAMzC,WAAW,CAAC,KAAK,EAAE,MAAM;IAWzB,YAAY,CAAC,SAAS,EAAE,MAAM;CAK/B"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../../../src/common/payment.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,SAAS,EAET,6CAA6C,EAC7C,yCAAyC,EACzC,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EAEzB,WAAW,EAEX,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,+CAA+C,EAC/C,2CAA2C,EAC3C,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAG7C,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AAC1E,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AAErE,qBAAa,kCACX,YAAW,2CAA2C;IAEtD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACjD,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;gBAExB,EACV,GAA8B,EAC9B,WAAW,EACX,
|
1
|
+
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../../../src/common/payment.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,SAAS,EAET,6CAA6C,EAC7C,yCAAyC,EACzC,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EAEzB,WAAW,EAEX,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,+CAA+C,EAC/C,2CAA2C,EAC3C,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAG7C,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AAC1E,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AAErE,qBAAa,kCACX,YAAW,2CAA2C;IAEtD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACjD,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;gBAExB,EACV,GAA8B,EAC9B,WAAW,EACX,MAAmC,EACnC,KAAiB,GAClB,EAAE,+CAA+C;IAU3C,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAM3C,WAAW,CAAC,EACjB,QAAQ,GACT,EAAE;QACD,QAAQ,EAAE,QAAQ,CAAC;KACpB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAM3B,qBAAqB,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAMxD,sBAAsB,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAMpD,cAAc,CAAC,EAC1B,KAAK,GACN,EAAE;QACD,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAW1B,cAAc,CAAC,EACpB,MAAM,GACP,EAAE,sBAAsB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAO7D,SAAS,CAAC,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM;cAK/C,WAAW,CACzB,EACE,MAAM,EACN,KAAK,EACL,UAAe,EACf,MAAiB,GAClB,EAAE,0BAA0B,EAC7B,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,4BAA4B,CAAC;IA0BjC,qBAAqB,CAC1B,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,4BAA4B,CAAC;IAI3B,qBAAqB,CAAC,EACjC,IAAI,GACL,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAqCvC;AAED,qBAAa,gCACX,SAAQ,kCACR,YAAW,yCAAyC;IAEpD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;gBAE1C,EACV,GAA8B,EAC9B,WAAW,EACX,MAAM,EACN,MAAmC,EACnC,KAAiB,EACjB,UAAU,GACX,EAAE,6CAA6C;IAMnC,UAAU,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAY3C,cAAc,CAAC,EAC1B,MAAM,EACN,UAAe,GAChB,EAAE,sBAAsB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAShD,qBAAqB,CAChC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,4BAA4B,CAAC;YAO1B,sBAAsB;IAYvB,eAAe,CAAC,EAC3B,aAAiB,EACjB,WAAW,EAAE,YAAY,GAC1B,EAAE,yBAAyB,GAAG,OAAO,CAAC,uBAAuB,CAAC;CA+ChE"}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
/// <reference types="node" />
|
2
1
|
import { FileStreamFactory, SendTxWithSignerParams, TurboDataItemSigner, TurboDataItemSignerParams, TurboFileFactory, TurboLogger, TurboSignedDataItemFactory, TurboSigner } from '../types.js';
|
3
2
|
/**
|
4
3
|
* Abstract class for signing TurboDataItems.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/common/signer.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/common/signer.ts"],"names":[],"mappings":"AAqBA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,WAAW,EACX,0BAA0B,EAC1B,WAAW,EACZ,MAAM,aAAa,CAAC;AAGrB;;GAEG;AACH,8BAAsB,2BACpB,YAAW,mBAAmB;IAE9B,QAAQ,CAAC,YAAY,CAAC,EACpB,iBAAiB,EACjB,eAAe,EACf,YAAY,GACb,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAE5E,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;gBAElB,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,yBAAyB;IAKzD,SAAS,KAAK,SAAS,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAmB1E;IAEY,4BAA4B;;;;;IAY5B,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5C,gGAAgG;IACnF,eAAe,CAAC,EAC3B,MAAM,EACN,MAAM,EACN,QAAQ,GACT,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB9B,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;CAgBnE"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"arweave.d.ts","sourceRoot":"","sources":["../../../../src/common/token/arweave.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAKxB,qBAAa,YAAa,YAAW,UAAU;IAC7C,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC;gBAElC,EACV,UAAkC,EAClC,OAEE,EACF,
|
1
|
+
{"version":3,"file":"arweave.d.ts","sourceRoot":"","sources":["../../../../src/common/token/arweave.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAKxB,qBAAa,YAAa,YAAW,UAAU;IAC7C,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC;gBAElC,EACV,UAAkC,EAClC,OAEE,EACF,MAAmC,EACnC,KAAY,EACZ,cAIC,GACF,GAAE;QACD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,cAAc,CAAC,EAAE,mBAAmB,CAAC;KACjC;IAOO,iBAAiB,CAAC,EAC7B,aAAa,EACb,MAAM,EACN,WAAW,EACX,MAAM,GACP,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAC/B,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IA4CW,uBAAuB,CAAC,EACnC,IAAI,GACL,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDJ,QAAQ,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAqB9C;AAED,eAAO,MAAM,oBAAoB,YAAa,SAAS,CAAC,KAAK,oBAAY,CAAC;AAC1E,eAAO,MAAM,eAAe,OAAQ,SAAS,CAAC,KAAK,WACV,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ethereum.d.ts","sourceRoot":"","sources":["../../../../src/common/token/ethereum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAGxB,eAAO,MAAM,gBAAgB,QAAS,
|
1
|
+
{"version":3,"file":"ethereum.d.ts","sourceRoot":"","sources":["../../../../src/common/token/ethereum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAGxB,eAAO,MAAM,gBAAgB,QAAS,SAAS,CAAC,KAAK,oBAAQ,CAAC;AAC9D,eAAO,MAAM,gBAAgB,QAAS,SAAS,CAAC,KAAK,WACX,CAAC;AAE3C,qBAAa,aAAc,YAAW,UAAU;IAC9C,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC;IAE9C,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC;gBAElC,EACV,MAAmC,EACnC,UAA0C,EAC1C,cAIC,GACF,GAAE,WAAgB;IAQN,iBAAiB,CAAC,EAC7B,MAAM,EACN,WAAW,EACX,MAAM,GACP,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAC/B,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAeW,uBAAuB,CAAC,EACnC,IAAI,GACL,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,IAAI,CAAC;CAyBlB"}
|