Skip to content

Commit

Permalink
refactor: optimize imports
Browse files Browse the repository at this point in the history
* Remove unused imports
* Normalize spaces in curly braces
* Sort by module (npm packages, then relative imports)
  • Loading branch information
FoxxMD committed Mar 28, 2024
1 parent 7e6eddc commit eb62c2c
Show file tree
Hide file tree
Showing 92 changed files with 563 additions and 594 deletions.
2 changes: 1 addition & 1 deletion src/backend/common/errors/ErrorUtils.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {ResponseError} from "superagent";
import { ResponseError } from "superagent";

export const isSuperAgentResponseError = (e: any): e is ResponseError => {
return typeof e === 'object'
Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/errors/NodeErrors.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { findCauseByFunc } from "../../utils.js";
import { isArbitraryObject } from "../infrastructure/Atomic.js";
import ErrnoException = NodeJS.ErrnoException;
import { findCauseByFunc } from "../../utils.js";

export type NodeNetworkErrorCode = 'ENOTFOUND' | 'ETIMEDOUT' | 'EAI_AGAIN' | 'ECONNRESET' | 'ECONNREFUSED' | 'ERRADDRINUSE' | 'EADDRNOTAVAIL' | 'ECONNABORTED' | 'EHOSTUNREACH';
export const NETWORK_ERROR_CODES: NodeNetworkErrorCode[] = ['ENOTFOUND', 'ETIMEDOUT', 'EAI_AGAIN', 'ECONNRESET', 'ECONNREFUSED', 'ERRADDRINUSE', 'EADDRNOTAVAIL', 'ECONNABORTED', 'EHOSTUNREACH'];
Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/errors/UpstreamError.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Response } from 'superagent';
import { findCauseByFunc } from "../../utils.js";
import {Response} from 'superagent';

export class UpstreamError<T = undefined> extends Error {

Expand Down
12 changes: 6 additions & 6 deletions src/backend/common/infrastructure/Atomic.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import {Dayjs} from "dayjs";
import {FixedSizeList} from 'fixed-size-list';
import {Logger} from '@foxxmd/logging';
import { Logger } from '@foxxmd/logging';
import { Dayjs } from "dayjs";
import { Request, Response } from "express";
import { NextFunction, ParamsDictionary, Query } from "express-serve-static-core";
import { FixedSizeList } from 'fixed-size-list';
import { PlayMeta, PlayObject } from "../../../core/Atomic.js";
import TupleMap from "../TupleMap.js";
import {Request, Response} from "express";
import {NextFunction, ParamsDictionary, Query} from "express-serve-static-core";
import {PlayMeta, PlayObject} from "../../../core/Atomic.js";

export type SourceType = 'spotify' | 'plex' | 'tautulli' | 'subsonic' | 'jellyfin' | 'lastfm' | 'deezer' | 'ytmusic' | 'mpris' | 'mopidy' | 'listenbrainz' | 'jriver' | 'kodi' | 'webscrobbler' | 'chromecast';
export const sourceTypes: SourceType[] = ['spotify', 'plex', 'tautulli', 'subsonic', 'jellyfin', 'lastfm', 'deezer', 'ytmusic', 'mpris', 'mopidy', 'listenbrainz', 'jriver', 'kodi', 'webscrobbler', 'chromecast'];
Expand Down
8 changes: 4 additions & 4 deletions src/backend/common/infrastructure/config/aioConfig.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { CommonSourceOptions, ScrobbleThresholds, SourceRetryOptions } from "./source/index.js";
import { RequestRetryOptions } from "./common.js";
import { SourceAIOConfig } from "./source/sources.js";
import { LogOptions } from "@foxxmd/logging";
import { ClientAIOConfig } from "./client/clients.js";
import { RequestRetryOptions } from "./common.js";
import { WebhookConfig } from "./health/webhooks.js";
import {LogOptions} from "@foxxmd/logging";
import { CommonSourceOptions, ScrobbleThresholds, SourceRetryOptions } from "./source/index.js";
import { SourceAIOConfig } from "./source/sources.js";


export interface SourceDefaults extends SourceRetryOptions {
Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/infrastructure/config/client/clients.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { MalojaClientAIOConfig, MalojaClientConfig } from "./maloja.js";
import { LastfmClientAIOConfig, LastfmClientConfig } from "./lastfm.js";
import { ListenBrainzClientAIOConfig, ListenBrainzClientConfig } from "./listenbrainz.js";
import { MalojaClientAIOConfig, MalojaClientConfig } from "./maloja.js";

export type ClientConfig = MalojaClientConfig | LastfmClientConfig | ListenBrainzClientConfig;

Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/infrastructure/config/client/lastfm.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CommonClientConfig, CommonClientData } from "./index.js";
import { RequestRetryOptions } from "../common.js";
import { CommonClientConfig, CommonClientData } from "./index.js";

export interface LastfmData extends RequestRetryOptions {
/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CommonClientConfig, CommonClientData } from "./index.js";
import { RequestRetryOptions } from "../common.js";
import { CommonClientConfig, CommonClientData } from "./index.js";

export interface ListenBrainzData extends RequestRetryOptions{
/**
Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/infrastructure/config/client/maloja.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CommonClientConfig, CommonClientData } from "./index.js";
import { RequestRetryOptions } from "../common.js";
import { CommonClientConfig, CommonClientData } from "./index.js";

export interface MalojaClientData extends RequestRetryOptions, CommonClientData {
/**
Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/infrastructure/config/source/jriver.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CommonSourceConfig, CommonSourceData } from "./index.js";
import { PollingOptions } from "../common.js";
import { CommonSourceConfig, CommonSourceData } from "./index.js";

export interface JRiverData extends CommonSourceData, PollingOptions {
/**
Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/infrastructure/config/source/kodi.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CommonSourceConfig, CommonSourceData } from "./index.js";
import { PollingOptions } from "../common.js";
import { CommonSourceConfig, CommonSourceData } from "./index.js";


export interface KodiData extends CommonSourceData, PollingOptions {
Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/infrastructure/config/source/lastfm.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { LastfmData } from "../client/lastfm.js";
import { CommonSourceConfig, CommonSourceData } from "./index.js";
import { PollingOptions } from "../common.js";
import { CommonSourceConfig, CommonSourceData } from "./index.js";

export interface LastFmSourceData extends CommonSourceData, PollingOptions, LastfmData{}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { CommonSourceConfig, CommonSourceData } from "./index.js";
import { ListenBrainzData } from "../client/listenbrainz.js";
import { PollingOptions } from "../common.js";
import { CommonSourceConfig, CommonSourceData } from "./index.js";

export interface ListenBrainzSourceData extends ListenBrainzData, CommonSourceData, PollingOptions {
}
Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/infrastructure/config/source/mopidy.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CommonSourceConfig, CommonSourceData } from "./index.js";
import { PollingOptions } from "../common.js";
import { CommonSourceConfig, CommonSourceData } from "./index.js";

export interface MopidyData extends CommonSourceData, PollingOptions {
/**
Expand Down
20 changes: 10 additions & 10 deletions src/backend/common/infrastructure/config/source/sources.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import { SpotifySourceAIOConfig, SpotifySourceConfig } from "./spotify.js";
import { PlexSourceAIOConfig, PlexSourceConfig } from "./plex.js";
import { TautulliSourceAIOConfig, TautulliSourceConfig } from "./tautulli.js";
import { ChromecastSourceAIOConfig, ChromecastSourceConfig } from "./chromecast.js";
import { DeezerSourceAIOConfig, DeezerSourceConfig } from "./deezer.js";
import { SubsonicSourceAIOConfig, SubSonicSourceConfig } from "./subsonic.js";
import { JellySourceAIOConfig, JellySourceConfig } from "./jellyfin.js";
import { LastFmSouceAIOConfig, LastfmSourceConfig } from "./lastfm.js";
import { YTMusicSourceAIOConfig, YTMusicSourceConfig } from "./ytmusic.js";
import { MPRISSourceAIOConfig, MPRISSourceConfig } from "./mpris.js";
import { MopidySourceAIOConfig, MopidySourceConfig } from "./mopidy.js";
import { ListenBrainzSourceAIOConfig, ListenBrainzSourceConfig } from "./listenbrainz.js";
import { JRiverSourceAIOConfig, JRiverSourceConfig } from "./jriver.js";
import { KodiSourceAIOConfig, KodiSourceConfig } from "./kodi.js";
import { LastFmSouceAIOConfig, LastfmSourceConfig } from "./lastfm.js";
import { ListenBrainzSourceAIOConfig, ListenBrainzSourceConfig } from "./listenbrainz.js";
import { MopidySourceAIOConfig, MopidySourceConfig } from "./mopidy.js";
import { MPRISSourceAIOConfig, MPRISSourceConfig } from "./mpris.js";
import { PlexSourceAIOConfig, PlexSourceConfig } from "./plex.js";
import { SpotifySourceAIOConfig, SpotifySourceConfig } from "./spotify.js";
import { SubsonicSourceAIOConfig, SubSonicSourceConfig } from "./subsonic.js";
import { TautulliSourceAIOConfig, TautulliSourceConfig } from "./tautulli.js";
import { WebScrobblerSourceAIOConfig, WebScrobblerSourceConfig } from "./webscrobbler.js";
import { ChromecastSourceConfig, ChromecastSourceAIOConfig } from "./chromecast.js";
import { YTMusicSourceAIOConfig, YTMusicSourceConfig } from "./ytmusic.js";


export type SourceConfig = SpotifySourceConfig | PlexSourceConfig | TautulliSourceConfig | DeezerSourceConfig | SubSonicSourceConfig | JellySourceConfig | LastfmSourceConfig | YTMusicSourceConfig | MPRISSourceConfig | MopidySourceConfig | ListenBrainzSourceConfig | JRiverSourceConfig | KodiSourceConfig | WebScrobblerSourceConfig | ChromecastSourceConfig;
Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/infrastructure/config/source/spotify.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CommonSourceConfig, CommonSourceData } from "./index.js";
import { PollingOptions } from "../common.js";
import { CommonSourceConfig, CommonSourceData } from "./index.js";

export interface SpotifySourceData extends CommonSourceData, PollingOptions {
/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CommonSourceConfig, CommonSourceData } from "./index.js";
import { PollingOptions } from "../common.js";
import { CommonSourceConfig, CommonSourceData } from "./index.js";

export interface SubsonicData extends CommonSourceData, PollingOptions {
/**
Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/infrastructure/config/source/ytmusic.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CommonSourceConfig, CommonSourceData } from "./index.js";
import { PollingOptions } from "../common.js";
import { CommonSourceConfig, CommonSourceData } from "./index.js";

export interface YTMusicData extends CommonSourceData, PollingOptions {
/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@

declare module 'passport-deezer' {
//import {Strategy as Oauth2Strategy} from 'passport-oauth2';
import {Strategy as PassportStrategy} from "passport";
import { Strategy as PassportStrategy } from "passport";

export class Strategy extends PassportStrategy {
constructor(options: any, verify: any);
}
Expand Down
18 changes: 9 additions & 9 deletions src/backend/common/logging.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import path from "path";
import { projectDir } from "./index.js";
import process from "process";
import {
parseLogOptions,
childLogger,
Logger as FoxLogger,
loggerAppRolling,
LogLevel,
LogOptions as FoxLogOptions,
Logger as FoxLogger,
childLogger, LogLevel, PrettyOptionsExtra,
parseLogOptions,
} from '@foxxmd/logging';
import {PassThrough, Transform} from "node:stream";
import {buildLogger, buildDestinationStdout, buildDestinationJsonPrettyStream} from "@foxxmd/logging/factory";
import {parseBool} from "../utils.js";
import { buildDestinationJsonPrettyStream, buildDestinationStdout, buildLogger } from "@foxxmd/logging/factory";
import { PassThrough, Transform } from "node:stream";
import path from "path";
import process from "process";
import { projectDir } from "./index.js";

export let logPath = path.resolve(projectDir, `./logs`);
if (typeof process.env.CONFIG_DIR === 'string') {
Expand Down
4 changes: 2 additions & 2 deletions src/backend/common/vendor/AbstractApiClient.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {childLogger, Logger} from "@foxxmd/logging";
import {AbstractApiOptions, FormatPlayObjectOptions} from "../infrastructure/Atomic.js";
import { childLogger, Logger } from "@foxxmd/logging";
import { PlayObject } from "../../../core/Atomic.js";
import { capitalize } from "../../../core/StringUtils.js";
import { AbstractApiOptions, FormatPlayObjectOptions } from "../infrastructure/Atomic.js";

export default abstract class AbstractApiClient {
name: string;
Expand Down
8 changes: 4 additions & 4 deletions src/backend/common/vendor/JRiverApiClient.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import AbstractApiClient from "./AbstractApiClient.js";
import {JRiverData} from "../infrastructure/config/source/jriver.js";
import request, {Request, Response} from 'superagent';
import request, { Request, Response } from 'superagent';
import xml2js from 'xml2js';
import {AbstractApiOptions, DEFAULT_RETRY_MULTIPLIER} from "../infrastructure/Atomic.js";
import { AbstractApiOptions, DEFAULT_RETRY_MULTIPLIER } from "../infrastructure/Atomic.js";
import { JRiverData } from "../infrastructure/config/source/jriver.js";
import AbstractApiClient from "./AbstractApiClient.js";

const parser = new xml2js.Parser({'async': true});

Expand Down
12 changes: 6 additions & 6 deletions src/backend/common/vendor/KodiApiClient.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import AbstractApiClient from "./AbstractApiClient.js";
import { KodiData } from "../infrastructure/config/source/kodi.js";
import dayjs from "dayjs";
import { KodiClient } from 'kodi-api'
import normalizeUrl from "normalize-url";
import {URL} from "url";
import { RecentlyPlayedOptions } from "../../sources/AbstractSource.js";
import {AbstractApiOptions, FormatPlayObjectOptions} from "../infrastructure/Atomic.js";
import dayjs from "dayjs";
import { URL } from "url";
import { PlayObject } from "../../../core/Atomic.js";
import { RecentlyPlayedOptions } from "../../sources/AbstractSource.js";
import { AbstractApiOptions, FormatPlayObjectOptions } from "../infrastructure/Atomic.js";
import { KodiData } from "../infrastructure/config/source/kodi.js";
import AbstractApiClient from "./AbstractApiClient.js";

interface KodiDuration {
hours: number
Expand Down
18 changes: 9 additions & 9 deletions src/backend/common/vendor/LastfmApiClient.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
import dayjs from "dayjs";
import LastFm, {
AuthGetSessionResponse,
NowPlayingResponse,
TrackObject,
TrackScrobblePayload,
UserGetInfoResponse
} from "lastfm-node-client";
import AbstractApiClient from "./AbstractApiClient.js";
import dayjs from "dayjs";
import {readJson, removeUndefinedKeys, sleep, writeFile} from "../../utils.js";
import {AbstractApiOptions, DEFAULT_RETRY_MULTIPLIER, FormatPlayObjectOptions} from "../infrastructure/Atomic.js";
import { LastfmData } from "../infrastructure/config/client/lastfm.js";
import { PlayObject } from "../../../core/Atomic.js";
import {getNodeNetworkException, isNodeNetworkException} from "../errors/NodeErrors.js";
import {nonEmptyStringOrDefault, splitByFirstFound} from "../../../core/StringUtils.js";
import {getScrobbleTsSOCDate} from "../../utils/TimeUtils.js";
import {UpstreamError} from "../errors/UpstreamError.js";
import { nonEmptyStringOrDefault, splitByFirstFound } from "../../../core/StringUtils.js";
import { readJson, removeUndefinedKeys, sleep, writeFile } from "../../utils.js";
import { getScrobbleTsSOCDate } from "../../utils/TimeUtils.js";
import { getNodeNetworkException, isNodeNetworkException } from "../errors/NodeErrors.js";
import { UpstreamError } from "../errors/UpstreamError.js";
import { AbstractApiOptions, DEFAULT_RETRY_MULTIPLIER, FormatPlayObjectOptions } from "../infrastructure/Atomic.js";
import { LastfmData } from "../infrastructure/config/client/lastfm.js";
import AbstractApiClient from "./AbstractApiClient.js";

const badErrors = [
'api key suspended',
Expand Down
14 changes: 7 additions & 7 deletions src/backend/common/vendor/ListenbrainzApiClient.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
import AbstractApiClient from "./AbstractApiClient.js";
import request, {Request} from 'superagent';
import { ListenBrainzClientData } from "../infrastructure/config/client/listenbrainz.js";
import {AbstractApiOptions, DEFAULT_RETRY_MULTIPLIER, FormatPlayObjectOptions} from "../infrastructure/Atomic.js";
import dayjs from "dayjs";
import { stringSameness } from '@foxxmd/string-sameness';
import { combinePartsToString } from "../../utils.js";
import dayjs from "dayjs";
import request, { Request } from 'superagent';
import { PlayObject } from "../../../core/Atomic.js";
import { slice } from "../../../core/StringUtils.js";
import { combinePartsToString } from "../../utils.js";
import {
findDelimiters,
normalizeStr,
Expand All @@ -15,8 +12,11 @@ import {
parseTrackCredits,
uniqueNormalizedStrArr,
} from "../../utils/StringUtils.js";
import { UpstreamError } from "../errors/UpstreamError.js";
import { getScrobbleTsSOCDate } from "../../utils/TimeUtils.js";
import { UpstreamError } from "../errors/UpstreamError.js";
import { AbstractApiOptions, DEFAULT_RETRY_MULTIPLIER, FormatPlayObjectOptions } from "../infrastructure/Atomic.js";
import { ListenBrainzClientData } from "../infrastructure/config/client/listenbrainz.js";
import AbstractApiClient from "./AbstractApiClient.js";


export interface ArtistMBIDMapping {
Expand Down
6 changes: 3 additions & 3 deletions src/backend/common/vendor/chromecast/ChromecastClientUtils.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { REPORTED_PLAYER_STATUSES, ReportedPlayerStatus } from "../../infrastructure/Atomic.js";
import { PlatformApplication, PlatformType } from "./interfaces.js";
import {Media, MediaController, Result} from "@foxxmd/chromecast-client";
import { Media, MediaController, Result } from "@foxxmd/chromecast-client";
import objectHash from "object-hash";
import { PlayObject } from "../../../../core/Atomic.js";
import { REPORTED_PLAYER_STATUSES, ReportedPlayerStatus } from "../../infrastructure/Atomic.js";
import { PlatformApplication, PlatformType } from "./interfaces.js";

export const chromePlayerStateToReported = (state: string): ReportedPlayerStatus => {
switch (state) {
Expand Down
6 changes: 3 additions & 3 deletions src/backend/common/vendor/chromecast/interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {createPlatform, MediaController, PersistentClient} from "@foxxmd/chromecast-client";
import { createPlatform, MediaController } from "@foxxmd/chromecast-client";
import { Logger } from "@foxxmd/logging";
import { Dayjs } from "dayjs";
import { FormatPlayObjectOptions } from "../../infrastructure/Atomic.js";
import {Dayjs} from "dayjs";
import {Logger} from "@foxxmd/logging";

export type PlatformType = ReturnType<typeof createPlatform>;
export interface PlatformApplication {
Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/vendor/maloja/interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {ResponseError} from "superagent";
import { ResponseError } from "superagent";
import { findCauseByFunc } from "../../../utils.js";
import { isSuperAgentResponseError } from "../../errors/ErrorUtils.js";

Expand Down
2 changes: 1 addition & 1 deletion src/backend/common/vendor/subsonic/interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {Response} from 'superagent';
import { Response } from 'superagent';

export interface SubsonicResponseCommon {
status: 'failed' | 'ok'
Expand Down
16 changes: 7 additions & 9 deletions src/backend/index.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
import 'dotenv/config';
import {LogDataPretty, Logger} from "@foxxmd/logging";
import { childLogger, LogDataPretty, Logger as FoxLogger } from "@foxxmd/logging";
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc.js';
import duration from 'dayjs/plugin/duration.js';
import isBetween from 'dayjs/plugin/isBetween.js';
import relativeTime from 'dayjs/plugin/relativeTime.js';
import duration from 'dayjs/plugin/duration.js';
import timezone from 'dayjs/plugin/timezone.js';
import { parseBool, readJson, sleep } from "./utils.js";
import utc from 'dayjs/plugin/utc.js';
import * as path from "path";
import { SimpleIntervalJob, ToadScheduler } from "toad-scheduler";
import { projectDir } from "./common/index.js";
import SpotifySource from "./sources/SpotifySource.js";
import { AIOConfig } from "./common/infrastructure/config/aioConfig.js";
import { appLogger, initLogger as getInitLogger } from "./common/logging.js";
import { getRoot } from "./ioc.js";
import {appLogger, initLogger as getInitLogger} from "./common/logging.js";
import { initServer } from "./server/index.js";
import {SimpleIntervalJob, ToadScheduler} from "toad-scheduler";
import { createHeartbeatSourcesTask } from "./tasks/heartbeatSources.js";
import { createHeartbeatClientsTask } from "./tasks/heartbeatClients.js";
import {loggerDebug, childLogger, LogData, Logger as FoxLogger} from '@foxxmd/logging';
import { createHeartbeatSourcesTask } from "./tasks/heartbeatSources.js";
import { parseBool, readJson, sleep } from "./utils.js";

dayjs.extend(utc)
dayjs.extend(isBetween);
Expand Down
18 changes: 9 additions & 9 deletions src/backend/ioc.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import {createContainer} from "iti";
import { Logger } from "@foxxmd/logging";
import { EventEmitter } from "events";
import fs from 'fs';
import { createContainer } from "iti";
import normalizeUrl from 'normalize-url';
import path from "path";
import { configDir, projectDir } from "./common/index.js";
import ScrobbleClients from "./scrobblers/ScrobbleClients.js";
import ScrobbleSources from "./sources/ScrobbleSources.js";
import { Notifiers } from "./notifier/Notifiers.js";
import {EventEmitter} from "events";
import { projectDir } from "./common/index.js";
import { logPath } from "./common/logging.js";
import { WildcardEmitter } from "./common/WildcardEmitter.js";
import normalizeUrl from 'normalize-url';
import fs from 'fs';
import {Logger} from "@foxxmd/logging";
import { Notifiers } from "./notifier/Notifiers.js";
import ScrobbleClients from "./scrobblers/ScrobbleClients.js";
import ScrobbleSources from "./sources/ScrobbleSources.js";

let version = 'Unknown';

Expand Down
Loading

0 comments on commit eb62c2c

Please sign in to comment.