@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 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
@@ -1 +1 @@
1
- {"version":3,"file":"pixxo.d.ts","sourceRoot":"","sources":["../src/pixxo.ts"],"names":[],"mappings":"AASA,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;gBAEpB,MAAM,EAAE,WAAW;IAa/B;;OAEG;YACW,QAAQ;IAuBtB;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;YAiF/C,eAAe;IAyB7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACH,OAAO,CAAC,WAAW;CAGpB;AAED,SAAS,KAAK,CAAC"}
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://api.pixxo.io";
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 = asset already exists treat as success for idempotency
104
+ // 409 fallback (safety netbackend 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.buildCdnUrl(s3Key),
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.rewriteCdnUrl(created.cloudfrontUrl),
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":"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"}
1
+ {"version":3,"file":"pixxo.js","sourceRoot":"","sources":["../src/pixxo.ts"],"names":[],"mappings":"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"}
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.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AA8CA;;;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;AAwED,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;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"}
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":"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"}
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.2",
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
  }