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:
dswbx
2025-07-22 20:17:11 +02:00
committed by GitHub
parent 1ec3ba0e92
commit ca55503e66
214 changed files with 680 additions and 791 deletions
+6 -5
View File
@@ -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 -1
View File
@@ -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 -2
View File
@@ -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 & {
+7 -6
View File
@@ -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) {
-51
View File
@@ -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 -1
View File
@@ -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");
+28
View File
@@ -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;
+3 -4
View File
@@ -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;
+2 -3
View File
@@ -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 -1
View File
@@ -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 {