@ardrive/turbo-sdk 1.26.0 → 1.27.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.
@@ -13,9 +13,9 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { ArconnectSigner, ArweaveSigner, DataItem, EthereumSigner, HexSolanaSigner, InjectedEthereumSigner, createData, } from '@dha-team/arbundles';
16
+ import { ArconnectSigner, ArweaveSigner, EthereumSigner, HexSolanaSigner, InjectedEthereumSigner, createData, deepHash, stringToBuffer, } from '@dha-team/arbundles';
17
17
  import { TurboDataItemAbstractSigner } from '../common/signer.js';
18
- import { readableStreamToBuffer } from '../utils/readableStream.js';
18
+ import { createUint8ArrayReadableStreamFactory } from '../utils/readableStream.js';
19
19
  /**
20
20
  * Utility exports to avoid clients having to install arbundles
21
21
  */
@@ -43,61 +43,21 @@ export class TurboWebArweaveSigner extends TurboDataItemAbstractSigner {
43
43
  await this.setPublicKey();
44
44
  // Create signing emitter if events are provided
45
45
  const fileSize = fileSizeFactory();
46
- try {
47
- const fileStream = fileStreamFactory();
48
- // start with 0 progress
49
- emitter?.emit('signing-progress', {
50
- processedBytes: 0,
51
- totalBytes: fileSize,
52
- });
53
- // TODO: implement streamReadableStreamSigner that incrementally signs the stream with events instead of converting to a buffer
54
- const buffer = fileStream instanceof Buffer
55
- ? fileStream
56
- : await readableStreamToBuffer({
57
- stream: fileStream,
58
- size: fileSize,
59
- });
60
- // TODO: replace this with streamSigner that uses a ReadableStream with events
61
- emitter?.emit('signing-progress', {
62
- processedBytes: Math.floor(fileSize / 2),
63
- totalBytes: fileSize,
64
- });
65
- let signedDataItem;
66
- this.logger.debug('Signing data item...');
67
- if (this.signer instanceof ArconnectSigner) {
68
- this.logger.debug('Arconnect signer detected, signing with Arconnect signData Item API...');
69
- const sign = Buffer.from(await this.signer['signer'].signDataItem({
70
- data: Uint8Array.from(buffer),
71
- tags: dataItemOpts?.tags,
72
- target: dataItemOpts?.target,
73
- anchor: dataItemOpts?.anchor,
74
- }));
75
- signedDataItem = new DataItem(sign);
76
- }
77
- else {
78
- signedDataItem = createData(Uint8Array.from(buffer), this.signer, dataItemOpts);
79
- await signedDataItem.sign(this.signer);
80
- }
81
- // emit last progress event (100%)
82
- emitter?.emit('signing-progress', {
83
- processedBytes: fileSize,
84
- totalBytes: fileSize,
85
- });
86
- // emit completion event
87
- emitter?.emit('signing-success');
88
- this.logger.debug('Successfully signed data item...');
89
- return {
90
- // while this returns a Buffer - it needs to match our return type for uploading
91
- dataItemStreamFactory: () => signedDataItem.getRaw(),
92
- dataItemSizeFactory: () => signedDataItem.getRaw().length,
93
- };
94
- }
95
- catch (error) {
96
- // If we have a signing emitter, emit error
97
- // TODO: create a SigningError class and throw that instead of the generic Error
98
- emitter?.emit('signing-error', error);
99
- throw error;
100
- }
46
+ this.logger.debug('Signing data item...');
47
+ const { signedDataItemFactory, signedDataItemSize } = await streamSignerReadableStream({
48
+ streamFactory: createUint8ArrayReadableStreamFactory({
49
+ data: fileStreamFactory(),
50
+ }),
51
+ signer: this.signer,
52
+ dataItemOpts,
53
+ fileSize,
54
+ emitter,
55
+ });
56
+ this.logger.debug('Successfully signed data item...');
57
+ return {
58
+ dataItemStreamFactory: signedDataItemFactory,
59
+ dataItemSizeFactory: () => signedDataItemSize,
60
+ };
101
61
  }
102
62
  async generateSignedRequestHeaders() {
103
63
  await this.setPublicKey();
@@ -108,3 +68,112 @@ export class TurboWebArweaveSigner extends TurboDataItemAbstractSigner {
108
68
  return super.signData(dataToSign);
109
69
  }
110
70
  }
71
+ export const readableStreamToAsyncIterable = (stream) => ({
72
+ async *[Symbol.asyncIterator]() {
73
+ const reader = stream.getReader();
74
+ try {
75
+ while (true) {
76
+ const { done, value } = await reader.read();
77
+ if (done)
78
+ break;
79
+ if (value !== undefined)
80
+ yield Buffer.from(value);
81
+ }
82
+ }
83
+ finally {
84
+ reader.releaseLock();
85
+ }
86
+ },
87
+ });
88
+ export async function streamSignerReadableStream({ streamFactory, signer, dataItemOpts, fileSize, emitter, }) {
89
+ try {
90
+ const header = createData('', signer, dataItemOpts);
91
+ const headerSize = header.getRaw().byteLength;
92
+ const totalDataItemSizeWithHeader = fileSize + headerSize;
93
+ const [stream1, stream2] = streamFactory().tee();
94
+ const reader1 = stream1.getReader();
95
+ let bytesProcessed = 0;
96
+ const eventingStream = new ReadableStream({
97
+ start() {
98
+ // technically this should be emitted after each DeepHashChunk be we cannot access that stage, so we emit it here instead
99
+ bytesProcessed = headerSize;
100
+ emitter?.emit('signing-progress', {
101
+ processedBytes: bytesProcessed,
102
+ totalBytes: totalDataItemSizeWithHeader,
103
+ });
104
+ },
105
+ async pull(controller) {
106
+ const { done, value } = await reader1.read();
107
+ if (done) {
108
+ controller.close();
109
+ return;
110
+ }
111
+ bytesProcessed += value.byteLength;
112
+ controller.enqueue(value);
113
+ emitter?.emit('signing-progress', {
114
+ processedBytes: bytesProcessed,
115
+ totalBytes: totalDataItemSizeWithHeader,
116
+ });
117
+ },
118
+ cancel() {
119
+ reader1.cancel();
120
+ },
121
+ });
122
+ // create a readable that emits signing events as bytes are pulled through using the first stream from .tee()
123
+ const asyncIterableReadableStream = readableStreamToAsyncIterable(eventingStream);
124
+ // provide that ReadableStream with events to deep hash, so as it pulls bytes through events get emitted
125
+ const parts = [
126
+ stringToBuffer('dataitem'),
127
+ stringToBuffer('1'),
128
+ stringToBuffer(header.signatureType.toString()),
129
+ Uint8Array.from(header.rawOwner),
130
+ Uint8Array.from(header.rawTarget),
131
+ Uint8Array.from(header.rawAnchor),
132
+ Uint8Array.from(header.rawTags),
133
+ asyncIterableReadableStream,
134
+ ];
135
+ const hash = await deepHash(parts);
136
+ const sigBytes = Buffer.from(await signer.sign(hash));
137
+ emitter?.emit('signing-success');
138
+ header.setSignature(sigBytes);
139
+ const headerBytes = header.getRaw();
140
+ const signedDataItemFactory = () => {
141
+ const reader = stream2.getReader();
142
+ return new ReadableStream({
143
+ start(controller) {
144
+ controller.enqueue(Uint8Array.from(headerBytes));
145
+ bytesProcessed += headerBytes.byteLength;
146
+ },
147
+ async pull(controller) {
148
+ try {
149
+ const { done, value } = await reader.read();
150
+ if (done) {
151
+ controller.close();
152
+ return;
153
+ }
154
+ controller.enqueue(value);
155
+ }
156
+ catch (error) {
157
+ controller.error(error);
158
+ }
159
+ },
160
+ cancel() {
161
+ reader.cancel();
162
+ },
163
+ });
164
+ };
165
+ return {
166
+ signedDataItemSize: totalDataItemSizeWithHeader,
167
+ signedDataItemFactory,
168
+ };
169
+ }
170
+ catch (error) {
171
+ emitter?.emit('signing-error', error);
172
+ throw error;
173
+ }
174
+ }
175
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
176
+ export function isAsyncIterable(data) {
177
+ return (typeof data[Symbol.asyncIterator] ===
178
+ 'function');
179
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/common/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAe,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,aAAa,CAAC;AAwLrB;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,aAAa,GACd,EAAE;IACD,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,aAAa,EAAE;QACb,aAAa,EACT,MAAM,4BAA4B,GAClC,MAAM,6BAA6B,GACnC,MAAM,2BAA2B,CAAC;QACtC,UAAU,EACN,MAAM,4BAA4B,GAClC,MAAM,6BAA6B,GACnC,MAAM,2BAA2B,CAAC;QACtC,QAAQ,EACJ,MAAM,4BAA4B,GAClC,MAAM,6BAA6B,GACnC,MAAM,2BAA2B,CAAC;KACvC,CAAC;CACH,GAAG;IAAE,MAAM,EAAE,QAAQ,GAAG,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAuB5D;AAED,MAAM,MAAM,uBAAuB,GAAG,4BAA4B,GAChE,6BAA6B,GAC7B,2BAA2B,CAAC;AAC9B,MAAM,MAAM,0BAA0B,GAAG,2BAA2B,GAClE,4BAA4B,GAC5B,0BAA0B,CAAC;AAE7B,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,uBAAuB,CAAC;gBAC9D,EACV,UAAU,EACV,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GACjB,GAAE,0BAA+B;CA2DnC;AAED,wBAAgB,4BAA4B,CAAC,EAC3C,IAAI,EACJ,QAAQ,EACR,OAAiC,GAClC,EAAE;IACD,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,GAAG;IAAE,MAAM,EAAE,QAAQ,GAAG,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAW5D;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,IAAI,EACJ,QAAQ,EACR,OAAiC,GAClC,EAAE;IACD,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,GAAG;IAAE,MAAM,EAAE,QAAQ,GAAG,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAW5D"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/common/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAe,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,aAAa,CAAC;AA4LrB;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,aAAa,GACd,EAAE;IACD,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,aAAa,EAAE;QACb,aAAa,EACT,MAAM,4BAA4B,GAClC,MAAM,6BAA6B,GACnC,MAAM,2BAA2B,CAAC;QACtC,UAAU,EACN,MAAM,4BAA4B,GAClC,MAAM,6BAA6B,GACnC,MAAM,2BAA2B,CAAC;QACtC,QAAQ,EACJ,MAAM,4BAA4B,GAClC,MAAM,6BAA6B,GACnC,MAAM,2BAA2B,CAAC;KACvC,CAAC;CACH,GAAG;IAAE,MAAM,EAAE,QAAQ,GAAG,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAuB5D;AAED,MAAM,MAAM,uBAAuB,GAAG,4BAA4B,GAChE,6BAA6B,GAC7B,2BAA2B,CAAC;AAC9B,MAAM,MAAM,0BAA0B,GAAG,2BAA2B,GAClE,4BAA4B,GAC5B,0BAA0B,CAAC;AAE7B,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,uBAAuB,CAAC;gBAC9D,EACV,UAAU,EACV,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GACjB,GAAE,0BAA+B;CA2DnC;AAED,wBAAgB,4BAA4B,CAAC,EAC3C,IAAI,EACJ,QAAQ,EACR,OAAiC,GAClC,EAAE;IACD,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,GAAG;IAAE,MAAM,EAAE,QAAQ,GAAG,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAW5D;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,IAAI,EACJ,QAAQ,EACR,OAAiC,GAClC,EAAE;IACD,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,GAAG;IAAE,MAAM,EAAE,QAAQ,GAAG,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAW5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/common/factory.ts"],"names":[],"mappings":"AAsBA,OAAO,EACL,oBAAoB,EAEpB,+BAA+B,EAC/B,4CAA4C,EAC5C,wCAAwC,EACxC,iCAAiC,EAIlC,MAAM,aAAa,CAAC;AACrB,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,8BAAsB,gBAAgB;IACpC,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,EACxB,KAAK,GACN,GAAE,iCAAsC;IAqBzC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC3B,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,MAAM,EACN,KAAK,GACN,EAAE,oBAAoB,GAAG,2BAA2B;IAErD,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAC9C,MAAM,EAAE,4CAA4C,GACnD,wCAAwC;IAE3C,SAAS,CAAC,qBAAqB,CAAC,EAC9B,UAAU,EACV,MAAM,EAAE,cAAc,EACtB,oBAAyB,EACzB,mBAAwB,EACxB,KAAK,EACL,UAAU,EACV,QAAQ,EACR,UAAU,EACV,MAAM,EACN,aAAa,EACb,SAAS,EACT,KAAK,GACN,EAAE,+BAA+B,GAAG;QAAE,MAAM,EAAE,kBAAkB,CAAA;KAAE;IA+DnE,OAAO,CAAC,iBAAiB;CAuB1B"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/common/factory.ts"],"names":[],"mappings":"AAqBA,OAAO,EACL,oBAAoB,EAEpB,+BAA+B,EAC/B,4CAA4C,EAC5C,wCAAwC,EACxC,iCAAiC,EAIlC,MAAM,aAAa,CAAC;AACrB,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,8BAAsB,gBAAgB;IACpC,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,EACxB,KAAK,GACN,GAAE,iCAAsC;IAqBzC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC3B,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,MAAM,EACN,KAAK,GACN,EAAE,oBAAoB,GAAG,2BAA2B;IAErD,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAC9C,MAAM,EAAE,4CAA4C,GACnD,wCAAwC;IAE3C,SAAS,CAAC,qBAAqB,CAAC,EAC9B,UAAU,EACV,MAAM,EAAE,cAAc,EACtB,oBAAyB,EACzB,mBAAwB,EACxB,KAAK,EACL,UAAU,EACV,QAAQ,EACR,UAAU,EACV,MAAM,EACN,aAAa,EACb,SAAS,EACT,KAAK,GACN,EAAE,+BAA+B,GAAG;QAAE,MAAM,EAAE,kBAAkB,CAAA;KAAE;IA4EnE,OAAO,CAAC,iBAAiB;CAuB1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/common/upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/common/upload.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,14 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ export declare const DEFAULT_STREAM_CHUNK_SIZE: number;
16
17
  export declare function readableStreamToBuffer({ stream, size, }: {
17
18
  stream: ReadableStream;
18
19
  size: number;
19
20
  }): Promise<Buffer>;
21
+ export declare function ensureChunkedStream(input: ReadableStream<Uint8Array>, maxChunkSize?: number): ReadableStream<Uint8Array>;
22
+ export declare function createUint8ArrayReadableStreamFactory({ data, maxChunkSize, }: {
23
+ data: string | Uint8Array | ArrayBuffer | Buffer | SharedArrayBuffer | Blob | ReadableStream;
24
+ maxChunkSize?: number;
25
+ }): () => ReadableStream<Uint8Array>;
20
26
  //# sourceMappingURL=readableStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"readableStream.d.ts","sourceRoot":"","sources":["../../../src/utils/readableStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,sBAAsB,CAAC,EAC3C,MAAM,EACN,IAAI,GACL,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,MAAM,CAAC,CAelB"}
1
+ {"version":3,"file":"readableStream.d.ts","sourceRoot":"","sources":["../../../src/utils/readableStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,yBAAyB,QAAmB,CAAC;AAE1D,wBAAsB,sBAAsB,CAAC,EAC3C,MAAM,EACN,IAAI,GACL,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,MAAM,CAAC,CAelB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,EACjC,YAAY,SAA4B,GACvC,cAAc,CAAC,UAAU,CAAC,CAoC5B;AAED,wBAAgB,qCAAqC,CAAC,EACpD,IAAI,EACJ,YAAwC,GACzC,EAAE;IACD,IAAI,EACA,MAAM,GACN,UAAU,GACV,WAAW,GACX,MAAM,GACN,iBAAiB,GACjB,IAAI,GACJ,cAAc,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CA6DnC"}
@@ -13,5 +13,5 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- export declare const version = "1.26.0-alpha.1";
16
+ export declare const version = "1.27.0-alpha.1";
17
17
  //# sourceMappingURL=version.d.ts.map
@@ -18,4 +18,5 @@ export * from './upload.js';
18
18
  export * from './signer.js';
19
19
  export * from '../common/index.js';
20
20
  export * from '../types.js';
21
+ export * from '../common/events.js';
21
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/web/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/web/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC"}
@@ -13,9 +13,10 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { ArconnectSigner, ArweaveSigner, EthereumSigner, HexSolanaSigner } from '@dha-team/arbundles';
16
+ import { ArconnectSigner, ArweaveSigner, DataItemCreateOptions, EthereumSigner, HexSolanaSigner, Signer } from '@dha-team/arbundles';
17
+ import { TurboEventEmitter } from '../common/events.js';
17
18
  import { TurboDataItemAbstractSigner } from '../common/signer.js';
18
- import { StreamSizeFactory, TurboDataItemSignerParams, TurboSignedRequestHeaders, WebTurboFileFactory } from '../types.js';
19
+ import { TurboDataItemSignerParams, TurboSignedDataItemFactory, TurboSignedRequestHeaders, WebTurboFileFactory } from '../types.js';
19
20
  /**
20
21
  * Utility exports to avoid clients having to install arbundles
21
22
  */
@@ -27,11 +28,20 @@ export declare class TurboWebArweaveSigner extends TurboDataItemAbstractSigner {
27
28
  constructor(p: TurboDataItemSignerParams);
28
29
  private setPublicKey;
29
30
  getPublicKey(): Promise<Buffer>;
30
- signDataItem({ fileStreamFactory, fileSizeFactory, dataItemOpts, emitter, }: WebTurboFileFactory): Promise<{
31
- dataItemStreamFactory: () => Buffer;
32
- dataItemSizeFactory: StreamSizeFactory;
33
- }>;
31
+ signDataItem({ fileStreamFactory, fileSizeFactory, dataItemOpts, emitter, }: WebTurboFileFactory): Promise<TurboSignedDataItemFactory>;
34
32
  generateSignedRequestHeaders(): Promise<TurboSignedRequestHeaders>;
35
33
  signData(dataToSign: Uint8Array): Promise<Uint8Array>;
36
34
  }
35
+ export declare const readableStreamToAsyncIterable: (stream: ReadableStream<Uint8Array>) => AsyncIterable<Buffer>;
36
+ export declare function streamSignerReadableStream({ streamFactory, signer, dataItemOpts, fileSize, emitter, }: {
37
+ streamFactory: () => ReadableStream<Uint8Array>;
38
+ signer: Signer;
39
+ dataItemOpts?: DataItemCreateOptions;
40
+ fileSize: number;
41
+ emitter?: TurboEventEmitter;
42
+ }): Promise<{
43
+ signedDataItemFactory: () => ReadableStream<Uint8Array>;
44
+ signedDataItemSize: number;
45
+ }>;
46
+ export declare function isAsyncIterable(data: any): data is AsyncIterable<Uint8Array>;
37
47
  //# sourceMappingURL=signer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/web/signer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,eAAe,EACf,aAAa,EAEb,cAAc,EACd,eAAe,EAGhB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAGrB;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAE3E;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,2BAA2B;gBACxD,CAAC,EAAE,yBAAyB;YAI1B,YAAY;IAWb,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAK/B,YAAY,CAAC,EACxB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,OAAO,GACR,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAE/B,qBAAqB,EAAE,MAAM,MAAM,CAAC;QACpC,mBAAmB,EAAE,iBAAiB,CAAC;KACxC,CAAC;IA6EW,4BAA4B,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAKlE,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;CAInE"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/web/signer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,eAAe,EAEf,MAAM,EAIP,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAGrB;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAK3E;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,2BAA2B;gBACxD,CAAC,EAAE,yBAAyB;YAI1B,YAAY;IAWb,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAK/B,YAAY,CAAC,EACxB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,OAAO,GACR,EAAE,mBAAmB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAyB/C,4BAA4B,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAKlE,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;CAInE;AAED,eAAO,MAAM,6BAA6B,WAChC,cAAc,CAAC,UAAU,CAAC,KACjC,aAAa,CAAC,MAAM,CAarB,CAAC;AAEH,wBAAsB,0BAA0B,CAAC,EAC/C,aAAa,EACb,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,OAAO,GACR,EAAE;IACD,aAAa,EAAE,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,GAAG,OAAO,CAAC;IACV,qBAAqB,EAAE,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;IACxD,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC,CAgGD;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,aAAa,CAAC,UAAU,CAAC,CAK5E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ardrive/turbo-sdk",
3
- "version": "1.26.0",
3
+ "version": "1.27.0-alpha.2",
4
4
  "main": "./lib/cjs/node/index.js",
5
5
  "types": "./lib/types/node/index.d.ts",
6
6
  "module": "./lib/esm/node/index.js",
@@ -58,7 +58,7 @@
58
58
  "lint:fix": "eslint src --fix",
59
59
  "format": "prettier --check .",
60
60
  "format:fix": "prettier --write .",
61
- "test": "yarn test:unit && yarn test:web && yarn test:node",
61
+ "test": "c8 node --import=./register.mjs --test --enable-source-maps \"{src,tests}/**/*.{test,web.test,node.test}.ts\"",
62
62
  "test:unit": "c8 node --import=./register.mjs --test --enable-source-maps src/**/*.test.ts",
63
63
  "test:web": "c8 node --import=./register.mjs --test --enable-source-maps tests/**/*.web.test.ts",
64
64
  "test:node": "c8 node --import=./register.mjs --test --enable-source-maps tests/**/*.node.test.ts",