node-datalith 0.1.1 → 0.1.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/lib/file.d.ts +3 -1
- package/lib/file.js +4 -1
- package/lib/lib.d.ts +12 -2
- package/lib/lib.js +13 -2
- package/package.json +1 -1
package/lib/file.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare class File {
|
|
|
11
11
|
readonly date: Date;
|
|
12
12
|
readonly contentType: string;
|
|
13
13
|
readonly contentLength: number;
|
|
14
|
+
readonly contentDisposition: string;
|
|
14
15
|
readonly data: ReadableStream;
|
|
15
16
|
readonly imageSize?: (ImageSize | null) | undefined;
|
|
16
17
|
/**
|
|
@@ -21,10 +22,11 @@ export declare class File {
|
|
|
21
22
|
* @param {Date} date The date and time when the file was created.
|
|
22
23
|
* @param {string} contentType The MIME type of the file.
|
|
23
24
|
* @param {number} contentLength The size of the file in bytes.
|
|
25
|
+
* @param {string} contentDisposition The file name and the expected usage.
|
|
24
26
|
* @param {ReadableStream} data The file content as a readable stream.
|
|
25
27
|
* @param {imageSize} [imageSize] (Optional) The size of the image in pixels, or `null` if not applicable, or `undefined` if this file is not an image.
|
|
26
28
|
*/
|
|
27
|
-
constructor(resource: TimeoutResponse, etag: string, date: Date, contentType: string, contentLength: number, data: ReadableStream, imageSize?: (ImageSize | null) | undefined);
|
|
29
|
+
constructor(resource: TimeoutResponse, etag: string, date: Date, contentType: string, contentLength: number, contentDisposition: string, data: ReadableStream, imageSize?: (ImageSize | null) | undefined);
|
|
28
30
|
/**
|
|
29
31
|
* If you want to cancel the data, use this function instead of `data.cancel()` or `data.getReader().cancel()`.
|
|
30
32
|
*/
|
package/lib/file.js
CHANGED
|
@@ -9,6 +9,7 @@ export class File {
|
|
|
9
9
|
date;
|
|
10
10
|
contentType;
|
|
11
11
|
contentLength;
|
|
12
|
+
contentDisposition;
|
|
12
13
|
data;
|
|
13
14
|
imageSize;
|
|
14
15
|
/**
|
|
@@ -19,15 +20,17 @@ export class File {
|
|
|
19
20
|
* @param {Date} date The date and time when the file was created.
|
|
20
21
|
* @param {string} contentType The MIME type of the file.
|
|
21
22
|
* @param {number} contentLength The size of the file in bytes.
|
|
23
|
+
* @param {string} contentDisposition The file name and the expected usage.
|
|
22
24
|
* @param {ReadableStream} data The file content as a readable stream.
|
|
23
25
|
* @param {imageSize} [imageSize] (Optional) The size of the image in pixels, or `null` if not applicable, or `undefined` if this file is not an image.
|
|
24
26
|
*/
|
|
25
|
-
constructor(resource, etag, date, contentType, contentLength, data, imageSize) {
|
|
27
|
+
constructor(resource, etag, date, contentType, contentLength, contentDisposition, data, imageSize) {
|
|
26
28
|
this.resource = resource;
|
|
27
29
|
this.etag = etag;
|
|
28
30
|
this.date = date;
|
|
29
31
|
this.contentType = contentType;
|
|
30
32
|
this.contentLength = contentLength;
|
|
33
|
+
this.contentDisposition = contentDisposition;
|
|
31
34
|
this.data = data;
|
|
32
35
|
this.imageSize = imageSize;
|
|
33
36
|
// do nothing
|
package/lib/lib.d.ts
CHANGED
|
@@ -133,9 +133,19 @@ export interface ImagePutOptions extends WithBodyTimeoutOptions {
|
|
|
133
133
|
*/
|
|
134
134
|
idleTimeout?: number | null;
|
|
135
135
|
}
|
|
136
|
-
export
|
|
136
|
+
export interface FileGetOptions extends WithBodyTimeoutOptions {
|
|
137
|
+
/**
|
|
138
|
+
* Whether to download as a file. It will affect the `contentDisposition` field of the returned `File` instance.
|
|
139
|
+
*
|
|
140
|
+
* If not provided (`undefined`), Datalith will default to `false`.
|
|
141
|
+
*
|
|
142
|
+
* @default undefined (Datalith defaults to `false`)
|
|
143
|
+
*/
|
|
144
|
+
download?: boolean;
|
|
145
|
+
}
|
|
146
|
+
export type ResourceGetOptions = FileGetOptions;
|
|
137
147
|
export type Resolution = `${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10}x` | "original";
|
|
138
|
-
export interface ImageGetOptions extends
|
|
148
|
+
export interface ImageGetOptions extends FileGetOptions {
|
|
139
149
|
/**
|
|
140
150
|
* The desired resolution of the image.
|
|
141
151
|
*
|
package/lib/lib.js
CHANGED
|
@@ -159,6 +159,10 @@ export class Datalith {
|
|
|
159
159
|
*/
|
|
160
160
|
async getResource(id, options = {}) {
|
|
161
161
|
const url = new URL(id, this._apiFetch);
|
|
162
|
+
const searchParams = url.searchParams;
|
|
163
|
+
if (options.download) {
|
|
164
|
+
searchParams.append("download", "1");
|
|
165
|
+
}
|
|
162
166
|
const response = await timeoutFetch(url, {
|
|
163
167
|
method: "GET",
|
|
164
168
|
requestTimeout: typeof options.reqeustTimeout !== "undefined" ? options.reqeustTimeout : DEFAULT_REQUEST_TIMEOUT,
|
|
@@ -176,8 +180,10 @@ export class Datalith {
|
|
|
176
180
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
177
181
|
const contentLength = parseInt(response.headers.get("content-length"));
|
|
178
182
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
183
|
+
const contentDisposition = response.headers.get("content-disposition");
|
|
184
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
179
185
|
const body = response.body;
|
|
180
|
-
return new File(response, etag, date, contentType, contentLength, body);
|
|
186
|
+
return new File(response, etag, date, contentType, contentLength, contentDisposition, body);
|
|
181
187
|
}
|
|
182
188
|
case 400:
|
|
183
189
|
await response.cancelBody();
|
|
@@ -199,6 +205,9 @@ export class Datalith {
|
|
|
199
205
|
async getImage(id, options = {}) {
|
|
200
206
|
const url = new URL(id, this._apiFetchImage);
|
|
201
207
|
const searchParams = url.searchParams;
|
|
208
|
+
if (options.download) {
|
|
209
|
+
searchParams.append("download", "1");
|
|
210
|
+
}
|
|
202
211
|
if (typeof options.resolution !== "undefined") {
|
|
203
212
|
searchParams.append("resolution", options.resolution);
|
|
204
213
|
}
|
|
@@ -222,6 +231,8 @@ export class Datalith {
|
|
|
222
231
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
223
232
|
const contentLength = parseInt(response.headers.get("content-length"));
|
|
224
233
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
234
|
+
const contentDisposition = response.headers.get("content-disposition");
|
|
235
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
225
236
|
const body = response.body;
|
|
226
237
|
const getNullableNumber = (fieldName) => {
|
|
227
238
|
const s = response.headers.get(fieldName);
|
|
@@ -239,7 +250,7 @@ export class Datalith {
|
|
|
239
250
|
height: imageHeight,
|
|
240
251
|
};
|
|
241
252
|
}
|
|
242
|
-
return new File(response, etag, date, contentType, contentLength, body, imageSize);
|
|
253
|
+
return new File(response, etag, date, contentType, contentLength, contentDisposition, body, imageSize);
|
|
243
254
|
}
|
|
244
255
|
case 400:
|
|
245
256
|
await response.cancelBody();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-datalith",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Datalith is a file management system powered by SQLite for metadata storage and the file system for file storage. This library can help you conmunicate with Datalith in Node.js.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": "./lib/lib.js",
|