mirror of
https://github.com/bknd-io/bknd/
synced 2026-08-04 17:16:01 +00:00
refactor/imports (#217)
* refactored core and core/utils imports * refactored core and core/utils imports * refactored media imports * refactored auth imports * refactored data imports * updated package json exports, fixed mm config * fix tests
This commit is contained in:
@@ -1,15 +1,16 @@
|
||||
import type { AppEntity } from "core";
|
||||
import type { AppEntity, FileUploadedEventData, StorageAdapter } from "bknd";
|
||||
import { $console } from "core/utils";
|
||||
import type { Entity, EntityManager } from "data";
|
||||
import { type FileUploadedEventData, Storage, type StorageAdapter, MediaPermissions } from "media";
|
||||
import type { Entity, EntityManager } from "data/entities";
|
||||
import { Storage } from "media/storage/Storage";
|
||||
import { Module } from "modules/Module";
|
||||
import { type FieldSchema, em, entity } from "../data/prototype";
|
||||
import { MediaController } from "./api/MediaController";
|
||||
import { buildMediaSchema, type mediaConfigSchema, registry, type TAppMediaConfig } from "./media-schema";
|
||||
import { buildMediaSchema, registry, type TAppMediaConfig } from "./media-schema";
|
||||
import { mediaFields } from "./media-entities";
|
||||
import * as MediaPermissions from "media/media-permissions";
|
||||
|
||||
export type MediaFieldSchema = FieldSchema<typeof AppMedia.mediaFields>;
|
||||
declare module "core" {
|
||||
declare module "bknd" {
|
||||
interface Media extends AppEntity, MediaFieldSchema {}
|
||||
interface DB {
|
||||
media: Media;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Field, baseFieldConfigSchema } from "data/fields";
|
||||
import { s } from "bknd/core";
|
||||
import { s } from "bknd/utils";
|
||||
|
||||
export const mediaFieldConfigSchema = s
|
||||
.strictObject({
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
import type { FileListObject } from "media";
|
||||
import type { FileListObject } from "media/storage/Storage";
|
||||
import {
|
||||
type BaseModuleApiOptions,
|
||||
ModuleApi,
|
||||
type PrimaryFieldType,
|
||||
type TInput,
|
||||
} from "modules/ModuleApi";
|
||||
import type { FileWithPath } from "ui/elements/media/file-selector";
|
||||
import type { ApiFetcher } from "Api";
|
||||
|
||||
export type MediaApiOptions = BaseModuleApiOptions & {
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import { isDebug } from "core";
|
||||
import { HttpStatus, getFileFromContext } from "core/utils";
|
||||
import type { StorageAdapter } from "media";
|
||||
import { StorageEvents, getRandomizedFilename, MediaPermissions } from "media";
|
||||
import { DataPermissions } from "data";
|
||||
import { isDebug } from "core/env";
|
||||
import type { StorageAdapter } from "media/storage/StorageAdapter";
|
||||
import * as DataPermissions from "data/permissions";
|
||||
import { Controller } from "modules/Controller";
|
||||
import type { AppMedia } from "../AppMedia";
|
||||
import { MediaField } from "../MediaField";
|
||||
import { jsc, s, describeRoute } from "bknd/core";
|
||||
import * as MediaPermissions from "media/media-permissions";
|
||||
import * as StorageEvents from "media/storage/events";
|
||||
import { jsc, s, describeRoute, HttpStatus, getFileFromContext } from "bknd/utils";
|
||||
import { getRandomizedFilename } from "media/utils";
|
||||
|
||||
export class MediaController extends Controller {
|
||||
constructor(private readonly media: AppMedia) {
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
import { type Constructor, Registry } from "core";
|
||||
|
||||
export { guess as guessMimeType } from "./storage/mime-types-tiny";
|
||||
export {
|
||||
Storage,
|
||||
type FileMeta,
|
||||
type FileListObject,
|
||||
type StorageConfig,
|
||||
type FileBody,
|
||||
type FileUploadPayload,
|
||||
} from "./storage/Storage";
|
||||
import { StorageAdapter } from "./storage/StorageAdapter";
|
||||
import {
|
||||
type CloudinaryConfig,
|
||||
StorageCloudinaryAdapter,
|
||||
} from "./storage/adapters/cloudinary/StorageCloudinaryAdapter";
|
||||
import { type S3AdapterConfig, StorageS3Adapter } from "./storage/adapters/s3/StorageS3Adapter";
|
||||
import type { s } from "bknd/core";
|
||||
|
||||
export { StorageAdapter };
|
||||
export { StorageS3Adapter, type S3AdapterConfig, StorageCloudinaryAdapter, type CloudinaryConfig };
|
||||
|
||||
export * as StorageEvents from "./storage/events";
|
||||
export * as MediaPermissions from "./media-permissions";
|
||||
export type { FileUploadedEventData } from "./storage/events";
|
||||
export * from "./utils";
|
||||
|
||||
type ClassThatImplements<T> = Constructor<T> & { prototype: T };
|
||||
|
||||
export const MediaAdapterRegistry = new Registry<{
|
||||
cls: ClassThatImplements<StorageAdapter>;
|
||||
schema: s.Schema;
|
||||
}>((cls: ClassThatImplements<StorageAdapter>) => ({
|
||||
cls,
|
||||
schema: cls.prototype.getSchema() as s.Schema,
|
||||
}))
|
||||
.register("s3", StorageS3Adapter)
|
||||
.register("cloudinary", StorageCloudinaryAdapter);
|
||||
|
||||
export const Adapters = {
|
||||
s3: {
|
||||
cls: StorageS3Adapter,
|
||||
schema: StorageS3Adapter.prototype.getSchema(),
|
||||
},
|
||||
cloudinary: {
|
||||
cls: StorageCloudinaryAdapter,
|
||||
schema: StorageCloudinaryAdapter.prototype.getSchema(),
|
||||
},
|
||||
} as const;
|
||||
|
||||
export { adapterTestSuite } from "./storage/adapters/adapter-test-suite";
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Permission } from "core";
|
||||
import { Permission } from "core/security/Permission";
|
||||
|
||||
export const readFile = new Permission("media.file.read");
|
||||
export const listFiles = new Permission("media.file.list");
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
import { type Constructor, Registry } from "core/registry/Registry";
|
||||
import type { StorageAdapter } from "./storage/StorageAdapter";
|
||||
import type { s } from "bknd/utils";
|
||||
import { StorageS3Adapter } from "./storage/adapters/s3/StorageS3Adapter";
|
||||
import { StorageCloudinaryAdapter } from "./storage/adapters/cloudinary/StorageCloudinaryAdapter";
|
||||
|
||||
type ClassThatImplements<T> = Constructor<T> & { prototype: T };
|
||||
|
||||
export const MediaAdapterRegistry = new Registry<{
|
||||
cls: ClassThatImplements<StorageAdapter>;
|
||||
schema: s.Schema;
|
||||
}>((cls: ClassThatImplements<StorageAdapter>) => ({
|
||||
cls,
|
||||
schema: cls.prototype.getSchema() as s.Schema,
|
||||
}))
|
||||
.register("s3", StorageS3Adapter)
|
||||
.register("cloudinary", StorageCloudinaryAdapter);
|
||||
|
||||
export const MediaAdapters = {
|
||||
s3: {
|
||||
cls: StorageS3Adapter,
|
||||
schema: StorageS3Adapter.prototype.getSchema(),
|
||||
},
|
||||
cloudinary: {
|
||||
cls: StorageCloudinaryAdapter,
|
||||
schema: StorageCloudinaryAdapter.prototype.getSchema(),
|
||||
},
|
||||
} as const;
|
||||
@@ -1,10 +1,9 @@
|
||||
import { objectTransform } from "core/utils";
|
||||
import { Adapters } from "media";
|
||||
import { MediaAdapters } from "media/media-registry";
|
||||
import { registries } from "modules/registries";
|
||||
import { s } from "bknd/core";
|
||||
import { s, objectTransform } from "bknd/utils";
|
||||
|
||||
export const ADAPTERS = {
|
||||
...Adapters,
|
||||
...MediaAdapters,
|
||||
} as const;
|
||||
|
||||
export const registry = registries.media;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import type { FileListObject, FileMeta } from "media";
|
||||
import type { FileBody, FileUploadPayload } from "media/storage/Storage";
|
||||
import type { s } from "bknd/core";
|
||||
import type { FileListObject, FileMeta, FileBody, FileUploadPayload } from "media/storage/Storage";
|
||||
import type { s } from "bknd/utils";
|
||||
|
||||
const SYMBOL = Symbol.for("bknd:storage");
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { retry, type TestRunner } from "core/test";
|
||||
import type { StorageAdapter } from "media";
|
||||
import { randomString } from "core/utils";
|
||||
import type { StorageAdapter } from "media/storage/StorageAdapter";
|
||||
import { randomString } from "bknd/utils";
|
||||
import type { BunFile } from "bun";
|
||||
|
||||
export async function adapterTestSuite(
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { hash, pickHeaders } from "core/utils";
|
||||
import type { FileBody, FileListObject, FileMeta } from "../../Storage";
|
||||
import { StorageAdapter } from "../../StorageAdapter";
|
||||
import { s, parse } from "bknd/core";
|
||||
import { s, parse } from "bknd/utils";
|
||||
|
||||
export const cloudinaryAdapterConfig = s.object(
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test";
|
||||
import { StorageS3Adapter } from "./StorageS3Adapter";
|
||||
|
||||
import { config } from "dotenv";
|
||||
import { adapterTestSuite } from "media";
|
||||
import { adapterTestSuite } from "media/storage/adapters/adapter-test-suite";
|
||||
import { assetsPath } from "../../../../../__test__/helper";
|
||||
import { bunTestRunner } from "adapter/bun/test";
|
||||
//import { enableFetchLogging } from "../../helper";
|
||||
|
||||
@@ -6,12 +6,12 @@ import type {
|
||||
ListObjectsV2Request,
|
||||
PutObjectRequest,
|
||||
} from "@aws-sdk/client-s3";
|
||||
import { AwsClient, isDebug } from "core";
|
||||
import { isFile, pickHeaders2 } from "core/utils";
|
||||
import { AwsClient } from "core/clients/aws/AwsClient";
|
||||
import { isDebug } from "core/env";
|
||||
import { isFile, pickHeaders2, parse, s } from "bknd/utils";
|
||||
import { transform } from "lodash-es";
|
||||
import type { FileBody, FileListObject } from "../../Storage";
|
||||
import { StorageAdapter } from "../../StorageAdapter";
|
||||
import { parse, s } from "bknd/core";
|
||||
|
||||
export const s3AdapterConfig = s.object(
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { isFile, randomString } from "core/utils";
|
||||
import { isFile, randomString } from "bknd/utils";
|
||||
import { extension } from "media/storage/mime-types-tiny";
|
||||
|
||||
export function getExtensionFromName(filename: string): string | undefined {
|
||||
|
||||
Reference in New Issue
Block a user