@chanomhub/sdk 1.3.13 → 1.3.15
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/__tests__/downloadUrl.test.d.ts +2 -0
- package/dist/__tests__/downloadUrl.test.d.ts.map +1 -0
- package/dist/__tests__/downloadUrl.test.js +56 -0
- package/dist/__tests__/downloadUrl.test.js.map +1 -0
- package/dist/__tests__/imageUrl.test.js +16 -0
- package/dist/__tests__/imageUrl.test.js.map +1 -1
- package/dist/__tests__/mocks/handlers.d.ts.map +1 -1
- package/dist/__tests__/mocks/handlers.js +75 -22
- package/dist/__tests__/mocks/handlers.js.map +1 -1
- package/dist/__tests__/repositories.test.js +10 -0
- package/dist/__tests__/repositories.test.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -6
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/repositories/articleRepository.d.ts +2 -1
- package/dist/repositories/articleRepository.d.ts.map +1 -1
- package/dist/repositories/articleRepository.js +34 -14
- package/dist/repositories/articleRepository.js.map +1 -1
- package/dist/repositories/downloadsRepository.d.ts.map +1 -1
- package/dist/repositories/downloadsRepository.js +15 -9
- package/dist/repositories/downloadsRepository.js.map +1 -1
- package/dist/repositories/searchRepository.d.ts +2 -1
- package/dist/repositories/searchRepository.d.ts.map +1 -1
- package/dist/repositories/searchRepository.js +4 -2
- package/dist/repositories/searchRepository.js.map +1 -1
- package/dist/repositories/sponsoredArticlesRepository.d.ts.map +1 -1
- package/dist/repositories/sponsoredArticlesRepository.js +7 -4
- package/dist/repositories/sponsoredArticlesRepository.js.map +1 -1
- package/dist/repositories/usersRepository.d.ts +2 -1
- package/dist/repositories/usersRepository.d.ts.map +1 -1
- package/dist/repositories/usersRepository.js +6 -7
- package/dist/repositories/usersRepository.js.map +1 -1
- package/dist/transforms/downloadUrl.d.ts +20 -0
- package/dist/transforms/downloadUrl.d.ts.map +1 -0
- package/dist/transforms/downloadUrl.js +65 -0
- package/dist/transforms/downloadUrl.js.map +1 -0
- package/dist/transforms/imageUrl.d.ts.map +1 -1
- package/dist/transforms/imageUrl.js +5 -0
- package/dist/transforms/imageUrl.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Download URL Transformation
|
|
4
|
+
*
|
|
5
|
+
* Resolves relative storage paths to full download URLs
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.resolveDownloadUrl = resolveDownloadUrl;
|
|
9
|
+
exports.transformDownloadUrlsDeep = transformDownloadUrlsDeep;
|
|
10
|
+
const config_1 = require("../config");
|
|
11
|
+
/** Default storage download URL */
|
|
12
|
+
const DEFAULT_STORAGE_DOWNLOAD_URL = config_1.DEFAULT_CONFIG.storageDownloadUrl || 'https://storage.chanomhub.com';
|
|
13
|
+
/**
|
|
14
|
+
* Resolves a download URL.
|
|
15
|
+
* - If it's a relative storage path (e.g. "public/abc.zip"), prepends storageDownloadUrl
|
|
16
|
+
* - If it's already a full URL, returns it as-is
|
|
17
|
+
* - Handles null/undefined gracefully
|
|
18
|
+
*
|
|
19
|
+
* @param url - Download path or full URL
|
|
20
|
+
* @param storageDownloadUrl - Public storage base URL
|
|
21
|
+
*/
|
|
22
|
+
function resolveDownloadUrl(url, storageDownloadUrl = DEFAULT_STORAGE_DOWNLOAD_URL) {
|
|
23
|
+
if (!url)
|
|
24
|
+
return null;
|
|
25
|
+
// Already a full URL - return as-is
|
|
26
|
+
if (url.startsWith('http://') || url.startsWith('https://')) {
|
|
27
|
+
return url;
|
|
28
|
+
}
|
|
29
|
+
// Relative path - prepend storage URL
|
|
30
|
+
// Ensure no double slashes
|
|
31
|
+
const baseUrl = storageDownloadUrl.endsWith('/') ? storageDownloadUrl.slice(0, -1) : storageDownloadUrl;
|
|
32
|
+
const path = url.startsWith('/') ? url : `/${url}`;
|
|
33
|
+
return `${baseUrl}${path}`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Deep transforms all download URLs in an object/array recursively.
|
|
37
|
+
*/
|
|
38
|
+
function transformDownloadUrlsDeep(data, storageDownloadUrl = DEFAULT_STORAGE_DOWNLOAD_URL) {
|
|
39
|
+
if (data === null || data === undefined)
|
|
40
|
+
return data;
|
|
41
|
+
if (Array.isArray(data)) {
|
|
42
|
+
return data.map((item) => transformDownloadUrlsDeep(item, storageDownloadUrl));
|
|
43
|
+
}
|
|
44
|
+
if (typeof data === 'object') {
|
|
45
|
+
const result = {};
|
|
46
|
+
for (const [key, value] of Object.entries(data)) {
|
|
47
|
+
// Transform 'url' field if it's within a 'downloads' or 'officialDownloadSources' context
|
|
48
|
+
// or if it's a field we know contains a download URL
|
|
49
|
+
if (key === 'url' && typeof value === 'string' && !value.startsWith('http')) {
|
|
50
|
+
// This is a bit aggressive, but typically in download objects, 'url' is the download link
|
|
51
|
+
result[key] = resolveDownloadUrl(value, storageDownloadUrl);
|
|
52
|
+
}
|
|
53
|
+
// Recursively transform nested objects
|
|
54
|
+
else if (value !== null && typeof value === 'object') {
|
|
55
|
+
result[key] = transformDownloadUrlsDeep(value, storageDownloadUrl);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
result[key] = value;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
return data;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=downloadUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"downloadUrl.js","sourceRoot":"","sources":["../../transforms/downloadUrl.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAgBH,gDAiBC;AAKD,8DA6BC;AAjED,sCAA2C;AAE3C,mCAAmC;AACnC,MAAM,4BAA4B,GAAG,uBAAc,CAAC,kBAAkB,IAAI,+BAA+B,CAAC;AAE1G;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAC9B,GAA8B,EAC9B,qBAA6B,4BAA4B;IAEzD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,oCAAoC;IACpC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1D,OAAO,GAAG,CAAC;IACf,CAAC;IAED,sCAAsC;IACtC,2BAA2B;IAC3B,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACxG,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IAEnD,OAAO,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAI,IAAO,EAAE,qBAA6B,4BAA4B;IAC3G,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAErD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAM,CAAC;IACxF,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,MAAM,GAA4B,EAAE,CAAC;QAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAA+B,CAAC,EAAE,CAAC;YACzE,0FAA0F;YAC1F,qDAAqD;YACrD,IAAI,GAAG,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1E,0FAA0F;gBAC1F,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;YAChE,CAAC;YACD,uCAAuC;iBAClC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACnD,MAAM,CAAC,GAAG,CAAC,GAAG,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACxB,CAAC;QACL,CAAC;QAED,OAAO,MAAW,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageUrl.d.ts","sourceRoot":"","sources":["../../transforms/imageUrl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAA4B,MAAM,WAAW,CAAC;AAKtE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,eAAoB,GAAG,MAAM,CAyCvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,MAA4B,EACxC,OAAO,GAAE,eAA0C,GACpD,MAAM,GAAG,IAAI,CAyBf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,MAA4B,GACzC,MAAM,GAAG,IAAI,CAgCf;AAKD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"imageUrl.d.ts","sourceRoot":"","sources":["../../transforms/imageUrl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAA4B,MAAM,WAAW,CAAC;AAKtE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,eAAoB,GAAG,MAAM,CAyCvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,MAA4B,EACxC,OAAO,GAAE,eAA0C,GACpD,MAAM,GAAG,IAAI,CAyBf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,MAA4B,GACzC,MAAM,GAAG,IAAI,CAgCf;AAKD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CA0CpE"}
|
|
@@ -139,6 +139,11 @@ function transformImageUrlsDeep(data, cdnUrl) {
|
|
|
139
139
|
}
|
|
140
140
|
if (typeof data === 'object') {
|
|
141
141
|
const result = {};
|
|
142
|
+
// Skip transformation for objects that look like download links
|
|
143
|
+
// (they have a 'url' but it's not an image, and they have 'vipOnly' or 'isActive')
|
|
144
|
+
if ('url' in data && ('vipOnly' in data || 'isActive' in data)) {
|
|
145
|
+
return data;
|
|
146
|
+
}
|
|
142
147
|
for (const [key, value] of Object.entries(data)) {
|
|
143
148
|
// Transform known image URL fields
|
|
144
149
|
if (IMAGE_FIELDS.has(key) && typeof value === 'string') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageUrl.js","sourceRoot":"","sources":["../../transforms/imageUrl.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAWH,8CAyCC;AAeD,0CA8BC;AAaD,wCAoCC;AAQD,
|
|
1
|
+
{"version":3,"file":"imageUrl.js","sourceRoot":"","sources":["../../transforms/imageUrl.ts"],"names":[],"mappings":"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"}
|