1.0.4 • Published 1 year ago

@affinity-lab/sk-carbonite-attachment-server v1.0.4

Weekly downloads
-
License
-
Repository
-
Last release
1 year ago

@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.

```sveltehtml
<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`
```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);
1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago