@proveanything/smartlinks 1.0.7 → 1.0.9

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.
Files changed (62) hide show
  1. package/debug.log +6 -0
  2. package/dist/api/asset.d.ts +3 -3
  3. package/dist/api/asset.js +6 -6
  4. package/dist/api/attestation.d.ts +23 -0
  5. package/dist/api/attestation.js +44 -0
  6. package/dist/api/index.d.ts +1 -0
  7. package/dist/api/index.js +1 -0
  8. package/dist/api/product.d.ts +2 -2
  9. package/dist/api/product.js +3 -3
  10. package/dist/api/proof.d.ts +4 -0
  11. package/dist/api/proof.js +8 -0
  12. package/dist/http.d.ts +19 -0
  13. package/dist/http.js +109 -0
  14. package/dist/types/attestation.d.ts +16 -0
  15. package/dist/types/attestation.js +1 -0
  16. package/docs/assets/navigation.js +1 -1
  17. package/docs/assets/search.js +1 -1
  18. package/docs/documentation.json +1223 -445
  19. package/docs/functions/appConfiguration.get.html +1 -1
  20. package/docs/functions/asset.getForCollection.html +1 -1
  21. package/docs/functions/asset.getForProduct.html +1 -1
  22. package/docs/functions/asset.getForProof.html +1 -1
  23. package/docs/functions/asset.listForCollection.html +1 -0
  24. package/docs/functions/asset.listForProduct.html +1 -0
  25. package/docs/functions/asset.listForProof.html +1 -0
  26. package/docs/functions/asset.uploadAsset.html +1 -1
  27. package/docs/functions/attestation.create.html +2 -0
  28. package/docs/functions/attestation.get.html +2 -0
  29. package/docs/functions/attestation.list.html +2 -0
  30. package/docs/functions/attestation.remove.html +2 -0
  31. package/docs/functions/attestation.update.html +2 -0
  32. package/docs/functions/collection.get.html +1 -1
  33. package/docs/functions/initializeApi.html +1 -1
  34. package/docs/functions/product.get.html +1 -1
  35. package/docs/functions/{product.getAll.html → product.list.html} +2 -2
  36. package/docs/functions/proof.get.html +1 -1
  37. package/docs/functions/proof.list.html +2 -0
  38. package/docs/functions/request.html +1 -1
  39. package/docs/interfaces/AppConfigurationResponse.html +4 -4
  40. package/docs/interfaces/AssetResponse.html +2 -2
  41. package/docs/interfaces/CollectionResponse.html +5 -5
  42. package/docs/interfaces/ErrorResponse.html +3 -3
  43. package/docs/interfaces/ProductResponse.html +5 -5
  44. package/docs/interfaces/ProofResponse.html +8 -8
  45. package/docs/modules/appConfiguration.html +1 -1
  46. package/docs/modules/asset.html +4 -4
  47. package/docs/modules/attestation.html +6 -0
  48. package/docs/modules/collection.html +1 -1
  49. package/docs/modules/product.html +2 -2
  50. package/docs/modules/proof.html +2 -1
  51. package/docs/modules.html +1 -0
  52. package/package.json +1 -1
  53. package/src/api/asset.ts +3 -3
  54. package/src/api/attestation.ts +69 -0
  55. package/src/api/index.ts +1 -0
  56. package/src/api/product.ts +2 -2
  57. package/src/api/proof.ts +10 -0
  58. package/src/http.ts +136 -0
  59. package/src/types/attestation.ts +18 -0
  60. package/docs/functions/asset.getAllForCollection.html +0 -1
  61. package/docs/functions/asset.getAllForProduct.html +0 -1
  62. package/docs/functions/asset.getAllForProof.html +0 -1
package/debug.log ADDED
@@ -0,0 +1,6 @@
1
+ [0602/081836.172:ERROR:registration_protocol_win.cc(108)] CreateFile: The system cannot find the file specified. (0x2)
2
+ [0602/081836.202:ERROR:registration_protocol_win.cc(108)] CreateFile: The system cannot find the file specified. (0x2)
3
+ [0602/081836.512:ERROR:registration_protocol_win.cc(108)] CreateFile: The system cannot find the file specified. (0x2)
4
+ [0602/081858.471:ERROR:registration_protocol_win.cc(108)] CreateFile: The system cannot find the file specified. (0x2)
5
+ [0602/081858.497:ERROR:registration_protocol_win.cc(108)] CreateFile: The system cannot find the file specified. (0x2)
6
+ [0602/081858.832:ERROR:registration_protocol_win.cc(108)] CreateFile: The system cannot find the file specified. (0x2)
@@ -1,11 +1,11 @@
1
1
  import { AssetResponse } from "../types/asset";
2
2
  export declare namespace asset {
3
3
  function getForCollection(collectionId: string, assetId: string): Promise<AssetResponse>;
4
- function getAllForCollection(collectionId: string): Promise<AssetResponse[]>;
4
+ function listForCollection(collectionId: string): Promise<AssetResponse[]>;
5
5
  function getForProduct(collectionId: string, productId: string, assetId: string): Promise<AssetResponse>;
6
- function getAllForProduct(collectionId: string, productId: string): Promise<AssetResponse[]>;
6
+ function listForProduct(collectionId: string, productId: string): Promise<AssetResponse[]>;
7
7
  function getForProof(collectionId: string, productId: string, proofId: string, assetId: string): Promise<AssetResponse>;
8
- function getAllForProof(collectionId: string, productId: string, proofId: string, appId?: string): Promise<AssetResponse[]>;
8
+ function listForProof(collectionId: string, productId: string, proofId: string, appId?: string): Promise<AssetResponse[]>;
9
9
  /**
10
10
  * Uploads an asset file to a proof, with optional extraData as JSON.
11
11
  * Supports progress reporting via onProgress callback (browser only).
package/dist/api/asset.js CHANGED
@@ -7,36 +7,36 @@ export var asset;
7
7
  return request(path);
8
8
  }
9
9
  asset.getForCollection = getForCollection;
10
- async function getAllForCollection(collectionId) {
10
+ async function listForCollection(collectionId) {
11
11
  const path = `/public/collection/${encodeURIComponent(collectionId)}/asset`;
12
12
  return request(path);
13
13
  }
14
- asset.getAllForCollection = getAllForCollection;
14
+ asset.listForCollection = listForCollection;
15
15
  // Product-level
16
16
  async function getForProduct(collectionId, productId, assetId) {
17
17
  const path = `/public/collection/${encodeURIComponent(collectionId)}/product/${encodeURIComponent(productId)}/asset/${encodeURIComponent(assetId)}`;
18
18
  return request(path);
19
19
  }
20
20
  asset.getForProduct = getForProduct;
21
- async function getAllForProduct(collectionId, productId) {
21
+ async function listForProduct(collectionId, productId) {
22
22
  const path = `/public/collection/${encodeURIComponent(collectionId)}/product/${encodeURIComponent(productId)}/asset`;
23
23
  return request(path);
24
24
  }
25
- asset.getAllForProduct = getAllForProduct;
25
+ asset.listForProduct = listForProduct;
26
26
  // Proof-level
27
27
  async function getForProof(collectionId, productId, proofId, assetId) {
28
28
  const path = `/public/collection/${encodeURIComponent(collectionId)}/product/${encodeURIComponent(productId)}/proof/${encodeURIComponent(proofId)}/asset/${encodeURIComponent(assetId)}`;
29
29
  return request(path);
30
30
  }
31
31
  asset.getForProof = getForProof;
32
- async function getAllForProof(collectionId, productId, proofId, appId) {
32
+ async function listForProof(collectionId, productId, proofId, appId) {
33
33
  let path = `/public/collection/${encodeURIComponent(collectionId)}/product/${encodeURIComponent(productId)}/proof/${encodeURIComponent(proofId)}/asset`;
34
34
  if (appId) {
35
35
  path += `?appId=${encodeURIComponent(appId)}`;
36
36
  }
37
37
  return request(path);
38
38
  }
39
- asset.getAllForProof = getAllForProof;
39
+ asset.listForProof = listForProof;
40
40
  /**
41
41
  * Uploads an asset file to a proof, with optional extraData as JSON.
42
42
  * Supports progress reporting via onProgress callback (browser only).
@@ -0,0 +1,23 @@
1
+ import type { AttestationResponse, AttestationCreateRequest, AttestationUpdateRequest } from "../types/attestation";
2
+ export declare namespace attestation {
3
+ /**
4
+ * List all attestations for a proof.
5
+ */
6
+ function list(collectionId: string, productId: string, proofId: string): Promise<AttestationResponse[]>;
7
+ /**
8
+ * Get a single attestation by ID.
9
+ */
10
+ function get(collectionId: string, productId: string, proofId: string, attestationId: string): Promise<AttestationResponse>;
11
+ /**
12
+ * Create a new attestation for a proof.
13
+ */
14
+ function create(collectionId: string, productId: string, proofId: string, data: AttestationCreateRequest): Promise<AttestationResponse>;
15
+ /**
16
+ * Update an attestation.
17
+ */
18
+ function update(collectionId: string, productId: string, proofId: string, attestationId: string, data: AttestationUpdateRequest): Promise<AttestationResponse>;
19
+ /**
20
+ * Delete an attestation.
21
+ */
22
+ function remove(collectionId: string, productId: string, proofId: string, attestationId: string): Promise<void>;
23
+ }
@@ -0,0 +1,44 @@
1
+ import { request, post, put, del } from "../http";
2
+ export var attestation;
3
+ (function (attestation) {
4
+ /**
5
+ * List all attestations for a proof.
6
+ */
7
+ async function list(collectionId, productId, proofId) {
8
+ const path = `/public/collection/${encodeURIComponent(collectionId)}/product/${encodeURIComponent(productId)}/proof/${encodeURIComponent(proofId)}/attestation`;
9
+ return request(path);
10
+ }
11
+ attestation.list = list;
12
+ /**
13
+ * Get a single attestation by ID.
14
+ */
15
+ async function get(collectionId, productId, proofId, attestationId) {
16
+ const path = `/public/collection/${encodeURIComponent(collectionId)}/product/${encodeURIComponent(productId)}/proof/${encodeURIComponent(proofId)}/attestation/${encodeURIComponent(attestationId)}`;
17
+ return request(path);
18
+ }
19
+ attestation.get = get;
20
+ /**
21
+ * Create a new attestation for a proof.
22
+ */
23
+ async function create(collectionId, productId, proofId, data) {
24
+ const path = `/public/collection/${encodeURIComponent(collectionId)}/product/${encodeURIComponent(productId)}/proof/${encodeURIComponent(proofId)}/attestation`;
25
+ return post(path, data);
26
+ }
27
+ attestation.create = create;
28
+ /**
29
+ * Update an attestation.
30
+ */
31
+ async function update(collectionId, productId, proofId, attestationId, data) {
32
+ const path = `/public/collection/${encodeURIComponent(collectionId)}/product/${encodeURIComponent(productId)}/proof/${encodeURIComponent(proofId)}/attestation/${encodeURIComponent(attestationId)}`;
33
+ return put(path, data);
34
+ }
35
+ attestation.update = update;
36
+ /**
37
+ * Delete an attestation.
38
+ */
39
+ async function remove(collectionId, productId, proofId, attestationId) {
40
+ const path = `/public/collection/${encodeURIComponent(collectionId)}/product/${encodeURIComponent(productId)}/proof/${encodeURIComponent(proofId)}/attestation/${encodeURIComponent(attestationId)}`;
41
+ return del(path);
42
+ }
43
+ attestation.remove = remove;
44
+ })(attestation || (attestation = {}));
@@ -3,3 +3,4 @@ export { product } from "./product";
3
3
  export { proof } from "./proof";
4
4
  export { appConfiguration } from "./appConfiguration";
5
5
  export { asset } from "./asset";
6
+ export { attestation } from "./attestation";
package/dist/api/index.js CHANGED
@@ -5,3 +5,4 @@ export { product } from "./product";
5
5
  export { proof } from "./proof";
6
6
  export { appConfiguration } from "./appConfiguration";
7
7
  export { asset } from "./asset";
8
+ export { attestation } from "./attestation";
@@ -9,10 +9,10 @@ export declare namespace product {
9
9
  */
10
10
  function get(collectionId: string, productId: string): Promise<ProductResponse>;
11
11
  /**
12
- * Retrieves all Product Items for a Collection.
12
+ * List all Product Items for a Collection.
13
13
  * @param collectionId – Identifier of the parent collection
14
14
  * @returns Promise resolving to an array of ProductResponse objects
15
15
  * @throws ErrorResponse if the request fails
16
16
  */
17
- function getAll(collectionId: string): Promise<ProductResponse[]>;
17
+ function list(collectionId: string): Promise<ProductResponse[]>;
18
18
  }
@@ -15,14 +15,14 @@ export var product;
15
15
  }
16
16
  product.get = get;
17
17
  /**
18
- * Retrieves all Product Items for a Collection.
18
+ * List all Product Items for a Collection.
19
19
  * @param collectionId – Identifier of the parent collection
20
20
  * @returns Promise resolving to an array of ProductResponse objects
21
21
  * @throws ErrorResponse if the request fails
22
22
  */
23
- async function getAll(collectionId) {
23
+ async function list(collectionId) {
24
24
  const path = `/public/collection/${encodeURIComponent(collectionId)}/product`;
25
25
  return request(path);
26
26
  }
27
- product.getAll = getAll;
27
+ product.list = list;
28
28
  })(product || (product = {}));
@@ -8,4 +8,8 @@ export declare namespace proof {
8
8
  * @throws ErrorResponse if the request fails
9
9
  */
10
10
  function get(collectionId: string, proofId: string): Promise<ProofResponse>;
11
+ /**
12
+ * List all Proofs for a Collection.
13
+ */
14
+ function list(collectionId: string): Promise<ProofResponse[]>;
11
15
  }
package/dist/api/proof.js CHANGED
@@ -14,4 +14,12 @@ export var proof;
14
14
  return request(path);
15
15
  }
16
16
  proof.get = get;
17
+ /**
18
+ * List all Proofs for a Collection.
19
+ */
20
+ async function list(collectionId) {
21
+ const path = `/public/collection/${encodeURIComponent(collectionId)}/proof`;
22
+ return request(path);
23
+ }
24
+ proof.list = list;
17
25
  })(proof || (proof = {}));
package/dist/http.d.ts CHANGED
@@ -23,6 +23,25 @@ export declare function request<T>(path: string): Promise<T>;
23
23
  * Returns the parsed JSON as T, or throws an Error.
24
24
  */
25
25
  export declare function post<T>(path: string, body: any, extraHeaders?: Record<string, string>): Promise<T>;
26
+ /**
27
+ * Internal helper that performs a PUT request to `${baseURL}${path}`,
28
+ * injecting headers for apiKey or bearerToken if present.
29
+ * If body is FormData, Content-Type is not set.
30
+ * Returns the parsed JSON as T, or throws an Error.
31
+ */
32
+ export declare function put<T>(path: string, body: any, extraHeaders?: Record<string, string>): Promise<T>;
33
+ /**
34
+ * Internal helper that performs a request to `${baseURL}${path}` with custom options,
35
+ * injecting headers for apiKey or bearerToken if present.
36
+ * Returns the parsed JSON as T, or throws an Error.
37
+ */
38
+ export declare function requestWithOptions<T>(path: string, options: RequestInit): Promise<T>;
39
+ /**
40
+ * Internal helper that performs a DELETE request to `${baseURL}${path}`,
41
+ * injecting headers for apiKey or bearerToken if present.
42
+ * Returns the parsed JSON as T, or throws an Error.
43
+ */
44
+ export declare function del<T>(path: string, extraHeaders?: Record<string, string>): Promise<T>;
26
45
  /**
27
46
  * Returns the common headers used for API requests, including apiKey and bearerToken if set.
28
47
  */
package/dist/http.js CHANGED
@@ -88,6 +88,115 @@ export async function post(path, body, extraHeaders) {
88
88
  }
89
89
  return (await response.json());
90
90
  }
91
+ /**
92
+ * Internal helper that performs a PUT request to `${baseURL}${path}`,
93
+ * injecting headers for apiKey or bearerToken if present.
94
+ * If body is FormData, Content-Type is not set.
95
+ * Returns the parsed JSON as T, or throws an Error.
96
+ */
97
+ export async function put(path, body, extraHeaders) {
98
+ if (!baseURL) {
99
+ throw new Error("HTTP client is not initialized. Call initializeApi(...) first.");
100
+ }
101
+ const url = `${baseURL}${path}`;
102
+ const headers = extraHeaders ? Object.assign({}, extraHeaders) : {};
103
+ if (apiKey)
104
+ headers["X-API-Key"] = apiKey;
105
+ if (bearerToken)
106
+ headers["AUTHORIZATION"] = `Bearer ${bearerToken}`;
107
+ // Only set Content-Type for non-FormData bodies
108
+ if (!(body instanceof FormData)) {
109
+ headers["Content-Type"] = "application/json";
110
+ }
111
+ const response = await fetch(url, {
112
+ method: "PUT",
113
+ headers,
114
+ body: body instanceof FormData ? body : JSON.stringify(body),
115
+ });
116
+ if (!response.ok) {
117
+ try {
118
+ const errBody = (await response.json());
119
+ throw new Error(`Error ${errBody.code}: ${errBody.message}`);
120
+ }
121
+ catch (_a) {
122
+ throw new Error(`Request to ${url} failed with status ${response.status}`);
123
+ }
124
+ }
125
+ return (await response.json());
126
+ }
127
+ /**
128
+ * Internal helper that performs a request to `${baseURL}${path}` with custom options,
129
+ * injecting headers for apiKey or bearerToken if present.
130
+ * Returns the parsed JSON as T, or throws an Error.
131
+ */
132
+ export async function requestWithOptions(path, options) {
133
+ if (!baseURL) {
134
+ throw new Error("HTTP client is not initialized. Call initializeApi(...) first.");
135
+ }
136
+ const url = `${baseURL}${path}`;
137
+ // Safely merge headers, converting Headers/init to Record<string, string>
138
+ let extraHeaders = {};
139
+ if (options.headers) {
140
+ if (options.headers instanceof Headers) {
141
+ options.headers.forEach((value, key) => {
142
+ extraHeaders[key] = value;
143
+ });
144
+ }
145
+ else if (Array.isArray(options.headers)) {
146
+ for (const [key, value] of options.headers) {
147
+ extraHeaders[key] = value;
148
+ }
149
+ }
150
+ else {
151
+ extraHeaders = Object.assign({}, options.headers);
152
+ }
153
+ }
154
+ const headers = Object.assign(Object.assign(Object.assign({ "Content-Type": "application/json" }, (apiKey ? { "X-API-Key": apiKey } : {})), (bearerToken ? { "AUTHORIZATION": `Bearer ${bearerToken}` } : {})), extraHeaders);
155
+ const response = await fetch(url, Object.assign(Object.assign({}, options), { headers }));
156
+ if (!response.ok) {
157
+ try {
158
+ const errBody = (await response.json());
159
+ throw new Error(`Error ${errBody.code}: ${errBody.message}`);
160
+ }
161
+ catch (_a) {
162
+ throw new Error(`Request to ${url} failed with status ${response.status}`);
163
+ }
164
+ }
165
+ return (await response.json());
166
+ }
167
+ /**
168
+ * Internal helper that performs a DELETE request to `${baseURL}${path}`,
169
+ * injecting headers for apiKey or bearerToken if present.
170
+ * Returns the parsed JSON as T, or throws an Error.
171
+ */
172
+ export async function del(path, extraHeaders) {
173
+ if (!baseURL) {
174
+ throw new Error("HTTP client is not initialized. Call initializeApi(...) first.");
175
+ }
176
+ const url = `${baseURL}${path}`;
177
+ const headers = extraHeaders ? Object.assign({}, extraHeaders) : {};
178
+ if (apiKey)
179
+ headers["X-API-Key"] = apiKey;
180
+ if (bearerToken)
181
+ headers["AUTHORIZATION"] = `Bearer ${bearerToken}`;
182
+ const response = await fetch(url, {
183
+ method: "DELETE",
184
+ headers,
185
+ });
186
+ if (!response.ok) {
187
+ try {
188
+ const errBody = (await response.json());
189
+ throw new Error(`Error ${errBody.code}: ${errBody.message}`);
190
+ }
191
+ catch (_a) {
192
+ throw new Error(`Request to ${url} failed with status ${response.status}`);
193
+ }
194
+ }
195
+ // If the response is empty, just return undefined
196
+ if (response.status === 204)
197
+ return undefined;
198
+ return (await response.json());
199
+ }
91
200
  /**
92
201
  * Returns the common headers used for API requests, including apiKey and bearerToken if set.
93
202
  */
@@ -0,0 +1,16 @@
1
+ export interface AttestationResponse {
2
+ id: string;
3
+ proofId: string;
4
+ createdAt: string;
5
+ updatedAt: string;
6
+ type: string;
7
+ data: Record<string, any>;
8
+ }
9
+ export interface AttestationCreateRequest {
10
+ type: string;
11
+ data: Record<string, any>;
12
+ }
13
+ export interface AttestationUpdateRequest {
14
+ type?: string;
15
+ data?: Record<string, any>;
16
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1 +1 @@
1
- window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAACpWUzW6DMBCE38Vn1EhVmgM3FLXnqteoB2TWxKrjdfwjVa3y7hUVBNs4xlxh/DGznuX0Syx8W1KTVqkjSsZ7p1vLUZKKqNaeSU0u2DkBZhcrns72IkhFvrjsSL2vCD1z0WmQpD7dsT3YmcScpMPJBKsHG/IO+9vnrZrtGeOT7p6Gx6VGGiHeUB9RCKBhRM/YPzAhXrirluh3jZ2j6cAhd1QWQpGVIZHlgeXpN0QvzF0auihxQVynBLZdE9YmRnmibPtoYmpTBemDOW1bCI+ytgoqnvbkRKXmu83GhEh5iLu5cr4RYi2Gf8teiPheN0dAtjrEJvoBfYBRKA3MRC4taNZSMLtH4vALzy8H/wNDqfJUX5FDzZuY5S1lOeir1qizvECRQ417nYVFmhUcsjXYrMihuOSWt4L/QKN4qiyBINN4DVcHJtm38dWybX+3gK5VXAcAAA=="
1
+ window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAACp2VMW/DIBCF/wuz1UhVmsFbFLVz1TXqYOEjQSUcBVxVrfLfKzdxDJgcTlbz/PHO9+68/WUevj2rWWPMBrWQu842XqJmFTON37OaHbDtFLhFqnjY+4NiFfuQumX1smJ8L1VrQbN6e8HuwI8k0Wnev5lh7cDHvNXy+H6sRnvOhaSLp/7xXCMvaDeoFPC4vsDVPy1VTnxVCfTVYtvxfJ0B8Sybg0MxA4aCQCnp5tY7kZaxxYpj3SwgVXOoImCdUdi06zgqKSsQ0YnzHpy/Ngvj4az0cQuNh6ypgHRS0QEpMXKDFH/uEqHXEAgLB/wqlnJSkb1qZ3yRk4rsE89EfGgTv5Lp25ZVQCmtKZMOxuDE5CbhNhsD4r4OD29nu5uUEI5iUEA6ezfbR3G/eRRl6+vkr/IGzqB2Qcqk9mBFw8EtronjGx6fVuEF/dagqaGCQo3rluRNZRT02Vq0JC9SUKjz6iZhiaaAQ1GCjQoKJbX0slHyB9ZG5tISCchN9tlBPnDno2na/gC9ajKAMQkAAA=="
@@ -1 +1 @@
1
- window.searchData = "data:application/octet-stream;base64,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";
1
+ window.searchData = "data:application/octet-stream;base64,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";