diff --git a/eslint.config.js b/eslint.config.js index 65d41562..73a94851 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -111,7 +111,7 @@ export default defineConfig([ 'boundaries/elements': [ { type: 'frontend', mode: 'file', pattern: 'src/client/**/*' }, { type: 'config', mode: 'file', pattern: 'config/*.example' }, - { type: 'core', mode: 'file', pattern: 'src/core/**/*' }, + { type: 'core', mode: 'file', pattern: ['src/core/!(tests)/**','src/core/!(tests)'] }, { type: 'backend', mode: 'file', pattern: 'src/backend/**/*' }, ], // So it understands TS path aliases when resolving imports diff --git a/src/backend/common/AbstractComponent.ts b/src/backend/common/AbstractComponent.ts index 0a68909e..a421ed57 100644 --- a/src/backend/common/AbstractComponent.ts +++ b/src/backend/common/AbstractComponent.ts @@ -14,7 +14,7 @@ import { type StageConfig, TRANSFORM_HOOK, type TransformHook -} from "./infrastructure/Transform.ts"; +} from "../../core/Transform.ts"; import AbstractInitializable from "./AbstractInitializable.ts"; import TransformerManager from "./transforms/TransformerManager.ts"; import { getRoot } from "../ioc.ts"; diff --git a/src/backend/common/database/drizzle/schema/schema.ts b/src/backend/common/database/drizzle/schema/schema.ts index e9a05e6f..9620cac1 100644 --- a/src/backend/common/database/drizzle/schema/schema.ts +++ b/src/backend/common/database/drizzle/schema/schema.ts @@ -4,7 +4,7 @@ import dayjs, { type Dayjs } from "dayjs"; import { nanoid } from "nanoid"; import { type ErrorLike, type PlayObject } from "../../../../../core/Atomic.ts"; import { asPlayCheap } from "../../../../../core/PlayMarshalUtils.ts"; -import { type ExternalMetadataTerm, type PlayTransformPartsConfig, type SearchAndReplaceTerm } from "../../../infrastructure/Transform.ts"; +import { type ExternalMetadataTerm, type PlayTransformPartsConfig, type SearchAndReplaceTerm } from "../../../../../core/Transform.ts"; import { type JobRangeCount, type JobRangeTime } from "../../../infrastructure/Job.ts"; import { serializeError, deserializeError } from "serialize-error"; import { generatePlayUid } from "../../../../../core/StringUtils.ts"; diff --git a/src/backend/common/infrastructure/config/client/index.ts b/src/backend/common/infrastructure/config/client/index.ts index 97ba99e1..49624029 100644 --- a/src/backend/common/infrastructure/config/client/index.ts +++ b/src/backend/common/infrastructure/config/client/index.ts @@ -1,5 +1,5 @@ import { type DurationValue } from "../../Atomic.ts"; -import { type PlayTransformConfig, type PlayTransformOptions } from "../../Transform.ts"; +import { type PlayTransformConfig, type PlayTransformOptions } from "../../../../../core/Transform.ts"; import { type CommonConfig, type CommonData, type RequestRetryOptions } from "../common.ts"; import { type RetentionConfig } from "../database.ts"; diff --git a/src/backend/common/infrastructure/config/common.ts b/src/backend/common/infrastructure/config/common.ts index 8dc6a4b6..5868e7d9 100644 --- a/src/backend/common/infrastructure/config/common.ts +++ b/src/backend/common/infrastructure/config/common.ts @@ -1,5 +1,3 @@ -import { type keyOmit } from "../Atomic.ts"; - export interface CommonConfigPrimitives { name?: string id?: string diff --git a/src/backend/common/infrastructure/config/source/index.ts b/src/backend/common/infrastructure/config/source/index.ts index 6693e004..7518a48f 100644 --- a/src/backend/common/infrastructure/config/source/index.ts +++ b/src/backend/common/infrastructure/config/source/index.ts @@ -1,6 +1,6 @@ import { type FileLogOptions, type LogLevel } from "@foxxmd/logging"; -import { type PlayTransformConfig, type PlayTransformOptions } from "../../Transform.ts"; +import { type PlayTransformConfig, type PlayTransformOptions } from "../../../../../core/Transform.ts"; import { type CommonConfig, type CommonData, type RequestRetryOptions } from "../common.ts"; import { type RetentionConfig } from "../database.ts"; import { type DurationValue } from "../../Atomic.ts"; diff --git a/src/backend/common/transforms/AbstractTransformer.ts b/src/backend/common/transforms/AbstractTransformer.ts index 62e4adae..fff830ec 100644 --- a/src/backend/common/transforms/AbstractTransformer.ts +++ b/src/backend/common/transforms/AbstractTransformer.ts @@ -2,7 +2,7 @@ import { childLogger, type Logger } from "@foxxmd/logging"; import { type PlayObject, type TransformerCommon, type TransformerCommonConfig } from "../../../core/Atomic.ts"; import { isStageTyped, testWhenConditions } from "../../utils/PlayTransformUtils.ts"; import AbstractInitializable from "../AbstractInitializable.ts"; -import { type StageConfig } from "../infrastructure/Transform.ts"; +import { type StageConfig } from "../../../core/Transform.ts"; import { cacheFunctions, parseToRegexOrLiteralSearch, testMaybeRegex, searchAndReplace} from "@foxxmd/regex-buddy-core"; import { Cacheable } from "cacheable"; import { hashObject } from "../../utils/StringUtils.ts"; diff --git a/src/backend/common/transforms/AtomicPartsTransformer.ts b/src/backend/common/transforms/AtomicPartsTransformer.ts index 18f0985b..e3f6b7ee 100644 --- a/src/backend/common/transforms/AtomicPartsTransformer.ts +++ b/src/backend/common/transforms/AtomicPartsTransformer.ts @@ -1,5 +1,5 @@ import { type ArtistCredit, isPlayObject, type ObjectPlayData, type PlayObject, type TrackMeta } from "../../../core/Atomic.ts"; -import { type AtomicStageConfig, type StageConfig } from "../infrastructure/Transform.ts"; +import { type AtomicStageConfig, type StageConfig } from "../../../core/Transform.ts"; import AbstractTransformer from "./AbstractTransformer.ts"; //export type GenericAtomicStageConfig = diff --git a/src/backend/common/transforms/MusicbrainzTransformer.ts b/src/backend/common/transforms/MusicbrainzTransformer.ts index ff57b409..69d4e629 100644 --- a/src/backend/common/transforms/MusicbrainzTransformer.ts +++ b/src/backend/common/transforms/MusicbrainzTransformer.ts @@ -1,7 +1,7 @@ import { type ArtistCredit, asMBReleasePrimaryGroupType, asMBReleaseSecondaryGroupType, asMBReleaseStatus, DEFAULT_MISSING_TYPES, isMBReleasePrimaryGroupType, type LifecycleInput, type MBReleaseGroupPrimaryType, type MBReleaseGroupSecondaryType, type MBReleaseStatus, type MissingMbidType, type PlayObject, type TrackMeta, type TransformerCommon, type TransformOptions } from "../../../core/Atomic.ts"; import { isWhenCondition, testWhenConditions } from "../../utils/PlayTransformUtils.ts"; import { type WebhookPayload } from "../infrastructure/config/health/webhooks.ts"; -import { type ExternalMetadataTerm, type PlayTransformMetadataStage } from "../infrastructure/Transform.ts"; +import { type ExternalMetadataTerm, type PlayTransformMetadataStage } from "../../../core/Transform.ts"; import AtomicPartsTransformer from "./AtomicPartsTransformer.ts"; import { type TransformerOptions } from "./AbstractTransformer.ts"; import { ARTIST_WEIGHT, MUSICBRAINZ_URL, type MusicbrainzApiConfigData, TITLE_WEIGHT } from "../infrastructure/Atomic.ts"; diff --git a/src/backend/common/transforms/NativeTransformer.ts b/src/backend/common/transforms/NativeTransformer.ts index a9c99637..879fc606 100644 --- a/src/backend/common/transforms/NativeTransformer.ts +++ b/src/backend/common/transforms/NativeTransformer.ts @@ -1,7 +1,7 @@ import { type ArtistCredit, type PlayObject, type TransformerCommon } from "../../../core/Atomic.ts"; import { isWhenCondition, testWhenConditions } from "../../utils/PlayTransformUtils.ts"; import { type WebhookPayload } from "../infrastructure/config/health/webhooks.ts"; -import { type ExternalMetadataTerm, type PlayTransformNativeStage, type StageConfig } from "../infrastructure/Transform.ts"; +import { type ExternalMetadataTerm, type PlayTransformNativeStage, type StageConfig } from "../../../core/Transform.ts"; import AtomicPartsTransformer from "./AtomicPartsTransformer.ts"; import { parseArtistCredits, parseTrackCredits, uniqueNormalizedStrArr } from "../../utils/StringUtils.ts"; import { parseRegexSingle, parseToRegexOrLiteralSearch } from "@foxxmd/regex-buddy-core"; diff --git a/src/backend/common/transforms/TransformerManager.ts b/src/backend/common/transforms/TransformerManager.ts index 4287510a..5a1ea178 100644 --- a/src/backend/common/transforms/TransformerManager.ts +++ b/src/backend/common/transforms/TransformerManager.ts @@ -2,7 +2,7 @@ import { childLogger, type Logger } from "@foxxmd/logging"; import AbstractTransformer from "./AbstractTransformer.ts"; import { type TransformerCommonConfig } from "../../../core/Atomic.ts"; import UserTransformer from "./UserTransformer.ts"; -import { type StageConfig } from "../infrastructure/Transform.ts"; +import { type StageConfig } from "../../../core/Transform.ts"; import { type PlayObject } from "../../../core/Atomic.ts"; import { isStageTyped } from "../../utils/PlayTransformUtils.ts"; import { MSCache } from "../Cache.ts"; diff --git a/src/backend/common/transforms/UserTransformer.ts b/src/backend/common/transforms/UserTransformer.ts index f02f4776..d1b3d2a4 100644 --- a/src/backend/common/transforms/UserTransformer.ts +++ b/src/backend/common/transforms/UserTransformer.ts @@ -2,7 +2,7 @@ import { searchAndReplace } from "@foxxmd/regex-buddy-core"; import { type ArtistCredit, type PlayObject } from "../../../core/Atomic.ts"; import { configValToSearchReplace, isSearchAndReplaceTerm, isUserStage, testWhenConditions } from "../../utils/PlayTransformUtils.ts"; import { type WebhookPayload } from "../infrastructure/config/health/webhooks.ts"; -import { type ConditionalSearchAndReplaceRegExp, type PlayTransformUserStage, type StageConfig } from "../infrastructure/Transform.ts"; +import { type ConditionalSearchAndReplaceRegExp, type PlayTransformUserStage, type StageConfig } from "../../../core/Transform.ts"; import AtomicPartsTransformer from "./AtomicPartsTransformer.ts"; export default class UserTransformer extends AtomicPartsTransformer { diff --git a/src/backend/common/vendor/ListenbrainzApiClient.ts b/src/backend/common/vendor/ListenbrainzApiClient.ts index 6a20ed92..a972d512 100644 --- a/src/backend/common/vendor/ListenbrainzApiClient.ts +++ b/src/backend/common/vendor/ListenbrainzApiClient.ts @@ -20,7 +20,7 @@ import AbstractApiClient from "./AbstractApiClient.ts"; import { getBaseFromUrl, isPortReachableConnect, joinedUrl, normalizeWebAddress } from '../../utils/NetworkUtils.ts'; import { unique } from '../../utils.ts'; import { removeUndefinedKeys } from '../../../core/DataUtils.ts'; -import { type ListenPayload, type ListenResponse, type ListenType, type SubmitPayload } from './listenbrainz/interfaces.ts'; +import { type ListenPayload, type ListenResponse, type ListenType, type SubmitPayload } from '../../../core/vendor/listenbrainz/interfaces.ts'; import { baseFormatPlayObj } from '../../utils/PlayTransformUtils.ts'; import { ScrobbleSubmitError, SimpleError } from '../errors/MSErrors.ts'; import pRetry from 'p-retry'; diff --git a/src/backend/common/vendor/RockSkyApiClient.ts b/src/backend/common/vendor/RockSkyApiClient.ts index 6672f4ad..61835532 100644 --- a/src/backend/common/vendor/RockSkyApiClient.ts +++ b/src/backend/common/vendor/RockSkyApiClient.ts @@ -8,7 +8,7 @@ import { type RockSkyClientData, type RockSkyData, type RockSkyOptions } from ". import AbstractApiClient from "./AbstractApiClient.ts"; import { isPortReachableConnect, joinedUrl, normalizeWebAddress } from '../../utils/NetworkUtils.ts'; import { unique } from '../../utils.ts'; -import { type ListenPayload, type ListenResponse, type ListenType, type SubmitPayload } from './listenbrainz/interfaces.ts'; +import { type ListenPayload, type ListenResponse, type ListenType, type SubmitPayload } from '../../../core/vendor/listenbrainz/interfaces.ts'; import { playToListenPayload } from './listenbrainz/lzUtils.ts'; import { type RockskyScrobble } from './rocksky/interfaces.ts'; import { type Handle } from "@atcute/lexicons"; diff --git a/src/backend/common/vendor/koito/KoitoApiClient.ts b/src/backend/common/vendor/koito/KoitoApiClient.ts index 8f7d4e17..f9074ab5 100644 --- a/src/backend/common/vendor/koito/KoitoApiClient.ts +++ b/src/backend/common/vendor/koito/KoitoApiClient.ts @@ -7,8 +7,8 @@ import { getBaseFromUrl, isPortReachableConnect, joinedUrl, normalizeWebAddress import request, { Request, Response } from 'superagent'; import { UpstreamError } from "../../errors/UpstreamError.ts"; import { playToListenPayload } from '../listenbrainz/lzUtils.ts'; -import { type SubmitPayload } from '../listenbrainz/interfaces.ts'; -import { type ListenType } from '../listenbrainz/interfaces.ts'; +import { type SubmitPayload } from '../../../../core/vendor/listenbrainz/interfaces.ts'; +import { type ListenType } from '../../../../core/vendor/listenbrainz/interfaces.ts'; import { baseFormatPlayObj } from "../../../utils/PlayTransformUtils.ts"; import { ScrobbleSubmitError } from "../../errors/MSErrors.ts"; import { tryApiCall } from "../../../utils/RequestUtils.ts"; diff --git a/src/backend/common/vendor/listenbrainz/lzUtils.ts b/src/backend/common/vendor/listenbrainz/lzUtils.ts index 77d1c192..e93338ab 100644 --- a/src/backend/common/vendor/listenbrainz/lzUtils.ts +++ b/src/backend/common/vendor/listenbrainz/lzUtils.ts @@ -3,7 +3,7 @@ import { isEmptyArrayOrUndefined } from "../../../utils.ts"; import { removeUndefinedKeys } from '../../../../core/DataUtils.ts'; import { getScrobbleTsSOCDate } from "../../../utils/TimeUtils.ts"; import { type SubmitOptions } from "../ListenbrainzApiClient.ts"; -import { type ListenPayload, type MinimumTrack, type SubmitListenAdditionalTrackInfo, type SubmitPayload } from "./interfaces.ts"; +import { type ListenPayload, type MinimumTrack, type SubmitListenAdditionalTrackInfo, type SubmitPayload } from "../../../../core/vendor/listenbrainz/interfaces.ts"; import {version as appVersion } from '../../../version.ts'; import { artistCreditsToNames, artistCreditToName } from "../../../../core/StringUtils.ts"; diff --git a/src/backend/scrobblers/AbstractScrobbleClient.ts b/src/backend/scrobblers/AbstractScrobbleClient.ts index 95bb7b54..9ee54615 100644 --- a/src/backend/scrobblers/AbstractScrobbleClient.ts +++ b/src/backend/scrobblers/AbstractScrobbleClient.ts @@ -43,7 +43,7 @@ import { } from "../common/infrastructure/Atomic.ts"; import { type ClientType } from '../common/infrastructure/config/client/clients.ts'; import { type CommonClientConfig, type NowPlayingOptions, type UpstreamRefreshOptions } from "../common/infrastructure/config/client/index.ts"; -import { TRANSFORM_HOOK } from "../common/infrastructure/Transform.ts"; +import { TRANSFORM_HOOK } from "../../core/Transform.ts"; import { Notifiers } from "../notifier/Notifiers.ts"; import { comparingMultipleArtists, diff --git a/src/backend/scrobblers/ListenbrainzScrobbler.ts b/src/backend/scrobblers/ListenbrainzScrobbler.ts index 61ad8089..5f9c0acb 100644 --- a/src/backend/scrobblers/ListenbrainzScrobbler.ts +++ b/src/backend/scrobblers/ListenbrainzScrobbler.ts @@ -9,7 +9,7 @@ import { type FormatPlayObjectOptions, type TimeRangeListensFetcher } from "../c import { DEFAULT_MS_ITEMS_PER_GET_LZ, type ListenBrainzClientConfig } from "../common/infrastructure/config/client/listenbrainz.ts"; import { ListenbrainzApiClient } from "../common/vendor/ListenbrainzApiClient.ts"; import { playToListenPayload } from '../common/vendor/listenbrainz/lzUtils.ts'; -import { type ListenPayload } from '../common/vendor/listenbrainz/interfaces.ts'; +import { type ListenPayload } from '../../core/vendor/listenbrainz/interfaces.ts'; import { Notifiers } from "../notifier/Notifiers.ts"; import AbstractScrobbleClient, { nowPlayingUpdateByPlayDuration, playerInNPPlayingOnlyState } from "./AbstractScrobbleClient.ts"; diff --git a/src/backend/scrobblers/RockskyScrobbler.ts b/src/backend/scrobblers/RockskyScrobbler.ts index dacadfca..eb16b03f 100644 --- a/src/backend/scrobblers/RockskyScrobbler.ts +++ b/src/backend/scrobblers/RockskyScrobbler.ts @@ -6,7 +6,7 @@ import { isNodeNetworkException } from "../common/errors/NodeErrors.ts"; import { type FormatPlayObjectOptions, type InternalConfigOptional } from "../common/infrastructure/Atomic.ts"; import { ListenbrainzApiClient } from "../common/vendor/ListenbrainzApiClient.ts"; import { playToListenPayload } from '../common/vendor/listenbrainz/lzUtils.ts'; -import { type ListenPayload } from '../common/vendor/listenbrainz/interfaces.ts'; +import { type ListenPayload } from '../../core/vendor/listenbrainz/interfaces.ts'; import { Notifiers } from "../notifier/Notifiers.ts"; import { isDebugMode } from "../utils.ts"; diff --git a/src/backend/scrobblers/ScrobbleClients.ts b/src/backend/scrobblers/ScrobbleClients.ts index b0e08f67..e635ba1e 100644 --- a/src/backend/scrobblers/ScrobbleClients.ts +++ b/src/backend/scrobblers/ScrobbleClients.ts @@ -20,7 +20,7 @@ import { type KoitoClientConfig, type KoitoData } from '../common/infrastructure import { type TealClientConfig, type TealData } from '../common/infrastructure/config/client/tealfm.ts'; import { type RockSkyClientConfig, type RockSkyData } from '../common/infrastructure/config/client/rocksky.ts'; import { type CommonClientOptions } from '../common/infrastructure/config/client/index.ts'; -import { type ExternalMetadataTerm, type PlayTransformHooks } from '../common/infrastructure/Transform.ts'; +import { type ExternalMetadataTerm, type PlayTransformHooks } from '../../core/Transform.ts'; import { type LibrefmClientConfig, type LibrefmData } from '../common/infrastructure/config/client/librefm.ts'; import clone from 'clone'; import { type DiscordClientConfig, type DiscordData } from '../common/infrastructure/config/client/discord.ts'; diff --git a/src/backend/server/endpointListenbrainzRoutes.ts b/src/backend/server/endpointListenbrainzRoutes.ts index 94f734ba..3e1d19b3 100644 --- a/src/backend/server/endpointListenbrainzRoutes.ts +++ b/src/backend/server/endpointListenbrainzRoutes.ts @@ -7,7 +7,7 @@ import { LZEndpointNotifier } from "../sources/ingressNotifiers/LZEndpointNotifi import ScrobbleSources from "../sources/ScrobbleSources.ts"; import { nonEmptyBody } from "./middleware.ts"; import { isDebugMode } from "../utils.ts"; -import { type PlayingNowPayload } from '../common/vendor/listenbrainz/interfaces.ts'; +import { type PlayingNowPayload } from '../../core/vendor/listenbrainz/interfaces.ts'; import ScrobbleClients from '../scrobblers/ScrobbleClients.ts'; import { playToListenPayload } from '../common/vendor/listenbrainz/lzUtils.ts'; import { stringToDeterministicNumber } from '../utils/StringUtils.ts'; diff --git a/src/backend/sources/AbstractSource.ts b/src/backend/sources/AbstractSource.ts index 4d8c3875..2f33696e 100644 --- a/src/backend/sources/AbstractSource.ts +++ b/src/backend/sources/AbstractSource.ts @@ -20,7 +20,7 @@ import { type PlayPlatformId } from '../../core/Atomic.ts'; import { type PlayUserId } from '../../core/Atomic.ts'; import { type DeviceId } from '../../core/Atomic.ts'; import { type SourceType, type SourceConfig } from '../common/infrastructure/config/source/sources.ts'; -import { TRANSFORM_HOOK } from "../common/infrastructure/Transform.ts"; +import { TRANSFORM_HOOK } from "../../core/Transform.ts"; import TupleMap from "../common/TupleMap.ts"; import { difference, diff --git a/src/backend/sources/DeezerInternalSource.ts b/src/backend/sources/DeezerInternalSource.ts index 5cc9f5d7..87c21edb 100644 --- a/src/backend/sources/DeezerInternalSource.ts +++ b/src/backend/sources/DeezerInternalSource.ts @@ -4,7 +4,7 @@ import request, { Request, Response, type SuperAgent } from 'superagent'; import { type PlayObject, type PlayObjectMinimal, SOURCE_SOT, TA_CLOSE, TA_DURING, TA_EXACT, TA_FUZZY, type TemporalAccuracy } from "../../core/Atomic.ts"; import { DEFAULT_RETRY_MULTIPLIER, type FormatPlayObjectOptions, type InternalConfig } from "../common/infrastructure/Atomic.ts"; import { type DeezerInternalSourceConfig, type DeezerInternalTrackData, type DeezerSourceConfig } from "../common/infrastructure/config/source/deezer.ts"; -import { TRANSFORM_HOOK } from "../common/infrastructure/Transform.ts"; +import { TRANSFORM_HOOK } from "../../core/Transform.ts"; import { parseRetryAfterSecsFromObj, playObjDataMatch, sleep, sortByOldestPlayDate} from "../utils.ts"; import AbstractSource, { type RecentlyPlayedOptions } from "./AbstractSource.ts"; import { CookieJar, Cookie } from 'tough-cookie'; diff --git a/src/backend/sources/EndpointListenbrainzSource.ts b/src/backend/sources/EndpointListenbrainzSource.ts index bb895515..c3ff8c99 100644 --- a/src/backend/sources/EndpointListenbrainzSource.ts +++ b/src/backend/sources/EndpointListenbrainzSource.ts @@ -13,8 +13,8 @@ import { import { type PlayPlatformId } from '../../core/Atomic.ts'; import { type ListenbrainzEndpointSourceConfig } from "../common/infrastructure/config/source/endpointlz.ts"; import { ListenbrainzApiClient, listenPayloadToPlay } from "../common/vendor/ListenbrainzApiClient.ts"; -import { type SubmitPayload } from '../common/vendor/listenbrainz/interfaces.ts'; -import { type ListenPayload } from '../common/vendor/listenbrainz/interfaces.ts'; +import { type SubmitPayload } from '../../core/vendor/listenbrainz/interfaces.ts'; +import { type ListenPayload } from '../../core/vendor/listenbrainz/interfaces.ts'; import MemorySource from "./MemorySource.ts"; import { NowPlayingPlayerState } from "./PlayerState/NowPlayingPlayerState.ts"; import { type Logger } from "@foxxmd/logging"; diff --git a/src/backend/sources/ScrobbleSources.ts b/src/backend/sources/ScrobbleSources.ts index 431afc7a..e3167022 100644 --- a/src/backend/sources/ScrobbleSources.ts +++ b/src/backend/sources/ScrobbleSources.ts @@ -46,7 +46,7 @@ import { type KoitoSourceConfig } from '../common/infrastructure/config/source/k import { type TealSourceConfig } from '../common/infrastructure/config/source/tealfm.ts'; import { type RockskySourceConfig } from '../common/infrastructure/config/source/rocksky.ts'; import { type CommonSourceOptions } from '../common/infrastructure/config/source/index.ts'; -import { type ExternalMetadataTerm, type PlayTransformHooks, type PlayTransformOptions } from '../common/infrastructure/Transform.ts'; +import { type ExternalMetadataTerm, type PlayTransformHooks, type PlayTransformOptions } from '../../core/Transform.ts'; import { type LibrefmSourceConfig } from '../common/infrastructure/config/source/librefm.ts'; import { type LastfmData } from '../common/infrastructure/config/client/lastfm.ts'; import { type MalojaData } from '../common/infrastructure/config/client/maloja.ts'; diff --git a/src/backend/tests/component/transformers.test.ts b/src/backend/tests/component/transformers.test.ts index 435507f1..69968461 100644 --- a/src/backend/tests/component/transformers.test.ts +++ b/src/backend/tests/component/transformers.test.ts @@ -4,10 +4,10 @@ import asPromised from 'chai-as-promised'; import { after, before, describe, it } from 'mocha'; import AbstractComponent, { type AbstractComponentConfig } from "../../common/AbstractComponent.ts"; -import { type ConditionalSearchAndReplaceRegExp, STAGE_TYPES, STAGE_TYPES_METADATA, STAGE_TYPES_USER, TRANSFORM_HOOK } from "../../common/infrastructure/Transform.ts"; +import { type ConditionalSearchAndReplaceRegExp, STAGE_TYPES, STAGE_TYPES_METADATA, STAGE_TYPES_USER, TRANSFORM_HOOK } from "../../../core/Transform.ts"; import { isConditionalSearchAndReplace } from "../../utils/PlayTransformUtils.ts"; -import { generateArtistsStr, generatePlay } from "../../../core/PlayTestUtils.ts"; +import { generateArtistsStr, generatePlay } from "../../../core/tests/utils/PlayTestUtils.ts"; import { type WebhookPayload } from "../../common/infrastructure/config/health/webhooks.ts"; import { findCauseByMessage } from "../../utils/ErrorUtils.ts"; import NativeTransformer from "../../common/transforms/NativeTransformer.ts"; diff --git a/src/backend/tests/database/drizzle.test.ts b/src/backend/tests/database/drizzle.test.ts index 308fcbd0..83f814ca 100644 --- a/src/backend/tests/database/drizzle.test.ts +++ b/src/backend/tests/database/drizzle.test.ts @@ -4,7 +4,7 @@ import { getDb, migrateDb, getDbMigrationStatus, getMigratedDb, type DbConcrete import withLocalTmpDir from 'with-local-tmp-dir'; import { components, playInputs, plays, queueStates } from '../../common/database/drizzle/schema/schema.ts'; import dayjs from 'dayjs'; -import { generatePlay } from '../../../core/PlayTestUtils.ts'; +import { generatePlay } from '../../../core/tests/utils/PlayTestUtils.ts'; import { getDbPath } from '../../common/database/Database.ts'; import { x } from 'tinyexec'; import * as path from 'path'; diff --git a/src/backend/tests/jellyfin/jellyfin.test.ts b/src/backend/tests/jellyfin/jellyfin.test.ts index f5cb4f8f..8c82e904 100644 --- a/src/backend/tests/jellyfin/jellyfin.test.ts +++ b/src/backend/tests/jellyfin/jellyfin.test.ts @@ -7,7 +7,7 @@ import { type JsonPlayObject, type PlayMeta } from "../../../core/Atomic.ts"; import JellyfinApiSource from "../../sources/JellyfinApiSource.ts"; import validSession from './validSession.json' with { type: "json" }; import { type JellyApiData } from "../../common/infrastructure/config/source/jellyfin.ts"; -import { generatePlay } from "../../../core/PlayTestUtils.ts"; +import { generatePlay } from "../../../core/tests/utils/PlayTestUtils.ts"; import { faker, fakerJA } from "@faker-js/faker"; import type { // @ts-expect-error weird typings? diff --git a/src/backend/tests/lastfm/lastfm.test.ts b/src/backend/tests/lastfm/lastfm.test.ts index 05e6f8ff..5e71eb10 100644 --- a/src/backend/tests/lastfm/lastfm.test.ts +++ b/src/backend/tests/lastfm/lastfm.test.ts @@ -1,7 +1,7 @@ import chai, { expect } from 'chai'; import asPromised from 'chai-as-promised'; import { after, before, describe, it } from 'mocha'; -import { generateLastfmTrackObject, generateMbid, generatePlay } from "../../../core/PlayTestUtils.ts"; +import { generateLastfmTrackObject, generateMbid, generatePlay } from "../../../core/tests/utils/PlayTestUtils.ts"; import LastfmApiClient, { playToClientPayload, formatPlayObj } from '../../common/vendor/LastfmApiClient.ts'; import { MockNetworkError, withRequestInterception } from '../utils/networking.ts'; diff --git a/src/backend/tests/listenbrainz/listenbrainz.test.ts b/src/backend/tests/listenbrainz/listenbrainz.test.ts index 30140059..af8cfc77 100644 --- a/src/backend/tests/listenbrainz/listenbrainz.test.ts +++ b/src/backend/tests/listenbrainz/listenbrainz.test.ts @@ -8,7 +8,7 @@ import { UpstreamError } from "../../common/errors/UpstreamError.ts"; import { ListenbrainzApiClient, listenResponseToPlay, listenPayloadToPlay } from "../../common/vendor/ListenbrainzApiClient.ts"; import { playToListenPayload } from '../../common/vendor/listenbrainz/lzUtils.ts'; -import { type ListenPayload, type ListenResponse, type SubmitPayload } from '../../common/vendor/listenbrainz/interfaces.ts'; +import { type ListenPayload, type ListenResponse, type SubmitPayload } from '../../../core/vendor/listenbrainz/interfaces.ts'; import { type ExpectedResults } from "../utils/interfaces.ts"; import { withRequestInterception } from "../utils/networking.ts"; import artistWithProperJoiner from './correctlyMapped/artistProperHasJoinerInName.json' with { type: "json" }; @@ -23,7 +23,7 @@ import slightlyDifferentNames from './correctlyMapped/trackNameSlightlyDifferent // incorrect mappings import incorrectMultiArtistsTrackName from './incorrectlyMapped/multiArtistsInTrackName.json' with { type: "json" }; import veryWrong from './incorrectlyMapped/veryWrong.json' with { type: "json" }; -import { generatePlay } from "../../../core/PlayTestUtils.ts"; +import { generatePlay } from "../../../core/tests/utils/PlayTestUtils.ts"; import { artistCreditsToNames, artistNamesToCredits } from "../../../core/StringUtils.ts"; interface LZTestFixture { diff --git a/src/backend/tests/musicbrainz/musicbrainz.test.ts b/src/backend/tests/musicbrainz/musicbrainz.test.ts index e4fbbed4..24a1e665 100644 --- a/src/backend/tests/musicbrainz/musicbrainz.test.ts +++ b/src/backend/tests/musicbrainz/musicbrainz.test.ts @@ -12,7 +12,7 @@ import path from 'path'; import { type MusicbrainzApiConfigData } from '../../common/infrastructure/Atomic.ts'; import { MockNetworkError, withRequestInterception } from '../utils/networking.ts'; import { http, HttpResponse, delay } from "msw"; -import { generatePlay, withBrainz } from '../../../core/PlayTestUtils.ts'; +import { generatePlay, withBrainz } from '../../../core/tests/utils/PlayTestUtils.ts'; import { intersect, missingMbidTypes } from '../../utils.ts'; import { CoverArtApiClient, type CoverArtApiConfig } from '../../common/vendor/musicbrainz/CoverArtApiClient.ts'; import { artistCreditToName, artistNamesToCredits, artistNameToCredit } from '../../../core/StringUtils.ts'; diff --git a/src/backend/tests/player/player.test.ts b/src/backend/tests/player/player.test.ts index 5adffc38..1aeb2fec 100644 --- a/src/backend/tests/player/player.test.ts +++ b/src/backend/tests/player/player.test.ts @@ -13,7 +13,7 @@ import { } from "../../common/infrastructure/Atomic.ts"; import { GenericPlayerState } from "../../sources/PlayerState/GenericPlayerState.ts"; import { playObjDataMatch } from "../../utils.ts"; -import { generatePlay } from "../../../core/PlayTestUtils.ts"; +import { generatePlay } from "../../../core/tests/utils/PlayTestUtils.ts"; import { PositionalPlayerState } from "../../sources/PlayerState/PositionalPlayerState.ts"; import { ListenProgressPositional } from "../../sources/PlayerState/ListenProgress.ts"; import { ListenRangePositional } from "../../sources/PlayerState/ListenRange.ts"; diff --git a/src/backend/tests/plays/playParsing.test.ts b/src/backend/tests/plays/playParsing.test.ts index a18773dd..5bf108c9 100644 --- a/src/backend/tests/plays/playParsing.test.ts +++ b/src/backend/tests/plays/playParsing.test.ts @@ -2,7 +2,7 @@ import chai, { assert, expect } from 'chai'; import asPromised from 'chai-as-promised'; import { after, before, describe, it } from 'mocha'; -import { generateArtistsStr, } from "../../../core/PlayTestUtils.ts"; +import { generateArtistsStr, } from "../../../core/tests/utils/PlayTestUtils.ts"; import { parseArtistCredits, parseCredits, parseTrackCredits, uniqueNormalizedStrArr } from "../../utils/StringUtils.ts"; import testData from '../utils/playTestData.json' with { type: "json" }; import { intersect } from "../../utils.ts"; diff --git a/src/backend/tests/plex/plex.test.ts b/src/backend/tests/plex/plex.test.ts index cf8b4f16..a16bbdce 100644 --- a/src/backend/tests/plex/plex.test.ts +++ b/src/backend/tests/plex/plex.test.ts @@ -5,7 +5,7 @@ import { describe, it } from 'mocha'; import { type PlayMeta } from "../../../core/Atomic.ts"; import validSessionResponse from './validSession.json' with { type: "json" }; -import { generatePlay } from "../../../core/PlayTestUtils.ts"; +import { generatePlay } from "../../../core/tests/utils/PlayTestUtils.ts"; import { type PlayerStateDataMaybePlay } from "../../common/infrastructure/Atomic.ts"; import { type PlexApiData } from "../../common/infrastructure/config/source/plex.ts"; import PlexApiSource from "../../sources/PlexApiSource.ts"; diff --git a/src/backend/tests/scrobbler/scrobblers.test.ts b/src/backend/tests/scrobbler/scrobblers.test.ts index 078bd838..dd9217a5 100644 --- a/src/backend/tests/scrobbler/scrobblers.test.ts +++ b/src/backend/tests/scrobbler/scrobblers.test.ts @@ -12,7 +12,7 @@ import { genGroupIdStr } from '../../../core/PlayUtils.ts'; import mixedDuration from '../plays/mixedDuration.json' with { type: 'json' }; import withDuration from '../plays/withDuration.json' with { type: 'json' }; import { MockNetworkError, withRequestInterception } from "../utils/networking.ts"; -import { generatePlay, generatePlayPlatformId, generatePlays, generateSourcePlayerObj, normalizePlays } from "../../../core/PlayTestUtils.ts"; +import { generatePlay, generatePlayPlatformId, generatePlays, generateSourcePlayerObj, normalizePlays } from "../../../core/tests/utils/PlayTestUtils.ts"; import MockDate from 'mockdate'; import { NowPlayingScrobbler, TestAuthScrobbler, TestScrobbler } from "./TestScrobbler.ts"; diff --git a/src/backend/tests/source/source.test.ts b/src/backend/tests/source/source.test.ts index c98b297f..e7f2393b 100644 --- a/src/backend/tests/source/source.test.ts +++ b/src/backend/tests/source/source.test.ts @@ -6,7 +6,7 @@ import { after, before, describe, it } from 'mocha'; import pEvent from "p-event"; import clone from 'clone'; import { type PlayObject } from "../../../core/Atomic.ts"; -import { generatePlay, generatePlayerStateData, generatePlays, normalizePlays } from "../../../core/PlayTestUtils.ts"; +import { generatePlay, generatePlayerStateData, generatePlays, normalizePlays } from "../../../core/tests/utils/PlayTestUtils.ts"; import { TestMemoryPositionalSource, TestMemorySource, TestSource } from "./TestSource.ts"; import spotifyPayload from '../plays/spotifyCurrentPlaybackState.json' with { type: "json" }; import SpotifySource from "../../sources/SpotifySource.ts"; diff --git a/src/backend/tests/tealfm/tealfm.test.ts b/src/backend/tests/tealfm/tealfm.test.ts index f543cf54..6a4701b2 100644 --- a/src/backend/tests/tealfm/tealfm.test.ts +++ b/src/backend/tests/tealfm/tealfm.test.ts @@ -1,7 +1,7 @@ import chai, { expect } from 'chai'; import asPromised from 'chai-as-promised'; import { after, before, describe, it } from 'mocha'; -import { generateArtistCredits, generatePlay, generateTealPlayRecord, withBrainz } from "../../../core/PlayTestUtils.ts"; +import { generateArtistCredits, generatePlay, generateTealPlayRecord, withBrainz } from "../../../core/tests/utils/PlayTestUtils.ts"; import { listRecordToPlay } from "../../common/vendor/teal/TealApiClient.ts"; import { playToRecord } from "../../common/vendor/teal/TealApiClient.ts"; import dayjs from 'dayjs'; diff --git a/src/backend/tests/utilitiesTests/time.test.ts b/src/backend/tests/utilitiesTests/time.test.ts index 892cbf0e..ed20d3d8 100644 --- a/src/backend/tests/utilitiesTests/time.test.ts +++ b/src/backend/tests/utilitiesTests/time.test.ts @@ -2,7 +2,7 @@ import { assert, expect } from 'chai'; import { describe, it } from 'mocha'; import { closeToPlayEnd, closeToPlayStart, repeatDurationPlayed, timePassesScrobbleThreshold } from '../../utils/TimeUtils.ts'; import { DEFAULT_CLOSE_POSITION_ABSOLUTE, DEFAULT_CLOSE_POSITION_PERCENT, DEFAULT_DURATION_REPEAT_ABSOLUTE, DEFAULT_DURATION_REPEAT_PERCENT, DEFAULT_SCROBBLE_DURATION_THRESHOLD, DEFAULT_SCROBBLE_PERCENT_THRESHOLD } from '../../common/infrastructure/Atomic.ts'; -import { generatePlay } from '../../../core/PlayTestUtils.ts'; +import { generatePlay } from '../../../core/tests/utils/PlayTestUtils.ts'; describe('Play Position', function() { diff --git a/src/backend/tests/utils/databaseFixtures.ts b/src/backend/tests/utils/databaseFixtures.ts index 405a1b8b..7a450fe5 100644 --- a/src/backend/tests/utils/databaseFixtures.ts +++ b/src/backend/tests/utils/databaseFixtures.ts @@ -1,4 +1,4 @@ -import { generatePlay } from "../../../core/PlayTestUtils.ts"; +import { generatePlay } from "../../../core/tests/utils/PlayTestUtils.ts"; import { generateRandomObj } from "../../../core/tests/utils/fixtures.ts"; import { generateComponentEntity, generateInputEntity, generatePlayEntity } from "../../common/database/drizzle/entityUtils.ts"; import { type PlayNew } from "../../common/database/drizzle/drizzleTypes.ts"; diff --git a/src/backend/tests/utils/playComparisons.test.ts b/src/backend/tests/utils/playComparisons.test.ts index 829b99cb..07d6c2ad 100644 --- a/src/backend/tests/utils/playComparisons.test.ts +++ b/src/backend/tests/utils/playComparisons.test.ts @@ -2,7 +2,7 @@ import { assert, expect } from 'chai'; import clone from "clone"; import { describe, it } from 'mocha'; import { genericSourcePlayMatch, playsAreAddedOnly, playsAreBumpedOnly, playsAreSortConsistent } from "../../utils/PlayComparisonUtils.ts"; -import { generatePlay, generatePlays } from "../../../core/PlayTestUtils.ts"; +import { generatePlay, generatePlays } from "../../../core/tests/utils/PlayTestUtils.ts"; import { type PlayObject } from "../../../core/Atomic.ts"; const newPlay = generatePlay(); diff --git a/src/backend/tests/ytm/ytm.test.ts b/src/backend/tests/ytm/ytm.test.ts index 14156766..3f55ed6d 100644 --- a/src/backend/tests/ytm/ytm.test.ts +++ b/src/backend/tests/ytm/ytm.test.ts @@ -6,7 +6,7 @@ import clone from "clone"; import YTMusicSource, { ytiHistoryResponseFromShelfToPlays, ytiHistoryResponseToListItems } from "../../sources/YTMusicSource.ts"; import ytHistoryRes from './ytres.json' with {type: 'json'}; import EventEmitter from "events"; -import { generatePlay, generatePlays, normalizePlays } from '../../../core/PlayTestUtils.ts'; +import { generatePlay, generatePlays, normalizePlays } from '../../../core/tests/utils/PlayTestUtils.ts'; import { type YTMusicSourceConfig } from '../../common/infrastructure/config/source/ytmusic.ts'; import { sleep } from '../../utils.ts'; import dayjs from 'dayjs'; diff --git a/src/backend/utils/PlayComparisonUtils.ts b/src/backend/utils/PlayComparisonUtils.ts index 5f049915..666e1fe9 100644 --- a/src/backend/utils/PlayComparisonUtils.ts +++ b/src/backend/utils/PlayComparisonUtils.ts @@ -7,7 +7,7 @@ import { compareNormalizedStrings, compareScrobbleArtists, compareScrobbleTracks import { ARTIST_WEIGHT, DUP_SCORE_THRESHOLD, type ScrobbledPlayObject, TIME_WEIGHT, TITLE_WEIGHT } from "../common/infrastructure/Atomic.ts"; import { type StringSamenessResult } from "@foxxmd/string-sameness"; import { type Duration } from "dayjs/plugin/duration.js"; -import { type PlayTransformRules, TRANSFORM_HOOK, type TransformHook } from "../common/infrastructure/Transform.ts"; +import { type PlayTransformRules, TRANSFORM_HOOK, type TransformHook } from "../../core/Transform.ts"; import { type Logger } from "@foxxmd/logging"; import { loggerNoop } from '../common/MaybeLogger.ts'; import { statefulInvariantTransform } from "../../core/PlayUtils.ts"; diff --git a/src/backend/utils/PlayTransformUtils.ts b/src/backend/utils/PlayTransformUtils.ts index 124b5e29..9b1b4d1c 100644 --- a/src/backend/utils/PlayTransformUtils.ts +++ b/src/backend/utils/PlayTransformUtils.ts @@ -14,7 +14,7 @@ import { type StageTypedConfig, type WhenConditionsConfig, type WhenParts -} from "../common/infrastructure/Transform.ts"; +} from "../../core/Transform.ts"; import dayjs from "dayjs"; export const isWhenCondition = (val: unknown): val is WhenParts => { diff --git a/src/core/Atomic.ts b/src/core/Atomic.ts index 06953e77..6ec3e686 100644 --- a/src/core/Atomic.ts +++ b/src/core/Atomic.ts @@ -1,8 +1,8 @@ import type { Dayjs } from "dayjs"; -import type { AdditionalTrackInfoResponse } from "../backend/common/vendor/listenbrainz/interfaces.ts"; +import type { AdditionalTrackInfoResponse } from "./vendor/listenbrainz/interfaces.ts"; import type { Merge, RequiredKeys, StrictOmit } from "ts-essentials"; import { type ErrorObject } from "serialize-error"; -import type { FlowControlTerm, TransformHook } from "../backend/common/infrastructure/Transform.ts"; +import type { FlowControlTerm, TransformHook } from "./Transform.ts"; import { type Changeset } from "json-diff-ts"; import { type IParseBaseOptions } from 'qs'; diff --git a/src/core/PlayMarshalUtils.ts b/src/core/PlayMarshalUtils.ts index 51466fa6..f653645e 100644 --- a/src/core/PlayMarshalUtils.ts +++ b/src/core/PlayMarshalUtils.ts @@ -1,7 +1,6 @@ import clone from 'clone'; import dayjs from 'dayjs'; import { Traverse, type TraverseContext } from 'neotraverse/modern'; -import { ListenRange } from '../backend/sources/PlayerState/ListenRange.ts'; import { type AmbPlayObject, type DateLike, type JsonPlayObject, type PlayObject, REGEX_ISO8601_LOOSE, type Replace } from './Atomic.ts'; import type { ElementOf, MarkOptional } from 'ts-essentials'; import { type ErrorObject, serializeError } from 'serialize-error'; @@ -51,8 +50,6 @@ export const asJsonPlayObject = (play: AmbPlayObject): JsonPlayObject if (dayjs.isDayjs(x)) { ctx.update(x.toISOString()); - } else if (x instanceof ListenRange) { - ctx.update(x.toJSON(), true); } }); return cloned as unknown as JsonPlayObject; diff --git a/src/backend/common/infrastructure/Transform.ts b/src/core/Transform.ts similarity index 100% rename from src/backend/common/infrastructure/Transform.ts rename to src/core/Transform.ts diff --git a/src/core/PlayTestUtils.ts b/src/core/tests/utils/PlayTestUtils.ts similarity index 96% rename from src/core/PlayTestUtils.ts rename to src/core/tests/utils/PlayTestUtils.ts index e7a86826..6a61542d 100644 --- a/src/core/PlayTestUtils.ts +++ b/src/core/tests/utils/PlayTestUtils.ts @@ -5,19 +5,19 @@ import isBetween from "dayjs/plugin/isBetween.js"; import relativeTime from "dayjs/plugin/relativeTime.js"; import timezone from "dayjs/plugin/timezone.js"; import utc from "dayjs/plugin/utc.js"; -import { type ArtistCredit, type BrainzMeta, FEAT, JOINERS, JOINERS_FINAL, type JsonPlayObject, type MBID, type MissingMbidType, type ObjectPlayData, type PlayMeta, type PlayObject, type SourcePlayerObj } from "./Atomic.ts"; -import { genGroupIdStr } from './PlayUtils.ts'; -import { sortByNewestPlayDate } from './PlayUtils.ts'; -import { CALCULATED_PLAYER_STATUSES, NO_DEVICE, NO_USER, type PlayerStateDataMaybePlay, REPORTED_PLAYER_STATUSES, SINGLE_USER_PLATFORM_ID } from '../backend/common/infrastructure/Atomic.ts'; -import { type PlayPlatformId } from './Atomic.ts'; -import { arrayListAnd, artistNamesToCredits } from './StringUtils.ts'; -import { findDelimiters } from "./StringUtils.ts"; -import { type ListRecord } from '../backend/common/infrastructure/config/client/tealfm.ts'; +import { type ArtistCredit, type BrainzMeta, FEAT, JOINERS, JOINERS_FINAL, type JsonPlayObject, type MBID, type MissingMbidType, type ObjectPlayData, type PlayMeta, type PlayObject, type SourcePlayerObj } from "../../Atomic.ts"; +import { genGroupIdStr } from '../../PlayUtils.ts'; +import { sortByNewestPlayDate } from '../../PlayUtils.ts'; +import { CALCULATED_PLAYER_STATUSES, NO_DEVICE, NO_USER, type PlayerStateDataMaybePlay, REPORTED_PLAYER_STATUSES, SINGLE_USER_PLATFORM_ID } from '../../../backend/common/infrastructure/Atomic.ts'; +import { type PlayPlatformId } from '../../Atomic.ts'; +import { arrayListAnd, artistNamesToCredits } from '../../StringUtils.ts'; +import { findDelimiters } from "../../StringUtils.ts"; +import { type ListRecord } from '../../../backend/common/infrastructure/config/client/tealfm.ts'; import { nanoid } from 'nanoid'; -import { type LastFMTrackObject } from '../backend/common/vendor/LastfmApiClient.ts'; +import { type LastFMTrackObject } from '../../../backend/common/vendor/LastfmApiClient.ts'; import clone from 'clone'; -import { removeUndefinedKeys } from './DataUtils.ts'; -import { FmTealAlphaFeedPlay } from '../backend/common/vendor/teal/lexicons/index.ts'; +import { removeUndefinedKeys } from '../../DataUtils.ts'; +import { FmTealAlphaFeedPlay } from '../../../backend/common/vendor/teal/lexicons/index.ts'; dayjs.extend(utc) dayjs.extend(isBetween); diff --git a/src/core/tests/utils/apiFixtures.ts b/src/core/tests/utils/apiFixtures.ts index 123cb3c7..b105b19a 100644 --- a/src/core/tests/utils/apiFixtures.ts +++ b/src/core/tests/utils/apiFixtures.ts @@ -1,7 +1,7 @@ import { faker } from "@faker-js/faker"; import { type ComponentClientApi, type ComponentClientApiJson, type ComponentCommonApi, type ComponentCommonApiJson, type ComponentSourceApi, type ComponentSourceApiJson, type ComponentState, type PlayApiCommon, type PlayApiCommonDetailed, type PlayInputApi, type QueueStateApi } from "../../Api.ts"; import { CLIENT_INGRESS_QUEUE, type JsonPlayObject, type PlayObject, type PlayState, QUEUE_STATUSES, SOURCE_SOT, type SourcePlayerJson, sourceSotTypes } from "../../Atomic.ts"; -import { generatePlay, normalizePlays } from "../../PlayTestUtils.ts"; +import { generatePlay, normalizePlays } from "./PlayTestUtils.ts"; import { generatePlayInput, generatePlayWithLifecycle, playWithLifecycleScrobble, randomPlayState } from "./fixtures.ts"; import { asJsonPlayObject } from "../../PlayMarshalUtils.ts"; import { generatePlayUid } from "../../StringUtils.ts"; diff --git a/src/core/tests/utils/fixtures.ts b/src/core/tests/utils/fixtures.ts index b25d6351..cbe168f3 100644 --- a/src/core/tests/utils/fixtures.ts +++ b/src/core/tests/utils/fixtures.ts @@ -1,7 +1,7 @@ import { Traverse } from 'neotraverse/modern'; import { faker } from '@faker-js/faker'; import { type AmbPlayObject, type DateLike, type LifecycleInput, type LifecycleStep, type ObjectPlayData, PLAY_STATES, type PlayMeta, type PlayObject, type PlayOriginal, type PlayState, type ScrobbleResult } from '../../Atomic.ts'; -import { generateBrainz, generateMbid, generatePlay, type GeneratePlayOpts, generatePlays } from '../../PlayTestUtils.ts'; +import { generateBrainz, generateMbid, generatePlay, type GeneratePlayOpts, generatePlays } from './PlayTestUtils.ts'; import { statefulInvariantTransform } from '../../PlayUtils.ts'; import clone from 'clone'; import { diffObjects } from '../../DataUtils.ts'; @@ -10,7 +10,7 @@ import { UpstreamError } from '../../../backend/common/errors/UpstreamError.ts'; import { playToListenPayload } from '../../../backend/common/vendor/listenbrainz/lzUtils.ts'; import { mergeSimpleError, SimpleError, SkipTransformStageError, StagePrerequisiteError, StageTransformError } from '../../../backend/common/errors/MSErrors.ts'; import dayjs, { type Dayjs } from 'dayjs'; -import { type TransformHook } from '../../../backend/common/infrastructure/Transform.ts'; +import { type TransformHook } from '../../Transform.ts'; import { serializeError } from 'serialize-error'; export interface ScrobbleMatchOptions { diff --git a/src/backend/common/vendor/listenbrainz/interfaces.ts b/src/core/vendor/listenbrainz/interfaces.ts similarity index 100% rename from src/backend/common/vendor/listenbrainz/interfaces.ts rename to src/core/vendor/listenbrainz/interfaces.ts diff --git a/src/stories/component/Player.stories.tsx b/src/stories/component/Player.stories.tsx index 0d4a4e39..2ef8e5f0 100644 --- a/src/stories/component/Player.stories.tsx +++ b/src/stories/component/Player.stories.tsx @@ -11,7 +11,7 @@ import { SSEProvider } from "@flamefrontend/sse-runtime-react"; import { sseProviderOptions } from "../../client/AppNext.js"; import dayjs from "dayjs"; import { asJsonPlayObject } from "../../core/PlayMarshalUtils.js"; -import { generatePlay } from "../../core/PlayTestUtils.js"; +import { generatePlay } from "../../core/tests/utils/PlayTestUtils.js"; // More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export const meta = preview.meta({ diff --git a/src/stories/plays/ActivityDetails.stories.tsx b/src/stories/plays/ActivityDetails.stories.tsx index 194cd26d..dfc11559 100644 --- a/src/stories/plays/ActivityDetails.stories.tsx +++ b/src/stories/plays/ActivityDetails.stories.tsx @@ -5,7 +5,7 @@ import { fn } from 'storybook/test'; import { Container } from '@chakra-ui/react'; import { ActivityTimeline } from "../../client/components/ActivityTimeline.js"; import {Provider} from "../../client/components/Provider.js"; -import { generateJsonPlays } from "../../core/PlayTestUtils.js"; +import { generateJsonPlays } from "../../core/tests/utils/PlayTestUtils.js"; import { generatePlayApiCommonDetailed } from "../../core/tests/utils/apiFixtures.js"; import { generatePlayWithLifecycle, playWithLifecycleScrobble } from "../../core/tests/utils/fixtures.js"; import { asJsonPlayObject } from '../../core/PlayMarshalUtils.js'; diff --git a/src/stories/plays/ActivityList.stories.tsx b/src/stories/plays/ActivityList.stories.tsx index ba546c48..b6705155 100644 --- a/src/stories/plays/ActivityList.stories.tsx +++ b/src/stories/plays/ActivityList.stories.tsx @@ -7,7 +7,7 @@ import { fn } from 'storybook/test'; import { Container } from '@chakra-ui/react'; import { ListContainerFetchable, ListContainerFilterable, ActivityList } from "../../client/components/playActivity/ActivityList.js"; import {Provider} from "../../client/components/Provider.js"; -import { generateJsonPlays, generatePlay, normalizePlays } from "../../core/PlayTestUtils.js"; +import { generateJsonPlays, generatePlay, normalizePlays } from "../../core/tests/utils/PlayTestUtils.js"; import { type ErrorLike, type JsonPlayObject, type PlayState, qsOptions } from "../../core/Atomic.js"; import {playWithLifecycleScrobble, generatePlayWithLifecycle, randomPlayState} from '../../core/tests/utils/fixtures.js' import { generateArray } from "../../core/DataUtils.js"; diff --git a/src/stories/plays/ActivityTimeline.stories.tsx b/src/stories/plays/ActivityTimeline.stories.tsx index e0423782..8aa9ff05 100644 --- a/src/stories/plays/ActivityTimeline.stories.tsx +++ b/src/stories/plays/ActivityTimeline.stories.tsx @@ -5,7 +5,7 @@ import { fn } from 'storybook/test'; import { Container } from '@chakra-ui/react'; import { ActivityTimeline } from "../../client/components/ActivityTimeline.js"; import {Provider} from "../../client/components/Provider.js"; -import { generateJsonPlays } from "../../core/PlayTestUtils.js"; +import { generateJsonPlays } from "../../core/tests/utils/PlayTestUtils.js"; import { generatePlayApiCommonDetailed } from "../../core/tests/utils/apiFixtures.js"; import { generatePlayWithLifecycle, playWithLifecycleScrobble } from "../../core/tests/utils/fixtures.js"; import { asJsonPlayObject } from '../../core/PlayMarshalUtils.js'; diff --git a/src/stories/plays/PlayInfo.stories.tsx b/src/stories/plays/PlayInfo.stories.tsx index 3b909b41..5eabb76e 100644 --- a/src/stories/plays/PlayInfo.stories.tsx +++ b/src/stories/plays/PlayInfo.stories.tsx @@ -5,7 +5,7 @@ import { fn } from 'storybook/test'; import { PlayData } from "../../client/components/PlayData.js"; import {Provider} from "../../client/components/Provider.js"; import { Container } from '@chakra-ui/react'; -import { generateArtistCredits, generateArtists, generateJsonPlay, generatePlay, withBrainz } from "../../core/PlayTestUtils.js" +import { generateArtistCredits, generateArtists, generateJsonPlay, generatePlay, withBrainz } from "../../core/tests/utils/PlayTestUtils.js" import clone from "clone"; import { asJsonPlayObject } from '../../core/PlayMarshalUtils.js'; import { type JsonPlayObject } from "../../core/Atomic.js"; diff --git a/src/stories/plays/TransformSteps.stories.tsx b/src/stories/plays/TransformSteps.stories.tsx index 36d5033c..73682093 100644 --- a/src/stories/plays/TransformSteps.stories.tsx +++ b/src/stories/plays/TransformSteps.stories.tsx @@ -5,7 +5,7 @@ import { fn } from 'storybook/test'; import { Container } from '@chakra-ui/react'; import { TransformSteps } from "../../client/components/TransformSteps.js"; import {Provider} from "../../client/components/Provider.js"; -import { generateJsonPlays, generatePlay } from "../../core/PlayTestUtils.js"; +import { generateJsonPlays, generatePlay } from "../../core/tests/utils/PlayTestUtils.js"; import {generatePlayWithLifecycle} from '../../core/tests/utils/fixtures.js' import { asJsonPlayObject } from "../../core/PlayMarshalUtils.js";