sveltelean Query
Version v0.2.0

Import

import
import { http } from '@svelte-lean/query/http';

Usage

src/lib/api/transport.ts
// src/lib/api/transport.ts
import { http } from '@svelte-lean/query/http';
import { session } from '$api/session.svelte';

export const transport = http({
	base: 'https://api.example.com/',
	headers: () => ({ authorization: `Bearer ${session.token}` }),
	timeout: '20s',
	// A 401: refresh the token once and send the request again.
	async intercept(response, _request, retry) {
		if (response.status !== 401) return response;
		session.token = await refreshToken();
		return retry();
	}
});

Size

Production Vite builds of a small consumer entry, Svelte external. A marginal row is the bytes the entry adds over the row it names.

BuildOvergzipbrotliBudget (gzip)
http (marginal)query2239 B2079 B2400 B

Read from packages/query/artifacts/size.json. Every entry and its method: Performance.

Functions

One function; pass its result to createClient({ transport }).

Exports

Runtime exports of the entry.

NameTypeDefaultDescription
# http (init: HttpInit) => Transport–A transport over fetch (XMLHttpRequest for uploads with progress); requests per origin are limited by the client.

Options

HttpInit, the argument of http().

HttpInit

Everything but base is optional.

NameTypeDefaultDescription
# base requiredstring | ((request) => string)–Base URL of every path; a function picks one per request.
# headers (request) => HeadersInit | undefined–Headers read per request (an auth token).
# profile ProfileJSON in, JSON out, no envelopeThe platform's conventions: envelope, errors, paginators, query strings.
# fetch typeof fetchglobalThis.fetchThe fetch to call: SvelteKit's event.fetch on the server, a fake in tests.
# timeout Duration'30s'Active-time timeout per attempt.
# intercept (response, request, retry, body) => Promise<Response>–Last word on a response: refresh a token and retry() once, sign out on a dead session.

Downloads

An endpoint whose result is file() (or transport: { responseType: 'blob' }) resolves to a FileResult.

FileResult

The file name comes from Content-Disposition.

NameTypeDefaultDescription
# blob Blob–The body.
# filename string | undefined–From filename* or filename, directory parts removed.
# type string–The content type.

Guide

How to use it, with examples: Client setup. All entry points: Svelte Lean Query.