@deepkit/framework
Version:
165 lines • 7 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
function __assignType(fn, args) {
fn.__type = args;
return fn;
}
/*
* Deepkit Framework
* Copyright (C) 2021 Deepkit UG, Marc J. Schmidt
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the MIT License.
*
* You should have received a copy of the MIT License along with this program.
*/
import { DebugMediaInterface, MediaFile } from '@deepkit/framework-debug-api';
import { rpc } from '@deepkit/rpc';
import { FilesystemRegistry } from '../filesystem.js';
import { Filesystem, FilesystemFile } from '@deepkit/filesystem';
import { pathDirectory, pathJoin } from '@deepkit/core';
import mime from 'mime-types';
function mapFile(filesystem, file) {
const mediaFile = new MediaFile(file.path, file.type);
mediaFile.size = file.size;
mediaFile.filesystem = filesystem;
mediaFile.lastModified = file.lastModified;
mediaFile.visibility = file.visibility;
mediaFile.mimeType = mime.lookup(file.path) || '';
return mediaFile;
}
mapFile.__type = ['filesystem', () => FilesystemFile, 'file', () => MediaFile, 'mapFile', 'P\'2!P7"2#P7$/%'];
let MediaController = class MediaController {
constructor(filesystemRegistry) {
this.filesystemRegistry = filesystemRegistry;
}
getFilesystem(id) {
const fs = this.filesystemRegistry.getFilesystems()[id];
if (!fs)
throw new Error(`No filesystem with id ${id} found`);
return fs;
}
async getPublicUrl(fs, path) {
const filesystem = this.getFilesystem(fs);
return filesystem.publicUrl(path);
}
async createFolder(fs, path) {
const filesystem = this.getFilesystem(fs);
await filesystem.makeDirectory(path);
}
async getFile(fs, path) {
const filesystem = this.getFilesystem(fs);
const file = await filesystem.getOrUndefined(path);
if (!file)
return false;
return mapFile(fs, file);
}
async getFiles(fs, path) {
const filesystem = this.getFilesystem(fs);
const files = await filesystem.files(path);
return files.map(__assignType(file => mapFile(fs, file), ['file', '', 'P"2!"/"']));
}
async getMediaData(fs, path) {
const filesystem = this.getFilesystem(fs);
try {
return await filesystem.read(path);
}
catch (error) {
return false;
}
}
async getMediaQuickLook(fs, path) {
if (path === '/')
return false;
const filesystem = this.getFilesystem(fs);
const file = await filesystem.get(path);
const mimeType = mime.lookup(path) || '';
if (mimeType.startsWith('image/')) {
const data = await filesystem.read(path);
//todo: make smaller if too big
return { file: mapFile(fs, file), data: data };
}
return false;
}
async remove(fs, paths) {
const filesystem = this.getFilesystem(fs);
await filesystem.delete(paths);
}
async addFile(fs, name, dir, data) {
const filesystem = this.getFilesystem(fs);
await filesystem.write(pathJoin(dir, name), data);
}
async renameFile(fs, path, newName) {
const filesystem = this.getFilesystem(fs);
filesystem.move(path, pathJoin(pathDirectory(path), newName));
return Promise.resolve('');
}
};
MediaController.__type = [() => FilesystemRegistry, 'filesystemRegistry', 'constructor', 'id', () => Filesystem, 'getFilesystem', 'fs', 'path', 'getPublicUrl', 'createFolder', () => MediaFile, false, 'getFile', () => MediaFile, 'getFiles', false, 'getMediaData', () => MediaFile, 'file', 'data', false, 'getMediaQuickLook', 'paths', 'remove', 'name', 'dir', 'addFile', 'newName', 'renameFile', 'MediaController', 'PP7!2"<"0#P\'2$P7%0&<P\'2\'&2(&`0)P\'2\'&2($`0*P\'2\'&2(PP7+.,J`0-P\'2\'&2(P7.F`0/P\'2\'&2(PW.0J`01P\'2\'&2(PPP7243W44M.5J`06P\'2\'&F27$`08P\'2\'&29&2:W24$`0;P\'2\'&2(&2<&`0=5!x"w>'];
__decorate([
rpc.action(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Number, String]),
__metadata("design:returntype", Promise)
], MediaController.prototype, "getPublicUrl", null);
__decorate([
rpc.action(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Number, String]),
__metadata("design:returntype", Promise)
], MediaController.prototype, "createFolder", null);
__decorate([
rpc.action(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Number, String]),
__metadata("design:returntype", Promise)
], MediaController.prototype, "getFile", null);
__decorate([
rpc.action(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Number, String]),
__metadata("design:returntype", Promise)
], MediaController.prototype, "getFiles", null);
__decorate([
rpc.action(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Number, String]),
__metadata("design:returntype", Promise)
], MediaController.prototype, "getMediaData", null);
__decorate([
rpc.action(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Number, String]),
__metadata("design:returntype", Promise)
], MediaController.prototype, "getMediaQuickLook", null);
__decorate([
rpc.action(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Number, Array]),
__metadata("design:returntype", Promise)
], MediaController.prototype, "remove", null);
__decorate([
rpc.action(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Number, String, String, Uint8Array]),
__metadata("design:returntype", Promise)
], MediaController.prototype, "addFile", null);
__decorate([
rpc.action(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Number, String, String]),
__metadata("design:returntype", Promise)
], MediaController.prototype, "renameFile", null);
MediaController = __decorate([
rpc.controller(DebugMediaInterface),
__metadata("design:paramtypes", [FilesystemRegistry])
], MediaController);
export { MediaController };
//# sourceMappingURL=media.controller.js.map