@tuturuuu/internal-api 0.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.
Files changed (88) hide show
  1. package/dist/ai.d.ts +43 -0
  2. package/dist/ai.d.ts.map +1 -0
  3. package/dist/ai.js +57 -0
  4. package/dist/auth.d.ts +46 -0
  5. package/dist/auth.d.ts.map +1 -0
  6. package/dist/auth.js +47 -0
  7. package/dist/calendar.d.ts +99 -0
  8. package/dist/calendar.d.ts.map +1 -0
  9. package/dist/calendar.js +94 -0
  10. package/dist/chat.d.ts +46 -0
  11. package/dist/chat.d.ts.map +1 -0
  12. package/dist/chat.js +67 -0
  13. package/dist/client.d.ts +35 -0
  14. package/dist/client.d.ts.map +1 -0
  15. package/dist/client.js +216 -0
  16. package/dist/education.d.ts +167 -0
  17. package/dist/education.d.ts.map +1 -0
  18. package/dist/education.js +288 -0
  19. package/dist/external-projects.d.ts +425 -0
  20. package/dist/external-projects.d.ts.map +1 -0
  21. package/dist/external-projects.js +466 -0
  22. package/dist/finance.d.ts +109 -0
  23. package/dist/finance.d.ts.map +1 -0
  24. package/dist/finance.js +143 -0
  25. package/dist/habit-trackers.d.ts +25 -0
  26. package/dist/habit-trackers.d.ts.map +1 -0
  27. package/dist/habit-trackers.js +108 -0
  28. package/dist/index.d.ts +34 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +280 -0
  31. package/dist/infrastructure.d.ts +354 -0
  32. package/dist/infrastructure.d.ts.map +1 -0
  33. package/dist/infrastructure.js +100 -0
  34. package/dist/inquiries.d.ts +12 -0
  35. package/dist/inquiries.d.ts.map +1 -0
  36. package/dist/inquiries.js +28 -0
  37. package/dist/mail.d.ts +19 -0
  38. package/dist/mail.d.ts.map +1 -0
  39. package/dist/mail.js +12 -0
  40. package/dist/nova.d.ts +5 -0
  41. package/dist/nova.d.ts.map +1 -0
  42. package/dist/nova.js +10 -0
  43. package/dist/posts.d.ts +9 -0
  44. package/dist/posts.d.ts.map +1 -0
  45. package/dist/posts.js +15 -0
  46. package/dist/promotions.d.ts +11 -0
  47. package/dist/promotions.d.ts.map +1 -0
  48. package/dist/promotions.js +15 -0
  49. package/dist/reports.d.ts +42 -0
  50. package/dist/reports.d.ts.map +1 -0
  51. package/dist/reports.js +48 -0
  52. package/dist/roles.d.ts +45 -0
  53. package/dist/roles.d.ts.map +1 -0
  54. package/dist/roles.js +96 -0
  55. package/dist/settings.d.ts +48 -0
  56. package/dist/settings.d.ts.map +1 -0
  57. package/dist/settings.js +66 -0
  58. package/dist/storage.d.ts +187 -0
  59. package/dist/storage.d.ts.map +1 -0
  60. package/dist/storage.js +371 -0
  61. package/dist/tasks-scheduling.d.ts +14 -0
  62. package/dist/tasks-scheduling.d.ts.map +1 -0
  63. package/dist/tasks-scheduling.js +14 -0
  64. package/dist/tasks.d.ts +311 -0
  65. package/dist/tasks.d.ts.map +1 -0
  66. package/dist/tasks.js +396 -0
  67. package/dist/templates.d.ts +48 -0
  68. package/dist/templates.d.ts.map +1 -0
  69. package/dist/templates.js +19 -0
  70. package/dist/time-tracking.d.ts +88 -0
  71. package/dist/time-tracking.d.ts.map +1 -0
  72. package/dist/time-tracking.js +101 -0
  73. package/dist/users-feedbacks.d.ts +66 -0
  74. package/dist/users-feedbacks.d.ts.map +1 -0
  75. package/dist/users-feedbacks.js +46 -0
  76. package/dist/users.d.ts +89 -0
  77. package/dist/users.d.ts.map +1 -0
  78. package/dist/users.js +139 -0
  79. package/dist/workspace-configs.d.ts +24 -0
  80. package/dist/workspace-configs.d.ts.map +1 -0
  81. package/dist/workspace-configs.js +76 -0
  82. package/dist/workspace-user-audit.d.ts +66 -0
  83. package/dist/workspace-user-audit.d.ts.map +1 -0
  84. package/dist/workspace-user-audit.js +23 -0
  85. package/dist/workspaces.d.ts +59 -0
  86. package/dist/workspaces.d.ts.map +1 -0
  87. package/dist/workspaces.js +131 -0
  88. package/package.json +141 -0
@@ -0,0 +1,466 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listCanonicalExternalProjects = listCanonicalExternalProjects;
4
+ exports.createCanonicalExternalProject = createCanonicalExternalProject;
5
+ exports.updateCanonicalExternalProject = updateCanonicalExternalProject;
6
+ exports.updateWorkspaceExternalProjectBinding = updateWorkspaceExternalProjectBinding;
7
+ exports.listExternalProjectWorkspaceBindings = listExternalProjectWorkspaceBindings;
8
+ exports.listWorkspaceExternalProjectBindingAudits = listWorkspaceExternalProjectBindingAudits;
9
+ exports.getWorkspaceExternalProjectStudio = getWorkspaceExternalProjectStudio;
10
+ exports.getWorkspaceExternalProjectSummary = getWorkspaceExternalProjectSummary;
11
+ exports.updateWorkspaceExternalProjectCollection = updateWorkspaceExternalProjectCollection;
12
+ exports.deleteWorkspaceExternalProjectCollection = deleteWorkspaceExternalProjectCollection;
13
+ exports.createWorkspaceExternalProjectBlock = createWorkspaceExternalProjectBlock;
14
+ exports.updateWorkspaceExternalProjectBlock = updateWorkspaceExternalProjectBlock;
15
+ exports.createWorkspaceExternalProjectAsset = createWorkspaceExternalProjectAsset;
16
+ exports.updateWorkspaceExternalProjectAsset = updateWorkspaceExternalProjectAsset;
17
+ exports.deleteWorkspaceExternalProjectAsset = deleteWorkspaceExternalProjectAsset;
18
+ exports.createWorkspaceExternalProjectAssetUploadUrl = createWorkspaceExternalProjectAssetUploadUrl;
19
+ exports.uploadWorkspaceExternalProjectAssetFile = uploadWorkspaceExternalProjectAssetFile;
20
+ exports.createWorkspaceExternalProjectWebglPackageUploadUrl = createWorkspaceExternalProjectWebglPackageUploadUrl;
21
+ exports.finalizeWorkspaceExternalProjectWebglPackage = finalizeWorkspaceExternalProjectWebglPackage;
22
+ exports.uploadWorkspaceExternalProjectWebglPackageFile = uploadWorkspaceExternalProjectWebglPackageFile;
23
+ exports.listWorkspaceExternalProjectCollections = listWorkspaceExternalProjectCollections;
24
+ exports.createWorkspaceExternalProjectCollection = createWorkspaceExternalProjectCollection;
25
+ exports.listWorkspaceExternalProjectEntries = listWorkspaceExternalProjectEntries;
26
+ exports.createWorkspaceExternalProjectEntry = createWorkspaceExternalProjectEntry;
27
+ exports.updateWorkspaceExternalProjectEntry = updateWorkspaceExternalProjectEntry;
28
+ exports.deleteWorkspaceExternalProjectEntry = deleteWorkspaceExternalProjectEntry;
29
+ exports.duplicateWorkspaceExternalProjectEntry = duplicateWorkspaceExternalProjectEntry;
30
+ exports.bulkUpdateWorkspaceExternalProjectEntries = bulkUpdateWorkspaceExternalProjectEntries;
31
+ exports.importWorkspaceExternalProjectContent = importWorkspaceExternalProjectContent;
32
+ exports.publishWorkspaceExternalProjectEntry = publishWorkspaceExternalProjectEntry;
33
+ exports.getWorkspaceExternalProjectDelivery = getWorkspaceExternalProjectDelivery;
34
+ const client_1 = require("./client");
35
+ const storage_1 = require("./storage");
36
+ function parseExternalProjectUploadPayload(payload) {
37
+ if (!payload.signedUrl || !payload.path) {
38
+ throw new Error('Missing upload URL payload');
39
+ }
40
+ return {
41
+ archivePath: payload.archivePath,
42
+ headers: payload.headers,
43
+ proxyUploadUrl: payload.proxyUploadUrl,
44
+ signedUrl: payload.signedUrl,
45
+ token: payload.token,
46
+ path: payload.path,
47
+ fullPath: payload.fullPath ?? null,
48
+ };
49
+ }
50
+ async function uploadExternalProjectFileWithSignedUrl(file, uploadUrlResult, fetchImpl, options) {
51
+ const uploadUrl = uploadUrlResult.proxyUploadUrl
52
+ ? (0, client_1.resolveInternalApiUrl)(uploadUrlResult.proxyUploadUrl, options?.baseUrl ?? (0, client_1.getConfiguredInternalApiBaseUrl)())
53
+ : uploadUrlResult.signedUrl;
54
+ const isProxyUpload = Boolean(uploadUrlResult.proxyUploadUrl);
55
+ const headers = {
56
+ ...(isProxyUpload ? {} : (uploadUrlResult.headers ?? {})),
57
+ };
58
+ if (!isProxyUpload && uploadUrlResult.token) {
59
+ headers.Authorization = `Bearer ${uploadUrlResult.token}`;
60
+ }
61
+ if (!headers['Content-Type']) {
62
+ headers['Content-Type'] = file.type || 'application/octet-stream';
63
+ }
64
+ if (options?.onUploadProgress && typeof XMLHttpRequest !== 'undefined') {
65
+ try {
66
+ await uploadExternalProjectFileWithXhr(file, uploadUrl, headers, options.onUploadProgress, isProxyUpload);
67
+ }
68
+ catch (error) {
69
+ if (isProxyUpload) {
70
+ throw error;
71
+ }
72
+ const fallbackHeaders = { ...headers };
73
+ delete fallbackHeaders['Content-Type'];
74
+ await uploadExternalProjectFileWithXhr(file, uploadUrl, fallbackHeaders, options.onUploadProgress, false).catch(() => {
75
+ throw error;
76
+ });
77
+ }
78
+ return {
79
+ archivePath: uploadUrlResult.archivePath ?? uploadUrlResult.path,
80
+ fullPath: uploadUrlResult.fullPath,
81
+ path: uploadUrlResult.path,
82
+ };
83
+ }
84
+ let uploadResponse = await fetchImpl(uploadUrl, {
85
+ method: 'PUT',
86
+ cache: 'no-store',
87
+ headers,
88
+ body: file,
89
+ });
90
+ if (!uploadResponse.ok && !isProxyUpload) {
91
+ const fallbackHeaders = { ...headers };
92
+ delete fallbackHeaders['Content-Type'];
93
+ uploadResponse = await fetchImpl(uploadUrl, {
94
+ method: 'PUT',
95
+ cache: 'no-store',
96
+ headers: fallbackHeaders,
97
+ body: file,
98
+ });
99
+ }
100
+ if (!uploadResponse.ok) {
101
+ const message = await uploadResponse.text().catch(() => '');
102
+ throw new Error(`Failed to upload file (${uploadResponse.status})${message ? `: ${message}` : ''}`);
103
+ }
104
+ options?.onUploadProgress?.({
105
+ loaded: file.size,
106
+ percent: 100,
107
+ total: file.size,
108
+ });
109
+ return {
110
+ archivePath: uploadUrlResult.archivePath ?? uploadUrlResult.path,
111
+ fullPath: uploadUrlResult.fullPath,
112
+ path: uploadUrlResult.path,
113
+ };
114
+ }
115
+ function uploadExternalProjectFileWithXhr(file, uploadUrl, headers, onProgress, withCredentials) {
116
+ return new Promise((resolve, reject) => {
117
+ const xhr = new XMLHttpRequest();
118
+ xhr.withCredentials = withCredentials;
119
+ xhr.upload.onprogress = (event) => {
120
+ const total = event.lengthComputable ? event.total : file.size || null;
121
+ const loaded = event.loaded;
122
+ const percent = total && total > 0
123
+ ? Math.min(99, Math.round((loaded / total) * 100))
124
+ : 0;
125
+ onProgress({
126
+ loaded,
127
+ percent,
128
+ total,
129
+ });
130
+ };
131
+ xhr.onload = () => {
132
+ if (xhr.status >= 200 && xhr.status < 300) {
133
+ onProgress({
134
+ loaded: file.size,
135
+ percent: 100,
136
+ total: file.size,
137
+ });
138
+ resolve();
139
+ return;
140
+ }
141
+ reject(new Error(`Failed to upload file (${xhr.status})${xhr.responseText ? `: ${xhr.responseText}` : ''}`));
142
+ };
143
+ xhr.onerror = () => {
144
+ reject(new Error('Failed to upload file'));
145
+ };
146
+ xhr.onabort = () => {
147
+ reject(new Error('Upload aborted'));
148
+ };
149
+ xhr.open('PUT', uploadUrl);
150
+ for (const [key, value] of Object.entries(headers)) {
151
+ xhr.setRequestHeader(key, value);
152
+ }
153
+ xhr.send(file);
154
+ });
155
+ }
156
+ async function listCanonicalExternalProjects(options) {
157
+ const client = (0, client_1.getInternalApiClient)(options);
158
+ return client.json('/api/v1/admin/external-projects', {
159
+ cache: 'no-store',
160
+ });
161
+ }
162
+ async function createCanonicalExternalProject(payload, options) {
163
+ const client = (0, client_1.getInternalApiClient)(options);
164
+ return client.json('/api/v1/admin/external-projects', {
165
+ body: JSON.stringify(payload),
166
+ cache: 'no-store',
167
+ headers: {
168
+ 'Content-Type': 'application/json',
169
+ },
170
+ method: 'POST',
171
+ });
172
+ }
173
+ async function updateCanonicalExternalProject(canonicalId, payload, options) {
174
+ const client = (0, client_1.getInternalApiClient)(options);
175
+ return client.json(`/api/v1/admin/external-projects/${(0, client_1.encodePathSegment)(canonicalId)}`, {
176
+ body: JSON.stringify(payload),
177
+ cache: 'no-store',
178
+ headers: {
179
+ 'Content-Type': 'application/json',
180
+ },
181
+ method: 'PATCH',
182
+ });
183
+ }
184
+ async function updateWorkspaceExternalProjectBinding(workspaceId, canonicalId, options) {
185
+ const client = (0, client_1.getInternalApiClient)(options);
186
+ return client.json(`/api/v1/admin/external-project-bindings/${(0, client_1.encodePathSegment)(workspaceId)}`, {
187
+ body: JSON.stringify({ canonicalId }),
188
+ cache: 'no-store',
189
+ headers: {
190
+ 'Content-Type': 'application/json',
191
+ },
192
+ method: 'PATCH',
193
+ });
194
+ }
195
+ async function listExternalProjectWorkspaceBindings(options) {
196
+ const client = (0, client_1.getInternalApiClient)(options);
197
+ return client.json('/api/v1/admin/external-project-bindings', {
198
+ cache: 'no-store',
199
+ });
200
+ }
201
+ async function listWorkspaceExternalProjectBindingAudits(options) {
202
+ const client = (0, client_1.getInternalApiClient)(options);
203
+ return client.json('/api/v1/admin/external-project-audits', {
204
+ cache: 'no-store',
205
+ });
206
+ }
207
+ async function getWorkspaceExternalProjectStudio(workspaceId, options) {
208
+ const client = (0, client_1.getInternalApiClient)(options);
209
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects`, {
210
+ cache: 'no-store',
211
+ });
212
+ }
213
+ async function getWorkspaceExternalProjectSummary(workspaceId, options) {
214
+ const client = (0, client_1.getInternalApiClient)(options);
215
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/summary`, {
216
+ cache: 'no-store',
217
+ });
218
+ }
219
+ async function updateWorkspaceExternalProjectCollection(workspaceId, collectionId, payload, options) {
220
+ const client = (0, client_1.getInternalApiClient)(options);
221
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/collections/${(0, client_1.encodePathSegment)(collectionId)}`, {
222
+ body: JSON.stringify(payload),
223
+ cache: 'no-store',
224
+ headers: {
225
+ 'Content-Type': 'application/json',
226
+ },
227
+ method: 'PATCH',
228
+ });
229
+ }
230
+ async function deleteWorkspaceExternalProjectCollection(workspaceId, collectionId, options) {
231
+ const client = (0, client_1.getInternalApiClient)(options);
232
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/collections/${(0, client_1.encodePathSegment)(collectionId)}`, {
233
+ cache: 'no-store',
234
+ method: 'DELETE',
235
+ });
236
+ }
237
+ async function createWorkspaceExternalProjectBlock(workspaceId, payload, options) {
238
+ const client = (0, client_1.getInternalApiClient)(options);
239
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/blocks`, {
240
+ body: JSON.stringify(payload),
241
+ cache: 'no-store',
242
+ headers: {
243
+ 'Content-Type': 'application/json',
244
+ },
245
+ method: 'POST',
246
+ });
247
+ }
248
+ async function updateWorkspaceExternalProjectBlock(workspaceId, blockId, payload, options) {
249
+ const client = (0, client_1.getInternalApiClient)(options);
250
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/blocks/${(0, client_1.encodePathSegment)(blockId)}`, {
251
+ body: JSON.stringify(payload),
252
+ cache: 'no-store',
253
+ headers: {
254
+ 'Content-Type': 'application/json',
255
+ },
256
+ method: 'PATCH',
257
+ });
258
+ }
259
+ async function createWorkspaceExternalProjectAsset(workspaceId, payload, options) {
260
+ const client = (0, client_1.getInternalApiClient)(options);
261
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/assets`, {
262
+ body: JSON.stringify(payload),
263
+ cache: 'no-store',
264
+ headers: {
265
+ 'Content-Type': 'application/json',
266
+ },
267
+ method: 'POST',
268
+ });
269
+ }
270
+ async function updateWorkspaceExternalProjectAsset(workspaceId, assetId, payload, options) {
271
+ const client = (0, client_1.getInternalApiClient)(options);
272
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/assets/${(0, client_1.encodePathSegment)(assetId)}`, {
273
+ body: JSON.stringify(payload),
274
+ cache: 'no-store',
275
+ headers: {
276
+ 'Content-Type': 'application/json',
277
+ },
278
+ method: 'PATCH',
279
+ });
280
+ }
281
+ async function deleteWorkspaceExternalProjectAsset(workspaceId, assetId, options) {
282
+ const client = (0, client_1.getInternalApiClient)(options);
283
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/assets/${(0, client_1.encodePathSegment)(assetId)}`, {
284
+ cache: 'no-store',
285
+ method: 'DELETE',
286
+ });
287
+ }
288
+ async function createWorkspaceExternalProjectAssetUploadUrl(workspaceId, payload, options) {
289
+ return (0, storage_1.createWorkspaceStorageUploadUrl)(workspaceId, payload.filename, {
290
+ path: buildExternalProjectAssetStoragePath(payload),
291
+ size: payload.size,
292
+ upsert: payload.upsert,
293
+ }, options);
294
+ }
295
+ function normalizeExternalProjectPathPart(value, label) {
296
+ const segments = value
297
+ .replace(/\\/g, '/')
298
+ .trim()
299
+ .replace(/^\/+|\/+$/g, '')
300
+ .split('/')
301
+ .filter(Boolean);
302
+ if (segments.length === 0) {
303
+ throw new Error(`Invalid ${label}`);
304
+ }
305
+ for (const segment of segments) {
306
+ if (segment === '.' || segment === '..' || segment.includes('..')) {
307
+ throw new Error(`Invalid ${label}`);
308
+ }
309
+ }
310
+ return segments.join('/');
311
+ }
312
+ function buildExternalProjectAssetStoragePath(payload) {
313
+ const adapter = normalizeExternalProjectPathPart(payload.adapter || 'shared', 'external project adapter');
314
+ const collectionType = normalizeExternalProjectPathPart(payload.collectionType, 'collection type');
315
+ const entrySlug = normalizeExternalProjectPathPart(payload.entrySlug, 'entry slug');
316
+ return `external-projects/${adapter}/${collectionType}/${entrySlug}`;
317
+ }
318
+ async function uploadWorkspaceExternalProjectAssetFile(workspaceId, file, payload, options) {
319
+ return (0, storage_1.uploadWorkspaceStorageFile)(workspaceId, file, {
320
+ onUploadProgress: options?.onUploadProgress,
321
+ path: buildExternalProjectAssetStoragePath(payload),
322
+ upsert: payload.upsert,
323
+ }, options);
324
+ }
325
+ async function createWorkspaceExternalProjectWebglPackageUploadUrl(workspaceId, payload, options) {
326
+ const client = (0, client_1.getInternalApiClient)(options);
327
+ const response = await client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/webgl-packages/upload-url`, {
328
+ body: JSON.stringify(payload),
329
+ cache: 'no-store',
330
+ headers: {
331
+ 'Content-Type': 'application/json',
332
+ },
333
+ method: 'POST',
334
+ });
335
+ return parseExternalProjectUploadPayload(response);
336
+ }
337
+ async function finalizeWorkspaceExternalProjectWebglPackage(workspaceId, payload, options) {
338
+ const client = (0, client_1.getInternalApiClient)(options);
339
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/webgl-packages/finalize`, {
340
+ body: JSON.stringify(payload),
341
+ cache: 'no-store',
342
+ headers: {
343
+ 'Content-Type': 'application/json',
344
+ },
345
+ method: 'POST',
346
+ });
347
+ }
348
+ async function uploadWorkspaceExternalProjectWebglPackageFile(workspaceId, file, payload, options) {
349
+ const fetchImpl = options?.fetch ?? globalThis.fetch;
350
+ const uploadUrl = await createWorkspaceExternalProjectWebglPackageUploadUrl(workspaceId, {
351
+ contentType: file.type || 'application/zip',
352
+ entryId: payload.entryId,
353
+ filename: file.name,
354
+ size: file.size,
355
+ }, options);
356
+ const upload = await uploadExternalProjectFileWithSignedUrl(file, uploadUrl, fetchImpl, {
357
+ baseUrl: options?.baseUrl,
358
+ onUploadProgress: options?.onUploadProgress,
359
+ });
360
+ return finalizeWorkspaceExternalProjectWebglPackage(workspaceId, {
361
+ archivePath: upload.archivePath,
362
+ contentType: file.type || 'application/zip',
363
+ entryId: payload.entryId,
364
+ originalFilename: file.name,
365
+ }, options);
366
+ }
367
+ async function listWorkspaceExternalProjectCollections(workspaceId, options) {
368
+ const client = (0, client_1.getInternalApiClient)(options);
369
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/collections`, {
370
+ cache: 'no-store',
371
+ });
372
+ }
373
+ async function createWorkspaceExternalProjectCollection(workspaceId, payload, options) {
374
+ const client = (0, client_1.getInternalApiClient)(options);
375
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/collections`, {
376
+ body: JSON.stringify(payload),
377
+ cache: 'no-store',
378
+ headers: {
379
+ 'Content-Type': 'application/json',
380
+ },
381
+ method: 'POST',
382
+ });
383
+ }
384
+ async function listWorkspaceExternalProjectEntries(workspaceId, query, options) {
385
+ const client = (0, client_1.getInternalApiClient)(options);
386
+ const searchParams = new URLSearchParams();
387
+ if (query?.collectionId) {
388
+ searchParams.set('collectionId', query.collectionId);
389
+ }
390
+ const suffix = searchParams.size > 0 ? `?${searchParams.toString()}` : '';
391
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/entries${suffix}`, {
392
+ cache: 'no-store',
393
+ });
394
+ }
395
+ async function createWorkspaceExternalProjectEntry(workspaceId, payload, options) {
396
+ const client = (0, client_1.getInternalApiClient)(options);
397
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/entries`, {
398
+ body: JSON.stringify(payload),
399
+ cache: 'no-store',
400
+ headers: {
401
+ 'Content-Type': 'application/json',
402
+ },
403
+ method: 'POST',
404
+ });
405
+ }
406
+ async function updateWorkspaceExternalProjectEntry(workspaceId, entryId, payload, options) {
407
+ const client = (0, client_1.getInternalApiClient)(options);
408
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/entries/${(0, client_1.encodePathSegment)(entryId)}`, {
409
+ body: JSON.stringify(payload),
410
+ cache: 'no-store',
411
+ headers: {
412
+ 'Content-Type': 'application/json',
413
+ },
414
+ method: 'PATCH',
415
+ });
416
+ }
417
+ async function deleteWorkspaceExternalProjectEntry(workspaceId, entryId, options) {
418
+ const client = (0, client_1.getInternalApiClient)(options);
419
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/entries/${(0, client_1.encodePathSegment)(entryId)}`, {
420
+ cache: 'no-store',
421
+ method: 'DELETE',
422
+ });
423
+ }
424
+ async function duplicateWorkspaceExternalProjectEntry(workspaceId, entryId, options) {
425
+ const client = (0, client_1.getInternalApiClient)(options);
426
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/entries/${(0, client_1.encodePathSegment)(entryId)}/duplicate`, {
427
+ cache: 'no-store',
428
+ method: 'POST',
429
+ });
430
+ }
431
+ async function bulkUpdateWorkspaceExternalProjectEntries(workspaceId, payload, options) {
432
+ const client = (0, client_1.getInternalApiClient)(options);
433
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/entries/bulk`, {
434
+ body: JSON.stringify(payload),
435
+ cache: 'no-store',
436
+ headers: {
437
+ 'Content-Type': 'application/json',
438
+ },
439
+ method: 'POST',
440
+ });
441
+ }
442
+ async function importWorkspaceExternalProjectContent(workspaceId, options) {
443
+ const client = (0, client_1.getInternalApiClient)(options);
444
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/import`, {
445
+ cache: 'no-store',
446
+ method: 'POST',
447
+ });
448
+ }
449
+ async function publishWorkspaceExternalProjectEntry(workspaceId, entryId, eventKind, options) {
450
+ const client = (0, client_1.getInternalApiClient)(options);
451
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/entries/${(0, client_1.encodePathSegment)(entryId)}/publish`, {
452
+ body: JSON.stringify({ eventKind }),
453
+ cache: 'no-store',
454
+ headers: {
455
+ 'Content-Type': 'application/json',
456
+ },
457
+ method: 'POST',
458
+ });
459
+ }
460
+ async function getWorkspaceExternalProjectDelivery(workspaceId, preview = false, options) {
461
+ const client = (0, client_1.getInternalApiClient)(options);
462
+ const previewQuery = preview ? '?preview=true' : '';
463
+ return client.json(`/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/external-projects/delivery${previewQuery}`, {
464
+ cache: 'no-store',
465
+ });
466
+ }
@@ -0,0 +1,109 @@
1
+ import type { FinanceBudgetStatus, Wallet } from '@tuturuuu/types';
2
+ import type { TransactionCategoryWithStats } from '@tuturuuu/types/primitives/TransactionCategory';
3
+ import { type InternalApiClientOptions, type InternalApiQuery } from './client';
4
+ export declare function listWallets(workspaceId: string, options?: InternalApiClientOptions): Promise<Wallet[]>;
5
+ export declare function getWallet(workspaceId: string, walletId: string, options?: InternalApiClientOptions): Promise<Wallet>;
6
+ export declare function listBudgets(workspaceId: string, options?: InternalApiClientOptions): Promise<{
7
+ alert_threshold: number | null;
8
+ amount: number;
9
+ category_id: string | null;
10
+ created_at: string | null;
11
+ description: string | null;
12
+ end_date: string | null;
13
+ id: string;
14
+ is_active: boolean;
15
+ name: string;
16
+ period: string;
17
+ spent: number;
18
+ start_date: string;
19
+ updated_at: string | null;
20
+ wallet_id: string | null;
21
+ ws_id: string;
22
+ }[]>;
23
+ export declare function getBudgetStatus(workspaceId: string, options?: InternalApiClientOptions): Promise<FinanceBudgetStatus[]>;
24
+ export interface FinanceBudgetUpsertPayload {
25
+ name: string;
26
+ description?: string | null;
27
+ amount: number;
28
+ period: 'monthly' | 'yearly' | 'custom';
29
+ start_date: string;
30
+ end_date?: string | null;
31
+ alert_threshold?: number | null;
32
+ category_id?: string | null;
33
+ wallet_id?: string | null;
34
+ }
35
+ export interface RecurringTransactionPayload {
36
+ name: string;
37
+ description?: string | null;
38
+ amount: number;
39
+ wallet_id: string;
40
+ category_id?: string | null;
41
+ frequency: 'daily' | 'weekly' | 'monthly' | 'yearly';
42
+ start_date: string;
43
+ end_date?: string | null;
44
+ }
45
+ export interface RecurringTransactionRecord extends RecurringTransactionPayload {
46
+ id: string;
47
+ next_occurrence: string;
48
+ is_active: boolean;
49
+ }
50
+ export declare function createBudget(workspaceId: string, payload: FinanceBudgetUpsertPayload, options?: InternalApiClientOptions): Promise<{
51
+ alert_threshold: number | null;
52
+ amount: number;
53
+ category_id: string | null;
54
+ created_at: string | null;
55
+ description: string | null;
56
+ end_date: string | null;
57
+ id: string;
58
+ is_active: boolean;
59
+ name: string;
60
+ period: string;
61
+ spent: number;
62
+ start_date: string;
63
+ updated_at: string | null;
64
+ wallet_id: string | null;
65
+ ws_id: string;
66
+ }>;
67
+ export declare function updateBudget(workspaceId: string, budgetId: string, payload: FinanceBudgetUpsertPayload, options?: InternalApiClientOptions): Promise<{
68
+ alert_threshold: number | null;
69
+ amount: number;
70
+ category_id: string | null;
71
+ created_at: string | null;
72
+ description: string | null;
73
+ end_date: string | null;
74
+ id: string;
75
+ is_active: boolean;
76
+ name: string;
77
+ period: string;
78
+ spent: number;
79
+ start_date: string;
80
+ updated_at: string | null;
81
+ wallet_id: string | null;
82
+ ws_id: string;
83
+ }>;
84
+ export declare function deleteBudget(workspaceId: string, budgetId: string, options?: InternalApiClientOptions): Promise<{
85
+ success: true;
86
+ }>;
87
+ export declare function listTransactionCategories(workspaceId: string, options?: InternalApiClientOptions): Promise<TransactionCategoryWithStats[]>;
88
+ export declare function listRecurringTransactions(workspaceId: string, options?: InternalApiClientOptions): Promise<RecurringTransactionRecord[]>;
89
+ export declare function listUpcomingRecurringTransactions(workspaceId: string, query?: {
90
+ daysAhead?: number;
91
+ }, options?: InternalApiClientOptions): Promise<unknown[]>;
92
+ export declare function createRecurringTransaction(workspaceId: string, payload: RecurringTransactionPayload, options?: InternalApiClientOptions): Promise<RecurringTransactionRecord>;
93
+ export declare function updateRecurringTransaction(workspaceId: string, recurringTransactionId: string, payload: RecurringTransactionPayload, options?: InternalApiClientOptions): Promise<RecurringTransactionRecord>;
94
+ export declare function deleteRecurringTransaction(workspaceId: string, recurringTransactionId: string, options?: InternalApiClientOptions): Promise<{
95
+ success: true;
96
+ }>;
97
+ export declare function getTransactionStats(workspaceId: string, query?: InternalApiQuery, options?: InternalApiClientOptions): Promise<{
98
+ totalTransactions: number;
99
+ totalIncome: number;
100
+ totalExpense: number;
101
+ netTotal: number;
102
+ hasRedactedAmounts: boolean;
103
+ }>;
104
+ export declare function getCategoryBreakdown(workspaceId: string, query?: InternalApiQuery, options?: InternalApiClientOptions): Promise<unknown[]>;
105
+ export declare function getSpendingTrends(workspaceId: string, query?: InternalApiQuery, options?: InternalApiClientOptions): Promise<{
106
+ date: string;
107
+ amount: number;
108
+ }[]>;
109
+ //# sourceMappingURL=finance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finance.d.ts","sourceRoot":"","sources":["../src/finance.ts"],"names":[],"mappings":"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"}