import type { IDatabase, Row } from "../shared/database.js"; import { type ILogger } from "../shared/logger.js"; import { type BucketName, type Checksum, type EntityId, type HashState, type MimeType, type NumParts, type ObjectDirectoryPath, type ObjectId, type ObjectPath, type ObjectSize, type ObjectTags, type OrderType, type PartSize, type Timestamp, type Uint } from "../shared/schemas.js"; import type { ITextSearch } from "../shared/text-search.js"; import * as v from "../shared/valibot.js"; /*************************************************************************************************** * * 入力パラメーター * **************************************************************************************************/ /** * JSON 文字列を JavaScript の値に変換する関数のインターフェースです。 */ export interface IJsonParse { /** * JSON 文字列を JavaScript の値に変換します。 * * @param string 変換される JSON 文字列です。 * @returns 変換された JavaScript 値です。 */ (string: string): unknown; } /** * JavaScript の値を JSON 文字列に変換する関数のインターフェースです。 */ export interface IJsonStringify { /** * JavaScript の値を JSON 文字列に変換します。 * * @param value 変換される JavaScript 値です。 * @returns 変換された JSON 文字列です。 */ (value: unknown): string; } /** * JavaScript の値と JSON 文字列を相互変換するための関数群のインターフェースです。 */ export interface IJson { /** * JSON 文字列を JavaScript の値に変換する関数です。 */ readonly parse: IJsonParse; /** * JavaScript の値を JSON 文字列に変換する関数です。 */ readonly stringify: IJsonStringify; } /** * `Metadata` を構築するための入力パラメーターです。 */ export type MetadataInput = Readonly<{ /** * バケット名です。 */ bucketName: BucketName; /** * メタデータを記録するためのデータベースです。 */ database: IDatabase; /** * JavaScript の値と JSON 文字列を相互変換するための関数群です。 */ json: IJson; /** * ログを記録する関数群です。 */ logger: ILogger; /** * オブジェクトの説明文の最大サイズ (バイト数) です。 */ maxDescriptionTextByteSize: Uint; /** * ユーザー定義のメタデータの最大サイズ (バイト数) です。 * このサイズは、ユーザー定義のメタデータを `json.stringify` で変換したあとの文字列に対して計算されます。 */ maxUserMetadataJsonByteSize: Uint; /** * オブジェクトの説明文の検索に使用するユーティリティーです。 */ textSearch: ITextSearch; }>; /*************************************************************************************************** * * 行データ * **************************************************************************************************/ /** * 存在するオブジェクトのメタデータです。 */ export type ObjectMetadata = { /** * バケット名です。 */ bucket: BucketName; /** * オブジェクトの識別子です。 */ id: ObjectId; /** * バケット内のオブジェクトパスです。 */ path: ObjectPath; /** * - **`"CREATE"`**: 新しいオブジェクトがバケットに書き込まれたことを示します。 * - **`"UPDATE_METADATA"`**: オブジェクトの作成後、メタデータが変更されたことを示します。 */ recordType: ("CREATE" | "UPDATE_METADATA") & v.Brand<"RecordType">; /** * `recordType` が更新された時刻 (ミリ秒) です。 */ recordTimestamp: Timestamp; /** * オブジェクトのサイズ (バイト数) です。 */ size: ObjectSize; /** * オブジェクトのパートの総数です。 */ numParts: NumParts; /** * 各パートのサイズ (バイト数) です。 */ partSize: PartSize; /** * オブジェクト形式です。 */ mimeType: MimeType; /** * オブジェクトが作成された時刻 (ミリ秒) です。 */ createdAt: Timestamp; /** * オブジェクトが最後に更新された時刻 (ミリ秒) です。 */ lastModifiedAt: Timestamp; /** * オブジェクトのチェックサム (MD5 ハッシュ値) です。 */ checksum: Checksum; /** * オブジェクトのチェックサムのアルゴリズムです。 */ checksumAlgorithm: "MD5"; /** * オブジェクトに関連付けられたオブジェクトタグです。 */ objectTags: ObjectTags; /** * オブジェクトの説明文です。 */ description: string | null; /** * ユーザー定義のメタデータです。 */ userMetadata: unknown; /** * 実際に保存されるオブジェクトの識別子です。 */ entityId: EntityId; }; /** * ゴミ箱に入れられたオブジェクトのメタデータです。 */ export type ObjectInTrashMetadata = { /** * バケット名です。 */ bucket: BucketName; /** * バケット内のオブジェクトパスです。 */ path: ObjectPath; /** * オブジェクトの識別子です。 */ id: ObjectId; /** * `recordType` が更新された時刻 (ミリ秒) です。 */ recordTimestamp: Timestamp; /** * オブジェクト形式です。 */ mimeType: MimeType; /** * オブジェクトが作成された時刻 (ミリ秒) です。 */ createdAt: Timestamp; /** * オブジェクトが最後に更新された時刻 (ミリ秒) です。 */ lastModifiedAt: Timestamp; /** * オブジェクトのチェックサム (MD5 ハッシュ値) です。 */ checksum: Checksum; /** * オブジェクトのチェックサムのアルゴリズムです。 */ checksumAlgorithm: "MD5"; /** * 実際に保存されるオブジェクトの識別子です。 */ entityId: EntityId; }; /*************************************************************************************************** * * 行データのセレクター * **************************************************************************************************/ /** * 取得のときに結果に含めるカラムを選択するためのクエリーです。 */ export type ObjectMetadataSelectQuery = Readonly<{ /** * バケット名です。 * * @default false */ bucket?: boolean | undefined; /** * オブジェクトの識別子です。 * * @default false */ id?: boolean | undefined; /** * バケット内のオブジェクトパスです。 * * @default false */ path?: boolean | undefined; /** * オブジェクトのメタデータのレコードタイプです。 * * @default false */ recordType?: boolean | undefined; /** * `recordType` が更新された時刻 (ミリ秒) です。 * * @default false */ recordTimestamp?: boolean | undefined; /** * オブジェクトのサイズ (バイト数) です。 * * @default false */ size?: boolean | undefined; /** * オブジェクトのパートの総数です。 * * @default false */ numParts?: boolean | undefined; /** * 各パートのサイズ (バイト数) です。 * * @default false */ partSize?: boolean | undefined; /** * オブジェクト形式です。 * * @default false */ mimeType?: boolean | undefined; /** * オブジェクトが作成された時刻 (ミリ秒) です。 * * @default false */ createdAt?: boolean | undefined; /** * オブジェクトが最後に更新された時刻 (ミリ秒) です。 * * @default false */ lastModifiedAt?: boolean | undefined; /** * オブジェクトのチェックサム (MD5 ハッシュ値) です。 * * @default false */ checksum?: boolean | undefined; /** * オブジェクトのチェックサムのアルゴリズムです。 * * @default false */ checksumAlgorithm?: boolean | undefined; /** * オブジェクトに関連付けられたオブジェクトタグです。 * * @default false */ objectTags?: boolean | undefined; /** * オブジェクトの説明文です。 * * @default false */ description?: boolean | undefined; /** * ユーザー定義のメタデータです。 * * @default false */ userMetadata?: boolean | undefined; /** * 実際に保存されるオブジェクトの識別子です。 * * @default false */ entityId?: boolean | undefined; }>; /** * 取得のときに結果に含めるカラムを選択するためのクエリーです。 */ export type ObjectInTrashMetadataSelectQuery = Pick; /*************************************************************************************************** * * 作成 * **************************************************************************************************/ /** * オブジェクトのメタデータを作成するための入力パラメーターです。 */ type CreateInput = Readonly<{ /** * バケット内のオブジェクトパスです。 */ objectPath: ObjectPath; /** * 実際に保存されるオブジェクトの識別子です。 */ entityId: EntityId; /** * オブジェクトのチェックサム (MD5 ハッシュ値) です。 */ checksum: Readonly<{ /** * 計算されたハッシュ値の 16 進数文字列です。 */ value: Checksum; /** * ハッシュ関数の内部状態です。 */ state: HashState; }>; /** * オブジェクトのデータ形式です。`undefined` の場合はオブジェクトパスから自動判定されます。 */ mimeType: MimeType | undefined; /** * オブジェクトのサイズ (バイト数) です。 */ objectSize: ObjectSize; /** * オブジェクトのパートの総数です。 */ numParts: NumParts; /** * 各パートのサイズ (バイト数) です。 */ partSize: PartSize; /** * オブジェクトに関連付けられたオブジェクトタグです。 * * @default [] */ objectTags: ObjectTags | undefined; /** * オブジェクトの説明文です。 * * @default null */ description: string | null | undefined; /** * ユーザー定義のメタデータです。 * * @default null */ userMetadata: unknown; /** * カスタムのタイムスタンプです。 * * @default Date.now() */ timestamp: Timestamp | undefined; }>; /** * オブジェクトのメタデータを排他的に作成するための入力パラメーターです。 */ type CreateExclusiveInput = Readonly<{ /** * バケット内のオブジェクトパスです。 */ objectPath: ObjectPath; /** * 実際に保存されるオブジェクトの識別子です。 */ entityId: EntityId; /** * オブジェクトのチェックサム (MD5 ハッシュ値) です。 */ checksum: Readonly<{ /** * 計算されたハッシュ値の 16 進数文字列です。 */ value: Checksum; /** * ハッシュ関数の内部状態です。 */ state: HashState; }>; /** * オブジェクトのデータ形式です。`undefined` の場合はオブジェクトパスから自動判定されます。 */ mimeType: MimeType | undefined; /** * オブジェクトのサイズ (バイト数) です。 */ objectSize: ObjectSize; /** * オブジェクトのパートの総数です。 */ numParts: NumParts; /** * 各パートのサイズ (バイト数) です。 */ partSize: PartSize; /** * オブジェクトに関連付けられたオブジェクトタグです。 * * @default [] */ objectTags: ObjectTags | undefined; /** * オブジェクトの説明文です。 * * @default null */ description: string | null | undefined; /** * ユーザー定義のメタデータです。 * * @default null */ userMetadata: unknown; /** * カスタムのタイムスタンプです。 * * @default Date.now() */ timestamp: Timestamp | undefined; }>; /*************************************************************************************************** * * 読み取り * **************************************************************************************************/ /** * オブジェクトのプロパティーの型を取得します。 * * @template TObject 対象のオブジェクトです。 * @template TProperty プロパティーのキーです。 * @template TNotSet プロパティーが存在しない場合の型です。 * @returns 指定されたプロパティーの型、またはプロパティーが存在しない場合は TNotSet の型です。 */ export type $Get = TObject extends { readonly [_ in TProperty]: infer V; } ? V : TNotSet; /** * エディターにおけるオブジェクトの型表示をきれいにします。 * * @template T オブジェクトの型です。 */ type $Simplify = { [P in keyof T]: T[P]; } & {}; /** * オブジェクトから、指定したプロパティーのみを選択した型を生成します。 * * @template TObject 対象のオブジェクトです。 * @template TSelect 行データから選択するプロパティーを、真偽値で指定したオブジェクトです。 * @returns 指定されたプロパティーのみを持つ新しい型、または TSelect が undefined の場合は TObject の型です。 */ export type $Select = TSelect extends undefined ? TObject : $Simplify<{ [P in { [P in keyof TSelect]: TSelect[P] extends true ? P : never; }[keyof TSelect & keyof TObject]]-?: TObject[P]; } & { [P in { [P in keyof TSelect]: (boolean | undefined) extends TSelect[P] ? P : never; }[keyof TSelect & keyof TObject]]+?: TObject[P]; }>; /** * 存在するオブジェクトのメタデータを取得するための入力パラメーターです。 */ type ReadInput = Readonly<{ /** * 結果に含めるカラムを選択します。 */ select: ObjectMetadataSelectQuery | undefined; /** * 対象を限定します。 */ where: Readonly<{ /** * バケット内のオブジェクトパスです。 */ objectPath: ObjectPath; }>; }>; /** * 存在するオブジェクトのメタデータを取得した結果です。 * * @template TSelect SELECT するカラムです。 */ type ReadOutput = $Select; /** * 存在するオブジェクトの内部利用のためのメタデータを取得するための入力パラメーターです。 */ type ReadDetailInput = Readonly<{ /** * バケット内のオブジェクトパスです。 */ objectPath: ObjectPath; }>; /** * 存在するオブジェクトの内部利用のためのメタデータを取得した結果です。 */ type ReadDetailOutput = Readonly<{ /** * 実際に保存されるオブジェクトの識別子です。 */ entityId: EntityId; /** * オブジェクトのチェックサム (MD5 ハッシュ値) です。 */ checksum: Readonly<{ /** * 計算されたハッシュ値の 16 進数文字列です。 */ value: Checksum; /** * ハッシュ関数の内部状態です。 */ state: HashState; }>; /** * オブジェクトのサイズ (バイト数) です。 */ size: ObjectSize; /** * オブジェクトのパートの総数です。 */ numParts: NumParts; /** * 各パートのサイズ (バイト数) です。 */ partSize: PartSize; }>; /** * ゴミ箱に入れられたオブジェクトの内部利用のためのメタデータを取得するための入力パラメーターです。 */ type ReadInTrashInput = Readonly<{ /** * オブジェクトの識別子です。 */ objectId: ObjectId; }>; /** * ゴミ箱に入れられたオブジェクトの内部利用のためのメタデータを取得した結果です。 */ type ReadInTrashOutput = Readonly<{ /** * 実際に保存されるオブジェクトの識別子です。 */ entityId: EntityId; }>; /** * パスが存在するか確認するための入力パラメーターです。 */ type ExistsInput = Readonly<{ /** * バケット内のディレクトリーパスです。 */ dirPath: ObjectDirectoryPath; }> | Readonly<{ /** * バケット内のオブジェクトパスです。 */ objectPath: ObjectPath; }>; /** * パスが存在するか確認した結果です。 */ type ExistsOutput = { /** * オブジェクトのメタデータが存在すれば `true` です。 */ exists: boolean; }; /** * オブジェクトやディレクトリーのステータス情報を取得するための入力パラメーターです。 */ type StatInput = Readonly<{ /** * バケット内のパスです。 */ objectPath: ObjectPath; }>; /** * オブジェクトやディレクトリーのステータス情報を取得した結果です。 */ type StatOutput = { /** * `true` なら指定したパスはオブジェクトです。 */ isObject: boolean; /** * `true` なら指定したパスはディレクトリーです。 */ isDirectory: boolean; }; /** * ディレクトリーまたはオブジェクトをリストアップするための入力パラメーターです。 */ type ListInput = Readonly<{ /** * リストアイテムがオブジェクトのときに結果に含めるカラムを選択します。 */ select: ObjectMetadataSelectQuery | undefined; /** * 対象を限定します。 */ where: Readonly<{ /** * ディレクトリーパスです。 */ dirPath: ObjectDirectoryPath; /** * `true` ならオブジェクトのみを、`false` ならディレクトリーのみをリストアップします。 */ isObject: boolean | undefined; }>; /** * スキップするアイテムの数です。 * * @default 0 */ skip: Uint | undefined; /** * 取得するアイテムの最大数です。 * * @default 上限なし */ take: Uint | undefined; /** * 結果の並び順を指定します。 */ orderBy: Readonly<{ /** * オブジェクト名の並び順です。 */ name: Readonly<{ /** * 並び順です。 * * @default "ASC" */ type: OrderType | undefined; /** * 照合順序です。 * * @default "nfc" */ collate: string | undefined; }>; /** * オブジェクトを先頭にします。 * * @default false */ preferObject: boolean | undefined; }>; }>; /** * ディレクトリーをリストアップした結果です。 * * @template TSelect SELECT するカラムです。 */ type ListOutputDirectoryItem = { /** * `false` ならディレクトリーです。 */ isObject: false; /** * リストアイテムの名前です。 */ name: string; }; /** * オブジェクトをリストアップした結果です。 * * @template TSelect SELECT するカラムです。 */ type ListOutputObjectItem = $Select & { /** * `true` ならオブジェクトです。 */ isObject: true; /** * リストアイテムの名前です。 */ name: string; }; /** * ディレクトリーまたはオブジェクトをリストアップした結果です。 * * @template TSelect SELECT するカラムです。 */ type ListOutput = undefined extends TIsObject ? ListOutputDirectoryItem | ListOutputObjectItem : ((false extends TIsObject ? ListOutputDirectoryItem : never) | (true extends TIsObject ? ListOutputObjectItem : never)); /** * ゴミ箱に入れられたオブジェクトのメタデータを取得するための入力パラメーターです。 */ type ListInTrashInput = Readonly<{ /** * 結果に含めるカラムを選択します。 */ select: ObjectInTrashMetadataSelectQuery | undefined; /** * 対象を限定します。 */ where: Readonly<{ /** * ディレクトリーパスです。 */ dirPath: ObjectDirectoryPath; }>; /** * スキップする結果の数です。 * * @default 0 */ skip: Uint | undefined; /** * 取得する結果の最大数です。 * * @default 上限なし */ take: Uint | undefined; /** * 結果の並び順を指定します。 */ orderBy: Readonly<{ /** * オブジェクト名の並び順です。 */ name: Readonly<{ /** * 並び順です。 * * @default "ASC" */ type: OrderType | undefined; /** * 照合順序です。 * * @default "nfc" */ collate: string | undefined; }>; }>; }>; /** * ゴミ箱に入れられたオブジェクトのメタデータを取得した結果です。 * * @template TSelect SELECT するカラムです。 */ type ListInTrashOutput = $Select & { /** * `true` ならオブジェクトです。 */ isObject: true; /** * リストアイテムの名前です。 */ name: string; }; /** * オブジェクトの説明文を対象に全文検索するための入力パラメーターです。 */ type SearchInput = Readonly<{ /** * ディレクトリーパスです。 */ dirPath: ObjectDirectoryPath; /** * 検索クエリーです。 */ query: string; /** * スキップする検索結果の数です。 * * @default 0 */ skip: Uint | undefined; /** * 取得する検索結果の最大数です。 * * @default 上限なし */ take: Uint | undefined; /** * ディレクトリー内のオブジェクトを再帰的に検索するなら `true`、しないなら `false` を指定します。 * * @default false */ recursive: boolean | undefined; /** * 検索にヒットしたと判断するスコアのしきい値です。 * * @default 0 */ scoreThreshold: number | undefined; }>; /** * オブジェクトの説明文を対象に全文検索した結果です。 */ type SearchOutput = { /** * バケット内のオブジェクトパスです。 */ objectPath: ObjectPath; /** * オブジェクトの説明文です。 */ description: string | null; /** * 検索スコアです。 */ searchScore: number; }; /*************************************************************************************************** * * 更新 * **************************************************************************************************/ /** * オブジェクトのメタデータを移動するための入力パラメーターです。 */ type MoveInput = Readonly<{ /** * バケット内の移動元のオブジェクトパスです。 */ srcObjectPath: ObjectPath; /** * バケット内の移動先のオブジェクトパスです。 */ dstObjectPath: ObjectPath; }>; /** * オブジェクトのメタデータをコピーするための入力パラメーターです。 */ type CopyInput = Readonly<{ /** * バケット内のコピー元のオブジェクトパスです。 */ srcObjectPath: ObjectPath; /** * バケット内のコピー先のオブジェクトパスです。 */ dstObjectPath: ObjectPath; /** * 実際に保存されているオブジェクトの識別子です。 */ dstEntityId: EntityId; /** * カスタムのタイムスタンプです。 * * @default Date.now() */ timestamp: Timestamp | undefined; }>; /** * オブジェクトのメタデータを更新するための入力パラメーターです。 */ type UpdateInput = Readonly<{ /** * バケット内のオブジェクトパスです。 */ objectPath: ObjectPath; /** * オブジェクトのデータ形式です。 */ mimeType: MimeType | undefined; /** * オブジェクトに関連付けられたオブジェクトタグです。 */ objectTags: ObjectTags | undefined; /** * オブジェクトの説明文です。 */ description: string | null | undefined; /** * ユーザー定義のメタデータです。 */ userMetadata: unknown | undefined; /** * カスタムのタイムスタンプです。 * * @default Date.now() */ timestamp: Timestamp | undefined; }>; /** * オブジェクトのメタデータを排他的に更新するための入力パラメーターです。 */ type UpdateExclusiveInput = Readonly<{ /** * バケット内のオブジェクトパスです。 */ objectPath: ObjectPath; /** * 実際に保存されるオブジェクトの識別子です。 */ entityId: EntityId | undefined; /** * オブジェクトのチェックサム (MD5 ハッシュ値) です。 */ checksum: Readonly<{ /** * 計算されたハッシュ値の 16 進数文字列です。 */ value: Checksum; /** * ハッシュ関数の内部状態です。 */ state: HashState; }>; /** * オブジェクトのデータ形式です。 */ mimeType: MimeType | undefined; /** * オブジェクトのサイズ (バイト数) です。 */ objectSize: ObjectSize; /** * オブジェクトのパートの総数です。 */ numParts: NumParts; /** * 各パートのサイズ (バイト数) です。 */ partSize: PartSize; /** * オブジェクトに関連付けられたオブジェクトタグです。 */ objectTags: ObjectTags | undefined; /** * オブジェクトの説明文です。 */ description: string | null | undefined; /** * ユーザー定義のメタデータです。 */ userMetadata: unknown | undefined; /** * 既存のメタデータに期待する値です。 */ expect: Readonly<{ /** * 既存のチェックサムに期待する値です。 */ checksum: Checksum; }>; /** * カスタムのタイムスタンプです。 * * @default Date.now() */ timestamp: Timestamp | undefined; }>; /** * オブジェクトのメタデータに削除フラグをたてるための入力パラメーターです。 */ type TrashInput = Readonly<{ /** * バケット内のオブジェクトパスです。 */ objectPath: ObjectPath; /** * カスタムのタイムスタンプです。 * * @default Date.now() */ timestamp: Timestamp | undefined; }>; /** * オブジェクトのメタデータに削除フラグをたてた結果です。 */ type TrashOutput = { /** * オブジェクトの識別子です。 */ objectId: ObjectId; /** * 実際に保存されるオブジェクトの識別子です。 */ entityId: EntityId; }; /*************************************************************************************************** * * 削除 * **************************************************************************************************/ /** * オブジェクトのメタデータを削除するための入力パラメーターです。 */ type DeleteInput = Readonly<{ /** * オブジェクトの識別子です。 */ objectId: ObjectId; }>; /*************************************************************************************************** * * ユーティリティー * **************************************************************************************************/ /** * SQL オブジェクトです。 */ export interface Sql { /** * SQL の文字列です。 */ readonly text: string; /** * SQL の実行時に渡すパラメーターです。 */ readonly values: readonly unknown[]; } /*************************************************************************************************** * * `Metadata` クラスの実装 * **************************************************************************************************/ /** * オブジェクトのメタデータを管理するクラスです。 */ export default class Metadata { #private; /** * `Metadata` の新しいインスタンスを構築します。 * * @param inp `Metadata` を構築するための入力パラメーターです。 */ constructor(inp: MetadataInput); /** * SQL クエリーを実行し、結果を返します。 * * @param sql 実行する SQL クエリーです。 * @returns クエリーの実行結果をイテレーターで返します。 */ stream(sql: string | Sql): AsyncGenerator; /** * DuckDB データベースに接続します。 */ open(): Promise; /** * データベースを切断します。 */ close(): Promise; /************************************************************************************************* * * 作成 * ************************************************************************************************/ /** * オブジェクトのメタデータを作成します。 * * @param inp オブジェクトのメタデータを作成するための入力パラメーターです。 */ create(inp: CreateInput): Promise; /** * オブジェクトのメタデータを排他的に作成します。 * * @param inp オブジェクトのメタデータを排他的に作成するための入力パラメーターです。 */ createExclusive(inp: CreateExclusiveInput): Promise; /************************************************************************************************* * * 読み取り * ************************************************************************************************/ /** * 存在するオブジェクトのメタデータを取得します。 * * @param inp オブジェクトのメタデータを取得するための入力パラメーターです。 * @returns オブジェクトのメタデータを取得した結果です。 * @throws オブジェクトが見つからない場合は `ObjectNotFoundError` を投げます。 */ read(inp: TInp): Promise>>; /** * 存在するオブジェクトの内部利用のためのメタデータを取得します。 * * @param inp 存在するオブジェクトの内部利用のためのメタデータを取得するための入力パラメーターです。 * @returns 存在するオブジェクトの内部利用のためのメタデータを取得した結果です。 */ readDetail(inp: ReadDetailInput): Promise; /** * ゴミ箱に入れられたオブジェクトの内部利用のためのメタデータを取得します。 * * @param inp ゴミ箱に入れられたオブジェクトの内部利用のためのメタデータを取得するための入力パラメーターです。 * @returns ゴミ箱に入れられたオブジェクトの内部利用のためのメタデータを取得した結果です。 */ readInTrash(inp: ReadInTrashInput): Promise; /** * パスが存在するか確認します。 * * @param inp パスが存在するか確認するための入力パラメーターです。 * @returns パスが存在するか確認した結果です。 */ exists(inp: ExistsInput): Promise; /** * オブジェクトやディレクトリーのステータス情報を取得します。 * * @param inp オブジェクトやディレクトリーのステータス情報を取得するための入力パラメーターです。 * @returns オブジェクトやディレクトリーのステータス情報を取得した結果です。 */ stat(inp: StatInput): Promise; /** * ディレクトリーまたはオブジェクトをリストアップします。 * * @param inp ディレクトリーまたはオブジェクトをリストアップするための入力パラメーターです。 * @returns リストアップした結果です。 */ list(inp: TInp): Promise, $Get<$Get, "isObject">>>>; /** * ゴミ箱に入れられたオブジェクトのメタデータを取得します。 * * @param inp オブジェクトのメタデータを取得するための入力パラメーターです。 * @returns オブジェクトのメタデータを取得した結果です。 * @throws オブジェクトが見つからない場合は `ObjectNotFoundError` を投げます。 */ listInTrash(inp: TInp): Promise>>>; /** * オブジェクトの説明文を対象に全文検索します。 * * @param inp オブジェクトの説明文を対象に全文検索するための入力パラメーターです。 * @returns 検索結果です。 */ search(inp: SearchInput): Promise>; /************************************************************************************************* * * 更新 * ************************************************************************************************/ /** * オブジェクトのメタデータを移動します。 * * @param inp オブジェクトのメタデータを移動するための入力パラメーターです。 * @throws 移動元のオブジェクトが見つからない場合は `ObjectNotFoundError` を、 * 移動先のオブジェクトがすでに存在する場合は `ObjectExistsError` を投げます。 */ move(inp: MoveInput): Promise; /** * オブジェクトのメタデータを移動します。 * * @param inp オブジェクトのメタデータを移動するための入力パラメーターです。 * @throws 移動元のオブジェクトが見つからない場合は `ObjectNotFoundError` を、 * 移動先のオブジェクトがすでに存在する場合は `ObjectExistsError` を投げます。 */ moveExclusive(inp: MoveInput): Promise; /** * オブジェクトのメタデータをコピーします。 * * @param inp オブジェクトのメタデータをコピーするための入力パラメーターです。 * @throws コピー元のオブジェクトが見つからない場合は `ObjectNotFoundError` を投げます。 */ copy(inp: CopyInput): Promise; /** * オブジェクトのメタデータをコピーします。 * * @param inp オブジェクトのメタデータをコピーするための入力パラメーターです。 * @throws コピー元のオブジェクトが見つからない場合は `ObjectNotFoundError` を、 * コピー先のオブジェクトがすでに存在する場合は `ObjectExistsError` を投げます。 */ copyExclusive(inp: CopyInput): Promise; /** * オブジェクトのメタデータを更新します。 * * @param inp オブジェクトのメタデータを更新するための入力パラメーターです。 * @throws オブジェクトが見つからない場合は `ObjectNotFoundError` を投げます。 */ update(inp: UpdateInput): Promise; /** * オブジェクトのメタデータを排他的に更新します。 * * @param inp オブジェクトのメタデータを排他的に更新するための入力パラメーターです。 */ updateExclusive(inp: UpdateExclusiveInput): Promise; /** * オブジェクトの削除フラグを立てます。 * * @param inp オブジェクトの削除フラグをたてるための入力パラメーターです。 * @throws ファイルが見つからない場合は `ObjectNotFoundError` を投げます。 */ trash(inp: TrashInput): Promise; /************************************************************************************************* * * 削除 * ************************************************************************************************/ /** * オブジェクトのメタデータを完全に削除します。 * * @param inp オブジェクトのメタデータを完全に削除するための入力パラメーターです。 * @throws ファイルが見つからない場合は `ObjectNotFoundError` を投げます。 */ delete(inp: DeleteInput): Promise; } export {}; //# sourceMappingURL=metadata.d.ts.map