61609de97e
* feat(preview-generator): add new preview generator webapp * wip(preview-service): reworking the preview service backend * feat(previews): logging * feat(preview-service): streamline payloads * fix(preview-service): do not log the full payload * feat(preview-service): build new preview service * feat(preview-service): add separate response queue * feat(previews): integrate preview queues with the server * feat(previews): use module alias * chore(previews): remove old preview service code * feat(previews): log stuff on job statuses * fix(previews): add missing deps and scripts * fix(previews): package deps fix * fix(server): moar typing fixes * Metrics related to jobs: total count, request failures, response errors & durations * duration should include unit. - histogram metric should be summary - error responses include duration in seconds - attempt to remove metric before adding it (prevent errors with duplicate metrics) * fix(server, frontend): some ts fixes * fixes * fix(frontend): remove unneeded ts-expect-error * chore(preview-service): eslint * TS fix * feat(previews): more smoal fixes * fix(preview-service): alias loading * feat(helm): updates for new preview service queue setup * feat(preview-service): launch new browser for each job * feat(preview-service): add timeout, fix liveliness * fix(helm): add access to new secret in service accounts * tidy metrics into a separate file * Remove broken preview service acceptance test * fix broken import * Add metrics to test * feat(preview-service): handle preview service shutdown properly * fix(previews): merge bork --------- Co-authored-by: Iain Sproat <68657+iainsproat@users.noreply.github.com> Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
67 lines
1.6 KiB
TypeScript
67 lines
1.6 KiB
TypeScript
import { ObjectPreview } from '@/modules/previews/domain/types'
|
|
import { Nullable, Optional } from '@speckle/shared'
|
|
import express from 'express'
|
|
|
|
export type GetObjectPreviewInfo = (params: {
|
|
streamId: string
|
|
objectId: string
|
|
}) => Promise<Optional<ObjectPreview>>
|
|
|
|
export type CreateObjectPreview = (
|
|
params: Pick<ObjectPreview, 'streamId' | 'objectId' | 'priority'>
|
|
) => Promise<void>
|
|
|
|
export type ObjectPreviewInput = Pick<
|
|
ObjectPreview,
|
|
'streamId' | 'objectId' | 'priority'
|
|
>
|
|
export type StoreObjectPreview = (params: ObjectPreviewInput) => Promise<void>
|
|
export type UpsertObjectPreview = (params: {
|
|
objectPreview: ObjectPreview
|
|
}) => Promise<void>
|
|
|
|
export type ObjectPreviewRequest = {
|
|
url: string
|
|
token: string
|
|
jobId: string
|
|
}
|
|
|
|
export type Preview = {
|
|
id: string
|
|
data: Buffer
|
|
}
|
|
|
|
export type StorePreview = (params: { preview: Preview }) => Promise<void>
|
|
|
|
export type RequestObjectPreview = (params: ObjectPreviewRequest) => Promise<void>
|
|
|
|
export type GetPreviewImage = (params: {
|
|
previewId: string
|
|
}) => Promise<Nullable<Buffer>>
|
|
|
|
export type GetObjectPreviewBufferOrFilepath = (params: {
|
|
streamId: string
|
|
objectId: string
|
|
angle?: string
|
|
}) => Promise<
|
|
| {
|
|
type: 'file'
|
|
file: string
|
|
error?: true
|
|
errorCode?: string
|
|
}
|
|
| { type: 'buffer'; buffer: Buffer; error?: true; errorCode?: string }
|
|
>
|
|
|
|
export type SendObjectPreview = (
|
|
req: express.Request,
|
|
res: express.Response,
|
|
streamId: string,
|
|
objectId: string,
|
|
angle?: string
|
|
) => Promise<void>
|
|
|
|
export type CheckStreamPermissions = (
|
|
req: express.Request
|
|
) => Promise<{ hasPermissions: boolean; httpErrorCode: number }>
|