Files
objectstorage/ts_web/dataprovider.ts
Juergen Kunz 1f281bd7c8 feat(core): rebrand to @lossless.zone/objectstorage
- Rename from @lossless.zone/s3container to @lossless.zone/objectstorage
- Replace @push.rocks/smarts3 with @push.rocks/smartstorage
- Change env var prefix from S3_ to OBJST_
- Rename S3Container class to ObjectStorageContainer
- Update web component prefix from s3c- to objst-
- Update UI labels, CLI flags, documentation, and Docker config
2026-03-14 23:56:02 +00:00

116 lines
3.6 KiB
TypeScript

import * as plugins from './plugins.js';
import * as appstate from './appstate.js';
import * as interfaces from '../ts_interfaces/index.js';
import type { IS3DataProvider } from '@design.estate/dees-catalog';
const getIdentity = (): interfaces.data.IIdentity => {
return appstate.loginStatePart.getState().identity!;
};
export const createDataProvider = (): IS3DataProvider => ({
async listObjects(bucket: string, prefix?: string, delimiter?: string) {
const typedRequest = new plugins.domtools.plugins.typedrequest.TypedRequest<
interfaces.requests.IReq_ListObjects
>('/typedrequest', 'listObjects');
const response = await typedRequest.fire({
identity: getIdentity(),
bucketName: bucket,
prefix: prefix || '',
delimiter: delimiter || '/',
});
return {
objects: response.result.objects.map((obj) => ({
key: obj.key,
size: obj.size,
lastModified: new Date(obj.lastModified).toISOString(),
})),
prefixes: response.result.commonPrefixes,
};
},
async getObject(bucket: string, key: string) {
const typedRequest = new plugins.domtools.plugins.typedrequest.TypedRequest<
interfaces.requests.IReq_GetObject
>('/typedrequest', 'getObject');
return await typedRequest.fire({
identity: getIdentity(),
bucketName: bucket,
key,
});
},
async putObject(bucket: string, key: string, base64Content: string, contentType: string) {
const typedRequest = new plugins.domtools.plugins.typedrequest.TypedRequest<
interfaces.requests.IReq_PutObject
>('/typedrequest', 'putObject');
const response = await typedRequest.fire({
identity: getIdentity(),
bucketName: bucket,
key,
base64Content,
contentType,
});
return response.ok;
},
async deleteObject(bucket: string, key: string) {
const typedRequest = new plugins.domtools.plugins.typedrequest.TypedRequest<
interfaces.requests.IReq_DeleteObject
>('/typedrequest', 'deleteObject');
const response = await typedRequest.fire({
identity: getIdentity(),
bucketName: bucket,
key,
});
return response.ok;
},
async deletePrefix(bucket: string, prefix: string) {
const typedRequest = new plugins.domtools.plugins.typedrequest.TypedRequest<
interfaces.requests.IReq_DeletePrefix
>('/typedrequest', 'deletePrefix');
const response = await typedRequest.fire({
identity: getIdentity(),
bucketName: bucket,
prefix,
});
return response.ok;
},
async getObjectUrl(bucket: string, key: string) {
const typedRequest = new plugins.domtools.plugins.typedrequest.TypedRequest<
interfaces.requests.IReq_GetObjectUrl
>('/typedrequest', 'getObjectUrl');
const response = await typedRequest.fire({
identity: getIdentity(),
bucketName: bucket,
key,
});
return response.url;
},
async moveObject(bucket: string, sourceKey: string, destKey: string) {
const typedRequest = new plugins.domtools.plugins.typedrequest.TypedRequest<
interfaces.requests.IReq_MoveObject
>('/typedrequest', 'moveObject');
return await typedRequest.fire({
identity: getIdentity(),
bucketName: bucket,
sourceKey,
destKey,
});
},
async movePrefix(bucket: string, sourcePrefix: string, destPrefix: string) {
const typedRequest = new plugins.domtools.plugins.typedrequest.TypedRequest<
interfaces.requests.IReq_MovePrefix
>('/typedrequest', 'movePrefix');
return await typedRequest.fire({
identity: getIdentity(),
bucketName: bucket,
sourcePrefix,
destPrefix,
});
},
});