Skip to content

Commit 41d4d92

Browse files
committed
fix(files): share one served-bytes predicate between the serve route and large downloads
1 parent 425f9a4 commit 41d4d92

20 files changed

Lines changed: 82 additions & 58 deletions

File tree

‎apps/sim/app/api/files/serve/[...path]/route.ts‎

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,16 @@ import {
3030
import { resolveServableImageBytes } from '@/lib/uploads/server/image-derivative'
3131
import { resolveStoredFileContext } from '@/lib/uploads/server/metadata'
3232
import { MAX_BUFFERED_TRANSFER_BYTES } from '@/lib/uploads/shared/types'
33-
import {
34-
inferContextFromKey,
35-
needsRenderedArtifact,
36-
resolveEffectiveMimeType,
37-
} from '@/lib/uploads/utils/file'
33+
import { inferContextFromKey, resolveEffectiveMimeType } from '@/lib/uploads/utils/file'
3834
import { internalWorkspaceFileServeAuth } from '@/lib/workspace-files/api'
3935
import { fetchAuthorizedServableWorkspaceFileBuffer } from '@/lib/workspace-files/application/fetch-servable-workspace-file-buffer'
4036
import { finishFileDelivery } from '@/lib/workspace-files/application/finish-file-delivery'
4137
import { readWorkspaceFileRecordByKey } from '@/lib/workspace-files/application/read-workspace-file-record-by-key'
4238
import { streamAuthorizedWorkspaceFile } from '@/lib/workspace-files/application/stream-authorized-workspace-file'
43-
import { isSimPageSource, SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-compile'
39+
import { isSimPageSource } from '@/lib/workspace-files/page-compile'
40+
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-content-type'
4441
import { renderSimPageDocumentWithAssets } from '@/lib/workspace-files/page-document.server'
42+
import { servesStoredBytes } from '@/lib/workspace-files/stored-bytes'
4543
import { type KnowledgeFileAccess, verifyFileAccess } from '@/app/api/files/authorization'
4644
import {
4745
createConditionalFileResponse,
@@ -203,10 +201,10 @@ async function resolveTransformedBytes(params: {
203201
* Whether a request is answered with the stored object byte-for-byte, so its bytes can stream from
204202
* storage instead of being read whole and capped at the transfer ceiling.
205203
*
206-
* Every other answer is produced from the bytes and stays buffered: a Sim page renders, a generated
207-
* document compiles, and a `preview` may be a HEIC transcode — sniffed from the content, so no name
208-
* or type rules it out. What streams is exactly what {@link resolveServableBytes} and the
209-
* workspace resolver would have passed through unchanged.
204+
* Every other answer is produced from the bytes and stays buffered: see {@link servesStoredBytes},
205+
* plus a `preview`, which may be a HEIC transcode — sniffed from the content, so no name or type
206+
* rules it out. What streams is exactly what {@link resolveServableBytes} and the workspace
207+
* resolver would have passed through unchanged.
210208
*/
211209
function servesStoredObject(
212210
filename: string,
@@ -215,12 +213,7 @@ function servesStoredObject(
215213
): boolean {
216214
if (options.raw) return true
217215
if (options.preview) return false
218-
if (recordedType === SIM_PAGE_CONTENT_TYPE || filename.toLowerCase().endsWith('.html')) {
219-
return false
220-
}
221-
// A recorded type tells a finished upload from a generation source; without one, every
222-
// document name may be a source.
223-
return !needsRenderedArtifact(recordedType, filename)
216+
return servesStoredBytes(recordedType, filename)
224217
}
225218

226219
/**

‎apps/sim/app/workspace/[workspaceId]/files/components/file-viewer/text-editor.tsx‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ import {
2727
import type { FileDownloadSource } from '@/lib/uploads/client/download'
2828
import type { WorkspaceFileRecord } from '@/lib/uploads/contexts/workspace'
2929
import { getFileExtension } from '@/lib/uploads/utils/file'
30-
import { isSimPageSource, SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-compile'
30+
import { isSimPageSource } from '@/lib/workspace-files/page-compile'
31+
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-content-type'
3132
import { EditorContextMenu } from '@/app/workspace/[workspaceId]/files/components/file-viewer/editor-context-menu'
3233
import { FileSaveConflict } from '@/app/workspace/[workspaceId]/files/components/file-viewer/file-save-conflict'
3334
import type { PreviewMode } from '@/app/workspace/[workspaceId]/files/components/file-viewer/file-viewer'

‎apps/sim/app/workspace/[workspaceId]/files/files.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import {
4848
isFileBrowserSize,
4949
isFileBrowserType,
5050
} from '@/lib/workspace-files/browser'
51-
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-compile'
51+
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-content-type'
5252
import { FindBar } from '@/app/workspace/[workspaceId]/components/find-bar/find-bar'
5353
import { useFindShortcut } from '@/app/workspace/[workspaceId]/components/find-bar/use-find-shortcut'
5454
import type { MoveOptionNode } from '@/app/workspace/[workspaceId]/components/folders'

‎apps/sim/app/workspace/[workspaceId]/home/components/mothership-view/mothership-view.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
} from '@/lib/mothership/resources/types'
1212
import type { FileDownloadSource } from '@/lib/uploads/client/download'
1313
import { getFileExtension } from '@/lib/uploads/utils/file'
14-
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-compile'
14+
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-content-type'
1515
import type { PreviewMode } from '@/app/workspace/[workspaceId]/files/components/file-viewer'
1616
import {
1717
isCsvStreamOnly,

‎apps/sim/lib/mothership/tools/server/files/edit-content.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import {
2121
HAND_WRITTEN_PAGE_MESSAGE,
2222
isHandWrittenCompiledPage,
2323
isSimPageSource,
24-
SIM_PAGE_CONTENT_TYPE,
2524
} from '@/lib/workspace-files/page-compile'
25+
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-content-type'
2626
import { buildEmbeddedImageRefWarning } from './embedded-image-refs'
2727
import { waitForLatestFileIntent } from './intent-store'
2828
import { compileDocForWrite, getDocumentFormatInfo, inferContentType } from './workspace-file'

‎apps/sim/lib/projects/files/application/artifacts.ts‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,8 @@ import {
5656
textExtractionUnsupportedError,
5757
} from '@/lib/workspace-files/application/read-workspace-file-text'
5858
import { fileOwnerCondition } from '@/lib/workspace-files/ownership-query'
59-
import {
60-
isSimPageSource,
61-
ProjectPageForeignEmbedError,
62-
SIM_PAGE_CONTENT_TYPE,
63-
} from '@/lib/workspace-files/page-compile'
59+
import { isSimPageSource, ProjectPageForeignEmbedError } from '@/lib/workspace-files/page-compile'
60+
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-content-type'
6461
import { renderSimPageDocument } from '@/lib/workspace-files/page-document'
6562
import {
6663
collectSimPageFileReferences,

‎apps/sim/lib/projects/files/application/content.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import {
4343
import { parseWorkspaceFileRevision } from '@/lib/workspace-files/application/file-revision'
4444
import { resolveWorkspaceFileVersionWrite } from '@/lib/workspace-files/application/file-version-write'
4545
import { MAX_WORKSPACE_FILE_CONTENT_BYTES } from '@/lib/workspace-files/orchestration'
46-
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-compile'
46+
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-content-type'
4747
import { restoreSimPageSourceBuffer } from '@/lib/workspace-files/page-source-embed'
4848

4949
interface ContentUseCaseArgs<I, P = undefined> {

‎apps/sim/lib/projects/files/application/downloads.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ import {
5959
} from '@/lib/workspace-files/download-selection'
6060
import { MAX_ZIP_DOWNLOAD_BYTES, MAX_ZIP_DOWNLOAD_FILES } from '@/lib/workspace-files/limits'
6161
import { fileOwnerCondition } from '@/lib/workspace-files/ownership-query'
62-
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-compile'
62+
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-content-type'
6363
import {
6464
createFileReadReceipt,
6565
type FileReadReceipt,

‎apps/sim/lib/projects/files/application/uploads.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ import {
5656
type UploadSessionRecord,
5757
} from '@/lib/uploads/upload-session/service'
5858
import type { WorkspaceFileUploadSource } from '@/lib/uploads/upload-session/workspace-file-provenance'
59-
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-compile'
59+
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-content-type'
6060
import {
6161
MAX_SIM_PAGE_UPLOAD_SNIFF_BYTES,
6262
restoreSimPageSourceBuffer,

‎apps/sim/lib/public-shares/application/read.ts‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,8 @@ import { resolveEffectiveMimeType } from '@/lib/uploads/utils/file'
3737
import { sniffImageContentType } from '@/lib/uploads/utils/validation'
3838
import { reportWorkspaceFileDelivery } from '@/lib/workspace-files/application/file-delivery-observer'
3939
import { fileOwnerCondition } from '@/lib/workspace-files/ownership-query'
40-
import {
41-
isSimPageSource,
42-
ProjectPageForeignEmbedError,
43-
SIM_PAGE_CONTENT_TYPE,
44-
} from '@/lib/workspace-files/page-compile'
40+
import { isSimPageSource, ProjectPageForeignEmbedError } from '@/lib/workspace-files/page-compile'
41+
import { SIM_PAGE_CONTENT_TYPE } from '@/lib/workspace-files/page-content-type'
4542
import { renderSimPageDocument } from '@/lib/workspace-files/page-document'
4643
import {
4744
collectSimPageFileReferences,

0 commit comments

Comments
 (0)