@lumeweb/pinner 0.1.0 → 0.1.1
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 +35 -18
- package/dist/cjs/adapters/pinata/index.cjs +6 -3
- package/dist/cjs/adapters/pinata/legacy/adapter.cjs +83 -0
- package/dist/cjs/adapters/pinata/legacy/adapter.cjs.map +1 -0
- package/dist/cjs/adapters/pinata/legacy/adapter.d.cts +74 -0
- package/dist/cjs/adapters/pinata/legacy/index.cjs +1 -0
- package/dist/cjs/adapters/pinata/shared/index.cjs +1 -0
- package/dist/cjs/adapters/pinata/shared/types.d.cts +218 -0
- package/dist/cjs/adapters/pinata/shared/utils.cjs +83 -0
- package/dist/cjs/adapters/pinata/shared/utils.cjs.map +1 -0
- package/dist/cjs/adapters/pinata/v2/adapter-interface.d.cts +198 -0
- package/dist/cjs/adapters/pinata/v2/adapter.cjs +636 -0
- package/dist/cjs/adapters/pinata/v2/adapter.cjs.map +1 -0
- package/dist/cjs/adapters/pinata/v2/adapter.d.cts +17 -0
- package/dist/cjs/adapters/pinata/v2/index.cjs +1 -0
- package/dist/cjs/adapters/pinata/v2/types.d.cts +308 -0
- package/dist/cjs/index.cjs +3 -1
- package/dist/cjs/index.d.cts +5 -3
- package/dist/cjs/pin/client.cjs +5 -3
- package/dist/cjs/pin/client.cjs.map +1 -1
- package/dist/cjs/pinner.cjs +6 -0
- package/dist/cjs/pinner.cjs.map +1 -1
- package/dist/cjs/pinner.d.cts +4 -0
- package/dist/cjs/types/constants.cjs +6 -1
- package/dist/cjs/types/constants.cjs.map +1 -1
- package/dist/cjs/types/pin.d.cts +4 -0
- package/dist/esm/adapters/pinata/index.d.ts +7 -4
- package/dist/esm/adapters/pinata/index.js +6 -3
- package/dist/esm/adapters/pinata/legacy/adapter.d.ts +74 -0
- package/dist/esm/adapters/pinata/legacy/adapter.js +83 -0
- package/dist/esm/adapters/pinata/legacy/adapter.js.map +1 -0
- package/dist/esm/adapters/pinata/legacy/index.d.ts +1 -0
- package/dist/esm/adapters/pinata/legacy/index.js +1 -0
- package/dist/esm/adapters/pinata/shared/index.d.ts +2 -0
- package/dist/esm/adapters/pinata/shared/index.js +1 -0
- package/dist/esm/adapters/pinata/shared/types.d.ts +218 -0
- package/dist/esm/adapters/pinata/shared/utils.d.ts +1 -0
- package/dist/esm/adapters/pinata/shared/utils.js +78 -0
- package/dist/esm/adapters/pinata/shared/utils.js.map +1 -0
- package/dist/esm/adapters/pinata/v2/adapter-interface.d.ts +198 -0
- package/dist/esm/adapters/pinata/v2/adapter.d.ts +17 -0
- package/dist/esm/adapters/pinata/v2/adapter.js +636 -0
- package/dist/esm/adapters/pinata/v2/adapter.js.map +1 -0
- package/dist/esm/adapters/pinata/v2/index.d.ts +3 -0
- package/dist/esm/adapters/pinata/v2/index.js +1 -0
- package/dist/esm/adapters/pinata/v2/types.d.ts +308 -0
- package/dist/esm/index.d.ts +5 -3
- package/dist/esm/index.js +3 -2
- package/dist/esm/pin/client.js +5 -3
- package/dist/esm/pin/client.js.map +1 -1
- package/dist/esm/pinner.d.ts +4 -0
- package/dist/esm/pinner.js +6 -0
- package/dist/esm/pinner.js.map +1 -1
- package/dist/esm/types/constants.js +6 -2
- package/dist/esm/types/constants.js.map +1 -1
- package/dist/esm/types/pin.d.ts +4 -0
- package/package.json +3 -3
- package/dist/cjs/adapters/pinata/adapter.cjs +0 -88
- package/dist/cjs/adapters/pinata/adapter.cjs.map +0 -1
- package/dist/cjs/adapters/pinata/adapter.d.cts +0 -35
- package/dist/cjs/adapters/pinata/builder.cjs +0 -194
- package/dist/cjs/adapters/pinata/builder.cjs.map +0 -1
- package/dist/cjs/adapters/pinata/list-builder.cjs +0 -52
- package/dist/cjs/adapters/pinata/list-builder.cjs.map +0 -1
- package/dist/cjs/types/pinata.d.cts +0 -99
- package/dist/esm/adapters/pinata/adapter.d.ts +0 -35
- package/dist/esm/adapters/pinata/adapter.js +0 -87
- package/dist/esm/adapters/pinata/adapter.js.map +0 -1
- package/dist/esm/adapters/pinata/builder.d.ts +0 -1
- package/dist/esm/adapters/pinata/builder.js +0 -187
- package/dist/esm/adapters/pinata/builder.js.map +0 -1
- package/dist/esm/adapters/pinata/list-builder.d.ts +0 -1
- package/dist/esm/adapters/pinata/list-builder.js +0 -51
- package/dist/esm/adapters/pinata/list-builder.js.map +0 -1
- package/dist/esm/types/pinata.d.ts +0 -99
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import { jsonToFile } from "../../encoder/json.js";
|
|
2
|
-
import { base64ToFile } from "../../encoder/base64.js";
|
|
3
|
-
import { urlToFile } from "../../encoder/url.js";
|
|
4
|
-
import "../../encoder/index.js";
|
|
5
|
-
import { validateUrl } from "../../utils/validation.js";
|
|
6
|
-
import { CID } from "multiformats/cid";
|
|
7
|
-
|
|
8
|
-
//#region src/adapters/pinata/builder.ts
|
|
9
|
-
/**
|
|
10
|
-
* Error wrapper for Pinata adapter operations.
|
|
11
|
-
*/
|
|
12
|
-
var PinataAdapterError = class extends Error {
|
|
13
|
-
code;
|
|
14
|
-
cause;
|
|
15
|
-
constructor(message, code, cause) {
|
|
16
|
-
super(message);
|
|
17
|
-
this.name = "PinataAdapterError";
|
|
18
|
-
this.code = code;
|
|
19
|
-
this.cause = cause;
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Base upload builder with common name/keyvalues functionality.
|
|
24
|
-
*/
|
|
25
|
-
var BaseUploadBuilder = class {
|
|
26
|
-
_name;
|
|
27
|
-
_keyvalues;
|
|
28
|
-
constructor(pinner) {
|
|
29
|
-
this.pinner = pinner;
|
|
30
|
-
}
|
|
31
|
-
name(name) {
|
|
32
|
-
this._name = name;
|
|
33
|
-
return this;
|
|
34
|
-
}
|
|
35
|
-
keyvalues(kv) {
|
|
36
|
-
this._keyvalues = kv;
|
|
37
|
-
return this;
|
|
38
|
-
}
|
|
39
|
-
toUploadResult(result) {
|
|
40
|
-
return {
|
|
41
|
-
IpfsHash: result.cid,
|
|
42
|
-
PinSize: result.size,
|
|
43
|
-
Timestamp: result.createdAt.toISOString(),
|
|
44
|
-
isDuplicate: false
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* File upload builder.
|
|
50
|
-
*/
|
|
51
|
-
var FileUploadBuilder = class extends BaseUploadBuilder {
|
|
52
|
-
constructor(pinner, file) {
|
|
53
|
-
super(pinner);
|
|
54
|
-
this.file = file;
|
|
55
|
-
}
|
|
56
|
-
async execute() {
|
|
57
|
-
const result = await this.pinner.uploadAndWait(this.file, {
|
|
58
|
-
name: this._name,
|
|
59
|
-
keyvalues: this._keyvalues
|
|
60
|
-
});
|
|
61
|
-
return this.toUploadResult(result);
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
/**
|
|
65
|
-
* File array upload builder.
|
|
66
|
-
*/
|
|
67
|
-
var FileArrayUploadBuilder = class extends BaseUploadBuilder {
|
|
68
|
-
constructor(pinner, files) {
|
|
69
|
-
super(pinner);
|
|
70
|
-
this.files = files;
|
|
71
|
-
if (files.length === 0) throw new PinataAdapterError("Cannot upload empty file array", "EMPTY_FILE_ARRAY");
|
|
72
|
-
}
|
|
73
|
-
async execute() {
|
|
74
|
-
try {
|
|
75
|
-
const result = await (await this.pinner.uploadDirectory(this.files, {
|
|
76
|
-
name: this._name,
|
|
77
|
-
keyvalues: this._keyvalues
|
|
78
|
-
})).result;
|
|
79
|
-
return this.toUploadResult(result);
|
|
80
|
-
} catch (error) {
|
|
81
|
-
if (error instanceof Error) throw new PinataAdapterError(`File array upload failed: ${error.message}`, "UPLOAD_FAILED", error);
|
|
82
|
-
throw error;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
/**
|
|
87
|
-
* Encoded upload builder - handles JSON, Base64, and URL uploads using encoders.
|
|
88
|
-
*/
|
|
89
|
-
var EncodedUploadBuilder = class extends BaseUploadBuilder {
|
|
90
|
-
constructor(pinner, encoderFn) {
|
|
91
|
-
super(pinner);
|
|
92
|
-
this.encoderFn = encoderFn;
|
|
93
|
-
}
|
|
94
|
-
async execute() {
|
|
95
|
-
try {
|
|
96
|
-
const encoded = await this.encoderFn(this._name, this._keyvalues);
|
|
97
|
-
const result = await this.pinner.uploadAndWait(encoded.file, encoded.options);
|
|
98
|
-
return this.toUploadResult(result);
|
|
99
|
-
} catch (error) {
|
|
100
|
-
if (error instanceof Error) throw new PinataAdapterError(`Upload failed: ${error.message}`, "UPLOAD_FAILED", error);
|
|
101
|
-
throw error;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
/**
|
|
106
|
-
* CID upload builder (pin by CID).
|
|
107
|
-
*/
|
|
108
|
-
var CidUploadBuilder = class {
|
|
109
|
-
_name;
|
|
110
|
-
_keyvalues;
|
|
111
|
-
constructor(pinner, cidString) {
|
|
112
|
-
this.pinner = pinner;
|
|
113
|
-
this.cidString = cidString;
|
|
114
|
-
}
|
|
115
|
-
name(name) {
|
|
116
|
-
this._name = name;
|
|
117
|
-
return this;
|
|
118
|
-
}
|
|
119
|
-
keyvalues(kv) {
|
|
120
|
-
this._keyvalues = kv;
|
|
121
|
-
return this;
|
|
122
|
-
}
|
|
123
|
-
async execute() {
|
|
124
|
-
try {
|
|
125
|
-
const cid = CID.parse(this.cidString);
|
|
126
|
-
const generator = await this.pinner.pinByHash(cid, {
|
|
127
|
-
name: this._name,
|
|
128
|
-
metadata: this._keyvalues
|
|
129
|
-
});
|
|
130
|
-
for await (const _ of generator);
|
|
131
|
-
} catch (error) {
|
|
132
|
-
if (error instanceof Error) throw new PinataAdapterError(`CID upload failed: ${error.message}`, "INVALID_CID", error);
|
|
133
|
-
throw error;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
/**
|
|
138
|
-
* Create a file upload builder.
|
|
139
|
-
*/
|
|
140
|
-
function createUploadBuilder(pinner, file) {
|
|
141
|
-
return new FileUploadBuilder(pinner, file);
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Create a file array upload builder.
|
|
145
|
-
*/
|
|
146
|
-
function createFileArrayUploadBuilder(pinner, files) {
|
|
147
|
-
return new FileArrayUploadBuilder(pinner, files);
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Create a JSON upload builder.
|
|
151
|
-
*/
|
|
152
|
-
function createJsonUploadBuilder(pinner, data) {
|
|
153
|
-
return new EncodedUploadBuilder(pinner, (name, keyvalues) => jsonToFile(data, {
|
|
154
|
-
name,
|
|
155
|
-
keyvalues
|
|
156
|
-
}));
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Create a base64 upload builder.
|
|
160
|
-
*/
|
|
161
|
-
function createBase64UploadBuilder(pinner, base64String) {
|
|
162
|
-
return new EncodedUploadBuilder(pinner, (name, keyvalues) => base64ToFile(base64String, {
|
|
163
|
-
name,
|
|
164
|
-
keyvalues
|
|
165
|
-
}));
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Create a URL upload builder.
|
|
169
|
-
*/
|
|
170
|
-
function createUrlUploadBuilder(pinner, urlString, options) {
|
|
171
|
-
validateUrl(urlString);
|
|
172
|
-
return new EncodedUploadBuilder(pinner, (name, keyvalues) => urlToFile(urlString, {
|
|
173
|
-
name,
|
|
174
|
-
keyvalues,
|
|
175
|
-
fetch: options?.fetch
|
|
176
|
-
}));
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Create a CID upload builder.
|
|
180
|
-
*/
|
|
181
|
-
function createCidUploadBuilder(pinner, cidString) {
|
|
182
|
-
return new CidUploadBuilder(pinner, cidString);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
//#endregion
|
|
186
|
-
export { PinataAdapterError, createBase64UploadBuilder, createCidUploadBuilder, createFileArrayUploadBuilder, createJsonUploadBuilder, createUploadBuilder, createUrlUploadBuilder };
|
|
187
|
-
//# sourceMappingURL=builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","names":[],"sources":["../../../../src/adapters/pinata/builder.ts"],"sourcesContent":["import type { Pinner } from \"@/pinner\";\nimport type {\n PinataUploadBuilder,\n PinataUploadResult,\n UrlUploadBuilderOptions,\n} from \"@/types/pinata\";\nimport type { UploadOptions } from \"@/encoder/types\";\nimport { CID } from \"multiformats/cid\";\nimport { base64ToFile, jsonToFile, urlToFile } from \"@/encoder\";\nimport { validateUrl } from \"@/utils/validation\";\n\n/**\n * Error wrapper for Pinata adapter operations.\n */\nexport class PinataAdapterError extends Error {\n code: \"UPLOAD_FAILED\" | \"EMPTY_FILE_ARRAY\" | \"INVALID_CID\";\n cause?: Error;\n\n constructor(\n message: string,\n code: PinataAdapterError[\"code\"],\n cause?: Error,\n ) {\n super(message);\n this.name = \"PinataAdapterError\";\n this.code = code;\n this.cause = cause;\n }\n}\n\n/**\n * Base upload builder with common name/keyvalues functionality.\n */\nabstract class BaseUploadBuilder<\n TResult,\n> implements PinataUploadBuilder<TResult> {\n protected _name?: string;\n protected _keyvalues?: Record<string, string>;\n\n constructor(protected pinner: Pinner) {}\n\n name(name: string): this {\n this._name = name;\n return this;\n }\n\n keyvalues(kv: Record<string, string>): this {\n this._keyvalues = kv;\n return this;\n }\n\n abstract execute(): Promise<TResult>;\n\n protected toUploadResult(result: {\n cid: string;\n size: number;\n createdAt: Date;\n }): PinataUploadResult {\n return {\n IpfsHash: result.cid,\n PinSize: result.size,\n Timestamp: result.createdAt.toISOString(),\n isDuplicate: false,\n };\n }\n}\n\n/**\n * File upload builder.\n */\nclass FileUploadBuilder extends BaseUploadBuilder<PinataUploadResult> {\n constructor(\n pinner: Pinner,\n private file: File,\n ) {\n super(pinner);\n }\n\n async execute(): Promise<PinataUploadResult> {\n const result = await this.pinner.uploadAndWait(this.file, {\n name: this._name,\n keyvalues: this._keyvalues,\n });\n return this.toUploadResult(result);\n }\n}\n\n/**\n * File array upload builder.\n */\nclass FileArrayUploadBuilder extends BaseUploadBuilder<PinataUploadResult> {\n constructor(\n pinner: Pinner,\n private files: File[],\n ) {\n super(pinner);\n if (files.length === 0) {\n throw new PinataAdapterError(\n \"Cannot upload empty file array\",\n \"EMPTY_FILE_ARRAY\",\n );\n }\n }\n\n async execute(): Promise<PinataUploadResult> {\n try {\n const operation = await this.pinner.uploadDirectory(this.files, {\n name: this._name,\n keyvalues: this._keyvalues,\n });\n const result = await operation.result;\n return this.toUploadResult(result);\n } catch (error) {\n if (error instanceof Error) {\n throw new PinataAdapterError(\n `File array upload failed: ${error.message}`,\n \"UPLOAD_FAILED\",\n error,\n );\n }\n throw error;\n }\n }\n}\n\n/**\n * Encoded upload builder - handles JSON, Base64, and URL uploads using encoders.\n */\nclass EncodedUploadBuilder extends BaseUploadBuilder<PinataUploadResult> {\n constructor(\n pinner: Pinner,\n private encoderFn: (\n name?: string,\n keyvalues?: Record<string, string>,\n ) => Promise<{ file: File; options: UploadOptions }>,\n ) {\n super(pinner);\n }\n\n async execute(): Promise<PinataUploadResult> {\n try {\n const encoded = await this.encoderFn(this._name, this._keyvalues);\n const result = await this.pinner.uploadAndWait(\n encoded.file,\n encoded.options,\n );\n return this.toUploadResult(result);\n } catch (error) {\n if (error instanceof Error) {\n throw new PinataAdapterError(\n `Upload failed: ${error.message}`,\n \"UPLOAD_FAILED\",\n error,\n );\n }\n throw error;\n }\n }\n}\n\n/**\n * CID upload builder (pin by CID).\n */\nclass CidUploadBuilder implements PinataUploadBuilder<void> {\n private _name?: string;\n private _keyvalues?: Record<string, string>;\n\n constructor(\n private pinner: Pinner,\n private cidString: string,\n ) {}\n\n name(name: string): this {\n this._name = name;\n return this;\n }\n\n keyvalues(kv: Record<string, string>): this {\n this._keyvalues = kv;\n return this;\n }\n\n async execute(): Promise<void> {\n try {\n const cid = CID.parse(this.cidString);\n const generator = await this.pinner.pinByHash(cid, {\n name: this._name,\n metadata: this._keyvalues,\n });\n for await (const _ of generator) {\n // Pin operation in progress\n }\n } catch (error) {\n if (error instanceof Error) {\n throw new PinataAdapterError(\n `CID upload failed: ${error.message}`,\n \"INVALID_CID\",\n error,\n );\n }\n throw error;\n }\n }\n}\n\n/**\n * Create a file upload builder.\n */\nexport function createUploadBuilder(\n pinner: Pinner,\n file: File,\n): PinataUploadBuilder<PinataUploadResult> {\n return new FileUploadBuilder(pinner, file);\n}\n\n/**\n * Create a file array upload builder.\n */\nexport function createFileArrayUploadBuilder(\n pinner: Pinner,\n files: File[],\n): PinataUploadBuilder<PinataUploadResult> {\n return new FileArrayUploadBuilder(pinner, files);\n}\n\n/**\n * Create a JSON upload builder.\n */\nexport function createJsonUploadBuilder(\n pinner: Pinner,\n data: object,\n): PinataUploadBuilder<PinataUploadResult> {\n return new EncodedUploadBuilder(pinner, (name, keyvalues) =>\n jsonToFile(data, { name, keyvalues }),\n );\n}\n\n/**\n * Create a base64 upload builder.\n */\nexport function createBase64UploadBuilder(\n pinner: Pinner,\n base64String: string,\n): PinataUploadBuilder<PinataUploadResult> {\n return new EncodedUploadBuilder(pinner, (name, keyvalues) =>\n base64ToFile(base64String, { name, keyvalues }),\n );\n}\n\n/**\n * Create a URL upload builder.\n */\nexport function createUrlUploadBuilder(\n pinner: Pinner,\n urlString: string,\n options?: UrlUploadBuilderOptions,\n): PinataUploadBuilder<PinataUploadResult> {\n // Validate URL to prevent SSRF attacks\n validateUrl(urlString);\n\n return new EncodedUploadBuilder(pinner, (name, keyvalues) =>\n urlToFile(urlString, { name, keyvalues, fetch: options?.fetch }),\n );\n}\n\n/**\n * Create a CID upload builder.\n */\nexport function createCidUploadBuilder(\n pinner: Pinner,\n cidString: string,\n): PinataUploadBuilder<void> {\n return new CidUploadBuilder(pinner, cidString);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "../../pinner.js";
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
//#region src/adapters/pinata/list-builder.ts
|
|
2
|
-
/**
|
|
3
|
-
* List builder for listing pins.
|
|
4
|
-
*
|
|
5
|
-
* Note: .pageToken() provides Pinata SDK API compatibility for easier migration.
|
|
6
|
-
* The token is passed through to the underlying IPFS Pinning Service cursor parameter.
|
|
7
|
-
* The server handles the actual pagination logic according to the IPFS Pinning Service spec.
|
|
8
|
-
*/
|
|
9
|
-
var PinataListBuilderImpl = class {
|
|
10
|
-
_limit;
|
|
11
|
-
_pageToken;
|
|
12
|
-
_offset;
|
|
13
|
-
constructor(pinner) {
|
|
14
|
-
this.pinner = pinner;
|
|
15
|
-
}
|
|
16
|
-
limit(limit) {
|
|
17
|
-
this._limit = limit;
|
|
18
|
-
return this;
|
|
19
|
-
}
|
|
20
|
-
offset(offset) {
|
|
21
|
-
this._offset = offset;
|
|
22
|
-
return this;
|
|
23
|
-
}
|
|
24
|
-
pageToken(pageToken) {
|
|
25
|
-
this._pageToken = pageToken;
|
|
26
|
-
return this;
|
|
27
|
-
}
|
|
28
|
-
async execute() {
|
|
29
|
-
const options = {};
|
|
30
|
-
if (this._limit !== void 0) options.limit = this._limit;
|
|
31
|
-
if (this._pageToken !== void 0) options.cursor = this._pageToken;
|
|
32
|
-
return (await this.pinner.listPins(options)).map((pin) => ({
|
|
33
|
-
id: pin.cid.toString(),
|
|
34
|
-
ipfsPinHash: pin.cid.toString(),
|
|
35
|
-
size: pin.size || 0,
|
|
36
|
-
name: pin.name || "",
|
|
37
|
-
cid: pin.cid.toString(),
|
|
38
|
-
createdAt: pin.created.toISOString()
|
|
39
|
-
}));
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* Create a list builder.
|
|
44
|
-
*/
|
|
45
|
-
function createListBuilder(pinner) {
|
|
46
|
-
return new PinataListBuilderImpl(pinner);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
//#endregion
|
|
50
|
-
export { createListBuilder };
|
|
51
|
-
//# sourceMappingURL=list-builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-builder.js","names":[],"sources":["../../../../src/adapters/pinata/list-builder.ts"],"sourcesContent":["import type { Pinner } from \"@/pinner\";\nimport type { PinataFile, PinataListBuilder } from \"@/types/pinata\";\nimport type { RemoteLsOptions } from \"@/types/pin\";\n\n/**\n * List builder for listing pins.\n *\n * Note: .pageToken() provides Pinata SDK API compatibility for easier migration.\n * The token is passed through to the underlying IPFS Pinning Service cursor parameter.\n * The server handles the actual pagination logic according to the IPFS Pinning Service spec.\n */\nclass PinataListBuilderImpl implements PinataListBuilder<PinataFile[]> {\n private _limit?: number;\n private _pageToken?: string;\n private _offset?: number;\n\n constructor(private pinner: Pinner) {}\n\n limit(limit: number): this {\n this._limit = limit;\n return this;\n }\n\n offset(offset: number): this {\n this._offset = offset;\n return this;\n }\n\n pageToken(pageToken: string): this {\n this._pageToken = pageToken;\n return this;\n }\n\n async execute(): Promise<PinataFile[]> {\n const options: RemoteLsOptions = {};\n\n if (this._limit !== undefined) {\n options.limit = this._limit;\n }\n\n if (this._pageToken !== undefined) {\n options.cursor = this._pageToken;\n }\n\n const remotePins = await this.pinner.listPins(options);\n\n return remotePins.map((pin) => ({\n id: pin.cid.toString(),\n ipfsPinHash: pin.cid.toString(),\n size: pin.size || 0,\n name: pin.name || \"\",\n cid: pin.cid.toString(),\n createdAt: pin.created.toISOString(),\n }));\n }\n}\n\n/**\n * Create a list builder.\n */\nexport function createListBuilder(\n pinner: Pinner,\n): PinataListBuilder<PinataFile[]> {\n return new PinataListBuilderImpl(pinner);\n}\n"],"mappings":";;;;;;;;AAWA,IAAM,wBAAN,MAAuE;CACrE,AAAQ;CACR,AAAQ;CACR,AAAQ;CAER,YAAY,AAAQ,QAAgB;EAAhB;;CAEpB,MAAM,OAAqB;AACzB,OAAK,SAAS;AACd,SAAO;;CAGT,OAAO,QAAsB;AAC3B,OAAK,UAAU;AACf,SAAO;;CAGT,UAAU,WAAyB;AACjC,OAAK,aAAa;AAClB,SAAO;;CAGT,MAAM,UAAiC;EACrC,MAAM,UAA2B,EAAE;AAEnC,MAAI,KAAK,WAAW,OAClB,SAAQ,QAAQ,KAAK;AAGvB,MAAI,KAAK,eAAe,OACtB,SAAQ,SAAS,KAAK;AAKxB,UAFmB,MAAM,KAAK,OAAO,SAAS,QAAQ,EAEpC,KAAK,SAAS;GAC9B,IAAI,IAAI,IAAI,UAAU;GACtB,aAAa,IAAI,IAAI,UAAU;GAC/B,MAAM,IAAI,QAAQ;GAClB,MAAM,IAAI,QAAQ;GAClB,KAAK,IAAI,IAAI,UAAU;GACvB,WAAW,IAAI,QAAQ,aAAa;GACrC,EAAE;;;;;;AAOP,SAAgB,kBACd,QACiC;AACjC,QAAO,IAAI,sBAAsB,OAAO"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
//#region src/types/pinata.d.ts
|
|
2
|
-
interface PinataUploadResult {
|
|
3
|
-
/**
|
|
4
|
-
* IPFS CID.
|
|
5
|
-
*/
|
|
6
|
-
IpfsHash: string;
|
|
7
|
-
/**
|
|
8
|
-
* Pin size in bytes.
|
|
9
|
-
*/
|
|
10
|
-
PinSize: number;
|
|
11
|
-
/**
|
|
12
|
-
* Timestamp of upload.
|
|
13
|
-
*/
|
|
14
|
-
Timestamp: string;
|
|
15
|
-
/**
|
|
16
|
-
* Whether content was pinned.
|
|
17
|
-
*/
|
|
18
|
-
isDuplicate: boolean;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Base metadata options - shared across upload and pin operations.
|
|
22
|
-
*/
|
|
23
|
-
interface PinataMetadataOptions {
|
|
24
|
-
name?: string;
|
|
25
|
-
keyvalues?: Record<string, string>;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Generic upload builder interface.
|
|
29
|
-
* All upload methods return this builder with different result types.
|
|
30
|
-
*/
|
|
31
|
-
interface PinataUploadBuilder<T = PinataUploadResult> {
|
|
32
|
-
name(name: string): this;
|
|
33
|
-
keyvalues(kv: Record<string, string>): this;
|
|
34
|
-
execute(): Promise<T>;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Options for pinning content by CID.
|
|
38
|
-
*/
|
|
39
|
-
interface PinByHashOptions extends PinataMetadataOptions {}
|
|
40
|
-
/**
|
|
41
|
-
* Pin information (Pinata SDK format).
|
|
42
|
-
* Note: This differs from RemotePin (@ipfs-shipyard/pinning-service-client format).
|
|
43
|
-
*/
|
|
44
|
-
interface PinataPin {
|
|
45
|
-
id: string;
|
|
46
|
-
ipfsPinHash: string;
|
|
47
|
-
size: number;
|
|
48
|
-
userId: string;
|
|
49
|
-
datePinned: string;
|
|
50
|
-
dateUnpinned?: string;
|
|
51
|
-
metadata?: PinataMetadata;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* File information (Pinata SDK format).
|
|
55
|
-
*/
|
|
56
|
-
interface PinataFile {
|
|
57
|
-
id: string;
|
|
58
|
-
ipfsPinHash: string;
|
|
59
|
-
size: number;
|
|
60
|
-
name: string;
|
|
61
|
-
cid: string;
|
|
62
|
-
createdAt: string;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* List builder interface for listing pins.
|
|
66
|
-
* Uses cursor-based pagination compatible with Pinata SDK.
|
|
67
|
-
*/
|
|
68
|
-
interface PinataListBuilder<T = PinataFile[]> {
|
|
69
|
-
limit(limit: number): this;
|
|
70
|
-
pageToken(pageToken: string): this;
|
|
71
|
-
execute(): Promise<T>;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Pin metadata.
|
|
75
|
-
*/
|
|
76
|
-
interface PinataMetadata extends PinataMetadataOptions {}
|
|
77
|
-
/**
|
|
78
|
-
* File information.
|
|
79
|
-
*/
|
|
80
|
-
interface PinataFile {
|
|
81
|
-
id: string;
|
|
82
|
-
ipfsPinHash: string;
|
|
83
|
-
size: number;
|
|
84
|
-
name: string;
|
|
85
|
-
mimeType?: string;
|
|
86
|
-
cid: string;
|
|
87
|
-
createdAt: string;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Generic list builder interface.
|
|
91
|
-
*/
|
|
92
|
-
interface PinataListBuilder<T> {
|
|
93
|
-
limit(limit: number): this;
|
|
94
|
-
offset(offset: number): this;
|
|
95
|
-
execute(): Promise<T>;
|
|
96
|
-
}
|
|
97
|
-
//#endregion
|
|
98
|
-
export { PinByHashOptions, PinataFile, PinataListBuilder, PinataMetadata, PinataMetadataOptions, PinataPin, PinataUploadBuilder, PinataUploadResult };
|
|
99
|
-
//# sourceMappingURL=pinata.d.ts.map
|