@sarangkale66/pixxo-sdk-node 1.0.3 → 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/dist/pixxo.d.ts +13 -0
- package/dist/pixxo.d.ts.map +1 -1
- package/dist/pixxo.js +36 -4
- package/dist/pixxo.js.map +1 -1
- package/package.json +1 -1
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":"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;
|
|
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");
|
|
@@ -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"}
|