@tuturuuu/internal-api 0.35.0 → 0.36.0

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.
@@ -0,0 +1,3 @@
1
+ import { type InternalApiClientOptions } from './client';
2
+ export declare function getMailAttachmentText(protectedUrl: string, signal?: AbortSignal, options?: InternalApiClientOptions): Promise<string>;
3
+ //# sourceMappingURL=mail-attachment-preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-attachment-preview.d.ts","sourceRoot":"","sources":["../src/mail-attachment-preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,wBAAwB,EAG9B,MAAM,UAAU,CAAC;AAIlB,wBAAsB,qBAAqB,CACzC,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,wBAAwB,mBAsDnC"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMailAttachmentText = getMailAttachmentText;
4
+ const client_1 = require("./client");
5
+ const MAX_TEXT_PREVIEW_BYTES = 1024 * 1024;
6
+ async function getMailAttachmentText(protectedUrl, signal, options) {
7
+ if (!/^\/api\/v1\/workspaces\/[^/]+\/mail\/mailboxes\/[^/]+\/messages\/[^/]+\/attachments\/[^/?]+$/u.test(protectedUrl)) {
8
+ throw new Error('Invalid Mail attachment path');
9
+ }
10
+ const response = await (0, client_1.getInternalApiClient)((0, client_1.withMailApiBaseUrl)(options)).fetch(protectedUrl, {
11
+ credentials: 'include',
12
+ cache: 'no-store',
13
+ signal,
14
+ headers: { Range: `bytes=0-${MAX_TEXT_PREVIEW_BYTES - 1}` },
15
+ query: { preview: '1' },
16
+ });
17
+ if (!response.ok)
18
+ throw new client_1.InternalApiError('Attachment preview failed', response.status);
19
+ if (!response.headers
20
+ .get('content-type')
21
+ ?.toLowerCase()
22
+ .startsWith('text/plain')) {
23
+ throw new Error('Attachment is not plain text');
24
+ }
25
+ const total = response.headers.get('content-range')?.match(/\/(\d+)$/u)?.[1] ??
26
+ response.headers.get('content-length');
27
+ if (total && Number(total) > MAX_TEXT_PREVIEW_BYTES) {
28
+ await response.body?.cancel();
29
+ throw new Error('Text attachment is too large to preview');
30
+ }
31
+ if (!response.body)
32
+ return '';
33
+ const reader = response.body.getReader();
34
+ const decoder = new TextDecoder();
35
+ let size = 0;
36
+ let text = '';
37
+ try {
38
+ while (true) {
39
+ const { value, done } = await reader.read();
40
+ if (done)
41
+ break;
42
+ size += value.byteLength;
43
+ if (size > MAX_TEXT_PREVIEW_BYTES)
44
+ throw new Error('Text attachment is too large to preview');
45
+ text += decoder.decode(value, { stream: true });
46
+ }
47
+ return text + decoder.decode();
48
+ }
49
+ finally {
50
+ await reader.cancel();
51
+ reader.releaseLock();
52
+ }
53
+ }
package/dist/mail.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { type InternalApiClientOptions } from './client';
2
2
  import type { BulkUpdateMailPayload, BulkUpdateMailThreadsPayload, CreateMailDraftPayload, CreateMailOrganizationPayload, GenerateMailAiDraftPayload, GenerateMailAiDraftResponse, ListMailMessagesParams, ListMailThreadsParams, MailAttachment, MailBootstrapResponse, MailCatchAllConfiguration, MailDomain, MailFolderDefinition, MailLabel, MailMailboxMember, MailMailboxSettings, MailMessageDetail, MailMessagesResponse, MailMutationResponse, MailThreadDetail, MailThreadsResponse, SendMailMessagePayload, SuggestMailLabelsPayload, SuggestMailLabelsResponse, UpdateMailCatchAllPayload, UpdateMailDraftPayload, UpdateMailMailboxSettingsPayload, UpdateMailMessageStatePayload, UpdateMailOrganizationPayload, UpsertMailDomainPayload, UpsertMailMailboxMemberPayload } from './mail-types';
3
+ export { getMailAttachmentText } from './mail-attachment-preview';
3
4
  export * from './mail-types';
4
5
  export declare function listWorkspaceEmails(workspaceId: string, query?: {
5
6
  page?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../src/mail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../src/mail.ts"],"names":[],"mappings":"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"}
package/dist/mail.js CHANGED
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.getMailAttachmentText = void 0;
17
18
  exports.listWorkspaceEmails = listWorkspaceEmails;
18
19
  exports.getMailBootstrap = getMailBootstrap;
19
20
  exports.listMailMessages = listMailMessages;
@@ -50,6 +51,8 @@ exports.upsertMailDomain = upsertMailDomain;
50
51
  exports.getMailCatchAllConfiguration = getMailCatchAllConfiguration;
51
52
  exports.updateMailCatchAllConfiguration = updateMailCatchAllConfiguration;
52
53
  const client_1 = require("./client");
54
+ var mail_attachment_preview_1 = require("./mail-attachment-preview");
55
+ Object.defineProperty(exports, "getMailAttachmentText", { enumerable: true, get: function () { return mail_attachment_preview_1.getMailAttachmentText; } });
53
56
  __exportStar(require("./mail-types"), exports);
54
57
  function workspaceMailPath(workspaceId, suffix = '') {
55
58
  return `/api/v1/workspaces/${(0, client_1.encodePathSegment)(workspaceId)}/mail${suffix}`;
@@ -1,6 +1,15 @@
1
1
  import { type InternalApiClientOptions } from './client';
2
2
  /** Meet's Cloudflare-local refresh also supports invited guests outside a workspace. */
3
- export declare function createMeetCallRealtimeToken(meetingId: string, options?: InternalApiClientOptions): Promise<{
3
+ export declare function createMeetCallRealtimeToken(meetingId: string, options?: InternalApiClientOptions, device?: {
4
+ deviceId: string;
5
+ joinMode?: 'switch' | 'additional';
6
+ }): Promise<{
7
+ requiresDeviceChoice: true;
8
+ otherDeviceCount: number;
9
+ token?: never;
10
+ realtimeUrl?: never;
11
+ } | {
12
+ requiresDeviceChoice?: false;
4
13
  token: string;
5
14
  realtimeUrl: string;
6
15
  }>;
@@ -12,4 +21,53 @@ export declare function getMeetCallRoomState(meetingId: string): Promise<{
12
21
  ended: boolean;
13
22
  canReadNotes: boolean;
14
23
  }>;
24
+ export declare function askMeetAssistant(meetingId: string, messageId: string): Promise<{
25
+ ok: boolean;
26
+ }>;
27
+ export declare function uploadMeetChatFile(meetingId: string, file: File): Promise<{
28
+ id: string;
29
+ name: string;
30
+ size: number;
31
+ contentType: string;
32
+ }>;
33
+ export declare function readMeetChatFile(meetingId: string, id: string): Promise<{
34
+ url: string;
35
+ name: string;
36
+ size: number;
37
+ contentType: string;
38
+ }>;
39
+ export declare function uploadMeetRoomRecording(meetingId: string, sessionId: string, blob: Blob): Promise<{
40
+ ok: boolean;
41
+ }>;
42
+ export declare function readMeetRecordings(meetingId: string): Promise<{
43
+ recordings: Array<{
44
+ sessionId: string;
45
+ startedAt: string;
46
+ endedAt?: string;
47
+ status: string;
48
+ }>;
49
+ }>;
50
+ export declare function readMeetRecording(meetingId: string, sessionId: string): Promise<{
51
+ url: string;
52
+ }>;
53
+ export declare function getMeetRoomCosts(meetingId: string): Promise<{
54
+ cloudflare: null | {
55
+ receivedBytes: number;
56
+ devices: number;
57
+ reportingDevices: number;
58
+ limitedReports?: number;
59
+ webSocketMessages: number;
60
+ httpRequests: number;
61
+ storageWrites: number;
62
+ sfuEgressUsd: number;
63
+ durableRequestsUsd: number;
64
+ pricingDate: string;
65
+ };
66
+ miraRequests: number;
67
+ miraCostUsd: number;
68
+ miraUnpriced: number;
69
+ }>;
70
+ export declare function discardMeetChatFile(meetingId: string, id: string): Promise<{
71
+ ok: boolean;
72
+ }>;
15
73
  //# sourceMappingURL=meet-call.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"meet-call.d.ts","sourceRoot":"","sources":["../src/meet-call.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,UAAU,CAAC;AAElB,wFAAwF;AACxF,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,wBAAwB;WAGzB,MAAM;iBACA,MAAM;GAItB;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;UACtB,MAAM;GAOlD;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM;WACR,OAAO;kBAAgB,OAAO;GAI3E"}
1
+ {"version":3,"file":"meet-call.d.ts","sourceRoot":"","sources":["../src/meet-call.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,UAAU,CAAC;AAGlB,wFAAwF;AACxF,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,wBAAwB,EAClC,MAAM,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAA;CAAE;0BAIrC,IAAI;sBACR,MAAM;YAChB,KAAK;kBACC,KAAK;;2BAEI,KAAK;WAAS,MAAM;iBAAe,MAAM;GAKvE;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;UACtB,MAAM;GAOlD;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM;WACR,OAAO;kBAAgB,OAAO;GAI3E;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;QAC1B,OAAO;GAIjD;AACD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;QAIxD,MAAM;UACJ,MAAM;UACN,MAAM;iBACC,MAAM;GAKtB;AACD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;SAErD,MAAM;UACL,MAAM;UACN,MAAM;iBACC,MAAM;GAKtB;AACD,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,IAAI;;GAwBX;AACD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM;gBAEpC,KAAK,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;GAIL;AACD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;SAC1B,MAAM;GAIjD;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM;gBAElC,IAAI,GAAG;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;KACrB;kBACa,MAAM;iBACP,MAAM;kBACL,MAAM;GAIvB;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;QACtB,OAAO;GAOjD"}
package/dist/meet-call.js CHANGED
@@ -3,11 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createMeetCallRealtimeToken = createMeetCallRealtimeToken;
4
4
  exports.updateMeetCallTitle = updateMeetCallTitle;
5
5
  exports.getMeetCallRoomState = getMeetCallRoomState;
6
+ exports.askMeetAssistant = askMeetAssistant;
7
+ exports.uploadMeetChatFile = uploadMeetChatFile;
8
+ exports.readMeetChatFile = readMeetChatFile;
9
+ exports.uploadMeetRoomRecording = uploadMeetRoomRecording;
10
+ exports.readMeetRecordings = readMeetRecordings;
11
+ exports.readMeetRecording = readMeetRecording;
12
+ exports.getMeetRoomCosts = getMeetRoomCosts;
13
+ exports.discardMeetChatFile = discardMeetChatFile;
6
14
  const client_1 = require("./client");
15
+ const storage_1 = require("./storage");
7
16
  /** Meet's Cloudflare-local refresh also supports invited guests outside a workspace. */
8
- function createMeetCallRealtimeToken(meetingId, options) {
17
+ function createMeetCallRealtimeToken(meetingId, options, device) {
9
18
  return (0, client_1.getInternalApiClient)(options).json(`/api/meet-call/${(0, client_1.encodePathSegment)(meetingId)}/token`, {
10
19
  method: 'POST',
20
+ body: device ? JSON.stringify(device) : undefined,
11
21
  });
12
22
  }
13
23
  /** Persist only the title; leave meeting time and calendar metadata intact. */
@@ -20,3 +30,54 @@ function updateMeetCallTitle(meetingId, name) {
20
30
  function getMeetCallRoomState(meetingId) {
21
31
  return (0, client_1.getInternalApiClient)().json(`/api/meet-call/${(0, client_1.encodePathSegment)(meetingId)}/state`, { cache: 'no-store' });
22
32
  }
33
+ function askMeetAssistant(meetingId, messageId) {
34
+ return (0, client_1.getInternalApiClient)().json(`/api/meet-call/${(0, client_1.encodePathSegment)(meetingId)}/assistant`, { method: 'POST', body: JSON.stringify({ messageId }) });
35
+ }
36
+ function uploadMeetChatFile(meetingId, file) {
37
+ const form = new FormData();
38
+ form.set('file', file);
39
+ return (0, client_1.getInternalApiClient)().json(`/api/meet-call/${(0, client_1.encodePathSegment)(meetingId)}/files`, {
40
+ method: 'POST',
41
+ body: form,
42
+ });
43
+ }
44
+ function readMeetChatFile(meetingId, id) {
45
+ return (0, client_1.getInternalApiClient)().json(`/api/meet-call/${(0, client_1.encodePathSegment)(meetingId)}/files?id=${encodeURIComponent(id)}`, { cache: 'no-store' });
46
+ }
47
+ async function uploadMeetRoomRecording(meetingId, sessionId, blob) {
48
+ const contentType = blob.type.split(';')[0] || 'video/webm';
49
+ const body = JSON.stringify({ sessionId, size: blob.size, contentType });
50
+ const endpoint = `/api/meet-call/${(0, client_1.encodePathSegment)(meetingId)}/recording`;
51
+ const target = await (0, client_1.getInternalApiClient)().json(endpoint, { method: 'POST', body });
52
+ if (target.alreadySaved)
53
+ return { ok: true };
54
+ if (target.upload) {
55
+ const file = new File([blob], `recording.${contentType.includes('mp4') ? 'mp4' : 'webm'}`, { type: contentType });
56
+ await (0, storage_1.uploadFileWithSignedUrl)(file, target.upload, fetch);
57
+ }
58
+ else if (!target.alreadyUploaded)
59
+ throw new Error('Recording upload is unavailable');
60
+ return (0, client_1.getInternalApiClient)().json(endpoint, {
61
+ method: 'PUT',
62
+ body,
63
+ });
64
+ }
65
+ function readMeetRecordings(meetingId) {
66
+ return (0, client_1.getInternalApiClient)().json(`/api/meet-call/${(0, client_1.encodePathSegment)(meetingId)}/recording`, {
67
+ cache: 'no-store',
68
+ });
69
+ }
70
+ function readMeetRecording(meetingId, sessionId) {
71
+ return (0, client_1.getInternalApiClient)().json(`/api/meet-call/${(0, client_1.encodePathSegment)(meetingId)}/recording?sessionId=${encodeURIComponent(sessionId)}`, { cache: 'no-store' });
72
+ }
73
+ function getMeetRoomCosts(meetingId) {
74
+ return (0, client_1.getInternalApiClient)().json(`/api/meet-call/${(0, client_1.encodePathSegment)(meetingId)}/costs`, {
75
+ cache: 'no-store',
76
+ });
77
+ }
78
+ function discardMeetChatFile(meetingId, id) {
79
+ return (0, client_1.getInternalApiClient)().json(`/api/meet-call/${(0, client_1.encodePathSegment)(meetingId)}/files`, {
80
+ method: 'DELETE',
81
+ body: JSON.stringify({ id }),
82
+ });
83
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tuturuuu/internal-api",
3
- "version": "0.35.0",
3
+ "version": "0.36.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",