diff --git a/drizzle.config.ts b/drizzle.config.ts index 1da91e4f..bcc83049 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -2,7 +2,7 @@ import 'dotenv/config'; import { defineConfig } from 'drizzle-kit'; import { getDataDir } from './src/backend/common/index.js'; import * as path from 'path'; -import { projectRootDir } from './src/core/Atomic.ts'; +import { projectRootDir } from "./src/backend/common/infrastructure/Atomic.ts"; export default defineConfig({ schema: path.resolve(projectRootDir, 'src/backend/common/database/drizzle/schema'), diff --git a/package.json b/package.json index 88269c66..b3066be8 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", "atproto:lex:tealfm": "npm exec -- lex-cli pull -c src/backend/common/vendor/teal/lex.config.ts && npm exec -- lex-cli generate -c src/backend/common/vendor/teal/lex.config.ts", - "frontend:analyze": "npx esbuild src/client/index-next.tsx --bundle --platform=node --metafile=meta.json --outfile=/dev/null" + "frontend:analyze": "npx esbuild src/client/index-next.tsx --bundle --format=esm --platform=node --metafile=meta.json --outfile=/dev/null" }, "exports": { ".": { diff --git a/src/backend/common/database/appMigrator.ts b/src/backend/common/database/appMigrator.ts index 8809cfbb..0b46fce6 100644 --- a/src/backend/common/database/appMigrator.ts +++ b/src/backend/common/database/appMigrator.ts @@ -4,7 +4,7 @@ import * as path from 'path'; import { childLogger, type Logger } from "@foxxmd/logging"; import { Migrator } from 'sqlite-up'; import type {MigrationStatus} from "../infrastructure/Atomic.ts"; -import { projectRootDir } from "../../../core/Atomic.ts"; +import { projectRootDir } from "../infrastructure/Atomic.ts"; export interface MigrateBaseContext { db: DbConcrete diff --git a/src/backend/common/database/drizzle/drizzleUtils.ts b/src/backend/common/database/drizzle/drizzleUtils.ts index 46252f22..da9d7275 100644 --- a/src/backend/common/database/drizzle/drizzleUtils.ts +++ b/src/backend/common/database/drizzle/drizzleUtils.ts @@ -12,7 +12,7 @@ import { relations } from './schema/schema.ts'; import { addToContext, executeQuery } from './logContext.ts'; import { migrateApp, getAppMigrationStatus } from '../appMigrator.ts'; import type {MigrationStatus} from '../../infrastructure/Atomic.ts'; -import { projectRootDir } from '../../../../core/Atomic.ts'; +import { projectRootDir } from "../../infrastructure/Atomic.ts"; export async function getDbMigrationStatus(dbVal: string | DbConcrete, opts: {logger?: Logger, migrationsFolder?: string} = {}): Promise { const { diff --git a/src/backend/common/infrastructure/Atomic.ts b/src/backend/common/infrastructure/Atomic.ts index f1f54d25..35b5107f 100644 --- a/src/backend/common/infrastructure/Atomic.ts +++ b/src/backend/common/infrastructure/Atomic.ts @@ -10,6 +10,10 @@ import type { MusicBrainzApi } from 'musicbrainz-api'; import type { ReportedPlayerStatus, SourceType } from "../../../core/Atomic.ts"; import type { ClientType } from "../../../core/Atomic.ts"; import assert from 'assert'; +import * as path from 'path'; + +export const __filename = import.meta.filename; +export const projectRootDir = path.resolve(__filename, '../../../../../'); export interface LeveledLogData extends LogDataPretty { levelLabel: string diff --git a/src/backend/server/index.ts b/src/backend/server/index.ts index 052eea45..9f9745a2 100644 --- a/src/backend/server/index.ts +++ b/src/backend/server/index.ts @@ -14,7 +14,8 @@ import { getAddress } from "../utils/NetworkUtils.ts"; import { setupApi } from "./api.ts"; import type ScrobbleSources from '../sources/ScrobbleSources.ts'; import type ScrobbleClients from '../scrobblers/ScrobbleClients.ts'; -import { projectRootDir, qsOptions } from '../../core/Atomic.ts'; +import { qsOptions } from '../../core/Atomic.ts'; +import { projectRootDir } from "../common/infrastructure/Atomic.ts"; const app = express(); const router = Router(); diff --git a/src/backend/tests/config/config.test.ts b/src/backend/tests/config/config.test.ts index f7e71940..343c9d8d 100644 --- a/src/backend/tests/config/config.test.ts +++ b/src/backend/tests/config/config.test.ts @@ -8,7 +8,8 @@ import ScrobbleClients from '../../scrobblers/ScrobbleClients.ts'; import ScrobbleSources from '../../sources/ScrobbleSources.ts'; import EventEmitter from "events"; import {loggerTest} from '@foxxmd/logging'; -import { clientTypes, projectRootDir } from "../../../core/Atomic.ts"; +import { clientTypes } from "../../../core/Atomic.ts"; +import { projectRootDir } from "../../common/infrastructure/Atomic.ts"; import { sourceTypes } from "../../../core/Atomic.ts"; import { Notifiers } from '../../notifier/Notifiers.ts'; import { difference } from '../../utils.ts'; diff --git a/src/backend/tests/database/drizzle.test.ts b/src/backend/tests/database/drizzle.test.ts index dab36e0a..a1ddcaf8 100644 --- a/src/backend/tests/database/drizzle.test.ts +++ b/src/backend/tests/database/drizzle.test.ts @@ -19,7 +19,7 @@ import { transientDb } from '../utils/TransientTestUtils.ts'; import { getRoot } from '../../ioc.ts'; import { after } from 'mocha'; import { migrateApp } from '../../common/database/appMigrator.ts'; -import { projectRootDir } from '../../../core/Atomic.ts'; +import { projectRootDir } from "../../common/infrastructure/Atomic.ts"; // would be great to push migrations directly from schema but doesn't seem supported in newest beta // https://github.com/drizzle-team/drizzle-orm/discussions/4373 diff --git a/src/backend/utils/SchemaAppStaticUtils.ts b/src/backend/utils/SchemaAppStaticUtils.ts index f06d4dbb..ec8431af 100644 --- a/src/backend/utils/SchemaAppStaticUtils.ts +++ b/src/backend/utils/SchemaAppStaticUtils.ts @@ -3,7 +3,7 @@ import { resolve } from "path"; import {getTypeSchemaFromConfigGenerator} from "./SchemaUtils.ts"; import { clientInterfaces } from '../common/infrastructure/config/client/clients.ts'; import { sourceInterfaces } from '../common/infrastructure/config/source/sources.ts'; -import { projectRootDir } from "../../core/Atomic.ts"; +import { projectRootDir } from "../common/infrastructure/Atomic.ts"; for(const inter of sourceInterfaces) { const schema = getTypeSchemaFromConfigGenerator(inter); diff --git a/src/backend/utils/SchemaCompiledUtils.ts b/src/backend/utils/SchemaCompiledUtils.ts index 7f8dac41..91fd0487 100644 --- a/src/backend/utils/SchemaCompiledUtils.ts +++ b/src/backend/utils/SchemaCompiledUtils.ts @@ -2,7 +2,7 @@ import { readFileSync, accessSync } from "node:fs"; import { constants } from "fs"; import { resolve } from "path"; import { MaybeLogger } from '../common/MaybeLogger.ts'; -import { projectRootDir } from "../../core/Atomic.ts"; +import { projectRootDir } from "../common/infrastructure/Atomic.ts"; export const getSchemaForType = (type: string, logger: MaybeLogger = new MaybeLogger()): any => { const path = resolve(projectRootDir, `src/backend/common/schema/${type}.json`); diff --git a/src/backend/utils/SchemaDocsStaticUtils.ts b/src/backend/utils/SchemaDocsStaticUtils.ts index ee8777bb..643fa5a0 100644 --- a/src/backend/utils/SchemaDocsStaticUtils.ts +++ b/src/backend/utils/SchemaDocsStaticUtils.ts @@ -3,7 +3,7 @@ import { resolve } from "path"; import {getTypeSchemaFromConfigGenerator} from "./SchemaUtils.ts"; import { atomicClientInterfaces } from '../common/infrastructure/config/client/clients.ts'; import { atomicSourceInterfaces } from '../common/infrastructure/config/source/sources.ts'; -import { projectRootDir } from "../../core/Atomic.ts"; +import { projectRootDir } from "../common/infrastructure/Atomic.ts"; mkdirSync(resolve(projectRootDir, 'docsite/static/schemas'), {recursive: true}); diff --git a/src/backend/utils/SchemaUtils.ts b/src/backend/utils/SchemaUtils.ts index 38f4d3ef..3aa8c35f 100644 --- a/src/backend/utils/SchemaUtils.ts +++ b/src/backend/utils/SchemaUtils.ts @@ -10,7 +10,7 @@ import { SchemaGenerator, LiteralTypeFormatter } from "ts-json-schema-generator"; import { MaybeLogger } from '../common/MaybeLogger.ts'; -import { projectRootDir } from "../../core/Atomic.ts"; +import { projectRootDir } from "../common/infrastructure/Atomic.ts"; // https://github.com/vega/ts-json-schema-generator/issues/1899#issuecomment-2407674526 // https://github.com/vega/ts-json-schema-generator?tab=readme-ov-file#custom-formatting diff --git a/src/backend/utils/ValidationUtils.ts b/src/backend/utils/ValidationUtils.ts index 6243bcf6..86a01db9 100644 --- a/src/backend/utils/ValidationUtils.ts +++ b/src/backend/utils/ValidationUtils.ts @@ -3,7 +3,7 @@ import type * as AjvNS from "ajv"; import Ajv from "ajv"; import f from "ajv-formats" import { resolve } from "path"; -import { projectRootDir } from "../../core/Atomic.ts"; +import { projectRootDir } from "../common/infrastructure/Atomic.ts"; const ajvInstances: Record = {}; diff --git a/src/core/Atomic.ts b/src/core/Atomic.ts index 46bf11b1..c897ba91 100644 --- a/src/core/Atomic.ts +++ b/src/core/Atomic.ts @@ -5,11 +5,6 @@ import type {ErrorObject} from "serialize-error"; import type { FlowControlTerm, TransformHook } from "./Transform.ts"; import type {Changeset} from "json-diff-ts"; import type {IParseBaseOptions} from 'qs'; -import { fileURLToPath } from 'url'; -import * as path from 'path'; - -const __filename = fileURLToPath(import.meta.url); -export const projectRootDir = path.resolve(__filename, '../../../'); export type ComponentTypeClient = 'client'; export const COMPONENT_TYPE_CLIENT: ComponentTypeClient = 'client';