@tharris5141/asset-sdk 1.0.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/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +142 -0
- package/dist/index.js.map +1 -0
- package/package.json +20 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const getAssetUrl: (assetId?: string | null) => Promise<string | null>;
|
|
2
|
+
export declare const useAssetUrl: (assetId?: string | null) => string | null;
|
|
3
|
+
export interface UploadAssetOptions {
|
|
4
|
+
purpose: string;
|
|
5
|
+
tenantId: string;
|
|
6
|
+
accessToken?: string;
|
|
7
|
+
onProgress?: (percent: number) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const uploadAsset: (file: File | Blob | {
|
|
10
|
+
uri: string;
|
|
11
|
+
name: string;
|
|
12
|
+
type?: string;
|
|
13
|
+
}, options: UploadAssetOptions) => Promise<{
|
|
14
|
+
assetId: string;
|
|
15
|
+
url: string;
|
|
16
|
+
} | null>;
|
|
17
|
+
export declare const deleteAsset: (assetId: string) => Promise<boolean>;
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,WAAW,GAAU,UAAU,MAAM,GAAG,IAAI,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAkBhF,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,IAM9D,CAAA;AAKD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAED,eAAO,MAAM,WAAW,GACtB,MAAM,IAAI,GAAG,IAAI,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAChE,SAAS,kBAAkB,KAC1B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkDjD,CAAA;AAKD,eAAO,MAAM,WAAW,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,OAAO,CASlE,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.deleteAsset = exports.uploadAsset = exports.useAssetUrl = exports.getAssetUrl = void 0;
|
|
37
|
+
// packages/sdk/src/index.ts
|
|
38
|
+
const React = __importStar(require("react"));
|
|
39
|
+
const getBaseUrl = () => {
|
|
40
|
+
// @ts-ignore – Expo injects EXPO_PUBLIC_* at build time
|
|
41
|
+
const env = process?.env?.EXPO_PUBLIC_ENV || 'development';
|
|
42
|
+
switch (env) {
|
|
43
|
+
case 'production': return 'https://assets.summit-one.app/';
|
|
44
|
+
case 'staging': return 'https://summit-asset-service-staging.up.railway.app';
|
|
45
|
+
default: return 'https://summit-asset-service-development.up.railway.app';
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const cache = new Map();
|
|
49
|
+
const getAssetUrl = async (assetId) => {
|
|
50
|
+
if (!assetId)
|
|
51
|
+
return null;
|
|
52
|
+
const cached = cache.get(assetId);
|
|
53
|
+
if (cached && cached.expiresAt > Date.now() + 60_000)
|
|
54
|
+
return cached.url;
|
|
55
|
+
try {
|
|
56
|
+
const res = await fetch(`${getBaseUrl()}/assets/${assetId}/url`, { cache: 'no-store' });
|
|
57
|
+
if (!res.ok)
|
|
58
|
+
return null;
|
|
59
|
+
const data = await res.json();
|
|
60
|
+
if (data.url) {
|
|
61
|
+
cache.set(assetId, { url: data.url, expiresAt: Date.now() + 10 * 60 * 1000 });
|
|
62
|
+
return data.url;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
console.warn('[@summit/asset-sdk] failed to fetch URL', e);
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
};
|
|
70
|
+
exports.getAssetUrl = getAssetUrl;
|
|
71
|
+
const useAssetUrl = (assetId) => {
|
|
72
|
+
const [url, setUrl] = React.useState(null);
|
|
73
|
+
React.useEffect(() => {
|
|
74
|
+
(0, exports.getAssetUrl)(assetId).then(setUrl);
|
|
75
|
+
}, [assetId]);
|
|
76
|
+
return url;
|
|
77
|
+
};
|
|
78
|
+
exports.useAssetUrl = useAssetUrl;
|
|
79
|
+
const uploadAsset = async (file, options) => {
|
|
80
|
+
const { purpose, tenantId, onProgress, accessToken } = options; // <--- Destructure it
|
|
81
|
+
const filename = 'name' in file ? file.name : 'upload';
|
|
82
|
+
const mimeType = file.type || 'application/octet-stream';
|
|
83
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
84
|
+
if (accessToken) {
|
|
85
|
+
headers['Authorization'] = `Bearer ${accessToken}`; // <--- Attach it
|
|
86
|
+
}
|
|
87
|
+
// 1. Get signed upload URL from server
|
|
88
|
+
const uploadRes = await fetch(`${getBaseUrl()}/assets/upload`, {
|
|
89
|
+
method: 'POST',
|
|
90
|
+
headers: { 'Content-Type': 'application/json' },
|
|
91
|
+
body: JSON.stringify({
|
|
92
|
+
filename,
|
|
93
|
+
mime_type: mimeType,
|
|
94
|
+
purpose,
|
|
95
|
+
tenant_id: tenantId,
|
|
96
|
+
}),
|
|
97
|
+
});
|
|
98
|
+
if (!uploadRes.ok) {
|
|
99
|
+
console.error('[@summit/asset-sdk] Failed to get upload URL');
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
const { asset_id, upload_url } = await uploadRes.json();
|
|
103
|
+
// 2. Upload directly to Supabase
|
|
104
|
+
return new Promise((resolve) => {
|
|
105
|
+
const xhr = new XMLHttpRequest();
|
|
106
|
+
xhr.upload.onprogress = (e) => {
|
|
107
|
+
if (e.lengthComputable && onProgress) {
|
|
108
|
+
onProgress(Math.round((e.loaded / e.total) * 100));
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
xhr.onload = async () => {
|
|
112
|
+
if (xhr.status >= 200 && xhr.status < 300) {
|
|
113
|
+
const url = await (0, exports.getAssetUrl)(asset_id);
|
|
114
|
+
resolve({ assetId: asset_id, url: url });
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
resolve(null);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
xhr.onerror = () => resolve(null);
|
|
121
|
+
xhr.open('PUT', upload_url);
|
|
122
|
+
xhr.setRequestHeader('Content-Type', mimeType);
|
|
123
|
+
xhr.send(file);
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
exports.uploadAsset = uploadAsset;
|
|
127
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
128
|
+
// DELETE ASSET
|
|
129
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
130
|
+
const deleteAsset = async (assetId) => {
|
|
131
|
+
try {
|
|
132
|
+
const res = await fetch(`${getBaseUrl()}/assets/${assetId}`, {
|
|
133
|
+
method: 'DELETE',
|
|
134
|
+
});
|
|
135
|
+
return res.ok;
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
exports.deleteAsset = deleteAsset;
|
|
142
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tharris5141/asset-sdk",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"types": "dist/index.d.ts",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist"
|
|
8
|
+
],
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc"
|
|
11
|
+
},
|
|
12
|
+
"peerDependencies": {
|
|
13
|
+
"react": ">=16.8.0"
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@types/node": "^20.19.26",
|
|
17
|
+
"@types/react": "^18.3.27",
|
|
18
|
+
"typescript": "^5.5.4"
|
|
19
|
+
}
|
|
20
|
+
}
|