@nurama/sdk 0.0.0-stage → 1.4.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/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +1080 -2
- package/dist/BotClient.d.ts +66 -0
- package/dist/BotClient.d.ts.map +1 -0
- package/dist/BotClient.js +68 -0
- package/dist/BotClient.js.map +1 -0
- package/dist/NuramaClient.d.ts +480 -0
- package/dist/NuramaClient.d.ts.map +1 -0
- package/dist/NuramaClient.js +902 -0
- package/dist/NuramaClient.js.map +1 -0
- package/dist/browser/nurama-bot-sdk.js +12051 -0
- package/dist/browser/nurama-bot-sdk.min.js +1 -0
- package/dist/browser/nurama-sdk.js +12003 -0
- package/dist/browser/nurama-sdk.min.js +1 -0
- package/dist/routes/ai.d.ts +280 -0
- package/dist/routes/ai.d.ts.map +1 -0
- package/dist/routes/ai.js +173 -0
- package/dist/routes/ai.js.map +1 -0
- package/dist/routes/asset.d.ts +493 -0
- package/dist/routes/asset.d.ts.map +1 -0
- package/dist/routes/asset.js +848 -0
- package/dist/routes/asset.js.map +1 -0
- package/dist/routes/auth.d.ts +218 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +454 -0
- package/dist/routes/auth.js.map +1 -0
- package/dist/routes/blogPosts.d.ts +17 -0
- package/dist/routes/blogPosts.d.ts.map +1 -0
- package/dist/routes/blogPosts.js +29 -0
- package/dist/routes/blogPosts.js.map +1 -0
- package/dist/routes/board.d.ts +187 -0
- package/dist/routes/board.d.ts.map +1 -0
- package/dist/routes/board.js +270 -0
- package/dist/routes/board.js.map +1 -0
- package/dist/routes/bot.d.ts +202 -0
- package/dist/routes/bot.d.ts.map +1 -0
- package/dist/routes/bot.js +229 -0
- package/dist/routes/bot.js.map +1 -0
- package/dist/routes/chat.d.ts +842 -0
- package/dist/routes/chat.d.ts.map +1 -0
- package/dist/routes/chat.js +863 -0
- package/dist/routes/chat.js.map +1 -0
- package/dist/routes/chatAi.d.ts +51 -0
- package/dist/routes/chatAi.d.ts.map +1 -0
- package/dist/routes/chatAi.js +109 -0
- package/dist/routes/chatAi.js.map +1 -0
- package/dist/routes/config.d.ts +11 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +24 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/convo.d.ts +169 -0
- package/dist/routes/convo.d.ts.map +1 -0
- package/dist/routes/convo.js +284 -0
- package/dist/routes/convo.js.map +1 -0
- package/dist/routes/credits.d.ts +82 -0
- package/dist/routes/credits.d.ts.map +1 -0
- package/dist/routes/credits.js +49 -0
- package/dist/routes/credits.js.map +1 -0
- package/dist/routes/device.d.ts +74 -0
- package/dist/routes/device.d.ts.map +1 -0
- package/dist/routes/device.js +122 -0
- package/dist/routes/device.js.map +1 -0
- package/dist/routes/folder.d.ts +75 -0
- package/dist/routes/folder.d.ts.map +1 -0
- package/dist/routes/folder.js +99 -0
- package/dist/routes/folder.js.map +1 -0
- package/dist/routes/invite.d.ts +61 -0
- package/dist/routes/invite.d.ts.map +1 -0
- package/dist/routes/invite.js +86 -0
- package/dist/routes/invite.js.map +1 -0
- package/dist/routes/joinLink.d.ts +88 -0
- package/dist/routes/joinLink.d.ts.map +1 -0
- package/dist/routes/joinLink.js +205 -0
- package/dist/routes/joinLink.js.map +1 -0
- package/dist/routes/membership.d.ts +116 -0
- package/dist/routes/membership.d.ts.map +1 -0
- package/dist/routes/membership.js +183 -0
- package/dist/routes/membership.js.map +1 -0
- package/dist/routes/notification.d.ts +103 -0
- package/dist/routes/notification.d.ts.map +1 -0
- package/dist/routes/notification.js +89 -0
- package/dist/routes/notification.js.map +1 -0
- package/dist/routes/oauthGrant.d.ts +45 -0
- package/dist/routes/oauthGrant.d.ts.map +1 -0
- package/dist/routes/oauthGrant.js +32 -0
- package/dist/routes/oauthGrant.js.map +1 -0
- package/dist/routes/payment.d.ts +56 -0
- package/dist/routes/payment.d.ts.map +1 -0
- package/dist/routes/payment.js +78 -0
- package/dist/routes/payment.js.map +1 -0
- package/dist/routes/product.d.ts +43 -0
- package/dist/routes/product.d.ts.map +1 -0
- package/dist/routes/product.js +53 -0
- package/dist/routes/product.js.map +1 -0
- package/dist/routes/project.d.ts +821 -0
- package/dist/routes/project.d.ts.map +1 -0
- package/dist/routes/project.js +1153 -0
- package/dist/routes/project.js.map +1 -0
- package/dist/routes/public.d.ts +269 -0
- package/dist/routes/public.d.ts.map +1 -0
- package/dist/routes/public.js +412 -0
- package/dist/routes/public.js.map +1 -0
- package/dist/routes/scratch.d.ts +70 -0
- package/dist/routes/scratch.d.ts.map +1 -0
- package/dist/routes/scratch.js +67 -0
- package/dist/routes/scratch.js.map +1 -0
- package/dist/routes/settings.d.ts +102 -0
- package/dist/routes/settings.d.ts.map +1 -0
- package/dist/routes/settings.js +94 -0
- package/dist/routes/settings.js.map +1 -0
- package/dist/routes/shortlink.d.ts +79 -0
- package/dist/routes/shortlink.d.ts.map +1 -0
- package/dist/routes/shortlink.js +25 -0
- package/dist/routes/shortlink.js.map +1 -0
- package/dist/routes/socket.d.ts +108 -0
- package/dist/routes/socket.d.ts.map +1 -0
- package/dist/routes/socket.js +573 -0
- package/dist/routes/socket.js.map +1 -0
- package/dist/routes/storage.d.ts +44 -0
- package/dist/routes/storage.d.ts.map +1 -0
- package/dist/routes/storage.js +49 -0
- package/dist/routes/storage.js.map +1 -0
- package/dist/routes/subscription.d.ts +184 -0
- package/dist/routes/subscription.d.ts.map +1 -0
- package/dist/routes/subscription.js +219 -0
- package/dist/routes/subscription.js.map +1 -0
- package/dist/routes/supportChat.d.ts +40 -0
- package/dist/routes/supportChat.d.ts.map +1 -0
- package/dist/routes/supportChat.js +53 -0
- package/dist/routes/supportChat.js.map +1 -0
- package/dist/routes/supportTicket.d.ts +89 -0
- package/dist/routes/supportTicket.d.ts.map +1 -0
- package/dist/routes/supportTicket.js +54 -0
- package/dist/routes/supportTicket.js.map +1 -0
- package/dist/routes/tag.d.ts +72 -0
- package/dist/routes/tag.d.ts.map +1 -0
- package/dist/routes/tag.js +81 -0
- package/dist/routes/tag.js.map +1 -0
- package/dist/routes/task.d.ts +252 -0
- package/dist/routes/task.d.ts.map +1 -0
- package/dist/routes/task.js +284 -0
- package/dist/routes/task.js.map +1 -0
- package/dist/routes/taskRelation.d.ts +80 -0
- package/dist/routes/taskRelation.d.ts.map +1 -0
- package/dist/routes/taskRelation.js +71 -0
- package/dist/routes/taskRelation.js.map +1 -0
- package/dist/routes/token.d.ts +97 -0
- package/dist/routes/token.d.ts.map +1 -0
- package/dist/routes/token.js +73 -0
- package/dist/routes/token.js.map +1 -0
- package/dist/routes/user.d.ts +112 -0
- package/dist/routes/user.d.ts.map +1 -0
- package/dist/routes/user.js +151 -0
- package/dist/routes/user.js.map +1 -0
- package/dist/routes/version.d.ts +42 -0
- package/dist/routes/version.d.ts.map +1 -0
- package/dist/routes/version.js +38 -0
- package/dist/routes/version.js.map +1 -0
- package/dist/routes/webhook.d.ts +170 -0
- package/dist/routes/webhook.d.ts.map +1 -0
- package/dist/routes/webhook.js +173 -0
- package/dist/routes/webhook.js.map +1 -0
- package/dist/routes/workspace.d.ts +120 -0
- package/dist/routes/workspace.d.ts.map +1 -0
- package/dist/routes/workspace.js +199 -0
- package/dist/routes/workspace.js.map +1 -0
- package/dist/utils/uploadSessionManager.d.ts +133 -0
- package/dist/utils/uploadSessionManager.d.ts.map +1 -0
- package/dist/utils/uploadSessionManager.js +321 -0
- package/dist/utils/uploadSessionManager.js.map +1 -0
- package/dist/utils/urlParams.d.ts +35 -0
- package/dist/utils/urlParams.d.ts.map +1 -0
- package/dist/utils/urlParams.js +146 -0
- package/dist/utils/urlParams.js.map +1 -0
- package/dist/version.d.ts +15 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +12 -0
- package/dist/version.js.map +1 -0
- package/package.json +87 -3
- package/src/BotClient.ts +113 -0
- package/src/NuramaClient.ts +1253 -0
- package/src/bot-browser-entry.js +15 -0
- package/src/browser-entry.js +20 -0
- package/src/routes/ai.ts +378 -0
- package/src/routes/asset.ts +1104 -0
- package/src/routes/auth.ts +587 -0
- package/src/routes/blogPosts.ts +29 -0
- package/src/routes/board.ts +403 -0
- package/src/routes/bot.ts +356 -0
- package/src/routes/chat.ts +1292 -0
- package/src/routes/chatAi.ts +125 -0
- package/src/routes/config.ts +31 -0
- package/src/routes/convo.ts +321 -0
- package/src/routes/credits.ts +112 -0
- package/src/routes/device.ts +133 -0
- package/src/routes/folder.ts +154 -0
- package/src/routes/invite.ts +133 -0
- package/src/routes/joinLink.ts +233 -0
- package/src/routes/membership.ts +237 -0
- package/src/routes/notification.ts +166 -0
- package/src/routes/oauthGrant.ts +64 -0
- package/src/routes/payment.ts +104 -0
- package/src/routes/product.ts +67 -0
- package/src/routes/project.ts +1528 -0
- package/src/routes/public.ts +496 -0
- package/src/routes/scratch.ts +94 -0
- package/src/routes/settings.ts +152 -0
- package/src/routes/shortlink.ts +90 -0
- package/src/routes/socket.ts +757 -0
- package/src/routes/storage.ts +83 -0
- package/src/routes/subscription.ts +307 -0
- package/src/routes/supportChat.ts +62 -0
- package/src/routes/supportTicket.ts +114 -0
- package/src/routes/tag.ts +131 -0
- package/src/routes/task.ts +431 -0
- package/src/routes/taskRelation.ts +125 -0
- package/src/routes/token.ts +152 -0
- package/src/routes/user.ts +214 -0
- package/src/routes/version.ts +62 -0
- package/src/routes/webhook.ts +295 -0
- package/src/routes/workspace.ts +223 -0
- package/src/utils/uploadSessionManager.ts +407 -0
- package/src/utils/urlParams.ts +181 -0
- package/src/version.ts +22 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upload Session Manager for Nurama SDK
|
|
3
|
+
*
|
|
4
|
+
* Provides upload progress persistence and cross-tab synchronization
|
|
5
|
+
* - Persists upload progress to localStorage with project isolation
|
|
6
|
+
* - Syncs upload state across multiple browser tabs
|
|
7
|
+
* - Automatic cleanup of completed/failed uploads
|
|
8
|
+
*/
|
|
9
|
+
export class UploadSessionManager {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.messageListeners = new Map();
|
|
12
|
+
this.STORAGE_PREFIX = 'nurama_upload_session_';
|
|
13
|
+
this.MESSAGE_CHANNEL = 'nurama_upload_sync';
|
|
14
|
+
this.initializeCrossTabSync();
|
|
15
|
+
}
|
|
16
|
+
static getInstance() {
|
|
17
|
+
if (!UploadSessionManager.instance) {
|
|
18
|
+
UploadSessionManager.instance = new UploadSessionManager();
|
|
19
|
+
}
|
|
20
|
+
return UploadSessionManager.instance;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Initialize cross-tab synchronization using BroadcastChannel
|
|
24
|
+
*/
|
|
25
|
+
initializeCrossTabSync() {
|
|
26
|
+
if (typeof window !== 'undefined' && 'BroadcastChannel' in window) {
|
|
27
|
+
try {
|
|
28
|
+
this.broadcastChannel = new BroadcastChannel(this.MESSAGE_CHANNEL);
|
|
29
|
+
this.broadcastChannel.addEventListener('message', this.handleCrossTabMessage.bind(this));
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.warn('[UploadSessionManager] BroadcastChannel not available:', error);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Handle cross-tab messages
|
|
38
|
+
*/
|
|
39
|
+
handleCrossTabMessage(event) {
|
|
40
|
+
const message = event.data;
|
|
41
|
+
if (message && message.type && message.projectId && message.sessionId) {
|
|
42
|
+
// Notify registered listeners
|
|
43
|
+
this.messageListeners.forEach(listener => {
|
|
44
|
+
try {
|
|
45
|
+
listener(message);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error('[UploadSessionManager] Error in message listener:', error);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Generate storage key for upload session
|
|
55
|
+
*/
|
|
56
|
+
getStorageKey(projectId, sessionId) {
|
|
57
|
+
return `${this.STORAGE_PREFIX}${projectId}_${sessionId}`;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create a new upload session
|
|
61
|
+
*/
|
|
62
|
+
createSession(projectId, sessionId, uploadData) {
|
|
63
|
+
const session = {
|
|
64
|
+
sessionId,
|
|
65
|
+
projectId,
|
|
66
|
+
uploadId: uploadData.uploadId,
|
|
67
|
+
key: uploadData.key,
|
|
68
|
+
assetId: uploadData.assetId,
|
|
69
|
+
progress: 0,
|
|
70
|
+
partNumber: 1,
|
|
71
|
+
totalParts: uploadData.totalParts,
|
|
72
|
+
completedParts: [],
|
|
73
|
+
fileName: uploadData.fileName,
|
|
74
|
+
fileSize: uploadData.fileSize,
|
|
75
|
+
timestamp: Date.now(),
|
|
76
|
+
status: 'uploading'
|
|
77
|
+
};
|
|
78
|
+
this.saveSession(session);
|
|
79
|
+
this.broadcastMessage('upload_status_change', projectId, sessionId, session);
|
|
80
|
+
return session;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Update upload progress for a session
|
|
84
|
+
*/
|
|
85
|
+
updateProgress(projectId, sessionId, progress) {
|
|
86
|
+
const session = this.getSession(projectId, sessionId);
|
|
87
|
+
if (!session) {
|
|
88
|
+
console.warn(`[UploadSessionManager] Session not found: ${sessionId}`);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const updatedSession = {
|
|
92
|
+
...session,
|
|
93
|
+
progress: progress.progress,
|
|
94
|
+
partNumber: progress.partNumber,
|
|
95
|
+
completedParts: progress.completedParts || session.completedParts,
|
|
96
|
+
timestamp: Date.now()
|
|
97
|
+
};
|
|
98
|
+
this.saveSession(updatedSession);
|
|
99
|
+
this.broadcastMessage('upload_progress_update', projectId, sessionId, {
|
|
100
|
+
progress: progress.progress,
|
|
101
|
+
partNumber: progress.partNumber,
|
|
102
|
+
completedParts: progress.completedParts,
|
|
103
|
+
timestamp: updatedSession.timestamp
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Update upload status
|
|
108
|
+
*/
|
|
109
|
+
updateStatus(projectId, sessionId, status, error) {
|
|
110
|
+
const session = this.getSession(projectId, sessionId);
|
|
111
|
+
if (!session) {
|
|
112
|
+
console.warn(`[UploadSessionManager] Session not found: ${sessionId}`);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const updatedSession = {
|
|
116
|
+
...session,
|
|
117
|
+
status,
|
|
118
|
+
error,
|
|
119
|
+
timestamp: Date.now()
|
|
120
|
+
};
|
|
121
|
+
this.saveSession(updatedSession);
|
|
122
|
+
this.broadcastMessage('upload_status_change', projectId, sessionId, {
|
|
123
|
+
status,
|
|
124
|
+
error,
|
|
125
|
+
timestamp: updatedSession.timestamp
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get upload session data
|
|
130
|
+
*/
|
|
131
|
+
getSession(projectId, sessionId) {
|
|
132
|
+
if (typeof window === 'undefined')
|
|
133
|
+
return null;
|
|
134
|
+
try {
|
|
135
|
+
const key = this.getStorageKey(projectId, sessionId);
|
|
136
|
+
const data = localStorage.getItem(key);
|
|
137
|
+
if (data) {
|
|
138
|
+
const session = JSON.parse(data);
|
|
139
|
+
// Validate session data
|
|
140
|
+
if (session.projectId === projectId && session.sessionId === sessionId) {
|
|
141
|
+
return session;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
console.warn(`[UploadSessionManager] Failed to get session ${sessionId}:`, error);
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get all upload sessions for a project
|
|
152
|
+
*/
|
|
153
|
+
getProjectSessions(projectId) {
|
|
154
|
+
if (typeof window === 'undefined')
|
|
155
|
+
return [];
|
|
156
|
+
const sessions = [];
|
|
157
|
+
const prefix = `${this.STORAGE_PREFIX}${projectId}_`;
|
|
158
|
+
try {
|
|
159
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
160
|
+
const key = localStorage.key(i);
|
|
161
|
+
if (key && key.startsWith(prefix)) {
|
|
162
|
+
const data = localStorage.getItem(key);
|
|
163
|
+
if (data) {
|
|
164
|
+
try {
|
|
165
|
+
const session = JSON.parse(data);
|
|
166
|
+
if (session.projectId === projectId) {
|
|
167
|
+
sessions.push(session);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
console.warn(`[UploadSessionManager] Invalid session data in ${key}:`, error);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
console.warn('[UploadSessionManager] Failed to get project sessions:', error);
|
|
179
|
+
}
|
|
180
|
+
// Sort by timestamp (most recent first)
|
|
181
|
+
return sessions.sort((a, b) => b.timestamp - a.timestamp);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get every upload session across ALL projects (scans the whole localStorage
|
|
185
|
+
* prefix, not a single project). Used by app-level guards that need a global
|
|
186
|
+
* "is anything uploading right now" answer without knowing the project id.
|
|
187
|
+
*/
|
|
188
|
+
getAllSessions() {
|
|
189
|
+
if (typeof window === 'undefined')
|
|
190
|
+
return [];
|
|
191
|
+
const sessions = [];
|
|
192
|
+
try {
|
|
193
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
194
|
+
const key = localStorage.key(i);
|
|
195
|
+
if (key && key.startsWith(this.STORAGE_PREFIX)) {
|
|
196
|
+
const data = localStorage.getItem(key);
|
|
197
|
+
if (data) {
|
|
198
|
+
try {
|
|
199
|
+
sessions.push(JSON.parse(data));
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
console.warn(`[UploadSessionManager] Invalid session data in ${key}:`, error);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
console.warn('[UploadSessionManager] Failed to enumerate sessions:', error);
|
|
210
|
+
}
|
|
211
|
+
return sessions.sort((a, b) => b.timestamp - a.timestamp);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* True when at least one upload is genuinely in flight anywhere in the app.
|
|
215
|
+
*
|
|
216
|
+
* "In flight" = status `uploading`/`completing` AND updated within `staleMs`.
|
|
217
|
+
* The freshness window matters: a tab that crashed mid-upload leaves an
|
|
218
|
+
* `uploading` row in localStorage forever (it never reaches a terminal
|
|
219
|
+
* status). Progress ticks bump `timestamp` on every part, so a real upload
|
|
220
|
+
* stays fresh; a dead one goes stale and stops counting — otherwise a stale
|
|
221
|
+
* row would block app refreshes/navigation indefinitely.
|
|
222
|
+
*
|
|
223
|
+
* @param staleMs How long since the last progress update still counts as
|
|
224
|
+
* active. Default 2 minutes — comfortably longer than a single part PUT on
|
|
225
|
+
* a slow connection, short enough that a crashed upload clears quickly.
|
|
226
|
+
*/
|
|
227
|
+
hasActiveUploads(staleMs = 2 * 60 * 1000) {
|
|
228
|
+
const cutoff = Date.now() - staleMs;
|
|
229
|
+
return this.getAllSessions().some((s) => (s.status === 'uploading' || s.status === 'completing') &&
|
|
230
|
+
s.timestamp >= cutoff);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Save session to localStorage
|
|
234
|
+
*/
|
|
235
|
+
saveSession(session) {
|
|
236
|
+
if (typeof window === 'undefined')
|
|
237
|
+
return;
|
|
238
|
+
try {
|
|
239
|
+
const key = this.getStorageKey(session.projectId, session.sessionId);
|
|
240
|
+
localStorage.setItem(key, JSON.stringify(session));
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
console.warn(`[UploadSessionManager] Failed to save session ${session.sessionId}:`, error);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Remove upload session
|
|
248
|
+
*/
|
|
249
|
+
removeSession(projectId, sessionId) {
|
|
250
|
+
if (typeof window === 'undefined')
|
|
251
|
+
return;
|
|
252
|
+
try {
|
|
253
|
+
const key = this.getStorageKey(projectId, sessionId);
|
|
254
|
+
localStorage.removeItem(key);
|
|
255
|
+
this.broadcastMessage('upload_cleanup', projectId, sessionId);
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
console.warn(`[UploadSessionManager] Failed to remove session ${sessionId}:`, error);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Clean up old or completed sessions
|
|
263
|
+
*/
|
|
264
|
+
cleanupSessions(projectId, olderThanMs = 24 * 60 * 60 * 1000) {
|
|
265
|
+
const sessions = this.getProjectSessions(projectId);
|
|
266
|
+
const cutoff = Date.now() - olderThanMs;
|
|
267
|
+
sessions.forEach(session => {
|
|
268
|
+
// Remove old sessions or completed/failed/cancelled sessions older than 1 hour
|
|
269
|
+
const shouldRemove = session.timestamp < cutoff ||
|
|
270
|
+
(['completed', 'failed', 'cancelled'].includes(session.status) &&
|
|
271
|
+
session.timestamp < (Date.now() - 60 * 60 * 1000));
|
|
272
|
+
if (shouldRemove) {
|
|
273
|
+
this.removeSession(projectId, session.sessionId);
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Register a listener for cross-tab messages
|
|
279
|
+
*/
|
|
280
|
+
onMessage(listenerId, callback) {
|
|
281
|
+
this.messageListeners.set(listenerId, callback);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Unregister a message listener
|
|
285
|
+
*/
|
|
286
|
+
offMessage(listenerId) {
|
|
287
|
+
this.messageListeners.delete(listenerId);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Broadcast a message to other tabs
|
|
291
|
+
*/
|
|
292
|
+
broadcastMessage(type, projectId, sessionId, data) {
|
|
293
|
+
if (this.broadcastChannel) {
|
|
294
|
+
try {
|
|
295
|
+
const message = {
|
|
296
|
+
type,
|
|
297
|
+
projectId,
|
|
298
|
+
sessionId,
|
|
299
|
+
data
|
|
300
|
+
};
|
|
301
|
+
this.broadcastChannel.postMessage(message);
|
|
302
|
+
}
|
|
303
|
+
catch (error) {
|
|
304
|
+
console.warn('[UploadSessionManager] Failed to broadcast message:', error);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Cleanup resources
|
|
310
|
+
*/
|
|
311
|
+
destroy() {
|
|
312
|
+
if (this.broadcastChannel) {
|
|
313
|
+
this.broadcastChannel.close();
|
|
314
|
+
this.broadcastChannel = undefined;
|
|
315
|
+
}
|
|
316
|
+
this.messageListeners.clear();
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
// Export a singleton instance for convenience
|
|
320
|
+
export const uploadSessionManager = UploadSessionManager.getInstance();
|
|
321
|
+
//# sourceMappingURL=uploadSessionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadSessionManager.js","sourceRoot":"","sources":["../../src/utils/uploadSessionManager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgCH,MAAM,OAAO,oBAAoB;IAO/B;QALQ,qBAAgB,GAAoD,IAAI,GAAG,EAAE,CAAC;QACrE,mBAAc,GAAG,wBAAwB,CAAC;QAC1C,oBAAe,GAAG,oBAAoB,CAAC;QAItD,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC;YACnC,oBAAoB,CAAC,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7D,CAAC;QACD,OAAO,oBAAoB,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC5B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAAC;YAClE,IAAI,CAAC;gBACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACnE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3F,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,wDAAwD,EAAE,KAAK,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,KAAoC;QAChE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtE,8BAA8B;YAC9B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACvC,IAAI,CAAC;oBACH,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACpB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,SAAiB,EAAE,SAAiB;QACxD,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,aAAa,CAClB,SAAiB,EACjB,SAAiB,EACjB,UAOC;QAED,MAAM,OAAO,GAAsB;YACjC,SAAS;YACT,SAAS;YACT,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,cAAc,EAAE,EAAE;YAClB,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,WAAW;SACpB,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE7E,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,cAAc,CACnB,SAAiB,EACjB,SAAiB,EACjB,QAIC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,6CAA6C,SAAS,EAAE,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAsB;YACxC,GAAG,OAAO;YACV,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc;YACjE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,SAAS,EAAE,SAAS,EAAE;YACpE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,cAAc,EAAE,QAAQ,CAAC,cAAc;YACvC,SAAS,EAAE,cAAc,CAAC,SAAS;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,YAAY,CACjB,SAAiB,EACjB,SAAiB,EACjB,MAAmC,EACnC,KAAc;QAEd,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,6CAA6C,SAAS,EAAE,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAsB;YACxC,GAAG,OAAO;YACV,MAAM;YACN,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE;YAClE,MAAM;YACN,KAAK;YACL,SAAS,EAAE,cAAc,CAAC,SAAS;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,SAAiB,EAAE,SAAiB;QACpD,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAE/C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB,CAAC;gBACtD,wBAAwB;gBACxB,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACvE,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,gDAAgD,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,SAAiB;QACzC,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,EAAE,CAAC;QAE7C,MAAM,QAAQ,GAAwB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,GAAG,CAAC;QAErD,IAAI,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACvC,IAAI,IAAI,EAAE,CAAC;wBACT,IAAI,CAAC;4BACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB,CAAC;4BACtD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gCACpC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;4BACzB,CAAC;wBACH,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,OAAO,CAAC,IAAI,CAAC,kDAAkD,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;wBAChF,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,wDAAwD,EAAE,KAAK,CAAC,CAAC;QAChF,CAAC;QAED,wCAAwC;QACxC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACI,cAAc;QACnB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,EAAE,CAAC;QAE7C,MAAM,QAAQ,GAAwB,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC/C,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACvC,IAAI,IAAI,EAAE,CAAC;wBACT,IAAI,CAAC;4BACH,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB,CAAC,CAAC;wBACvD,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,OAAO,CAAC,IAAI,CAAC,kDAAkD,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;wBAChF,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,sDAAsD,EAAE,KAAK,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,gBAAgB,CAAC,UAAkB,CAAC,GAAG,EAAE,GAAG,IAAI;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QACpC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC;YACvD,CAAC,CAAC,SAAS,IAAI,MAAM,CACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,OAA0B;QAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACrE,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,iDAAiD,OAAO,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,SAAiB,EAAE,SAAiB;QACvD,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACrD,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,mDAAmD,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,SAAiB,EAAE,cAAsB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;QAExC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,+EAA+E;YAC/E,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM;gBAC7C,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC7D,OAAO,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;YAEtD,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,UAAkB,EAAE,QAA4C;QAC/E,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,UAAkB;QAClC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,IAA6B,EAC7B,SAAiB,EACjB,SAAiB,EACjB,IAAiC;QAEjC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAoB;oBAC/B,IAAI;oBACJ,SAAS;oBACT,SAAS;oBACT,IAAI;iBACL,CAAC;gBACF,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;CACF;AAED,8CAA8C;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for handling URL parameters
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Converts a parameter object to URL-safe query parameters.
|
|
6
|
+
* Arrays are serialized as comma-separated values, using bracket notation, or as repeated parameters.
|
|
7
|
+
* Objects are serialized as JSON strings.
|
|
8
|
+
*
|
|
9
|
+
* @param params - The parameter object to convert
|
|
10
|
+
* @param options - Options for serialization
|
|
11
|
+
* @returns An array of [key, value] pairs suitable for URLSearchParams
|
|
12
|
+
*/
|
|
13
|
+
export interface UrlParamsOptions {
|
|
14
|
+
/** How to handle arrays: 'comma' for comma-separated, 'brackets' for key[]=value&key[]=value2, 'repeat' for key=value1&key=value2 */
|
|
15
|
+
arrayFormat?: 'comma' | 'brackets' | 'repeat';
|
|
16
|
+
/** How to handle nested objects: 'json' to stringify, 'dot' for dot notation, 'bracket' for key[subkey]=value */
|
|
17
|
+
objectFormat?: 'json' | 'dot' | 'bracket';
|
|
18
|
+
/** Whether to encode values (default: true) */
|
|
19
|
+
encode?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function parseUrlParams(params: Record<string, any>, options?: UrlParamsOptions): Array<[string, string]>;
|
|
22
|
+
/**
|
|
23
|
+
* Converts parsed URL parameters back to a URLSearchParams object
|
|
24
|
+
* @param params - The parsed parameters as key-value pairs
|
|
25
|
+
* @returns URLSearchParams object
|
|
26
|
+
*/
|
|
27
|
+
export declare function createUrlSearchParams(params: Array<[string, string]>): URLSearchParams;
|
|
28
|
+
/**
|
|
29
|
+
* Convenience function that combines parseUrlParams and createUrlSearchParams
|
|
30
|
+
* @param params - The parameter object to convert
|
|
31
|
+
* @param options - Options for serialization
|
|
32
|
+
* @returns URLSearchParams object
|
|
33
|
+
*/
|
|
34
|
+
export declare function paramsToUrlSearchParams(params: Record<string, any>, options?: UrlParamsOptions): URLSearchParams;
|
|
35
|
+
//# sourceMappingURL=urlParams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlParams.d.ts","sourceRoot":"","sources":["../../src/utils/urlParams.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qIAAqI;IACrI,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC9C,iHAAiH;IACjH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAC1C,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,OAAO,GAAE,gBAAqB,GAC7B,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkEzB;AA8DD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,eAAe,CAMtF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,eAAe,CAKjB"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for handling URL parameters
|
|
3
|
+
*/
|
|
4
|
+
export function parseUrlParams(params, options = {}) {
|
|
5
|
+
const { arrayFormat = 'repeat', // Changed default to repeat for backend compatibility
|
|
6
|
+
objectFormat = 'bracket', // Changed default to bracket for API compatibility
|
|
7
|
+
encode = true // Changed default to true as requested
|
|
8
|
+
} = options;
|
|
9
|
+
const result = [];
|
|
10
|
+
const encodeValue = (value) => {
|
|
11
|
+
return encode ? encodeURIComponent(value) : value;
|
|
12
|
+
};
|
|
13
|
+
const processValue = (key, value) => {
|
|
14
|
+
if (value === null || value === undefined) {
|
|
15
|
+
return; // Skip null/undefined values
|
|
16
|
+
}
|
|
17
|
+
if (Array.isArray(value)) {
|
|
18
|
+
if (arrayFormat === 'comma') {
|
|
19
|
+
// Convert array to comma-separated string
|
|
20
|
+
result.push([key, encodeValue(value.join(','))]);
|
|
21
|
+
}
|
|
22
|
+
else if (arrayFormat === 'brackets') {
|
|
23
|
+
// Use bracket notation: key[]=value1&key[]=value2
|
|
24
|
+
const bracketKey = `${key}[]`;
|
|
25
|
+
value.forEach((item) => {
|
|
26
|
+
result.push([bracketKey, encodeValue(String(item))]);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
else if (arrayFormat === 'repeat') {
|
|
30
|
+
// Use repeated key: key=value1&key=value2
|
|
31
|
+
value.forEach((item) => {
|
|
32
|
+
result.push([key, encodeValue(String(item))]);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else if (value instanceof Date) {
|
|
37
|
+
// Handle Date objects specifically
|
|
38
|
+
result.push([key, encodeValue(value.toString())]);
|
|
39
|
+
}
|
|
40
|
+
else if (typeof value === 'object') {
|
|
41
|
+
if (objectFormat === 'json') {
|
|
42
|
+
// Stringify objects as JSON
|
|
43
|
+
result.push([key, encodeValue(JSON.stringify(value))]);
|
|
44
|
+
}
|
|
45
|
+
else if (objectFormat === 'dot') {
|
|
46
|
+
// Use dot notation for nested objects
|
|
47
|
+
flattenObject(value, key, result, encodeValue);
|
|
48
|
+
}
|
|
49
|
+
else if (objectFormat === 'bracket') {
|
|
50
|
+
// Use bracket notation for nested objects
|
|
51
|
+
flattenObjectBracket(value, key, result, encodeValue);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else if (typeof value === 'boolean') {
|
|
55
|
+
result.push([key, encodeValue(value.toString())]);
|
|
56
|
+
}
|
|
57
|
+
else if (typeof value === 'number') {
|
|
58
|
+
result.push([key, encodeValue(value.toString())]);
|
|
59
|
+
}
|
|
60
|
+
else if (typeof value === 'string') {
|
|
61
|
+
result.push([key, encodeValue(value)]);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// For any other type, convert to string
|
|
65
|
+
result.push([key, encodeValue(String(value))]);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
// Process each parameter
|
|
69
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
70
|
+
processValue(key, value);
|
|
71
|
+
});
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Flattens nested objects using dot notation
|
|
76
|
+
* @param obj - The object to flatten
|
|
77
|
+
* @param prefix - The current key prefix
|
|
78
|
+
* @param result - The result array to populate
|
|
79
|
+
* @param encodeValue - Function to encode values
|
|
80
|
+
*/
|
|
81
|
+
function flattenObject(obj, prefix, result, encodeValue) {
|
|
82
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
83
|
+
const newKey = `${prefix}.${key}`;
|
|
84
|
+
if (value === null || value === undefined) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (typeof value === 'object' && !Array.isArray(value)) {
|
|
88
|
+
flattenObject(value, newKey, result, encodeValue);
|
|
89
|
+
}
|
|
90
|
+
else if (Array.isArray(value)) {
|
|
91
|
+
result.push([newKey, encodeValue(value.join(','))]);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
result.push([newKey, encodeValue(String(value))]);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Flattens nested objects using bracket notation
|
|
100
|
+
* @param obj - The object to flatten
|
|
101
|
+
* @param prefix - The current key prefix
|
|
102
|
+
* @param result - The result array to populate
|
|
103
|
+
* @param encodeValue - Function to encode values
|
|
104
|
+
*/
|
|
105
|
+
function flattenObjectBracket(obj, prefix, result, encodeValue) {
|
|
106
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
107
|
+
const newKey = `${prefix}[${key}]`;
|
|
108
|
+
if (value === null || value === undefined) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (typeof value === 'object' && !Array.isArray(value)) {
|
|
112
|
+
flattenObjectBracket(value, newKey, result, encodeValue);
|
|
113
|
+
}
|
|
114
|
+
else if (Array.isArray(value)) {
|
|
115
|
+
result.push([newKey, encodeValue(value.join(','))]);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
result.push([newKey, encodeValue(String(value))]);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Converts parsed URL parameters back to a URLSearchParams object
|
|
124
|
+
* @param params - The parsed parameters as key-value pairs
|
|
125
|
+
* @returns URLSearchParams object
|
|
126
|
+
*/
|
|
127
|
+
export function createUrlSearchParams(params) {
|
|
128
|
+
const searchParams = new URLSearchParams();
|
|
129
|
+
params.forEach(([key, value]) => {
|
|
130
|
+
searchParams.append(key, value);
|
|
131
|
+
});
|
|
132
|
+
return searchParams;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Convenience function that combines parseUrlParams and createUrlSearchParams
|
|
136
|
+
* @param params - The parameter object to convert
|
|
137
|
+
* @param options - Options for serialization
|
|
138
|
+
* @returns URLSearchParams object
|
|
139
|
+
*/
|
|
140
|
+
export function paramsToUrlSearchParams(params, options) {
|
|
141
|
+
// Force encode: false because URLSearchParams.toString() handles encoding.
|
|
142
|
+
// Pre-encoding here would cause double-encoding (e.g. space → %20 → %2520).
|
|
143
|
+
const parsedParams = parseUrlParams(params, { ...options, encode: false });
|
|
144
|
+
return createUrlSearchParams(parsedParams);
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=urlParams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlParams.js","sourceRoot":"","sources":["../../src/utils/urlParams.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK Version Information
|
|
3
|
+
* AUTO-GENERATED by scripts/generate-version-info.cjs - DO NOT EDIT MANUALLY
|
|
4
|
+
*/
|
|
5
|
+
export interface SDKVersionInfo {
|
|
6
|
+
/** The release number for a published build; `<package.json version>+<source hash>` for any other build. */
|
|
7
|
+
version: string;
|
|
8
|
+
buildTimestamp: string;
|
|
9
|
+
buildHash: string;
|
|
10
|
+
gitCommit: string;
|
|
11
|
+
/** The build included uncommitted SDK changes. */
|
|
12
|
+
dirty: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const SDK_VERSION: SDKVersionInfo;
|
|
15
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,4GAA4G;IAC5G,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,WAAW,EAAE,cAMzB,CAAC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK Version Information
|
|
3
|
+
* AUTO-GENERATED by scripts/generate-version-info.cjs - DO NOT EDIT MANUALLY
|
|
4
|
+
*/
|
|
5
|
+
export const SDK_VERSION = {
|
|
6
|
+
version: '1.4.1',
|
|
7
|
+
buildTimestamp: '2026-10-10T06:58:40.258Z',
|
|
8
|
+
buildHash: 'f6505e2eb9725dc8d239bb401ced8f88',
|
|
9
|
+
gitCommit: '1c00e18',
|
|
10
|
+
dirty: false,
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,OAAO,EAAE,OAAO;IAChB,cAAc,EAAE,0BAA0B;IAC1C,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,KAAK;CACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,90 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nurama/sdk",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "1.4.1",
|
|
4
|
+
"description": "Provides API, web-socket, and additional utilities for interfacing with the Nurama platform.",
|
|
5
|
+
"main": "dist/NuramaClient.js",
|
|
6
|
+
"module": "dist/NuramaClient.js",
|
|
7
|
+
"browser": "dist/browser/nurama-sdk.js",
|
|
8
|
+
"types": "dist/NuramaClient.d.ts",
|
|
9
|
+
"type": "module",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/NuramaClient.d.ts",
|
|
13
|
+
"import": "./dist/NuramaClient.js",
|
|
14
|
+
"require": "./dist/NuramaClient.js"
|
|
15
|
+
},
|
|
16
|
+
"./bot": {
|
|
17
|
+
"types": "./dist/BotClient.d.ts",
|
|
18
|
+
"import": "./dist/BotClient.js",
|
|
19
|
+
"require": "./dist/BotClient.js"
|
|
20
|
+
},
|
|
21
|
+
"./browser": "./dist/browser/nurama-sdk.js",
|
|
22
|
+
"./browser-min": "./dist/browser/nurama-sdk.min.js",
|
|
23
|
+
"./bot-browser": "./dist/browser/nurama-bot-sdk.js",
|
|
24
|
+
"./bot-browser-min": "./dist/browser/nurama-bot-sdk.min.js"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"api",
|
|
28
|
+
"sdk",
|
|
29
|
+
"nurama"
|
|
30
|
+
],
|
|
31
|
+
"author": "Nurama Team",
|
|
32
|
+
"license": "Apache-2.0",
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"jwt-decode": "^4.0.0",
|
|
35
|
+
"socket.io-client": "^4.7.2",
|
|
36
|
+
"@nurama/types": "1.4.1"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/jest": "^29.5.14",
|
|
40
|
+
"@types/jwt-decode": "^2.2.1",
|
|
41
|
+
"@types/node": "^22.14.1",
|
|
42
|
+
"@types/socket.io-client": "^1.4.36",
|
|
43
|
+
"@typescript-eslint/eslint-plugin": "^6.18.0",
|
|
44
|
+
"@typescript-eslint/parser": "^6.18.0",
|
|
45
|
+
"dotenv": "^16.3.1",
|
|
46
|
+
"esbuild": "^0.21.5",
|
|
47
|
+
"eslint": "^8.56.0",
|
|
48
|
+
"jest": "^29.7.0",
|
|
49
|
+
"shx": "^0.3.4",
|
|
50
|
+
"ts-jest": "^29.3.4",
|
|
51
|
+
"tslib": "^2.8.1",
|
|
52
|
+
"typedoc": "^0.28.20",
|
|
53
|
+
"typedoc-plugin-markdown": "^4.13.1",
|
|
54
|
+
"typescript": "^5.8.3",
|
|
55
|
+
"typescript-eslint": "^8.32.0"
|
|
56
|
+
},
|
|
57
|
+
"files": [
|
|
58
|
+
"dist",
|
|
59
|
+
"src",
|
|
60
|
+
"README.md",
|
|
61
|
+
"LICENSE",
|
|
62
|
+
"NOTICE"
|
|
63
|
+
],
|
|
64
|
+
"publishConfig": {
|
|
65
|
+
"access": "public"
|
|
66
|
+
},
|
|
67
|
+
"repository": {
|
|
68
|
+
"type": "git",
|
|
69
|
+
"url": "https://github.com/nurama-team/nurama.git",
|
|
70
|
+
"directory": "packages/sdk"
|
|
71
|
+
},
|
|
72
|
+
"scripts": {
|
|
73
|
+
"test": "jest",
|
|
74
|
+
"test:watch": "jest --watch",
|
|
75
|
+
"test:coverage": "jest --coverage",
|
|
76
|
+
"dev": "node scripts/dev.cjs",
|
|
77
|
+
"gen:version": "node scripts/generate-version-info.cjs",
|
|
78
|
+
"prebuild": "pnpm gen:version",
|
|
79
|
+
"build:tsc": "tsc",
|
|
80
|
+
"build:browser": "esbuild src/browser-entry.js --bundle --outfile=dist/browser/nurama-sdk.js --format=iife --platform=browser",
|
|
81
|
+
"build:browser-min": "esbuild src/browser-entry.js --bundle --minify --outfile=dist/browser/nurama-sdk.min.js --format=iife --platform=browser",
|
|
82
|
+
"build:bot": "pnpm gen:version && esbuild src/bot-browser-entry.js --bundle --outfile=dist/browser/nurama-bot-sdk.js --format=iife --platform=browser",
|
|
83
|
+
"build:bot-min": "pnpm gen:version && esbuild src/bot-browser-entry.js --bundle --minify --outfile=dist/browser/nurama-bot-sdk.min.js --format=iife --platform=browser",
|
|
84
|
+
"copy:examples": "shx mkdir -p examples/example-html && shx cp dist/browser/nurama-sdk.min.js examples/example-html/",
|
|
85
|
+
"build": "pnpm build:tsc && pnpm build:browser && pnpm build:browser-min && pnpm build:bot && pnpm build:bot-min && pnpm copy:examples",
|
|
86
|
+
"lint": "eslint .",
|
|
87
|
+
"lint:main": "eslint --ignore-pattern 'example-react/**' --ext .js,.jsx,.ts,.tsx .",
|
|
88
|
+
"docs:typedoc": "pnpm gen:version && typedoc"
|
|
89
|
+
}
|
|
6
90
|
}
|