refactor: Introduce dedicated Document and Asset types and migrate codebase from DocumentLike.
This commit is contained in:
@@ -1,37 +1,10 @@
|
||||
import type { Identifier } from './types/identifiers';
|
||||
import type { AssetObject, AssetLike } from './types/assets';
|
||||
import type { DocumentVersion, Document } from './types/documents';
|
||||
|
||||
type Nullable<T> = T | null;
|
||||
|
||||
export interface AssetObject {
|
||||
ordinal?: number;
|
||||
url?: string | null;
|
||||
metadata?: Record<string, unknown> | null;
|
||||
expires_at?: number;
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
export interface AssetLike {
|
||||
id?: Identifier;
|
||||
asset_type?: string;
|
||||
cardinality?: number | null;
|
||||
download?: { url: string; expires_at: number } | null;
|
||||
metadata?: Record<string, unknown> | null;
|
||||
assets?: Record<string, AssetLike> | AssetLike[] | null;
|
||||
objects?: AssetObject[] | null;
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
export interface DocumentVersionLike {
|
||||
assets?: Record<string, AssetLike> | AssetLike[] | null;
|
||||
metadata?: Record<string, unknown> & { page_count?: number } | null;
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
export interface DocumentLike {
|
||||
id?: Identifier;
|
||||
current_version?: DocumentVersionLike | null;
|
||||
[key: string]: unknown;
|
||||
}
|
||||
export type { AssetObject, AssetLike, DocumentVersion as DocumentVersionLike, Document };
|
||||
|
||||
export const resolveAssetExpiresAt = (asset?: { download?: { expires_at: number } | null } | null): number | null =>
|
||||
asset?.download?.expires_at ?? null;
|
||||
@@ -45,7 +18,7 @@ export type EnsureAssetUrl = (
|
||||
options?: { force?: boolean;[key: string]: unknown },
|
||||
) => Promise<unknown>;
|
||||
|
||||
export type GetAsset = (document: DocumentLike, assetType: string) => Nullable<AssetLike>;
|
||||
export type GetAsset = (document: Document, assetType: string) => Nullable<AssetLike>;
|
||||
|
||||
export const getAssetFromGroup = (
|
||||
assets?: AssetLike[] | Record<string, AssetLike> | null,
|
||||
@@ -62,7 +35,7 @@ export const getAssetFromGroup = (
|
||||
return assets?.[assetType] || null;
|
||||
};
|
||||
|
||||
export const getAssetFromVersion = (currentVersion: Nullable<DocumentVersionLike>, assetType: string) => {
|
||||
export const getAssetFromVersion = (currentVersion: Nullable<DocumentVersion>, assetType: string) => {
|
||||
if (!currentVersion) {
|
||||
return null;
|
||||
}
|
||||
@@ -162,7 +135,7 @@ export class AssetView {
|
||||
export const createAssetView = (asset?: AssetLike | null): AssetView => new AssetView(asset);
|
||||
|
||||
export const resolveDocumentAssetUrl = (
|
||||
doc: Nullable<DocumentLike>,
|
||||
doc: Nullable<Document>,
|
||||
type: string,
|
||||
{
|
||||
ensureAssetUrl,
|
||||
|
||||
Reference in New Issue
Block a user