This commit is contained in:
2025-11-14 19:46:18 +01:00
parent a3c5494bf7
commit bd3eab8b40
10 changed files with 53 additions and 53 deletions
+21 -22
View File
@@ -2,6 +2,8 @@ import type { AxiosInstance } from 'axios';
export type Identifier = string | number;
type Nullable<T> = T | null;
export interface AssetObject {
ordinal?: number;
url?: string | null;
@@ -40,12 +42,12 @@ export type EnsureAssetUrl = (
options?: { start?: number | null; limit?: number | null; force?: boolean; [key: string]: unknown },
) => Promise<unknown>;
export type GetAsset = (document: DocumentLike, assetType: string) => AssetLike | null | undefined;
export type GetAsset = (document: DocumentLike, assetType: string) => Nullable<AssetLike>;
export const getAssetFromGroup = (
assets: AssetLike[] | Record<string, AssetLike> | null | undefined,
assetType: string,
): AssetLike | null => {
assets?: AssetLike[] | Record<string, AssetLike> | null,
assetType: string = '',
): Nullable<AssetLike> => {
if (!assetType || !assets) {
return null;
}
@@ -57,11 +59,11 @@ export const getAssetFromGroup = (
return assets?.[assetType] || null;
};
export const getAssetFromVersion = (currentVersion, assetType) => {
export const getAssetFromVersion = (currentVersion: Nullable<DocumentVersionLike>, assetType: string) => {
if (!currentVersion) {
return null;
}
return getAssetFromGroup(currentVersion.assets, assetType);
return getAssetFromGroup(currentVersion.assets ?? null, assetType);
};
const normalizeAssetObjects = (objects?: AssetObject[] | null): AssetObject[] => {
@@ -182,7 +184,7 @@ export class AssetView {
export const createAssetView = (asset?: AssetLike | null): AssetView => new AssetView(asset);
export const resolveDocumentAssetUrl = (
doc: DocumentLike | null | undefined,
doc: Nullable<DocumentLike>,
type: string,
{
ensureAssetUrl,
@@ -195,7 +197,7 @@ export const resolveDocumentAssetUrl = (
ensureOptions?: { start?: number; limit?: number; [key: string]: unknown };
objectOrdinal?: number;
} = {},
): string | null => {
): Nullable<string> => {
if (!doc || !type) {
return null;
}
@@ -251,13 +253,13 @@ class AssetManager {
this.api = api;
}
rememberAsset(entry: AssetLike | null | undefined) {
rememberAsset(entry?: Nullable<AssetLike>) {
if (entry?.id) {
this.assetCache.set(entry.id, entry);
}
}
hydrateAsset(asset: AssetLike | null | undefined): AssetLike | null | undefined {
hydrateAsset(asset?: Nullable<AssetLike>): Nullable<AssetLike> {
if (!asset || !asset.id) {
return asset;
}
@@ -287,7 +289,7 @@ class AssetManager {
return merged;
}
hydrateDocument(document: DocumentLike | null | undefined): DocumentLike | null | undefined {
hydrateDocument(document?: Nullable<DocumentLike>): Nullable<DocumentLike> {
if (!document) {
return document;
}
@@ -330,14 +332,14 @@ class AssetManager {
return { ...document, current_version: nextCurrentVersion };
}
hydrateDocuments(documents: DocumentLike[] | null | undefined) {
hydrateDocuments(documents?: DocumentLike[] | null) {
if (!Array.isArray(documents)) {
return documents;
return documents ?? [];
}
return documents.map((doc) => this.hydrateDocument(doc));
}
hydrateDetail(detail: { document?: DocumentLike; assets?: AssetLike[] } | null | undefined) {
hydrateDetail(detail?: { document?: DocumentLike; assets?: AssetLike[] } | null) {
if (!detail) {
return detail;
}
@@ -366,10 +368,7 @@ class AssetManager {
return changed ? next : detail;
}
hydrateFolderContents(contents: {
documents?: DocumentLike[];
document?: DocumentLike;
} | null | undefined) {
hydrateFolderContents(contents?: { documents?: DocumentLike[]; document?: DocumentLike } | null) {
if (!contents) {
return contents;
}
@@ -384,12 +383,12 @@ class AssetManager {
}
ensureAsset(
documentId: Identifier | null | undefined,
asset: AssetLike | null | undefined,
documentId?: Identifier | null,
asset?: Nullable<AssetLike>,
{ force = false, start = null, limit = null }: { force?: boolean; start?: number | null; limit?: number | null } = {},
): Promise<AssetLike | null> {
): Promise<Nullable<AssetLike>> {
if (!documentId || !asset?.id) {
return Promise.resolve(asset || null);
return Promise.resolve(asset ?? null);
}
const requestedStart = Number.isInteger(start) && start > 0 ? start : 1;