@sentroy-co/client-sdk 2.1.0 → 2.2.1
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 +139 -2
- package/dist/react/MediaManager.d.ts +69 -0
- package/dist/react/MediaManager.d.ts.map +1 -0
- package/dist/react/MediaManager.js +216 -0
- package/dist/react/MediaManager.js.map +1 -0
- package/dist/react/index.d.ts +4 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +13 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/lib/Lightbox.d.ts +18 -0
- package/dist/react/lib/Lightbox.d.ts.map +1 -0
- package/dist/react/lib/Lightbox.js +40 -0
- package/dist/react/lib/Lightbox.js.map +1 -0
- package/dist/react/lib/use-media-list.d.ts +21 -0
- package/dist/react/lib/use-media-list.d.ts.map +1 -0
- package/dist/react/lib/use-media-list.js +50 -0
- package/dist/react/lib/use-media-list.js.map +1 -0
- package/dist/react/lib/utils.d.ts +17 -0
- package/dist/react/lib/utils.d.ts.map +1 -0
- package/dist/react/lib/utils.js +62 -0
- package/dist/react/lib/utils.js.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +40 -4
- package/src/http.ts +151 -0
- package/src/index.ts +106 -0
- package/src/react/MediaManager.tsx +628 -0
- package/src/react/index.ts +13 -0
- package/src/react/lib/Lightbox.tsx +162 -0
- package/src/react/lib/use-media-list.ts +54 -0
- package/src/react/lib/utils.ts +73 -0
- package/src/resources/buckets.ts +50 -0
- package/src/resources/domains.ts +16 -0
- package/src/resources/inbox.ts +99 -0
- package/src/resources/mailboxes.ts +11 -0
- package/src/resources/media.ts +115 -0
- package/src/resources/send.ts +11 -0
- package/src/resources/storage.ts +28 -0
- package/src/resources/templates.ts +16 -0
- package/src/types.ts +316 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useMediaList = useMediaList;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
/**
|
|
6
|
+
* Bir bucket'taki media listesini çeken hook. Search, kind filter ve
|
|
7
|
+
* folder filter local-side; SDK'nın list endpoint'i şimdilik bunları
|
|
8
|
+
* server-side desteklemiyor (genelde 100-200 dosyalık küçük scale,
|
|
9
|
+
* client-side OK). Büyük scale'de paginate + server filter eklenir.
|
|
10
|
+
*/
|
|
11
|
+
function useMediaList(args) {
|
|
12
|
+
const { client, bucketSlug, refreshKey = 0 } = args;
|
|
13
|
+
const [data, setData] = (0, react_1.useState)(null);
|
|
14
|
+
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
15
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
16
|
+
(0, react_1.useEffect)(() => {
|
|
17
|
+
if (!bucketSlug) {
|
|
18
|
+
setData(null);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
let cancelled = false;
|
|
22
|
+
setLoading(true);
|
|
23
|
+
setError(null);
|
|
24
|
+
client.media
|
|
25
|
+
.list(bucketSlug, { limit: 200 })
|
|
26
|
+
.then((res) => {
|
|
27
|
+
if (cancelled)
|
|
28
|
+
return;
|
|
29
|
+
setData(res);
|
|
30
|
+
})
|
|
31
|
+
.catch((err) => {
|
|
32
|
+
if (cancelled)
|
|
33
|
+
return;
|
|
34
|
+
setError(err instanceof Error ? err.message : "Failed to load media");
|
|
35
|
+
})
|
|
36
|
+
.finally(() => {
|
|
37
|
+
if (!cancelled)
|
|
38
|
+
setLoading(false);
|
|
39
|
+
});
|
|
40
|
+
return () => {
|
|
41
|
+
cancelled = true;
|
|
42
|
+
};
|
|
43
|
+
}, [client, bucketSlug, refreshKey]);
|
|
44
|
+
const refresh = (0, react_1.useCallback)(() => {
|
|
45
|
+
// Caller kendi refreshKey'ini bump'lar; bu sadece convenience.
|
|
46
|
+
setData((d) => d);
|
|
47
|
+
}, []);
|
|
48
|
+
return { data, items: data?.items ?? [], loading, error, refresh };
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=use-media-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-media-list.js","sourceRoot":"","sources":["../../../src/react/lib/use-media-list.ts"],"names":[],"mappings":";;AAUA,oCA2CC;AArDD,iCAAwD;AAIxD;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,IAK5B;IACC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAA;IACnD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAyB,IAAI,CAAC,CAAA;IAC9D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAgB,IAAI,CAAC,CAAA;IAEvD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAA;YACb,OAAM;QACR,CAAC;QACD,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,UAAU,CAAC,IAAI,CAAC,CAAA;QAChB,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,CAAC,KAAK;aACT,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;aAChC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,SAAS;gBAAE,OAAM;YACrB,OAAO,CAAC,GAAG,CAAC,CAAA;QACd,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,IAAI,SAAS;gBAAE,OAAM;YACrB,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAA;QACvE,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS;gBAAE,UAAU,CAAC,KAAK,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QACJ,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;IAEpC,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC/B,+DAA+D;QAC/D,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAK,EAAc,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;AACjF,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal class name combiner — clsx + twMerge gibi davranır ama
|
|
3
|
+
* dependency yok. Falsy filtrele, dedup yapma. Tema override'larında
|
|
4
|
+
* Tailwind utility çakışmaları için consumer kendi cn'ini kullanırsa
|
|
5
|
+
* `className` prop'u son geldiği için doğal şekilde kazanır.
|
|
6
|
+
*/
|
|
7
|
+
export declare function cn(...args: Array<string | undefined | null | false | 0>): string;
|
|
8
|
+
export declare function formatBytes(bytes: number, decimals?: number): string;
|
|
9
|
+
/** İlk image-like extension veya MIME → "image", "video", "audio", "pdf",
|
|
10
|
+
* "doc" (word/excel/ppt), "archive", "code", "other". */
|
|
11
|
+
export declare function detectKind(file: {
|
|
12
|
+
mimeType?: string | null;
|
|
13
|
+
fileName?: string;
|
|
14
|
+
}): MediaKind;
|
|
15
|
+
export type MediaKind = "image" | "video" | "audio" | "pdf" | "doc" | "archive" | "code" | "other";
|
|
16
|
+
export declare const KIND_LABELS: Record<MediaKind, string>;
|
|
17
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/react/lib/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,EAAE,CAChB,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,GACpD,MAAM,CAER;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,MAAM,CAU/D;AAED;0DAC0D;AAC1D,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,SAAS,CAsBZ;AAED,MAAM,MAAM,SAAS,GACjB,OAAO,GACP,OAAO,GACP,OAAO,GACP,KAAK,GACL,KAAK,GACL,SAAS,GACT,MAAM,GACN,OAAO,CAAA;AAEX,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CASjD,CAAA"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KIND_LABELS = void 0;
|
|
4
|
+
exports.cn = cn;
|
|
5
|
+
exports.formatBytes = formatBytes;
|
|
6
|
+
exports.detectKind = detectKind;
|
|
7
|
+
/**
|
|
8
|
+
* Minimal class name combiner — clsx + twMerge gibi davranır ama
|
|
9
|
+
* dependency yok. Falsy filtrele, dedup yapma. Tema override'larında
|
|
10
|
+
* Tailwind utility çakışmaları için consumer kendi cn'ini kullanırsa
|
|
11
|
+
* `className` prop'u son geldiği için doğal şekilde kazanır.
|
|
12
|
+
*/
|
|
13
|
+
function cn(...args) {
|
|
14
|
+
return args.filter(Boolean).join(" ");
|
|
15
|
+
}
|
|
16
|
+
function formatBytes(bytes, decimals = 1) {
|
|
17
|
+
if (!bytes)
|
|
18
|
+
return "0 B";
|
|
19
|
+
const units = ["B", "KB", "MB", "GB", "TB"];
|
|
20
|
+
let i = 0;
|
|
21
|
+
let v = bytes;
|
|
22
|
+
while (v >= 1024 && i < units.length - 1) {
|
|
23
|
+
v /= 1024;
|
|
24
|
+
i++;
|
|
25
|
+
}
|
|
26
|
+
return `${Number.isInteger(v) ? v : v.toFixed(decimals)} ${units[i]}`;
|
|
27
|
+
}
|
|
28
|
+
/** İlk image-like extension veya MIME → "image", "video", "audio", "pdf",
|
|
29
|
+
* "doc" (word/excel/ppt), "archive", "code", "other". */
|
|
30
|
+
function detectKind(file) {
|
|
31
|
+
const mt = (file.mimeType ?? "").toLowerCase();
|
|
32
|
+
const ext = (file.fileName ?? "").split(".").pop()?.toLowerCase() ?? "";
|
|
33
|
+
if (mt.startsWith("image/"))
|
|
34
|
+
return "image";
|
|
35
|
+
if (mt.startsWith("video/"))
|
|
36
|
+
return "video";
|
|
37
|
+
if (mt.startsWith("audio/"))
|
|
38
|
+
return "audio";
|
|
39
|
+
if (mt === "application/pdf" || ext === "pdf")
|
|
40
|
+
return "pdf";
|
|
41
|
+
if (/^(doc|docx|xls|xlsx|ppt|pptx|odt|ods|odp|txt|md|csv)$/.test(ext) ||
|
|
42
|
+
mt.startsWith("application/vnd.")) {
|
|
43
|
+
return "doc";
|
|
44
|
+
}
|
|
45
|
+
if (/^(zip|tar|gz|7z|rar|bz2)$/.test(ext))
|
|
46
|
+
return "archive";
|
|
47
|
+
if (/^(js|ts|tsx|jsx|json|html|css|scss|sh|py|go|rb|php|rs|java|c|cpp)$/.test(ext)) {
|
|
48
|
+
return "code";
|
|
49
|
+
}
|
|
50
|
+
return "other";
|
|
51
|
+
}
|
|
52
|
+
exports.KIND_LABELS = {
|
|
53
|
+
image: "Image",
|
|
54
|
+
video: "Video",
|
|
55
|
+
audio: "Audio",
|
|
56
|
+
pdf: "PDF",
|
|
57
|
+
doc: "Document",
|
|
58
|
+
archive: "Archive",
|
|
59
|
+
code: "Code",
|
|
60
|
+
other: "Other",
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/react/lib/utils.ts"],"names":[],"mappings":";;;AAMA,gBAIC;AAED,kCAUC;AAID,gCAyBC;AAnDD;;;;;GAKG;AACH,SAAgB,EAAE,CAChB,GAAG,IAAkD;IAErD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACvC,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa,EAAE,QAAQ,GAAG,CAAC;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IACxB,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAC3C,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,CAAC,GAAG,KAAK,CAAA;IACb,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,CAAC,IAAI,IAAI,CAAA;QACT,CAAC,EAAE,CAAA;IACL,CAAC;IACD,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AACvE,CAAC;AAED;0DAC0D;AAC1D,SAAgB,UAAU,CAAC,IAG1B;IACC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAC9C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IACvE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAA;IAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAA;IAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAA;IAC3C,IAAI,EAAE,KAAK,iBAAiB,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IAC3D,IACE,uDAAuD,CAAC,IAAI,CAAC,GAAG,CAAC;QACjE,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EACjC,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3D,IACE,oEAAoE,CAAC,IAAI,CACvE,GAAG,CACJ,EACD,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAYY,QAAA,WAAW,GAA8B;IACpD,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,UAAU;IACf,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACf,CAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -191,6 +191,11 @@ export interface Media {
|
|
|
191
191
|
caption?: string;
|
|
192
192
|
isPublic: boolean;
|
|
193
193
|
imageMeta?: MediaImageMeta;
|
|
194
|
+
/** Public bucket'larda direct CDN URL — server response'undan gelir
|
|
195
|
+
* (her zaman değil). Yoksa caller proxy/download endpoint'i kullanmalı. */
|
|
196
|
+
url?: string;
|
|
197
|
+
/** Auth'lu download URL — short-lived signed link veya proxy. */
|
|
198
|
+
downloadUrl?: string;
|
|
194
199
|
createdAt: string;
|
|
195
200
|
updatedAt: string;
|
|
196
201
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentroy-co/client-sdk",
|
|
3
|
-
"version": "2.1
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.2.1",
|
|
4
|
+
"description": "TypeScript SDK for the Sentroy platform — REST resources + React components.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./react": {
|
|
14
|
+
"types": "./dist/react/index.d.ts",
|
|
15
|
+
"import": "./dist/react/index.js",
|
|
16
|
+
"require": "./dist/react/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./types": {
|
|
19
|
+
"types": "./dist/types.d.ts",
|
|
20
|
+
"import": "./dist/types.js",
|
|
21
|
+
"require": "./dist/types.js"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
7
24
|
"files": [
|
|
8
|
-
"dist"
|
|
25
|
+
"dist",
|
|
26
|
+
"src"
|
|
9
27
|
],
|
|
10
28
|
"scripts": {
|
|
11
29
|
"build": "tsc",
|
|
@@ -17,7 +35,9 @@
|
|
|
17
35
|
"sdk",
|
|
18
36
|
"api",
|
|
19
37
|
"mail",
|
|
20
|
-
"typescript"
|
|
38
|
+
"typescript",
|
|
39
|
+
"react",
|
|
40
|
+
"media-manager"
|
|
21
41
|
],
|
|
22
42
|
"repository": {
|
|
23
43
|
"type": "git",
|
|
@@ -32,8 +52,24 @@
|
|
|
32
52
|
"engines": {
|
|
33
53
|
"node": ">=18.0.0"
|
|
34
54
|
},
|
|
55
|
+
"peerDependencies": {
|
|
56
|
+
"react": ">=18.0.0",
|
|
57
|
+
"react-dom": ">=18.0.0"
|
|
58
|
+
},
|
|
59
|
+
"peerDependenciesMeta": {
|
|
60
|
+
"react": {
|
|
61
|
+
"optional": true
|
|
62
|
+
},
|
|
63
|
+
"react-dom": {
|
|
64
|
+
"optional": true
|
|
65
|
+
}
|
|
66
|
+
},
|
|
35
67
|
"devDependencies": {
|
|
36
68
|
"@types/node": "^25.6.0",
|
|
69
|
+
"@types/react": "^19.0.0",
|
|
70
|
+
"@types/react-dom": "^19.0.0",
|
|
71
|
+
"react": "^19.0.0",
|
|
72
|
+
"react-dom": "^19.0.0",
|
|
37
73
|
"typescript": "^5.5.4"
|
|
38
74
|
}
|
|
39
75
|
}
|
package/src/http.ts
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import type { ApiResponse } from "./types"
|
|
2
|
+
|
|
3
|
+
export class SentroyError extends Error {
|
|
4
|
+
constructor(
|
|
5
|
+
public readonly statusCode: number,
|
|
6
|
+
public readonly body: unknown,
|
|
7
|
+
message?: string,
|
|
8
|
+
) {
|
|
9
|
+
super(message || `Sentroy API error (${statusCode})`)
|
|
10
|
+
this.name = "SentroyError"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class HttpClient {
|
|
15
|
+
private baseUrl: string
|
|
16
|
+
private token: string
|
|
17
|
+
private timeout: number
|
|
18
|
+
|
|
19
|
+
constructor(baseUrl: string, token: string, timeout = 30_000) {
|
|
20
|
+
this.baseUrl = baseUrl.replace(/\/+$/, "")
|
|
21
|
+
this.token = token
|
|
22
|
+
this.timeout = timeout
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
private buildUrl(path: string, query?: Record<string, unknown>): string {
|
|
26
|
+
const url = new URL(`${this.baseUrl}${path}`)
|
|
27
|
+
if (query) {
|
|
28
|
+
for (const [key, value] of Object.entries(query)) {
|
|
29
|
+
if (value !== undefined && value !== null) {
|
|
30
|
+
url.searchParams.set(key, String(value))
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return url.toString()
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Raw fetch — JSON parse etmez, Response döner. Binary endpoint'ler
|
|
39
|
+
* (media download) için kullanılır. Authorization header eklenir.
|
|
40
|
+
*/
|
|
41
|
+
async fetchRaw(
|
|
42
|
+
path: string,
|
|
43
|
+
init?: { method?: string; query?: Record<string, unknown> },
|
|
44
|
+
): Promise<Response> {
|
|
45
|
+
const url = this.buildUrl(path, init?.query)
|
|
46
|
+
const controller = new AbortController()
|
|
47
|
+
const timer = setTimeout(() => controller.abort(), this.timeout)
|
|
48
|
+
try {
|
|
49
|
+
return await fetch(url, {
|
|
50
|
+
method: init?.method || "GET",
|
|
51
|
+
headers: { Authorization: `Bearer ${this.token}` },
|
|
52
|
+
signal: controller.signal,
|
|
53
|
+
})
|
|
54
|
+
} finally {
|
|
55
|
+
clearTimeout(timer)
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
private async request<T>(
|
|
60
|
+
method: string,
|
|
61
|
+
path: string,
|
|
62
|
+
options?: {
|
|
63
|
+
query?: Record<string, unknown>
|
|
64
|
+
body?: unknown
|
|
65
|
+
},
|
|
66
|
+
): Promise<T> {
|
|
67
|
+
const url = this.buildUrl(path, options?.query)
|
|
68
|
+
const controller = new AbortController()
|
|
69
|
+
const timer = setTimeout(() => controller.abort(), this.timeout)
|
|
70
|
+
|
|
71
|
+
try {
|
|
72
|
+
const headers: Record<string, string> = {
|
|
73
|
+
Authorization: `Bearer ${this.token}`,
|
|
74
|
+
}
|
|
75
|
+
if (options?.body) {
|
|
76
|
+
headers["Content-Type"] = "application/json"
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const res = await fetch(url, {
|
|
80
|
+
method,
|
|
81
|
+
headers,
|
|
82
|
+
body: options?.body ? JSON.stringify(options.body) : undefined,
|
|
83
|
+
signal: controller.signal,
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
const json = (await res.json()) as ApiResponse<T>
|
|
87
|
+
|
|
88
|
+
if (!res.ok) {
|
|
89
|
+
throw new SentroyError(
|
|
90
|
+
res.status,
|
|
91
|
+
json,
|
|
92
|
+
json.error || `Request failed with status ${res.status}`,
|
|
93
|
+
)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return json.data
|
|
97
|
+
} finally {
|
|
98
|
+
clearTimeout(timer)
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
async get<T>(path: string, query?: Record<string, unknown>): Promise<T> {
|
|
103
|
+
return this.request<T>("GET", path, { query })
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
async post<T>(path: string, body?: unknown): Promise<T> {
|
|
107
|
+
return this.request<T>("POST", path, { body })
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async put<T>(path: string, body?: unknown): Promise<T> {
|
|
111
|
+
return this.request<T>("PUT", path, { body })
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
async patch<T>(path: string, body?: unknown): Promise<T> {
|
|
115
|
+
return this.request<T>("PATCH", path, { body })
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async del<T>(path: string, query?: Record<string, unknown>): Promise<T> {
|
|
119
|
+
return this.request<T>("DELETE", path, { query })
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Multipart upload. Body is a FormData; we deliberately do not set
|
|
124
|
+
* Content-Type so the runtime (browser or Node undici) writes the
|
|
125
|
+
* correct `multipart/form-data; boundary=...` header.
|
|
126
|
+
*/
|
|
127
|
+
async postForm<T>(path: string, form: FormData): Promise<T> {
|
|
128
|
+
const url = this.buildUrl(path)
|
|
129
|
+
const controller = new AbortController()
|
|
130
|
+
const timer = setTimeout(() => controller.abort(), this.timeout)
|
|
131
|
+
try {
|
|
132
|
+
const res = await fetch(url, {
|
|
133
|
+
method: "POST",
|
|
134
|
+
headers: { Authorization: `Bearer ${this.token}` },
|
|
135
|
+
body: form,
|
|
136
|
+
signal: controller.signal,
|
|
137
|
+
})
|
|
138
|
+
const json = (await res.json()) as { data: T; error?: string }
|
|
139
|
+
if (!res.ok) {
|
|
140
|
+
throw new SentroyError(
|
|
141
|
+
res.status,
|
|
142
|
+
json,
|
|
143
|
+
json.error || `Upload failed with status ${res.status}`,
|
|
144
|
+
)
|
|
145
|
+
}
|
|
146
|
+
return json.data
|
|
147
|
+
} finally {
|
|
148
|
+
clearTimeout(timer)
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { HttpClient } from "./http"
|
|
2
|
+
import { Domains } from "./resources/domains"
|
|
3
|
+
import { Mailboxes } from "./resources/mailboxes"
|
|
4
|
+
import { Templates } from "./resources/templates"
|
|
5
|
+
import { Inbox } from "./resources/inbox"
|
|
6
|
+
import { Send } from "./resources/send"
|
|
7
|
+
import { Buckets } from "./resources/buckets"
|
|
8
|
+
import { MediaResource } from "./resources/media"
|
|
9
|
+
import { Storage } from "./resources/storage"
|
|
10
|
+
import type { SentroyClientConfig } from "./types"
|
|
11
|
+
|
|
12
|
+
export class Sentroy {
|
|
13
|
+
public readonly domains: Domains
|
|
14
|
+
public readonly mailboxes: Mailboxes
|
|
15
|
+
public readonly templates: Templates
|
|
16
|
+
public readonly inbox: Inbox
|
|
17
|
+
public readonly send: Send
|
|
18
|
+
public readonly buckets: Buckets
|
|
19
|
+
public readonly media: MediaResource
|
|
20
|
+
public readonly storage: Storage
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Create a new Sentroy client.
|
|
24
|
+
*
|
|
25
|
+
* Single `baseUrl` covers every resource: the platform gateway routes
|
|
26
|
+
* `/api/mail/companies/...` to the mail backend and
|
|
27
|
+
* `/api/storage/companies/...` to the storage backend. The same
|
|
28
|
+
* access token works across both.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const sentroy = new Sentroy({
|
|
33
|
+
* baseUrl: "https://sentroy.com",
|
|
34
|
+
* companySlug: "my-company",
|
|
35
|
+
* accessToken: "stk_abc123...",
|
|
36
|
+
* })
|
|
37
|
+
*
|
|
38
|
+
* const domains = await sentroy.domains.list()
|
|
39
|
+
* const buckets = await sentroy.buckets.list()
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
constructor(config: SentroyClientConfig) {
|
|
43
|
+
const root = config.baseUrl.replace(/\/+$/, "")
|
|
44
|
+
const slug = encodeURIComponent(config.companySlug)
|
|
45
|
+
|
|
46
|
+
// Mail resources hit the `/api/mail/companies` gateway path — core
|
|
47
|
+
// forwards to the mail subdomain. The SDK consumer never sees the
|
|
48
|
+
// subdomain split.
|
|
49
|
+
const mailHttp = new HttpClient(
|
|
50
|
+
`${root}/api/mail/companies/${slug}`,
|
|
51
|
+
config.accessToken,
|
|
52
|
+
config.timeout,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
// Storage uses the same pattern via `/api/storage/companies`.
|
|
56
|
+
const storageHttp = new HttpClient(
|
|
57
|
+
`${root}/api/storage/companies/${slug}`,
|
|
58
|
+
config.accessToken,
|
|
59
|
+
config.timeout,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
this.domains = new Domains(mailHttp)
|
|
63
|
+
this.mailboxes = new Mailboxes(mailHttp)
|
|
64
|
+
this.templates = new Templates(mailHttp)
|
|
65
|
+
this.inbox = new Inbox(mailHttp)
|
|
66
|
+
this.send = new Send(mailHttp)
|
|
67
|
+
this.buckets = new Buckets(storageHttp)
|
|
68
|
+
this.media = new MediaResource(storageHttp)
|
|
69
|
+
this.storage = new Storage(storageHttp)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Re-export types
|
|
74
|
+
export type {
|
|
75
|
+
SentroyClientConfig,
|
|
76
|
+
ApiResponse,
|
|
77
|
+
Domain,
|
|
78
|
+
MailboxUser,
|
|
79
|
+
Template,
|
|
80
|
+
LocalizedString,
|
|
81
|
+
MessageAddress,
|
|
82
|
+
MessageSummary,
|
|
83
|
+
MessageDetail,
|
|
84
|
+
AttachmentInfo,
|
|
85
|
+
Mailbox,
|
|
86
|
+
InboxListParams,
|
|
87
|
+
Attachment,
|
|
88
|
+
SendParams,
|
|
89
|
+
SendResult,
|
|
90
|
+
Bucket,
|
|
91
|
+
CreateBucketParams,
|
|
92
|
+
UpdateBucketParams,
|
|
93
|
+
Media,
|
|
94
|
+
MediaType,
|
|
95
|
+
MediaThumbnail,
|
|
96
|
+
MediaImageMeta,
|
|
97
|
+
MediaListParams,
|
|
98
|
+
MediaListResult,
|
|
99
|
+
UploadMediaParams,
|
|
100
|
+
StorageQuota,
|
|
101
|
+
StorageUsage,
|
|
102
|
+
StorageUsageBucket,
|
|
103
|
+
StorageUsageByType,
|
|
104
|
+
} from "./types"
|
|
105
|
+
|
|
106
|
+
export { SentroyError } from "./http"
|