@affinity-lab/sk-carbonite-attachment-server
v1.0.4
Published
It makes carbonite attachment files usable in SvelteKit projects.
Downloads
8
Keywords
Readme
@affinity-lab/sk-carbonite-attachment-server
It makes carbonite attachment files usable in SvelteKit projects.
Installation
npm i -s @affinity-lab/sk-carbonite-attachment-server
Using the FileUrlProvider
Set up the service
$lib/services/file-url-provider.ts
import {PUBLIC_FILE_URL_PREFIX, PUBLIC_IMG_URL_PREFIX} from "$env/static/public";
// you must import the file itself!
import FileProvider from "@affinity-lab/sk-carbonite-attachment-server/src/file-provider";
export const fileUrlProvider = new FileProvider(PUBLIC_FILE_URL_PREFIX, PUBLIC_IMG_URL_PREFIX);
This service can make url-s for carbonite attachments.
<script lang="ts">
import fileUrlProvider from "$lib/services/file-url-provider.ts"
</script>
<img src={fileUrlProvider.file(file)}>
<!--
The file argument must be a carbonite attachment file:
type File = {
id: number,
name: string,
size: number,
title: null | string,
ver: string,
}
-->
This can also provide urls for thumbnail creation.
<script lang="ts">
import fileUrlProvider from "$lib/services/file-url-provider.ts"
</script>
<img src={fileUrlProvider.img(file, 64, 64).x1.png}>
<!--
arguments: file:File, width:number, height:number
you can use x1...x4 to set the resolution multiplier (default x1)
finally you need to get png, webp, jpg to retrieve the real url for the file
-->
Using the FileServer
Set up the service
$lib/services/file-server.ts
import {PRIVATE_ATTACHMENT_MAX_AGE, PRIVATE_IMG_MAX_AGE, PRIVATE_IMG_PATH} from "$env/static/private";
import FileServer from "@affinity-lab/sk-carbonite-attachment-server/src/file-server";
export const fileServer = new FileServer(
PRIVATE_IMG_PATH,
parseInt(PRIVATE_ATTACHMENT_MAX_AGE),
parseInt(PRIVATE_IMG_MAX_AGE)
);
Add service to routes
src/routes/(files)/~fs/[...path]/+server.ts
import type {RequestEvent} from "@sveltejs/kit";
import {fileServer} from "$lib/services/file-server";
export const GET = async (e: RequestEvent): Promise<Response> => fileServer.file(e.params.path, e);
src/routes/(files)/~img/[...path]/+server.ts
import type {RequestEvent} from "@sveltejs/kit";
import {fileServer} from "$lib/services/file-server";
export const GET = async (event: RequestEvent): Promise<Response> => fileServer.img(event.params.path, event);