@sarangkale66/pixxo-sdk-node 1.0.2 → 1.0.4
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 +99 -99
- package/dist/pixxo.d.ts +13 -0
- package/dist/pixxo.d.ts.map +1 -1
- package/dist/pixxo.js +37 -5
- package/dist/pixxo.js.map +1 -1
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +25 -0
- package/dist/utils.js.map +1 -1
- package/package.json +32 -32
package/README.md
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
# Pixxo Node.js SDK
|
|
2
|
-
|
|
3
|
-
> Drop-in replacement for the [ImageKit Node.js SDK](https://github.com/imagekit-developer/imagekit-nodejs). Swap `import ImageKit from 'imagekit'` with `import Pixxo from 'pixxo'` — zero refactor required.
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm install pixxo
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Quick Start
|
|
12
|
-
|
|
13
|
-
```ts
|
|
14
|
-
import Pixxo from "pixxo";
|
|
15
|
-
import fs from "fs";
|
|
16
|
-
|
|
17
|
-
const pixxo = new Pixxo({
|
|
18
|
-
email: "you@example.com",
|
|
19
|
-
password: "your-password",
|
|
20
|
-
});
|
|
21
|
-
|
|
1
|
+
# Pixxo Node.js SDK
|
|
2
|
+
|
|
3
|
+
> Drop-in replacement for the [ImageKit Node.js SDK](https://github.com/imagekit-developer/imagekit-nodejs). Swap `import ImageKit from 'imagekit'` with `import Pixxo from 'pixxo'` — zero refactor required.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install pixxo
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import Pixxo from "pixxo";
|
|
15
|
+
import fs from "fs";
|
|
16
|
+
|
|
17
|
+
const pixxo = new Pixxo({
|
|
18
|
+
email: "you@example.com",
|
|
19
|
+
password: "your-password",
|
|
20
|
+
});
|
|
21
|
+
|
|
22
22
|
const result = await pixxo.upload({
|
|
23
23
|
file: fs.readFileSync("receipt.pdf"),
|
|
24
24
|
fileName: "receipt.pdf",
|
|
25
25
|
folder: "/receipts",
|
|
26
26
|
});
|
|
27
|
-
|
|
28
|
-
console.log(result.url); // https://px.pixxo.io/…
|
|
27
|
+
|
|
28
|
+
console.log(result.url); // https://px.pixxo.io/…
|
|
29
29
|
console.log(result.fileId); // MongoDB ObjectId
|
|
30
30
|
console.log(result.name); // receipt.pdf
|
|
31
31
|
```
|
|
@@ -39,79 +39,79 @@ const result = await pixxo.upload({
|
|
|
39
39
|
folder: "/products/images",
|
|
40
40
|
});
|
|
41
41
|
```
|
|
42
|
-
|
|
43
|
-
## Constructor Options
|
|
44
|
-
|
|
45
|
-
| Option | Type | Required | Default | Description |
|
|
46
|
-
|---|---|---|---|---|
|
|
47
|
-
| `email` | `string` | ✅ | — | Pixxo account email |
|
|
48
|
-
| `password` | `string` | ✅ | — | Pixxo account password |
|
|
49
|
-
| `baseUrl` | `string` | — | `https://api.pixxo.io` | API base URL |
|
|
50
|
-
| `cdnDomain` | `string` | — | `px.pixxo.io` | CDN domain for returned URLs |
|
|
51
|
-
| `maxRetries` | `number` | — | `2` | Retry attempts for S3 upload failures |
|
|
52
|
-
| `publicKey` | `string` | — | — | *Ignored* (ImageKit compat) |
|
|
53
|
-
| `privateKey` | `string` | — | — | *Ignored* (ImageKit compat) |
|
|
54
|
-
| `urlEndpoint` | `string` | — | — | *Ignored* (ImageKit compat) |
|
|
55
|
-
|
|
56
|
-
## `upload(options)`
|
|
57
|
-
|
|
58
|
-
### Options
|
|
59
|
-
|
|
60
|
-
| Option | Type | Required | Description |
|
|
61
|
-
|---|---|---|---|
|
|
62
|
-
| `file` | `Buffer \| string` | ✅ | Buffer, base64 string, or file path |
|
|
63
|
-
| `fileName` | `string` | ✅ | File name with extension |
|
|
64
|
-
| `folder` | `string` | — | Destination folder (e.g. `"/receipts"`) |
|
|
65
|
-
| `useUniqueFileName` | `boolean` | — | Append unique suffix (default: `true`) |
|
|
66
|
-
|
|
67
|
-
### Response
|
|
68
|
-
|
|
69
|
-
```ts
|
|
70
|
-
{
|
|
71
|
-
url: string; // CDN URL
|
|
72
|
-
fileId: string; // Pixxo asset ID
|
|
73
|
-
name: string; // Stored file name
|
|
74
|
-
fileType: string; // MIME type
|
|
75
|
-
size: number; // Size in bytes
|
|
76
|
-
folderId: string | null;
|
|
77
|
-
s3Key: string;
|
|
78
|
-
}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## Migration from ImageKit
|
|
82
|
-
|
|
83
|
-
```diff
|
|
84
|
-
- import ImageKit from "imagekit";
|
|
85
|
-
+ import Pixxo from "pixxo";
|
|
86
|
-
|
|
87
|
-
- const imagekit = new ImageKit({
|
|
88
|
-
- publicKey: "...",
|
|
89
|
-
- privateKey: "...",
|
|
90
|
-
- urlEndpoint: "...",
|
|
91
|
-
- });
|
|
92
|
-
+ const imagekit = new Pixxo({
|
|
93
|
-
+ email: "you@example.com",
|
|
94
|
-
+ password: "your-password",
|
|
95
|
-
+ });
|
|
96
|
-
|
|
97
|
-
// Everything else stays the same!
|
|
98
|
-
const result = await imagekit.upload({
|
|
99
|
-
file: buffer,
|
|
100
|
-
fileName: "photo.jpg",
|
|
101
|
-
folder: "/products",
|
|
102
|
-
});
|
|
103
|
-
console.log(result.url);
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## Features
|
|
107
|
-
|
|
108
|
-
- **Token caching** — authenticates once, reuses token until expiry
|
|
109
|
-
- **Automatic retry** — exponential back-off for S3 upload failures
|
|
110
|
-
- **Recursive folder creation** — deeply nested paths just work
|
|
111
|
-
- **Multiple file input types** — Buffer, base64, file path
|
|
112
|
-
- **ImageKit-compatible response** — `url`, `fileId`, `name`
|
|
113
|
-
- **Zero dependencies** — uses native `fetch` (Node 18+)
|
|
114
|
-
|
|
115
|
-
## License
|
|
116
|
-
|
|
117
|
-
MIT
|
|
42
|
+
|
|
43
|
+
## Constructor Options
|
|
44
|
+
|
|
45
|
+
| Option | Type | Required | Default | Description |
|
|
46
|
+
|---|---|---|---|---|
|
|
47
|
+
| `email` | `string` | ✅ | — | Pixxo account email |
|
|
48
|
+
| `password` | `string` | ✅ | — | Pixxo account password |
|
|
49
|
+
| `baseUrl` | `string` | — | `https://api.pixxo.io` | API base URL |
|
|
50
|
+
| `cdnDomain` | `string` | — | `px.pixxo.io` | CDN domain for returned URLs |
|
|
51
|
+
| `maxRetries` | `number` | — | `2` | Retry attempts for S3 upload failures |
|
|
52
|
+
| `publicKey` | `string` | — | — | *Ignored* (ImageKit compat) |
|
|
53
|
+
| `privateKey` | `string` | — | — | *Ignored* (ImageKit compat) |
|
|
54
|
+
| `urlEndpoint` | `string` | — | — | *Ignored* (ImageKit compat) |
|
|
55
|
+
|
|
56
|
+
## `upload(options)`
|
|
57
|
+
|
|
58
|
+
### Options
|
|
59
|
+
|
|
60
|
+
| Option | Type | Required | Description |
|
|
61
|
+
|---|---|---|---|
|
|
62
|
+
| `file` | `Buffer \| string` | ✅ | Buffer, base64 string, or file path |
|
|
63
|
+
| `fileName` | `string` | ✅ | File name with extension |
|
|
64
|
+
| `folder` | `string` | — | Destination folder (e.g. `"/receipts"`) |
|
|
65
|
+
| `useUniqueFileName` | `boolean` | — | Append unique suffix (default: `true`) |
|
|
66
|
+
|
|
67
|
+
### Response
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
{
|
|
71
|
+
url: string; // CDN URL
|
|
72
|
+
fileId: string; // Pixxo asset ID
|
|
73
|
+
name: string; // Stored file name
|
|
74
|
+
fileType: string; // MIME type
|
|
75
|
+
size: number; // Size in bytes
|
|
76
|
+
folderId: string | null;
|
|
77
|
+
s3Key: string;
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Migration from ImageKit
|
|
82
|
+
|
|
83
|
+
```diff
|
|
84
|
+
- import ImageKit from "imagekit";
|
|
85
|
+
+ import Pixxo from "pixxo";
|
|
86
|
+
|
|
87
|
+
- const imagekit = new ImageKit({
|
|
88
|
+
- publicKey: "...",
|
|
89
|
+
- privateKey: "...",
|
|
90
|
+
- urlEndpoint: "...",
|
|
91
|
+
- });
|
|
92
|
+
+ const imagekit = new Pixxo({
|
|
93
|
+
+ email: "you@example.com",
|
|
94
|
+
+ password: "your-password",
|
|
95
|
+
+ });
|
|
96
|
+
|
|
97
|
+
// Everything else stays the same!
|
|
98
|
+
const result = await imagekit.upload({
|
|
99
|
+
file: buffer,
|
|
100
|
+
fileName: "photo.jpg",
|
|
101
|
+
folder: "/products",
|
|
102
|
+
});
|
|
103
|
+
console.log(result.url);
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Features
|
|
107
|
+
|
|
108
|
+
- **Token caching** — authenticates once, reuses token until expiry
|
|
109
|
+
- **Automatic retry** — exponential back-off for S3 upload failures
|
|
110
|
+
- **Recursive folder creation** — deeply nested paths just work
|
|
111
|
+
- **Multiple file input types** — Buffer, base64, file path
|
|
112
|
+
- **ImageKit-compatible response** — `url`, `fileId`, `name`
|
|
113
|
+
- **Zero dependencies** — uses native `fetch` (Node 18+)
|
|
114
|
+
|
|
115
|
+
## License
|
|
116
|
+
|
|
117
|
+
MIT
|
package/dist/pixxo.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ declare class Pixxo {
|
|
|
9
9
|
private token;
|
|
10
10
|
/** Timestamp (ms) when the cached token expires */
|
|
11
11
|
private tokenExpiry;
|
|
12
|
+
/** Cached prefix (undefined = not fetched, null = no prefix set) */
|
|
13
|
+
private cachedPrefix;
|
|
12
14
|
constructor(config: PixxoConfig);
|
|
13
15
|
/**
|
|
14
16
|
* Get a valid JWT token, re‑authenticating only when needed.
|
|
@@ -39,6 +41,17 @@ declare class Pixxo {
|
|
|
39
41
|
* doesn't provide a CloudFront URL, e.g. on 409).
|
|
40
42
|
*/
|
|
41
43
|
private buildCdnUrl;
|
|
44
|
+
/**
|
|
45
|
+
* Fetch and cache the user's CDN prefix from the backend.
|
|
46
|
+
* Returns the prefix string if set, or null if none.
|
|
47
|
+
*/
|
|
48
|
+
private fetchPrefix;
|
|
49
|
+
/**
|
|
50
|
+
* If a prefix is set, rewrite the first path segment of the CDN URL
|
|
51
|
+
* from the userId to the prefix.
|
|
52
|
+
* e.g. https://px.pixxo.io/6989dc3f.../img.jpg → https://px.pixxo.io/sheryians/img.jpg
|
|
53
|
+
*/
|
|
54
|
+
private applyPrefix;
|
|
42
55
|
}
|
|
43
56
|
export = Pixxo;
|
|
44
57
|
//# sourceMappingURL=pixxo.d.ts.map
|
package/dist/pixxo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pixxo.d.ts","sourceRoot":"","sources":["../src/pixxo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pixxo.d.ts","sourceRoot":"","sources":["../src/pixxo.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,WAAW,EACX,aAAa,EACb,cAAc,EAEf,MAAM,SAAS,CAAC;AAajB,cAAM,KAAK;IACT,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,uBAAuB;IACvB,OAAO,CAAC,KAAK,CAAuB;IACpC,mDAAmD;IACnD,OAAO,CAAC,WAAW,CAAa;IAChC,oEAAoE;IACpE,OAAO,CAAC,YAAY,CAAwC;gBAEhD,MAAM,EAAE,WAAW;IAa/B;;OAEG;YACW,QAAQ;IAuBtB;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;YAyF/C,eAAe;IAyB7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAInB;;;OAGG;YACW,WAAW;IAczB;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAOpB;AAED,SAAS,KAAK,CAAC"}
|
package/dist/pixxo.js
CHANGED
|
@@ -4,7 +4,7 @@ const errors_1 = require("./errors");
|
|
|
4
4
|
const folder_1 = require("./folder");
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
6
|
// ─── Constants ─────────────────────────────────────────────────────────────
|
|
7
|
-
const DEFAULT_BASE_URL = "https://
|
|
7
|
+
const DEFAULT_BASE_URL = "https://pixxo.io";
|
|
8
8
|
const DEFAULT_CDN_DOMAIN = "px.pixxo.io";
|
|
9
9
|
const CLOUDFRONT_ORIGIN = "d10i6f9i6i5qro.cloudfront.net";
|
|
10
10
|
const TOKEN_SAFETY_MARGIN_MS = 5 * 60 * 1000; // refresh 5 min before expiry
|
|
@@ -21,6 +21,8 @@ class Pixxo {
|
|
|
21
21
|
token = null;
|
|
22
22
|
/** Timestamp (ms) when the cached token expires */
|
|
23
23
|
tokenExpiry = 0;
|
|
24
|
+
/** Cached prefix (undefined = not fetched, null = no prefix set) */
|
|
25
|
+
cachedPrefix = undefined;
|
|
24
26
|
constructor(config) {
|
|
25
27
|
if (!config.email)
|
|
26
28
|
throw new errors_1.PixxoError("email is required");
|
|
@@ -68,7 +70,7 @@ class Pixxo {
|
|
|
68
70
|
// ── Resolve file ─────────────────────────────────────────────────
|
|
69
71
|
const resolvedFile = (0, utils_1.resolveUploadFile)(options.file);
|
|
70
72
|
const buffer = resolvedFile.buffer;
|
|
71
|
-
const fileName = options.fileName;
|
|
73
|
+
const fileName = (0, utils_1.ensureFileExtension)(options.fileName, resolvedFile.extension);
|
|
72
74
|
const fileType = resolvedFile.mimeType || (0, utils_1.getMimeType)(fileName);
|
|
73
75
|
const fileSize = buffer.length;
|
|
74
76
|
// ── Normalise folder ─────────────────────────────────────────────
|
|
@@ -99,10 +101,13 @@ class Pixxo {
|
|
|
99
101
|
asset = await (0, http_1.postJSON)(`${this.baseUrl}/api/assets`, { fileName, fileType, fileSize, s3Key, s3Bucket, folderId }, token);
|
|
100
102
|
}
|
|
101
103
|
catch (err) {
|
|
102
|
-
// 409
|
|
104
|
+
// 409 fallback (safety net – backend now upserts on same s3Key so this
|
|
105
|
+
// path should not normally be reached)
|
|
103
106
|
if (err instanceof errors_1.PixxoError && err.status === 409) {
|
|
107
|
+
const prefix = await this.fetchPrefix(token);
|
|
108
|
+
const rawUrl = this.buildCdnUrl(s3Key);
|
|
104
109
|
return {
|
|
105
|
-
url: this.
|
|
110
|
+
url: prefix ? this.applyPrefix(rawUrl, prefix) : rawUrl,
|
|
106
111
|
fileId: "",
|
|
107
112
|
name: fileName,
|
|
108
113
|
fileType,
|
|
@@ -114,8 +119,10 @@ class Pixxo {
|
|
|
114
119
|
throw err;
|
|
115
120
|
}
|
|
116
121
|
const created = asset.data.asset;
|
|
122
|
+
const prefix = await this.fetchPrefix(token);
|
|
123
|
+
const rawUrl = this.rewriteCdnUrl(created.cloudfrontUrl);
|
|
117
124
|
return {
|
|
118
|
-
url: this.
|
|
125
|
+
url: prefix ? this.applyPrefix(rawUrl, prefix) : rawUrl,
|
|
119
126
|
fileId: created._id,
|
|
120
127
|
name: created.name,
|
|
121
128
|
fileType: created.type,
|
|
@@ -156,6 +163,31 @@ class Pixxo {
|
|
|
156
163
|
buildCdnUrl(s3Key) {
|
|
157
164
|
return `https://${this.cdnDomain}/${s3Key}`;
|
|
158
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Fetch and cache the user's CDN prefix from the backend.
|
|
168
|
+
* Returns the prefix string if set, or null if none.
|
|
169
|
+
*/
|
|
170
|
+
async fetchPrefix(token) {
|
|
171
|
+
if (this.cachedPrefix !== undefined)
|
|
172
|
+
return this.cachedPrefix;
|
|
173
|
+
try {
|
|
174
|
+
const res = await (0, http_1.getJSON)(`${this.baseUrl}/api/assets/prefix`, token);
|
|
175
|
+
this.cachedPrefix = res?.data?.prefix ?? null;
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
this.cachedPrefix = null;
|
|
179
|
+
}
|
|
180
|
+
return this.cachedPrefix;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* If a prefix is set, rewrite the first path segment of the CDN URL
|
|
184
|
+
* from the userId to the prefix.
|
|
185
|
+
* e.g. https://px.pixxo.io/6989dc3f.../img.jpg → https://px.pixxo.io/sheryians/img.jpg
|
|
186
|
+
*/
|
|
187
|
+
applyPrefix(url, prefix) {
|
|
188
|
+
// URL form: https://<domain>/<segment>/...
|
|
189
|
+
return url.replace(new RegExp(`^(https://${this.cdnDomain.replace('.', '\\.')}/)[^/]+/`), `$1${prefix}/`);
|
|
190
|
+
}
|
|
159
191
|
}
|
|
160
192
|
module.exports = Pixxo;
|
|
161
193
|
//# sourceMappingURL=pixxo.js.map
|
package/dist/pixxo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pixxo.js","sourceRoot":"","sources":["../src/pixxo.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"pixxo.js","sourceRoot":"","sources":["../src/pixxo.ts"],"names":[],"mappings":";AAAA,iCAAkD;AAClD,qCAAsC;AACtC,qCAA4C;AAC5C,mCAMiB;AAUjB,8EAA8E;AAE9E,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAC5C,MAAM,kBAAkB,GAAG,aAAa,CAAC;AACzC,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAC1D,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,8BAA8B;AAC5E,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,wBAAwB;AAC/E,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,8EAA8E;AAE9E,MAAM,KAAK;IACQ,KAAK,CAAS;IACd,QAAQ,CAAS;IACjB,OAAO,CAAS;IAChB,SAAS,CAAS;IAClB,UAAU,CAAS;IAEpC,uBAAuB;IACf,KAAK,GAAkB,IAAI,CAAC;IACpC,mDAAmD;IAC3C,WAAW,GAAW,CAAC,CAAC;IAChC,oEAAoE;IAC5D,YAAY,GAA8B,SAAS,CAAC;IAE5D,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,IAAI,mBAAU,CAAC,mBAAmB,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,IAAI,mBAAU,CAAC,sBAAsB,CAAC,CAAC;QAEnE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,mBAAmB,CAAC;IAC7D,CAAC;IAED,0EAA0E;IAE1E;;OAEG;IACK,KAAK,CAAC,QAAQ;QACpB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAA,eAAQ,EACxB,GAAG,IAAI,CAAC,OAAO,iBAAiB,EAChC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC/C,CAAC;QAEF,MAAM,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,mBAAU,CAAC,2CAA2C,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,yBAAyB,GAAG,sBAAsB,CAAC;QAEnF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0EAA0E;IAE1E;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,oEAAoE;QACpE,MAAM,YAAY,GAAG,IAAA,yBAAiB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAA,2BAAmB,EAClC,OAAO,CAAC,QAAQ,EAChB,YAAY,CAAC,SAAS,CACvB,CAAC;QACF,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,IAAI,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAE/B,oEAAoE;QACpE,MAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEvD,oEAAoE;QACpE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEpC,oEAAoE;QACpE,MAAM,aAAa,GAAG,UAAU;YAC9B,CAAC,CAAC,IAAA,yBAAgB,EAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;YACnD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1B,MAAM,gBAAgB,GAAG,IAAA,eAAQ,EAC/B,GAAG,IAAI,CAAC,OAAO,wBAAwB,EACvC;YACE,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,MAAM,EAAE,UAAU,IAAI,SAAS;YAC/B,cAAc,EAAE,OAAO,CAAC,iBAAiB,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAC3E,EACD,KAAK,CACN,CAAC;QAEF,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClD,aAAa;YACb,gBAAgB;SACjB,CAAC,CAAC;QAEH,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC;QAE1D,oEAAoE;QACpE,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAExD,oEAAoE;QACpE,IAAI,KAA0B,CAAC;QAE/B,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,IAAA,eAAQ,EACpB,GAAG,IAAI,CAAC,OAAO,aAAa,EAC5B,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAC3D,KAAK,CACN,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,uEAAuE;YACvE,uCAAuC;YACvC,IAAI,GAAG,YAAY,mBAAU,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACvC,OAAO;oBACL,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;oBACvD,MAAM,EAAE,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,QAAQ;oBACR,IAAI,EAAE,QAAQ;oBACd,QAAQ;oBACR,KAAK;iBACN,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACzD,OAAO;YACL,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;YACvD,MAAM,EAAE,OAAO,CAAC,GAAG;YACnB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,IAAI;YACtB,IAAI,EAAE,OAAO,CAAC,SAAS;YACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC;IACJ,CAAC;IAED,0EAA0E;IAElE,KAAK,CAAC,eAAe,CAC3B,SAAiB,EACjB,MAAc,EACd,WAAmB;QAEnB,IAAI,SAAkB,CAAC;QAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5D,IAAI,CAAC;gBACH,MAAM,IAAA,YAAK,EAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,GAAG,GAAG,CAAC;gBAChB,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC9B,wCAAwC;oBACxC,MAAM,IAAA,aAAK,EAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,SAAS,CAAC;IAClB,CAAC;IAED,0EAA0E;IAE1E;;OAEG;IACK,aAAa,CAAC,aAAqB;QACzC,OAAO,aAAa,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,KAAa;QAC/B,OAAO,WAAW,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,WAAW,CAAC,KAAa;QACrC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAA,cAAO,EACvB,GAAG,IAAI,CAAC,OAAO,oBAAoB,EACnC,KAAK,CACN,CAAC;YACF,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,GAAW,EAAE,MAAc;QAC7C,2CAA2C;QAC3C,OAAO,GAAG,CAAC,OAAO,CAChB,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,EACrE,KAAK,MAAM,GAAG,CACf,CAAC;IACJ,CAAC;CACF;AAED,iBAAS,KAAK,CAAC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -31,6 +31,17 @@ export declare function resolveUploadFile(file: Buffer | string): ResolvedUpload
|
|
|
31
31
|
* - file path → read from disk
|
|
32
32
|
*/
|
|
33
33
|
export declare function resolveFileToBuffer(file: Buffer | string): Buffer;
|
|
34
|
+
/**
|
|
35
|
+
* Ensure `fileName` ends with the correct extension. If the name already
|
|
36
|
+
* has a recognised extension, it is left untouched. Otherwise, the
|
|
37
|
+
* detected extension (if any) is appended.
|
|
38
|
+
*
|
|
39
|
+
* ensureFileExtension("avatar", "png") -> "avatar.png"
|
|
40
|
+
* ensureFileExtension("avatar.jpg", "png") -> "avatar.jpg"
|
|
41
|
+
* ensureFileExtension("my.course", "png") -> "my.course.png"
|
|
42
|
+
* ensureFileExtension("avatar", undefined) -> "avatar"
|
|
43
|
+
*/
|
|
44
|
+
export declare function ensureFileExtension(fileName: string, detectedExtension?: string): string;
|
|
34
45
|
/**
|
|
35
46
|
* Convert ImageKit‑style folder (`/receipts`) to Pixxo style (`receipts`).
|
|
36
47
|
* Also trims trailing slashes and collapses duplicate slashes.
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AA6CA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAuED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAeA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,kBAAkB,CA+B3E;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,CAWR;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
|
package/dist/utils.js
CHANGED
|
@@ -37,6 +37,7 @@ exports.getMimeType = getMimeType;
|
|
|
37
37
|
exports.decodeBase64Image = decodeBase64Image;
|
|
38
38
|
exports.resolveUploadFile = resolveUploadFile;
|
|
39
39
|
exports.resolveFileToBuffer = resolveFileToBuffer;
|
|
40
|
+
exports.ensureFileExtension = ensureFileExtension;
|
|
40
41
|
exports.normalizeFolderPath = normalizeFolderPath;
|
|
41
42
|
exports.sleep = sleep;
|
|
42
43
|
const fs = __importStar(require("fs"));
|
|
@@ -195,6 +196,30 @@ function resolveUploadFile(file) {
|
|
|
195
196
|
function resolveFileToBuffer(file) {
|
|
196
197
|
return resolveUploadFile(file).buffer;
|
|
197
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Ensure `fileName` ends with the correct extension. If the name already
|
|
201
|
+
* has a recognised extension, it is left untouched. Otherwise, the
|
|
202
|
+
* detected extension (if any) is appended.
|
|
203
|
+
*
|
|
204
|
+
* ensureFileExtension("avatar", "png") -> "avatar.png"
|
|
205
|
+
* ensureFileExtension("avatar.jpg", "png") -> "avatar.jpg"
|
|
206
|
+
* ensureFileExtension("my.course", "png") -> "my.course.png"
|
|
207
|
+
* ensureFileExtension("avatar", undefined) -> "avatar"
|
|
208
|
+
*/
|
|
209
|
+
function ensureFileExtension(fileName, detectedExtension) {
|
|
210
|
+
if (!fileName)
|
|
211
|
+
return fileName;
|
|
212
|
+
const existingExt = path.extname(fileName).toLowerCase();
|
|
213
|
+
// Only treat as "already has extension" if it's a known one
|
|
214
|
+
if (existingExt && MIME_MAP[existingExt])
|
|
215
|
+
return fileName;
|
|
216
|
+
if (!detectedExtension)
|
|
217
|
+
return fileName;
|
|
218
|
+
const ext = detectedExtension.replace(/^\.+/, "").toLowerCase();
|
|
219
|
+
if (!ext)
|
|
220
|
+
return fileName;
|
|
221
|
+
return `${fileName}.${ext}`;
|
|
222
|
+
}
|
|
198
223
|
// ─── Folder path normalisation ─────────────────────────────────────────────
|
|
199
224
|
/**
|
|
200
225
|
* Convert ImageKit‑style folder (`/receipts`) to Pixxo style (`receipts`).
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@sarangkale66/pixxo-sdk-node",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Pixxo Node.js SDK — drop-in replacement for ImageKit SDK",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"files": [
|
|
8
|
-
"dist"
|
|
9
|
-
],
|
|
10
|
-
"scripts": {
|
|
11
|
-
"build": "tsc",
|
|
12
|
-
"prepublishOnly": "npm run build",
|
|
13
|
-
"typecheck": "tsc --noEmit"
|
|
14
|
-
},
|
|
15
|
-
"keywords": [
|
|
16
|
-
"pixxo",
|
|
17
|
-
"imagekit",
|
|
18
|
-
"image",
|
|
19
|
-
"upload",
|
|
20
|
-
"cdn",
|
|
21
|
-
"asset-management",
|
|
22
|
-
"s3"
|
|
23
|
-
],
|
|
24
|
-
"author": "",
|
|
25
|
-
"license": "MIT",
|
|
26
|
-
"devDependencies": {
|
|
27
|
-
"@types/node": "^20.12.0",
|
|
28
|
-
"typescript": "^5.4.5"
|
|
29
|
-
},
|
|
30
|
-
"engines": {
|
|
31
|
-
"node": ">=18.0.0"
|
|
32
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@sarangkale66/pixxo-sdk-node",
|
|
3
|
+
"version": "1.0.4",
|
|
4
|
+
"description": "Pixxo Node.js SDK — drop-in replacement for ImageKit SDK",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"prepublishOnly": "npm run build",
|
|
13
|
+
"typecheck": "tsc --noEmit"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"pixxo",
|
|
17
|
+
"imagekit",
|
|
18
|
+
"image",
|
|
19
|
+
"upload",
|
|
20
|
+
"cdn",
|
|
21
|
+
"asset-management",
|
|
22
|
+
"s3"
|
|
23
|
+
],
|
|
24
|
+
"author": "",
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/node": "^20.12.0",
|
|
28
|
+
"typescript": "^5.4.5"
|
|
29
|
+
},
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=18.0.0"
|
|
32
|
+
}
|
|
33
33
|
}
|