import CredentialMode from "./CredentialMode"; /** * リソースを表現するクラスです。 * URLやDB、クラウドサービス等、各種リソースへのアクセスを同一インターフェースで提供することを目的とした抽象クラスです。 * * 基本機能: * - コンストラクタ等によりあらかじめURLやデータの位置を示すプロパティを設定 * - load()によりリソースを読み込む * - loadSubResource()によりサブリソースを読み込む */ declare abstract class Resource { /** * リソースを読み込みます。 */ load(options?: Resource.Option): Promise; /** * Jsonリソースを読み込みます。 */ loadAsJson(options?: Resource.Option): Promise; /** * バイナリリソースを読み込みます。 */ loadAsBinary(options?: Resource.Option): Promise; /** * イメージリソースを読み込みます。 */ loadAsImage(options?: Resource.Option): Promise; /** * テキストリソースを読み込みます。 */ loadAsText(options?: Resource.Option): Promise; /** * リソースの読み込みをキャンセルできる場合はキャンセルします。 */ cancel(): void; /** * サブリソースをサポートするかを返します。 */ loadSubResourceSupported(): boolean; /** * サブリソースを読み込みます。 * @param url URL * @param options * @return `options.type` に応じた型で返却されます。 */ loadSubResource(url: string, options?: Resource.Option): Promise; /** * Jsonリソースを読み込みます。 */ loadSubResourceAsJson(url: string, options?: Resource.Option): Promise; /** * バイナリリソースを読み込みます。 */ loadSubResourceAsBinary(url: string, options?: Resource.Option): Promise; /** * イメージリソースを読み込みます。 */ loadSubResourceAsImage(url: string, options?: Resource.Option): Promise; /** * テキストリソースを読み込みます。 */ loadSubResourceAsText(url: string, options?: Resource.Option): Promise; /** * 関連リソースをサポートするかを返します。 */ resolveResourceSupported(): boolean; /** * 関連リソースを読み込みます。 */ resolveResource(url: string): Resource; /** * リソースのテキスト表現 */ toString(): string; } declare namespace Resource { interface Option { /** * 返却するタイプを指定します。 */ type?: Resource.Type; /** * */ transform?: Resource.TransformCallback; /** * */ signal?: AbortSignal; } /** * リソース要求変換関数 * * リソースのリクエスト時に URL などを変換する関数の型である。 * * ```ts * function( url, type ) { * return { * url: url, * credentials: mapray.CredentialMode.SAME_ORIGIN, * headers: { * 'Header-Name': 'Header-Value' * } * }; * } * * @param url 変換前のリソース URL * @param type リソースの種類 * @return 変換結果を表すオブジェクト */ type TransformCallback = (url: string, type: any) => Resource.TransformResult; /** * リソース要求変換関数の変換結果 * * 関数型 [@link Loader.TransformCallback} の戻り値のオブジェクト構造である。 */ interface TransformResult { /** * 変換後のリソース URL */ url: string; /** * クレデンシャルモード */ credentials?: CredentialMode; /** * リクエストに追加するヘッダーの辞書 (キーがヘッダー名、値がヘッダー値) */ headers?: object; } function defaultTransformCallback(url: string, type: Resource.Type): { url: string; }; /** * リソースの種類 */ enum Type { /** * JSON */ JSON = 0, /** * バイナリ(ArrayBuffer) */ BINARY = 1, /** * 画像(Image) */ IMAGE = 2, /** * テキスト */ TEXT = 3 } } /** * HTTPサーバなどで配信されるリソースを表現します。 * ベースとなるリソースがサブリソースを持つようなリソースを想定したクラスです。 * * 例としてhtmlの場合について説明します。 * htmlファイルは画像やcssなど様々なサブリソースを持つことができます。 * htmlファイルをベースとなるリソースと呼び、それ以外のファイルをサブリソースと呼びます。 * サブリソースはベースとなるリソースからの相対パスで表現されることや、絶対パスで表現されることがあります。 * また、htmlファイルには、別のhtmlファイルへのリンクが記述されることがあり、別のhtmlファイルはさらに画像やcssなどのファイルを持ちます。 * このクラスは上記のような状況を表現することができます。 * - {@link load} はベースとなるリソースの内容を読み込みます。 * - {@link loadSubResource} は、ベースとなるリソースからの相対パスを指定してサブリソースの内容を読み込みます(絶対パスを指定すると指定したURLへ直接アクセスします)。 * - {@link resolveResource} は、別のhtmlファイルへのリンクをたどるような状況を表現する場合に利用します。相対パスや絶対パスを指定すると、新たな Resource を得ることができます。 * * 下記に使用例を示します。 * ```ts * // https://.../test.html を起点とするリソースを定義します。 * const resource = new URLResource("https://.../test.html"); * // test.html の内容を読み込みます。 * * const html = await resource.load({ type: Resource.ResourceType.TEXT }); * // test.html と同一パスにある画像を読み込みます。 * * const image = await resource.loadSubResource("image.png", * { type: Resource.ResourceType.IMAGE }); * * // test.html からの相対パス(sub) にある 別のhtml(other.html) を起点とするリソースを定義します。 * const otherResource = resource.resolveResource("sub/other.html"); * * // other.htmlの内容を読み込みます。 * const otherHtml = await otherResource.load({ type: Resource.ResourceType.TEXT }); * * // other.htmlと同一パスにあるの画像を読み込みます。 * const otherImage = await otherResource.loadSubResource("image.png", * { type: Resource.ResourceType.IMAGE }); * ``` */ declare class URLResource extends Resource { private _url; private _base_url; private _type; private _transform; private _abort_ctrl; /** * @param url * @param options */ constructor(url: string, options?: Resource.Option); /** * リソースのurl */ get url(): string; /** * このリソースを読み込みます。 * @param options */ load(options?: Resource.Option): Promise; /** * リソースの読み込みをキャンセルします。 */ cancel(): void; /** * このクラスでのデフォルト実装では、trueを返却します。 */ loadSubResourceSupported(): boolean; /** * サブリソースを読み込みます。 * @param subUrl URL * @param options * @return `options.type` に応じた型で返却されます。 */ loadSubResource(subUrl: string, options?: Resource.Option): Promise; /** * 関連リソースをサポートするかを返します。 */ resolveResourceSupported(): boolean; /** * 関連リソースを読み込みます。 * @param sub_url * @return */ resolveResource(sub_url: string): Resource; /** * @param url * @param type */ private _loadURLResource; /** * fetch() の init 引数に与えるオブジェクトを生成 */ private _make_fetch_params; toString(): string; } export { URLResource }; export default Resource; //# sourceMappingURL=Resource.d.ts.map