diff --git a/package.json b/package.json index b25a92cd..03a82d77 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "aiostreams", "version": "2.12.2", "description": "AIOStreams consolidates multiple Stremio addons and debrid services into a single, easily configurable addon. It allows highly customisable filtering, sorting, and formatting of results and supports proxying all your streams through MediaFlow Proxy or StremThru for improved compatibility and IP restriction bypassing.", + "type": "module", "main": "dist/index.js", "scripts": { "test": "pnpm run test --workspaces", diff --git a/packages/core/package.json b/packages/core/package.json index 3867d18b..2dc91013 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -2,6 +2,7 @@ "name": "@aiostreams/core", "version": "0.0.0", "main": "dist/index.js", + "type": "module", "scripts": { "test": "vitest run --passWithNoTests", "test:watch": "vitest watch", diff --git a/packages/core/src/builtins/base/debrid.ts b/packages/core/src/builtins/base/debrid.ts index d94ee098..2ef8896b 100644 --- a/packages/core/src/builtins/base/debrid.ts +++ b/packages/core/src/builtins/base/debrid.ts @@ -1,6 +1,6 @@ -import { Manifest, Meta, Stream } from '../../db/schemas'; +import { Manifest, Meta, Stream } from '../../db/schemas.js'; import { z, ZodError } from 'zod'; -import { IdParser, IdType, ParsedId } from '../../utils/id-parser'; +import { IdParser, IdType, ParsedId } from '../../utils/id-parser.js'; import { AnimeDatabase, constants, @@ -8,8 +8,8 @@ import { formatZodError, getTimeTakenSincePoint, SERVICE_DETAILS, -} from '../../utils'; -import { TorrentClient } from '../../utils/torrent'; +} from '../../utils/index.js'; +import { TorrentClient } from '../../utils/torrent.js'; import { BuiltinDebridServices, PlaybackInfo, @@ -20,11 +20,11 @@ import { UnprocessedTorrent, ServiceAuth, DebridError, -} from '../../debrid'; -import { processTorrents, processNZBs } from '../utils/debrid'; -import { calculateAbsoluteEpisode } from '../utils/general'; -import { TitleMetadata } from '../torbox-search/source-handlers'; -import { MetadataService } from '../../metadata/service'; +} from '../../debrid/index.js'; +import { processTorrents, processNZBs } from '../utils/debrid.js'; +import { calculateAbsoluteEpisode } from '../utils/general.js'; +import { TitleMetadata } from '../torbox-search/source-handlers.js'; +import { MetadataService } from '../../metadata/service.js'; import { Logger } from 'winston'; export interface SearchMetadata extends TitleMetadata { diff --git a/packages/core/src/builtins/base/nab/addon.ts b/packages/core/src/builtins/base/nab/addon.ts index 2c8f5a07..fe564b4d 100644 --- a/packages/core/src/builtins/base/nab/addon.ts +++ b/packages/core/src/builtins/base/nab/addon.ts @@ -1,13 +1,13 @@ import { z } from 'zod'; -import { ParsedId } from '../../../utils/id-parser'; -import { getTimeTakenSincePoint } from '../../../utils'; +import { ParsedId } from '../../../utils/id-parser.js'; +import { getTimeTakenSincePoint } from '../../../utils/index.js'; import { Logger } from 'winston'; import { BaseDebridAddon, BaseDebridConfigSchema, SearchMetadata, -} from '../debrid'; -import { BaseNabApi, Capabilities, SearchResultItem } from './api'; +} from '../debrid.js'; +import { BaseNabApi, Capabilities, SearchResultItem } from './api.js'; export const NabAddonConfigSchema = BaseDebridConfigSchema.extend({ url: z.string(), diff --git a/packages/core/src/builtins/base/nab/api.ts b/packages/core/src/builtins/base/nab/api.ts index 17ee1676..3b6ad618 100644 --- a/packages/core/src/builtins/base/nab/api.ts +++ b/packages/core/src/builtins/base/nab/api.ts @@ -7,7 +7,7 @@ import { formatZodError, getTimeTakenSincePoint, createLogger, -} from '../../../utils'; +} from '../../../utils/index.js'; import { Parser } from 'xml2js'; import { Logger } from 'winston'; diff --git a/packages/core/src/builtins/gdrive/addon.ts b/packages/core/src/builtins/gdrive/addon.ts index 844bd975..7bd86dab 100644 --- a/packages/core/src/builtins/gdrive/addon.ts +++ b/packages/core/src/builtins/gdrive/addon.ts @@ -1,18 +1,29 @@ -import { Manifest, Meta, MetaPreview, Stream, Subtitle } from '../../db'; -import { AnimeDatabase, Env, ExtrasParser, createLogger } from '../../utils'; +import { + Manifest, + Meta, + MetaPreview, + Stream, + Subtitle, +} from '../../db/index.js'; +import { + AnimeDatabase, + Env, + ExtrasParser, + createLogger, +} from '../../utils/index.js'; import { GDriveAPI, GoogleOAuth, GoogleOAuthError, GoogleOAuthErrorCode, -} from './api'; -import { GDriveFile, UserData } from './schemas'; -import { IMDBMetadata } from '../../metadata/imdb'; -import { TMDBMetadata } from '../../metadata/tmdb'; -import { formatBytes, formatDuration } from '../../formatters'; -import { IdParser, ParsedId } from '../../utils/id-parser'; -import { IdType } from '../../utils/id-parser'; -import { getTraktAliases } from '../../metadata/trakt'; +} from './api.js'; +import { GDriveFile, UserData } from './schemas.js'; +import { IMDBMetadata } from '../../metadata/imdb.js'; +import { TMDBMetadata } from '../../metadata/tmdb.js'; +import { formatBytes, formatDuration } from '../../formatters/index.js'; +import { IdParser, ParsedId } from '../../utils/id-parser.js'; +import { IdType } from '../../utils/id-parser.js'; +import { getTraktAliases } from '../../metadata/trakt.js'; const logger = createLogger('gdrive'); diff --git a/packages/core/src/builtins/gdrive/api.ts b/packages/core/src/builtins/gdrive/api.ts index 70ce1e8f..b067d938 100644 --- a/packages/core/src/builtins/gdrive/api.ts +++ b/packages/core/src/builtins/gdrive/api.ts @@ -1,11 +1,11 @@ -import { Cache, createLogger, Env, makeRequest } from '../../utils'; +import { Cache, createLogger, Env, makeRequest } from '../../utils/index.js'; import { GDriveFile, GDriveFileGetResponseSchema, GDriveFileQueryResponseSchema, RefreshTokenResponse, RefreshTokenResponseSchema, -} from './schemas'; +} from './schemas.js'; const accessTokenCache = Cache.getInstance( 'gdrive-access-token' diff --git a/packages/core/src/builtins/gdrive/index.ts b/packages/core/src/builtins/gdrive/index.ts index 83bbf6eb..4cd57649 100644 --- a/packages/core/src/builtins/gdrive/index.ts +++ b/packages/core/src/builtins/gdrive/index.ts @@ -1,2 +1,2 @@ -export * from './addon'; -export * from './api'; +export * from './addon.js'; +export * from './api.js'; diff --git a/packages/core/src/builtins/index.ts b/packages/core/src/builtins/index.ts index b0508549..932620bb 100644 --- a/packages/core/src/builtins/index.ts +++ b/packages/core/src/builtins/index.ts @@ -1,5 +1,5 @@ -export * from './gdrive'; -export * from './torbox-search'; -export * from './torznab'; -export * from './newznab'; -export * from './prowlarr'; +export * from './gdrive/index.js'; +export * from './torbox-search/index.js'; +export * from './torznab/index.js'; +export * from './newznab/index.js'; +export * from './prowlarr/index.js'; diff --git a/packages/core/src/builtins/newznab/addon.ts b/packages/core/src/builtins/newznab/addon.ts index d35f0517..8d87fd24 100644 --- a/packages/core/src/builtins/newznab/addon.ts +++ b/packages/core/src/builtins/newznab/addon.ts @@ -1,15 +1,15 @@ import { z } from 'zod'; -import { ParsedId } from '../../utils/id-parser'; -import { constants, createLogger } from '../../utils'; -import { Torrent, NZB } from '../../debrid'; -import { SearchMetadata } from '../base/debrid'; +import { ParsedId } from '../../utils/id-parser.js'; +import { constants, createLogger } from '../../utils/index.js'; +import { Torrent, NZB } from '../../debrid/index.js'; +import { SearchMetadata } from '../base/debrid.js'; import { createHash } from 'crypto'; -import { BaseNabApi, SearchResultItem } from '../base/nab/api'; +import { BaseNabApi, SearchResultItem } from '../base/nab/api.js'; import { BaseNabAddon, NabAddonConfigSchema, NabAddonConfig, -} from '../base/nab/addon'; +} from '../base/nab/addon.js'; const logger = createLogger('newznab'); diff --git a/packages/core/src/builtins/newznab/index.ts b/packages/core/src/builtins/newznab/index.ts index 9762837e..3ee341c5 100644 --- a/packages/core/src/builtins/newznab/index.ts +++ b/packages/core/src/builtins/newznab/index.ts @@ -1 +1 @@ -export * from './addon'; +export * from './addon.js'; diff --git a/packages/core/src/builtins/prowlarr/addon.ts b/packages/core/src/builtins/prowlarr/addon.ts index 1a41305d..a55cb05e 100644 --- a/packages/core/src/builtins/prowlarr/addon.ts +++ b/packages/core/src/builtins/prowlarr/addon.ts @@ -1,18 +1,22 @@ -import { BaseDebridAddon, BaseDebridConfigSchema } from '../base/debrid'; +import { BaseDebridAddon, BaseDebridConfigSchema } from '../base/debrid.js'; import { z } from 'zod'; -import { createLogger, Env, getTimeTakenSincePoint } from '../../utils'; +import { + createLogger, + Env, + getTimeTakenSincePoint, +} from '../../utils/index.js'; import ProwlarrApi, { ProwlarrApiIndexer, ProwlarrApiSearchItem, ProwlarrApiError, -} from './api'; -import { ParsedId } from '../../utils/id-parser'; -import { SearchMetadata } from '../base/debrid'; -import { Torrent, NZB, UnprocessedTorrent } from '../../debrid'; +} from './api.js'; +import { ParsedId } from '../../utils/id-parser.js'; +import { SearchMetadata } from '../base/debrid.js'; +import { Torrent, NZB, UnprocessedTorrent } from '../../debrid/index.js'; import { extractInfoHashFromMagnet, extractTrackersFromMagnet, -} from '../utils/debrid'; +} from '../utils/debrid.js'; export const ProwlarrAddonConfigSchema = BaseDebridConfigSchema.extend({ url: z.string(), diff --git a/packages/core/src/builtins/prowlarr/api.ts b/packages/core/src/builtins/prowlarr/api.ts index 9320a05e..3bf80caf 100644 --- a/packages/core/src/builtins/prowlarr/api.ts +++ b/packages/core/src/builtins/prowlarr/api.ts @@ -5,7 +5,7 @@ import { Env, formatZodError, makeRequest, -} from '../../utils'; +} from '../../utils/index.js'; import z from 'zod'; interface ResponseMeta { diff --git a/packages/core/src/builtins/prowlarr/index.ts b/packages/core/src/builtins/prowlarr/index.ts index 9762837e..3ee341c5 100644 --- a/packages/core/src/builtins/prowlarr/index.ts +++ b/packages/core/src/builtins/prowlarr/index.ts @@ -1 +1 @@ -export * from './addon'; +export * from './addon.js'; diff --git a/packages/core/src/builtins/torbox-search/addon.ts b/packages/core/src/builtins/torbox-search/addon.ts index c787a7e1..4fb40afe 100644 --- a/packages/core/src/builtins/torbox-search/addon.ts +++ b/packages/core/src/builtins/torbox-search/addon.ts @@ -1,18 +1,21 @@ import { z } from 'zod'; -import { Manifest, Stream } from '../../db'; +import { Manifest, Stream } from '../../db/index.js'; import { AnimeDatabase, createLogger, formatZodError, getTimeTakenSincePoint, -} from '../../utils'; -import { TorBoxSearchAddonUserDataSchema } from './schemas'; +} from '../../utils/index.js'; +import { TorBoxSearchAddonUserDataSchema } from './schemas.js'; import { TorboxApi } from '@torbox/torbox-api'; -import TorboxSearchApi from './search-api'; -import { IdParser } from '../../utils/id-parser'; -import { TorrentSourceHandler, UsenetSourceHandler } from './source-handlers'; -import { TorBoxSearchAddonError } from './errors'; -import { supportedIdTypes } from './search-api'; +import TorboxSearchApi from './search-api.js'; +import { IdParser } from '../../utils/id-parser.js'; +import { + TorrentSourceHandler, + UsenetSourceHandler, +} from './source-handlers.js'; +import { TorBoxSearchAddonError } from './errors.js'; +import { supportedIdTypes } from './search-api.js'; const logger = createLogger('torbox-search'); diff --git a/packages/core/src/builtins/torbox-search/index.ts b/packages/core/src/builtins/torbox-search/index.ts index b3b55d1c..2071dca2 100644 --- a/packages/core/src/builtins/torbox-search/index.ts +++ b/packages/core/src/builtins/torbox-search/index.ts @@ -1,2 +1,2 @@ -export * from './addon'; -export * from './errors'; +export * from './addon.js'; +export * from './errors.js'; diff --git a/packages/core/src/builtins/torbox-search/schemas.ts b/packages/core/src/builtins/torbox-search/schemas.ts index c7f4f58e..2b9659f7 100644 --- a/packages/core/src/builtins/torbox-search/schemas.ts +++ b/packages/core/src/builtins/torbox-search/schemas.ts @@ -1,5 +1,5 @@ import { z } from 'zod'; -import { BuiltinDebridServices } from '../../debrid/utils'; +import { BuiltinDebridServices } from '../../debrid/utils.js'; const TorBoxApiErrorResponseSchema = z.object({ success: z.literal(false), diff --git a/packages/core/src/builtins/torbox-search/search-api.ts b/packages/core/src/builtins/torbox-search/search-api.ts index dd115def..3d76aa49 100644 --- a/packages/core/src/builtins/torbox-search/search-api.ts +++ b/packages/core/src/builtins/torbox-search/search-api.ts @@ -1,14 +1,17 @@ import { fetch, RequestInit, Response } from 'undici'; import { z } from 'zod'; -import { TorBoxApiResponseSchema, TorBoxSearchApiDataSchema } from './schemas'; +import { + TorBoxApiResponseSchema, + TorBoxSearchApiDataSchema, +} from './schemas.js'; import { createLogger, DistributedLock, Env, formatZodError, maskSensitiveInfo, -} from '../../utils'; -import { IdType } from '../../utils/id-parser'; +} from '../../utils/index.js'; +import { IdType } from '../../utils/id-parser.js'; type TorboxSuccessResponse = { success: true; diff --git a/packages/core/src/builtins/torbox-search/source-handlers.ts b/packages/core/src/builtins/torbox-search/source-handlers.ts index 159ab129..7b2b3022 100644 --- a/packages/core/src/builtins/torbox-search/source-handlers.ts +++ b/packages/core/src/builtins/torbox-search/source-handlers.ts @@ -1,5 +1,5 @@ import { number, z } from 'zod'; -import { Stream } from '../../db'; +import { Stream } from '../../db/index.js'; import { AnimeDatabase, Cache, @@ -7,25 +7,25 @@ import { SERVICE_DETAILS, createLogger, getTimeTakenSincePoint, -} from '../../utils'; +} from '../../utils/index.js'; // import { DebridService, DebridFile } from './debrid-service'; -import { ParsedId } from '../../utils/id-parser'; -import { TorBoxSearchAddonUserDataSchema } from './schemas'; +import { ParsedId } from '../../utils/id-parser.js'; +import { TorBoxSearchAddonUserDataSchema } from './schemas.js'; import TorboxSearchApi, { TorboxSearchApiError, TorboxSearchApiIdType, -} from './search-api'; -import { Torrent, convertDataToTorrents } from './torrent'; -import { TMDBMetadata } from '../../metadata/tmdb'; -import { calculateAbsoluteEpisode } from '../utils/general'; +} from './search-api.js'; +import { Torrent, convertDataToTorrents } from './torrent.js'; +import { TMDBMetadata } from '../../metadata/tmdb.js'; +import { calculateAbsoluteEpisode } from '../utils/general.js'; import { TorboxApi } from '@torbox/torbox-api'; -import { processNZBs, processTorrents } from '../utils/debrid'; +import { processNZBs, processTorrents } from '../utils/debrid.js'; import { NZBWithSelectedFile, TorrentWithSelectedFile, -} from '../../debrid/utils'; -import { DebridFile, PlaybackInfo } from '../../debrid'; -import { getTraktAliases } from '../../metadata/trakt'; +} from '../../debrid/utils.js'; +import { DebridFile, PlaybackInfo } from '../../debrid/index.js'; +import { getTraktAliases } from '../../metadata/trakt.js'; const logger = createLogger('torbox-search'); diff --git a/packages/core/src/builtins/torbox-search/torrent.ts b/packages/core/src/builtins/torbox-search/torrent.ts index d25c2f2c..4f39af86 100644 --- a/packages/core/src/builtins/torbox-search/torrent.ts +++ b/packages/core/src/builtins/torbox-search/torrent.ts @@ -1,9 +1,9 @@ import { z } from 'zod'; -import { TorBoxSearchApiDataSchema } from './schemas'; +import { TorBoxSearchApiDataSchema } from './schemas.js'; import { extractInfoHashFromMagnet, extractTrackersFromMagnet, -} from '../utils/debrid'; +} from '../utils/debrid.js'; export interface Torrent { hash: string; diff --git a/packages/core/src/builtins/torznab/addon.ts b/packages/core/src/builtins/torznab/addon.ts index 28ff661e..6e419999 100644 --- a/packages/core/src/builtins/torznab/addon.ts +++ b/packages/core/src/builtins/torznab/addon.ts @@ -1,15 +1,15 @@ import { z } from 'zod'; -import { ParsedId } from '../../utils/id-parser'; -import { createLogger } from '../../utils'; -import { Torrent, NZB, UnprocessedTorrent } from '../../debrid'; +import { ParsedId } from '../../utils/id-parser.js'; +import { createLogger } from '../../utils/index.js'; +import { Torrent, NZB, UnprocessedTorrent } from '../../debrid/index.js'; import { SearchMetadata } from '../base/debrid'; -import { extractTrackersFromMagnet } from '../utils/debrid'; -import { BaseNabApi, Capabilities } from '../base/nab/api'; +import { extractTrackersFromMagnet } from '../utils/debrid.js'; +import { BaseNabApi, Capabilities } from '../base/nab/api.js'; import { BaseNabAddon, NabAddonConfigSchema, NabAddonConfig, -} from '../base/nab/addon'; +} from '../base/nab/addon.js'; const logger = createLogger('torznab'); diff --git a/packages/core/src/builtins/torznab/index.ts b/packages/core/src/builtins/torznab/index.ts index 9762837e..3ee341c5 100644 --- a/packages/core/src/builtins/torznab/index.ts +++ b/packages/core/src/builtins/torznab/index.ts @@ -1 +1 @@ -export * from './addon'; +export * from './addon.js'; diff --git a/packages/core/src/builtins/utils/debrid.ts b/packages/core/src/builtins/utils/debrid.ts index 24b6c928..5d09b5b0 100644 --- a/packages/core/src/builtins/utils/debrid.ts +++ b/packages/core/src/builtins/utils/debrid.ts @@ -1,16 +1,10 @@ -// utility function for debrid-based builtins - -import z from 'zod'; import { BuiltinServiceId, - constants, createLogger, getTimeTakenSincePoint, -} from '../../utils'; +} from '../../utils/index.js'; import { BuiltinDebridServices, - DebridDownload, - DebridError, DebridFile, getDebridService, selectFileInTorrentOrNZB, @@ -20,8 +14,8 @@ import { NZB, isSeasonWrong, isEpisodeWrong, -} from '../../debrid'; -import { PTT } from '../../parser'; +} from '../../debrid/index.js'; +import { PTT } from '../../parser/index.js'; import { ParseResult } from 'go-ptt'; // we have a list of torrents which need to be diff --git a/packages/core/src/db/db.ts b/packages/core/src/db/db.ts index 041d2294..ca129c6f 100644 --- a/packages/core/src/db/db.ts +++ b/packages/core/src/db/db.ts @@ -1,15 +1,14 @@ -import { TABLES } from './schemas'; -import { createLogger } from '../utils'; -import { parseConnectionURI, adaptQuery, ConnectionURI } from './utils'; - -const logger = createLogger('database'); - import { Pool, Client, QueryResult } from 'pg'; import sqlite3 from 'sqlite3'; import { open, Database } from 'sqlite'; import { URL } from 'url'; import path from 'path'; import fs from 'fs'; +import { TABLES } from './schemas.js'; +import { createLogger } from '../utils/index.js'; +import { parseConnectionURI, adaptQuery, ConnectionURI } from './utils.js'; + +const logger = createLogger('database'); type QueryResultRow = Record; diff --git a/packages/core/src/db/index.ts b/packages/core/src/db/index.ts index efc8bdba..dddaf583 100644 --- a/packages/core/src/db/index.ts +++ b/packages/core/src/db/index.ts @@ -1,4 +1,4 @@ -export * from './db'; -export * from './users'; -export * from './schemas'; -export * from './queue'; +export * from './db.js'; +export * from './users.js'; +export * from './schemas.js'; +export * from './queue.js'; diff --git a/packages/core/src/db/queue.ts b/packages/core/src/db/queue.ts index e0def3b5..78221658 100644 --- a/packages/core/src/db/queue.ts +++ b/packages/core/src/db/queue.ts @@ -1,5 +1,5 @@ -import { createLogger } from '../utils'; -import { DB } from './db'; +import { createLogger } from '../utils/index.js'; +import { DB } from './db.js'; const logger = createLogger('db'); const db = DB.getInstance(); diff --git a/packages/core/src/db/schemas.ts b/packages/core/src/db/schemas.ts index 6d5c10f0..30c0da5e 100644 --- a/packages/core/src/db/schemas.ts +++ b/packages/core/src/db/schemas.ts @@ -1,5 +1,5 @@ import { z } from 'zod'; -import * as constants from '../utils/constants'; +import * as constants from '../utils/constants.js'; const ServiceIds = z.enum(constants.SERVICES); diff --git a/packages/core/src/db/users.ts b/packages/core/src/db/users.ts index a8429461..3a756f5f 100644 --- a/packages/core/src/db/users.ts +++ b/packages/core/src/db/users.ts @@ -1,22 +1,19 @@ -// import { UserDataSchema, UserData, DB } from '../db'; -import { UserDataSchema, UserData } from './schemas'; -import { TransactionQueue } from './queue'; -import { DB } from './db'; +import { UserData } from './schemas.js'; +import { TransactionQueue } from './queue.js'; +import { DB } from './db.js'; import { decryptString, deriveKey, encryptString, generateUUID, getTextHash, - maskSensitiveInfo, createLogger, constants, Env, verifyHash, validateConfig, - formatZodError, applyMigrations, -} from '../utils'; +} from '../utils/index.js'; const APIError = constants.APIError; const logger = createLogger('users'); diff --git a/packages/core/src/db/utils.ts b/packages/core/src/db/utils.ts index b7bd8e8f..33d94f58 100644 --- a/packages/core/src/db/utils.ts +++ b/packages/core/src/db/utils.ts @@ -1,5 +1,5 @@ import { URL } from 'url'; -import { createLogger } from '../utils/logger'; +import { createLogger } from '../utils/logger.js'; import path from 'path'; type BaseConnectionURI = { diff --git a/packages/core/src/debrid/base.ts b/packages/core/src/debrid/base.ts index d75b4e42..e0eb3e39 100644 --- a/packages/core/src/debrid/base.ts +++ b/packages/core/src/debrid/base.ts @@ -1,9 +1,5 @@ import { z } from 'zod'; -import { constants, ServiceId } from '../utils'; -import { ErrorType, StremThruError } from 'stremthru'; -// type ErrorCode = "BAD_GATEWAY" | "BAD_REQUEST" | "CONFLICT" | "FORBIDDEN" | "GONE" | "INTERNAL_SERVER_ERROR" | "METHOD_NOT_ALLOWED" | "NOT_FOUND" | "NOT_IMPLEMENTED" | "PAYMENT_REQUIRED" | "PROXY_AUTHENTICATION_REQUIRED" | "SERVICE_UNAVAILABLE" | "STORE_LIMIT_EXCEEDED" | "STORE_MAGNET_INVALID" | "TOO_MANY_REQUESTS" | "UNAUTHORIZED" | "UNAVAILABLE_FOR_LEGAL_REASONS" | "UNKNOWN" | "UNPROCESSABLE_ENTITY" | "UNSUPPORTED_MEDIA_TYPE"; - -StremThruError; +import { constants, ServiceId } from '../utils/index.js'; type DebridErrorCode = | 'BAD_GATEWAY' diff --git a/packages/core/src/debrid/index.ts b/packages/core/src/debrid/index.ts index 574dce2a..965cb0b0 100644 --- a/packages/core/src/debrid/index.ts +++ b/packages/core/src/debrid/index.ts @@ -1,13 +1,13 @@ -export * from './base'; -export * from './utils'; -export * from './stremthru'; -export * from './torbox'; +export * from './base.js'; +export * from './utils.js'; +export * from './stremthru.js'; +export * from './torbox.js'; -import { ServiceId } from '../utils'; -import { DebridService, DebridServiceConfig } from './base'; -import { StremThruInterface } from './stremthru'; -import { TorboxDebridService } from './torbox'; -import { StremThruPreset } from '../presets/stremthru'; +import { ServiceId } from '../utils/index.js'; +import { DebridService, DebridServiceConfig } from './base.js'; +import { StremThruInterface } from './stremthru.js'; +import { TorboxDebridService } from './torbox.js'; +import { StremThruPreset } from '../presets/stremthru.js'; export function getDebridService( serviceName: ServiceId, diff --git a/packages/core/src/debrid/stremthru.ts b/packages/core/src/debrid/stremthru.ts index a9876986..ccc55520 100644 --- a/packages/core/src/debrid/stremthru.ts +++ b/packages/core/src/debrid/stremthru.ts @@ -1,16 +1,21 @@ import { StremThru, StremThruError } from 'stremthru'; -import { Env, ServiceId, createLogger, getSimpleTextHash } from '../utils'; -import { selectFileInTorrentOrNZB, Torrent } from './utils'; +import { + Env, + ServiceId, + createLogger, + getSimpleTextHash, + Cache, +} from '../utils/index.js'; +import { selectFileInTorrentOrNZB, Torrent } from './utils.js'; import { DebridService, DebridServiceConfig, DebridDownload, PlaybackInfo, DebridError, -} from './base'; -import { Cache } from '../utils'; -import { StremThruServiceId } from '../presets/stremthru'; -import { PTT } from '../parser'; +} from './base.js'; +import { StremThruServiceId } from '../presets/stremthru.js'; +import { PTT } from '../parser/index.js'; import { ParseResult } from 'go-ptt'; const logger = createLogger('debrid:stremthru'); diff --git a/packages/core/src/debrid/torbox.ts b/packages/core/src/debrid/torbox.ts index f99cef5c..bee01869 100644 --- a/packages/core/src/debrid/torbox.ts +++ b/packages/core/src/debrid/torbox.ts @@ -1,18 +1,23 @@ import { TorboxApi } from '@torbox/torbox-api'; -import { Env, ServiceId, createLogger, getSimpleTextHash } from '../utils'; -import { PTT } from '../parser'; -import { selectFileInTorrentOrNZB } from './utils'; +import { StremThruError } from 'stremthru'; +import { ParseResult } from 'go-ptt'; +import { + Env, + ServiceId, + createLogger, + getSimpleTextHash, + Cache, +} from '../utils/index.js'; +import { PTT } from '../parser/index.js'; +import { selectFileInTorrentOrNZB } from './utils.js'; import { DebridService, DebridServiceConfig, DebridDownload, PlaybackInfo, DebridError, -} from './base'; -import { Cache } from '../utils'; -import { StremThruInterface } from './stremthru'; -import { StremThruError } from 'stremthru'; -import { ParseResult } from 'go-ptt'; +} from './base.js'; +import { StremThruInterface } from './stremthru.js'; const logger = createLogger('debrid:torbox'); diff --git a/packages/core/src/debrid/utils.ts b/packages/core/src/debrid/utils.ts index fda7d5be..0a7d5656 100644 --- a/packages/core/src/debrid/utils.ts +++ b/packages/core/src/debrid/utils.ts @@ -1,10 +1,7 @@ import { z } from 'zod'; -import { constants, createLogger } from '../utils'; - -import { BuiltinServiceId } from '../utils'; -import { DebridFile, DebridDownload } from './base'; -import { PTT } from '../parser'; -import { normaliseTitle, titleMatch } from '../parser/utils'; +import { constants, createLogger, BuiltinServiceId } from '../utils/index.js'; +import { DebridFile, DebridDownload } from './base.js'; +import { normaliseTitle, titleMatch } from '../parser/utils.js'; const logger = createLogger('debrid'); diff --git a/packages/core/src/formatters/base.ts b/packages/core/src/formatters/base.ts index 5ca0c922..8f16442f 100644 --- a/packages/core/src/formatters/base.ts +++ b/packages/core/src/formatters/base.ts @@ -1,15 +1,14 @@ -import { ParsedStream, UserData } from '../db'; -// import { constants, Env, createLogger } from '../utils'; -import * as constants from '../utils/constants'; -import { createLogger } from '../utils/logger'; +import { ParsedStream, UserData } from '../db/schemas.js'; +import * as constants from '../utils/constants.js'; +import { createLogger } from '../utils/logger.js'; import { formatBytes, formatDuration, languageToCode, languageToEmoji, makeSmall, -} from './utils'; -import { Env } from '../utils/env'; +} from './utils.js'; +import { Env } from '../utils/env.js'; const logger = createLogger('formatter'); @@ -112,10 +111,10 @@ const stringModifiers = { 'upper': (value: string) => value.toUpperCase(), 'lower': (value: string) => value.toLowerCase(), 'title': (value: string) => value - .split(' ') - .map((word) => word.toLowerCase()) - .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) - .join(' '), + .split(' ') + .map((word) => word.toLowerCase()) + .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) + .join(' '), 'length': (value: string) => value.length.toString(), 'reverse': (value: string) => value.split('').reverse().join(''), 'base64': (value: string) => btoa(value), @@ -414,7 +413,7 @@ export abstract class BaseFormatter { const variable = `(?${validVariables.join('|')})\\.(?${validProperties.join('|')})`; const singleValidModifier = this.buildModifierRegexPattern(); - + // Build the conditional check pattern separately // Use [^"]* to capture anything except quotes, making it non-greedy const checkTrue = `"(?[^"]*)"`; @@ -425,7 +424,7 @@ export abstract class BaseFormatter { const modTZLocale = `::(?[A-Za-z]{2,3}(?:-[A-Z]{2})?|[A-Za-z]+?/[A-Za-z_]+?)`; const regexPattern = `\\{${variable}(?(${singleValidModifier})+)?(${modTZLocale})?(${checkTF})?\\}`; - + return new RegExp(regexPattern, 'gi') } @@ -517,7 +516,7 @@ export abstract class BaseFormatter { ): string | undefined { const singleModTerminator = '((::)|($))'; // :: if there's multiple modifiers or $ for the end of the string const singleValidModRe = new RegExp(this.buildModifierRegexPattern() + singleModTerminator, 'gi'); - + let result = input as any; // iterate over modifiers in order of appearance for (const modMatch of [...groups.modifiers.matchAll(singleValidModRe)].sort((a, b) => (a.index ?? 0) - (b.index ?? 0))) { @@ -537,7 +536,7 @@ export abstract class BaseFormatter { let check_false = groups.mod_check_false ?? ""; if (typeof check_true !== 'string' || typeof check_false !== 'string') return `{unknown_conditional_modifier_check_true_or_false}`; - + if (parseValue) { check_true = this.parseString(check_true, parseValue) || check_true; check_false = this.parseString(check_false, parseValue) || check_false; @@ -568,29 +567,29 @@ export abstract class BaseFormatter { if (!conditionalModifiers.exact.exists(input)) { conditional = false; } - + // EXACT else if (isExact) { const modAsKey = mod as keyof typeof conditionalModifiers.exact; conditional = conditionalModifiers.exact[modAsKey](input); } - + // PREFIX else if (isPrefix) { // get the longest prefix match const modPrefix = Object.keys(conditionalModifiers.prefix).sort((a, b) => b.length - a.length).find(key => mod.startsWith(key))!!; - + // Pre-process string value and check to allow for intuitive comparisons const stringValue = input.toString().toLowerCase(); let stringCheck = mod.substring(modPrefix.length).toLowerCase(); // remove whitespace from stringCheck if it isn't in stringValue stringCheck = !/\s/.test(stringValue) ? stringCheck.replace(/\s/g, '') : stringCheck; - + // parse value/check as if they're numbers (123,456 -> 123456) const [parsedNumericValue, parsedNumericCheck] = [Number(stringValue.replace(/,\s/g, '')), Number(stringCheck.replace(/,\s/g, ''))]; const isNumericComparison = ["<", "<=", ">", ">=", "="].includes(modPrefix) && !isNaN(parsedNumericValue) && !isNaN(parsedNumericCheck); - + conditional = conditionalModifiers.prefix[modPrefix as keyof typeof conditionalModifiers.prefix]( isNumericComparison ? parsedNumericValue as any : stringValue, isNumericComparison ? parsedNumericCheck as any : stringCheck, diff --git a/packages/core/src/formatters/custom.ts b/packages/core/src/formatters/custom.ts index daa5211a..f3067643 100644 --- a/packages/core/src/formatters/custom.ts +++ b/packages/core/src/formatters/custom.ts @@ -1,5 +1,5 @@ -import { UserData } from '../db'; -import { BaseFormatter, FormatterConfig } from './base'; +import { UserData } from '../db/schemas.js'; +import { BaseFormatter, FormatterConfig } from './base.js'; export class CustomFormatter extends BaseFormatter { constructor( diff --git a/packages/core/src/formatters/index.ts b/packages/core/src/formatters/index.ts index 48cd7c49..91d5f6f3 100644 --- a/packages/core/src/formatters/index.ts +++ b/packages/core/src/formatters/index.ts @@ -1,18 +1,18 @@ -export * from './base'; -export * from './predefined'; -export * from './custom'; -export * from './utils'; +export * from './base.js'; +export * from './predefined.js'; +export * from './custom.js'; +export * from './utils.js'; -import { BaseFormatter, FormatterConfig } from './base'; +import { BaseFormatter, FormatterConfig } from './base.js'; import { TorrentioFormatter, TorboxFormatter, GDriveFormatter, LightGDriveFormatter, MinimalisticGdriveFormatter, -} from './predefined'; -import { CustomFormatter } from './custom'; -import { UserData } from '../db'; +} from './predefined.js'; +import { CustomFormatter } from './custom.js'; +import { UserData } from '../db/schemas.js'; export function createFormatter(userData: UserData): BaseFormatter { switch (userData.formatter.id) { diff --git a/packages/core/src/formatters/predefined.ts b/packages/core/src/formatters/predefined.ts index 754b0103..6ee8fb0c 100644 --- a/packages/core/src/formatters/predefined.ts +++ b/packages/core/src/formatters/predefined.ts @@ -1,5 +1,5 @@ -import { UserData } from '../db'; -import { BaseFormatter } from './base'; +import { UserData } from '../db/schemas.js'; +import { BaseFormatter } from './base.js'; export class TorrentioFormatter extends BaseFormatter { constructor(userData: UserData) { @@ -95,4 +95,4 @@ export class MinimalisticGdriveFormatter extends BaseFormatter { userData ); } -} \ No newline at end of file +} diff --git a/packages/core/src/formatters/utils.ts b/packages/core/src/formatters/utils.ts index eda14ed1..bfc7d44c 100644 --- a/packages/core/src/formatters/utils.ts +++ b/packages/core/src/formatters/utils.ts @@ -1,4 +1,4 @@ -import { FULL_LANGUAGE_MAPPING } from '../utils'; +import { FULL_LANGUAGE_MAPPING } from '../utils/languages.js'; export function formatBytes(bytes: number, k: 1024 | 1000): string { if (bytes === 0) return '0 B'; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index a47a52b1..caa5e7ce 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,10 +1,10 @@ -export * from './utils'; -export * from './db'; -export * from './main'; -export * from './parser'; -export * from './formatters'; -export * from './transformers'; -export * from './debrid'; +export * from './utils/index.js'; +export * from './db/index.js'; +export * from './main.js'; +export * from './parser/index.js'; +export * from './formatters/index.js'; +export * from './transformers/index.js'; +export * from './debrid/index.js'; export { TorBoxSearchAddon, GDriveAddon, @@ -14,5 +14,5 @@ export { TorznabAddon, NewznabAddon, ProwlarrAddon, -} from './builtins'; -export { PresetManager } from './presets'; +} from './builtins/index.js'; +export { PresetManager } from './presets/index.js'; diff --git a/packages/core/src/main.ts b/packages/core/src/main.ts index a7ef21d2..f3041e6a 100644 --- a/packages/core/src/main.ts +++ b/packages/core/src/main.ts @@ -4,7 +4,7 @@ import { Resource, StrictManifestResource, UserData, -} from './db'; +} from './db/index.js'; import { constants, createLogger, @@ -16,9 +16,9 @@ import { ExtrasParser, makeUrlLogSafe, AnimeDatabase, -} from './utils'; -import { Wrapper } from './wrapper'; -import { PresetManager } from './presets'; +} from './utils/index.js'; +import { Wrapper } from './wrapper.js'; +import { PresetManager } from './presets/index.js'; import { AddonCatalog, Meta, @@ -27,12 +27,12 @@ import { ParsedStream, Preset, Subtitle, -} from './db/schemas'; -import { createProxy } from './proxy'; -import { RPDB } from './utils/rpdb'; -import { FeatureControl } from './utils/feature'; -import Proxifier from './streams/proxifier'; -import StreamLimiter from './streams/limiter'; +} from './db/schemas.js'; +import { createProxy } from './proxy/index.js'; +import { RPDB } from './utils/rpdb.js'; +import { FeatureControl } from './utils/feature.js'; +import Proxifier from './streams/proxifier.js'; +import StreamLimiter from './streams/limiter.js'; import { StreamFetcher as Fetcher, StreamFilterer as Filterer, @@ -40,10 +40,10 @@ import { StreamDeduplicator as Deduplicator, StreamPrecomputer as Precomputer, StreamUtils, -} from './streams'; -import { getAddonName } from './utils/general'; -import { TMDBMetadata } from './metadata/tmdb'; -import { Metadata } from './metadata/utils'; +} from './streams/index.js'; +import { getAddonName } from './utils/general.js'; +import { TMDBMetadata } from './metadata/tmdb.js'; +import { Metadata } from './metadata/utils.js'; const logger = createLogger('core'); const shuffleCache = Cache.getInstance('shuffle'); diff --git a/packages/core/src/metadata/imdb.ts b/packages/core/src/metadata/imdb.ts index 8a04cdd8..af8ed486 100644 --- a/packages/core/src/metadata/imdb.ts +++ b/packages/core/src/metadata/imdb.ts @@ -1,8 +1,7 @@ import { z } from 'zod'; -import { Cache, makeRequest, Env, TYPES } from '../utils'; -import { Wrapper } from '../wrapper'; -import { Metadata } from './utils'; -import { Meta, MetaSchema } from '../db'; +import { Cache, makeRequest, Env, TYPES } from '../utils/index.js'; +import { Metadata } from './utils.js'; +import { Meta, MetaSchema } from '../db/schemas.js'; const IMDBSuggestionSchema = z.object({ d: z.array( diff --git a/packages/core/src/metadata/service.ts b/packages/core/src/metadata/service.ts index 4c8af98f..47f1442c 100644 --- a/packages/core/src/metadata/service.ts +++ b/packages/core/src/metadata/service.ts @@ -1,12 +1,12 @@ -import { DistributedLock } from '../utils/distributed-lock'; -import { Metadata } from './utils'; -import { TMDBMetadata } from './tmdb'; -import { getTraktAliases } from './trakt'; -import { IMDBMetadata } from './imdb'; -import { createLogger, getTimeTakenSincePoint } from '../utils/logger'; -import { TYPES } from '../utils/constants'; -import { AnimeDatabase, ParsedId } from '../utils'; -import { Meta } from '../db/schemas'; +import { DistributedLock } from '../utils/distributed-lock.js'; +import { Metadata } from './utils.js'; +import { TMDBMetadata } from './tmdb.js'; +import { getTraktAliases } from './trakt.js'; +import { IMDBMetadata } from './imdb.js'; +import { createLogger, getTimeTakenSincePoint } from '../utils/logger.js'; +import { TYPES } from '../utils/constants.js'; +import { AnimeDatabase, ParsedId } from '../utils/index.js'; +import { Meta } from '../db/schemas.js'; const logger = createLogger('metadata-service'); diff --git a/packages/core/src/metadata/tmdb.ts b/packages/core/src/metadata/tmdb.ts index bbfbb69d..bc6940d7 100644 --- a/packages/core/src/metadata/tmdb.ts +++ b/packages/core/src/metadata/tmdb.ts @@ -1,6 +1,6 @@ import { Headers } from 'undici'; -import { Env, Cache, TYPES, makeRequest } from '../utils'; -import { Metadata } from './utils'; +import { Env, Cache, TYPES, makeRequest } from '../utils/index.js'; +import { Metadata } from './utils.js'; import { z } from 'zod'; export type ExternalIdType = 'imdb' | 'tmdb' | 'tvdb'; diff --git a/packages/core/src/metadata/trakt.ts b/packages/core/src/metadata/trakt.ts index ec49d601..33a7e11c 100644 --- a/packages/core/src/metadata/trakt.ts +++ b/packages/core/src/metadata/trakt.ts @@ -7,7 +7,7 @@ import { ParsedId, formatZodError, Env, -} from '../utils'; +} from '../utils/index.js'; const traktAliasCache = Cache.getInstance('trakt-aliases'); const TRAKT_ALIAS_CACHE_TTL = 7 * 24 * 60 * 60; // 7 days diff --git a/packages/core/src/parser/file.ts b/packages/core/src/parser/file.ts index cd9d5666..93ceefdf 100644 --- a/packages/core/src/parser/file.ts +++ b/packages/core/src/parser/file.ts @@ -1,6 +1,6 @@ -import { PARSE_REGEX } from './regex'; -import { ParsedFile } from '../db/schemas'; -import ptt from './ptt'; +import { PARSE_REGEX } from './regex.js'; +import { ParsedFile } from '../db/schemas.js'; +import ptt from './ptt.js'; function matchPattern( filename: string, diff --git a/packages/core/src/parser/go-ptt.ts b/packages/core/src/parser/go-ptt.ts index f8a10b16..29bf93bd 100644 --- a/packages/core/src/parser/go-ptt.ts +++ b/packages/core/src/parser/go-ptt.ts @@ -6,7 +6,7 @@ import { Env, getSimpleTextHash, getTimeTakenSincePoint, -} from '../utils'; +} from '../utils/index.js'; const logger = createLogger('parser'); diff --git a/packages/core/src/parser/index.ts b/packages/core/src/parser/index.ts index 4f30b2a5..50cc1da4 100644 --- a/packages/core/src/parser/index.ts +++ b/packages/core/src/parser/index.ts @@ -1,3 +1,3 @@ -export { default as FileParser } from './file'; -export { default as StreamParser } from './streams'; -export { default as PTT } from './go-ptt'; +export { default as FileParser } from './file.js'; +export { default as StreamParser } from './streams.js'; +export { default as PTT } from './go-ptt.js'; diff --git a/packages/core/src/parser/regex.ts b/packages/core/src/parser/regex.ts index 439550e7..8b812508 100644 --- a/packages/core/src/parser/regex.ts +++ b/packages/core/src/parser/regex.ts @@ -1,9 +1,10 @@ -import { AUDIO_TAGS, QUALITIES, RESOLUTIONS } from '../utils/constants'; -import { VISUAL_TAGS } from '../utils/constants'; -import { ENCODES } from '../utils/constants'; -import { LANGUAGES } from '../utils/constants'; -import { AUDIO_CHANNELS } from '../utils/constants'; -import { FakeVisualTag } from '../utils/constants'; +// import { AUDIO_TAGS, QUALITIES, RESOLUTIONS } from '../utils/constants'; +// import { VISUAL_TAGS } from '../utils/constants'; +// import { ENCODES } from '../utils/constants'; +// import { LANGUAGES } from '../utils/constants'; +// import { AUDIO_CHANNELS } from '../utils/constants'; +// import { FakeVisualTag } from '../utils/constants'; +import { constants } from '../utils/index.js'; const createRegex = (pattern: string): RegExp => new RegExp(`(? createRegex(`${pattern}(?![ .\\-_]?sub(title)?s?)`); type PARSE_REGEX = { - resolutions: Omit, 'Unknown'>; - qualities: Omit, 'Unknown'>; - visualTags: Omit< - Record<(typeof VISUAL_TAGS)[number], RegExp>, - 'Unknown' | FakeVisualTag - >; - audioTags: Omit, 'Unknown'>; - audioChannels: Omit< - Record<(typeof AUDIO_CHANNELS)[number], RegExp>, + resolutions: Omit< + Record<(typeof constants.RESOLUTIONS)[number], RegExp>, 'Unknown' >; - languages: Omit, 'Unknown'>; - encodes: Omit, 'Unknown'>; + qualities: Omit< + Record<(typeof constants.QUALITIES)[number], RegExp>, + 'Unknown' + >; + visualTags: Omit< + Record<(typeof constants.VISUAL_TAGS)[number], RegExp>, + 'Unknown' | constants.FakeVisualTag + >; + audioTags: Omit< + Record<(typeof constants.AUDIO_TAGS)[number], RegExp>, + 'Unknown' + >; + audioChannels: Omit< + Record<(typeof constants.AUDIO_CHANNELS)[number], RegExp>, + 'Unknown' + >; + languages: Omit< + Record<(typeof constants.LANGUAGES)[number], RegExp>, + 'Unknown' + >; + encodes: Omit, 'Unknown'>; releaseGroup: RegExp; }; diff --git a/packages/core/src/parser/streamExpression.ts b/packages/core/src/parser/streamExpression.ts index 0c281fac..2c67ec43 100644 --- a/packages/core/src/parser/streamExpression.ts +++ b/packages/core/src/parser/streamExpression.ts @@ -1,5 +1,9 @@ import { Parser } from 'expr-eval'; -import { ParsedStream, ParsedStreams, ParsedStreamSchema } from '../db'; +import { + ParsedStream, + ParsedStreams, + ParsedStreamSchema, +} from '../db/schemas.js'; import bytes from 'bytes'; export abstract class StreamExpressionEngine { diff --git a/packages/core/src/parser/streams.ts b/packages/core/src/parser/streams.ts index f2a66536..fada8f29 100644 --- a/packages/core/src/parser/streams.ts +++ b/packages/core/src/parser/streams.ts @@ -1,6 +1,11 @@ -import { Stream, ParsedStream, Addon, ParsedFile } from '../db'; -import { constants, createLogger, Env, FULL_LANGUAGE_MAPPING } from '../utils'; -import FileParser from './file'; +import { Stream, ParsedStream, Addon, ParsedFile } from '../db/index.js'; +import { + constants, + createLogger, + Env, + FULL_LANGUAGE_MAPPING, +} from '../utils/index.js'; +import FileParser from './file.js'; const logger = createLogger('parser'); class StreamParser { diff --git a/packages/core/src/parser/utils.ts b/packages/core/src/parser/utils.ts index 9e293983..88d9110d 100644 --- a/packages/core/src/parser/utils.ts +++ b/packages/core/src/parser/utils.ts @@ -1,5 +1,5 @@ import { extract, FuzzballExtractOptions } from 'fuzzball'; -import { createLogger } from '../utils'; +import { createLogger } from '../utils/index.js'; const logger = createLogger('parser'); diff --git a/packages/core/src/presets/aStream.ts b/packages/core/src/presets/aStream.ts index 1152f9d1..ed440f7e 100644 --- a/packages/core/src/presets/aStream.ts +++ b/packages/core/src/presets/aStream.ts @@ -5,10 +5,15 @@ import { ParsedFile, Stream, UserData, -} from '../db'; -import { Preset, baseOptions } from './preset'; -import { constants, Env, HTTP_STREAM_TYPE, LIVE_STREAM_TYPE } from '../utils'; -import { FileParser, StreamParser } from '../parser'; +} from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { + constants, + Env, + HTTP_STREAM_TYPE, + LIVE_STREAM_TYPE, +} from '../utils/index.js'; +import { FileParser, StreamParser } from '../parser/index.js'; class AStreamStreamParser extends StreamParser { protected override getParsedFile( diff --git a/packages/core/src/presets/aiCompanion.ts b/packages/core/src/presets/aiCompanion.ts index 41628854..6b444637 100644 --- a/packages/core/src/presets/aiCompanion.ts +++ b/packages/core/src/presets/aiCompanion.ts @@ -1,5 +1,5 @@ -import { Addon, Option, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; +import { Addon, Option, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; import { Cache, constants, @@ -7,7 +7,7 @@ import { formatZodError, getSimpleTextHash, makeRequest, -} from '../utils'; +} from '../utils/index.js'; import { z } from 'zod'; import { FormData } from 'undici'; @@ -330,3 +330,5 @@ export class AICompanionPreset extends Preset { } } } + + diff --git a/packages/core/src/presets/aiSearch.ts b/packages/core/src/presets/aiSearch.ts index e72724b0..ed27ea2b 100644 --- a/packages/core/src/presets/aiSearch.ts +++ b/packages/core/src/presets/aiSearch.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Cache, constants, Env, makeRequest } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Cache, constants, Env, makeRequest } from '../utils/index.js'; import { z } from 'zod'; const configCache = Cache.getInstance('ai-search-config'); @@ -306,3 +306,5 @@ export class AISearchPreset extends Preset { } } } + + diff --git a/packages/core/src/presets/aiostreams.ts b/packages/core/src/presets/aiostreams.ts index 25d292bf..218dd687 100644 --- a/packages/core/src/presets/aiostreams.ts +++ b/packages/core/src/presets/aiostreams.ts @@ -5,11 +5,11 @@ import { ParsedStream, Stream, AIOStream, -} from '../db'; -import { Preset, baseOptions } from './preset'; -import { constants, Env, formatZodError, RESOURCES } from '../utils'; -import { StreamParser } from '../parser'; -import { createLogger } from '../utils'; +} from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { constants, Env, formatZodError, RESOURCES } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; +import { createLogger } from '../utils/index.js'; const logger = createLogger('parser'); @@ -172,3 +172,5 @@ export class AIOStreamsPreset extends Preset { }; } } + + diff --git a/packages/core/src/presets/aiosubtitle.ts b/packages/core/src/presets/aiosubtitle.ts index 093addb6..04de5f8b 100644 --- a/packages/core/src/presets/aiosubtitle.ts +++ b/packages/core/src/presets/aiosubtitle.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, RESOURCES, SUBTITLES_RESOURCE } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, RESOURCES, SUBTITLES_RESOURCE } from '../utils/index.js'; export class AIOSubtitlePreset extends Preset { static override get METADATA() { @@ -436,3 +436,5 @@ export class AIOSubtitlePreset extends Preset { return `${host}/stremio/${configString}/manifest.json`; } } + + diff --git a/packages/core/src/presets/animeCatalogs.ts b/packages/core/src/presets/animeCatalogs.ts index e3284b9e..c8bec434 100644 --- a/packages/core/src/presets/animeCatalogs.ts +++ b/packages/core/src/presets/animeCatalogs.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { CacheKeyRequestOptions, Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { CacheKeyRequestOptions, Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; export class AnimeCatalogsPreset extends Preset { private static malCatalogs = [ @@ -319,3 +319,4 @@ export class AnimeCatalogsPreset extends Preset { return cacheKey; } } + diff --git a/packages/core/src/presets/animeKitsu.ts b/packages/core/src/presets/animeKitsu.ts index 05fd896d..b94ca552 100644 --- a/packages/core/src/presets/animeKitsu.ts +++ b/packages/core/src/presets/animeKitsu.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; export class AnimeKitsuPreset extends Preset { static override get METADATA() { @@ -76,3 +76,5 @@ export class AnimeKitsuPreset extends Preset { }; } } + + diff --git a/packages/core/src/presets/animetosho.ts b/packages/core/src/presets/animetosho.ts index 7e1e12ef..702b7aa8 100644 --- a/packages/core/src/presets/animetosho.ts +++ b/packages/core/src/presets/animetosho.ts @@ -1,8 +1,8 @@ -import { Option, UserData } from '../db'; -import { Env, constants } from '../utils'; -import { baseOptions } from './preset'; -import { StremThruPreset } from './stremthru'; -import { TorznabPreset } from './torznab'; +import { Option, UserData } from '../db/index.js'; +import { Env, constants } from '../utils/index.js'; +import { baseOptions } from './preset.js'; +import { StremThruPreset } from './stremthru.js'; +import { TorznabPreset } from './torznab.js'; export class AnimeToshoPreset extends TorznabPreset { static override get METADATA() { @@ -68,3 +68,5 @@ export class AnimeToshoPreset extends TorznabPreset { return `${Env.INTERNAL_URL}/builtins/torznab/${configString}/manifest.json`; } } + + diff --git a/packages/core/src/presets/argentinaTv.ts b/packages/core/src/presets/argentinaTv.ts index affcc0fe..af7c3621 100644 --- a/packages/core/src/presets/argentinaTv.ts +++ b/packages/core/src/presets/argentinaTv.ts @@ -5,10 +5,10 @@ import { ParsedStream, Stream, UserData, -} from '../db'; -import { Preset, baseOptions } from './preset'; -import { constants, Env, LIVE_STREAM_TYPE } from '../utils'; -import { FileParser, StreamParser } from '../parser'; +} from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { constants, Env, LIVE_STREAM_TYPE } from '../utils/index.js'; +import { FileParser, StreamParser } from '../parser/index.js'; class ArgentinaTvStreamParser extends StreamParser { protected override getParsedFile( @@ -121,3 +121,5 @@ export class ArgentinaTVPreset extends Preset { }; } } + + diff --git a/packages/core/src/presets/builtin.ts b/packages/core/src/presets/builtin.ts index e99e4b90..fcb97a55 100644 --- a/packages/core/src/presets/builtin.ts +++ b/packages/core/src/presets/builtin.ts @@ -1,8 +1,8 @@ -import { ParsedStream, Stream, UserData } from '../db'; -import { StreamParser } from '../parser'; -import { ServiceId } from '../utils/constants'; -import { Preset } from './preset'; -import { stremthruSpecialCases } from './stremthru'; +import { ParsedStream, Stream, UserData } from '../db/index.js'; +import { StreamParser } from '../parser/index.js'; +import { ServiceId } from '../utils/constants.js'; +import { Preset } from './preset.js'; +import { stremthruSpecialCases } from './stremthru.js'; export class BuiltinStreamParser extends StreamParser { override getFolder(stream: Stream): string | undefined { @@ -68,3 +68,5 @@ export class BuiltinAddonPreset extends Preset { }); } } + + diff --git a/packages/core/src/presets/comet.ts b/packages/core/src/presets/comet.ts index 9cb2ea67..bd10cd0c 100644 --- a/packages/core/src/presets/comet.ts +++ b/packages/core/src/presets/comet.ts @@ -1,9 +1,9 @@ -import { Addon, Option, UserData, Resource } from '../db'; -import { baseOptions, Preset } from './preset'; -import { Env } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; -import { StremThruPreset } from './stremthru'; +import { Addon, Option, UserData, Resource } from '../db/index.js'; +import { baseOptions, Preset } from './preset.js'; +import { Env } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; +import { StremThruPreset } from './stremthru.js'; class CometStreamParser extends StreamParser { get errorRegexes(): { pattern: RegExp; message: string }[] | undefined { @@ -224,3 +224,5 @@ export class CometPreset extends StremThruPreset { return `${url}${configString ? '/' + configString : ''}/manifest.json`; } } + + diff --git a/packages/core/src/presets/contentDeepDive.ts b/packages/core/src/presets/contentDeepDive.ts index f318d4f8..e0ad76ac 100644 --- a/packages/core/src/presets/contentDeepDive.ts +++ b/packages/core/src/presets/contentDeepDive.ts @@ -1,7 +1,7 @@ -import { Addon, Option, ParsedStream, Stream, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; -import { StreamParser } from '../parser'; +import { Addon, Option, ParsedStream, Stream, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; class ContentDeepDiveStreamParser extends StreamParser { protected getFilename( @@ -112,3 +112,5 @@ export class ContentDeepDivePreset extends Preset { return `${url}/manifest.json`; } } + + diff --git a/packages/core/src/presets/custom.ts b/packages/core/src/presets/custom.ts index e8156e2b..1fd28414 100644 --- a/packages/core/src/presets/custom.ts +++ b/packages/core/src/presets/custom.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, RESOURCES } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, RESOURCES } from '../utils/index.js'; export class CustomPreset extends Preset { static override get METADATA() { @@ -143,3 +143,5 @@ export class CustomPreset extends Preset { }; } } + + diff --git a/packages/core/src/presets/dcUniverse.ts b/packages/core/src/presets/dcUniverse.ts index dca8f8f7..816d1eee 100644 --- a/packages/core/src/presets/dcUniverse.ts +++ b/packages/core/src/presets/dcUniverse.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { CacheKeyRequestOptions, Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { CacheKeyRequestOptions, Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; export class DcUniversePreset extends Preset { // dc-batman-animations%2C @@ -157,3 +157,5 @@ export class DcUniversePreset extends Preset { return cacheKey; } } + + diff --git a/packages/core/src/presets/debridio.ts b/packages/core/src/presets/debridio.ts index 6430e78c..fe00f17f 100644 --- a/packages/core/src/presets/debridio.ts +++ b/packages/core/src/presets/debridio.ts @@ -1,4 +1,4 @@ -import { Option } from '../db'; +import { Option } from '../db/index.js'; export const debridioSocialOption: Option = { id: 'socials', @@ -17,3 +17,5 @@ export const debridioApiKeyOption: Option = { }; export const debridioLogo = 'https://cdn.lb.debridio.com/site/logo.png'; + + diff --git a/packages/core/src/presets/debridioScraper.ts b/packages/core/src/presets/debridioScraper.ts index 0cd089c2..73aa94df 100644 --- a/packages/core/src/presets/debridioScraper.ts +++ b/packages/core/src/presets/debridioScraper.ts @@ -1,13 +1,13 @@ -import { Addon, Option, UserData, Resource, Stream } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, SERVICE_DETAILS } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; +import { Addon, Option, UserData, Resource, Stream } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, SERVICE_DETAILS } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; import { debridioSocialOption, debridioLogo, debridioApiKeyOption, -} from './debridio'; +} from './debridio.js'; export class DebridioPreset extends Preset { static override get METADATA() { @@ -151,3 +151,5 @@ export class DebridioPreset extends Preset { return `${url}${configString ? '/' + configString : ''}/manifest.json`; } } + + diff --git a/packages/core/src/presets/debridioTmdb.ts b/packages/core/src/presets/debridioTmdb.ts index 0a838a08..d0865773 100644 --- a/packages/core/src/presets/debridioTmdb.ts +++ b/packages/core/src/presets/debridioTmdb.ts @@ -1,11 +1,11 @@ -import { Addon, Option, UserData } from '../db'; -import { CacheKeyRequestOptions, Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { CacheKeyRequestOptions, Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; import { debridioSocialOption, debridioApiKeyOption, debridioLogo, -} from './debridio'; +} from './debridio.js'; export class DebridioTmdbPreset extends Preset { static override get METADATA() { diff --git a/packages/core/src/presets/debridioTv.ts b/packages/core/src/presets/debridioTv.ts index 89ae999a..df0d5add 100644 --- a/packages/core/src/presets/debridioTv.ts +++ b/packages/core/src/presets/debridioTv.ts @@ -5,15 +5,15 @@ import { ParsedStream, Stream, UserData, -} from '../db'; -import { CacheKeyRequestOptions, Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; +} from '../db/index.js'; +import { CacheKeyRequestOptions, Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; import { debridioSocialOption, debridioApiKeyOption, debridioLogo, -} from './debridio'; -import { FileParser, StreamParser } from '../parser'; +} from './debridio.js'; +import { FileParser, StreamParser } from '../parser/index.js'; class DebridioTvStreamParser extends StreamParser { protected override getParsedFile( diff --git a/packages/core/src/presets/debridioTvdb.ts b/packages/core/src/presets/debridioTvdb.ts index 14afbc5e..a836e096 100644 --- a/packages/core/src/presets/debridioTvdb.ts +++ b/packages/core/src/presets/debridioTvdb.ts @@ -1,11 +1,11 @@ -import { Addon, Option, UserData } from '../db'; -import { CacheKeyRequestOptions, Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { CacheKeyRequestOptions, Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; import { debridioSocialOption, debridioApiKeyOption, debridioLogo, -} from './debridio'; +} from './debridio.js'; export class DebridioTvdbPreset extends Preset { static override get METADATA() { diff --git a/packages/core/src/presets/debridioWatchtower.ts b/packages/core/src/presets/debridioWatchtower.ts index 817f49d9..6c337dc0 100644 --- a/packages/core/src/presets/debridioWatchtower.ts +++ b/packages/core/src/presets/debridioWatchtower.ts @@ -1,12 +1,12 @@ -import { Addon, Option, ParsedStream, Stream, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; -import { FileParser, StreamParser } from '../parser'; +import { Addon, Option, ParsedStream, Stream, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; +import { FileParser, StreamParser } from '../parser/index.js'; import { debridioSocialOption, debridioApiKeyOption, debridioLogo, -} from './debridio'; +} from './debridio.js'; class DebridioWatchtowerStreamParser extends StreamParser { override parse(stream: Stream): ParsedStream | { skip: true } { diff --git a/packages/core/src/presets/dmmCast.ts b/packages/core/src/presets/dmmCast.ts index 0b8706d9..7ba8dd1f 100644 --- a/packages/core/src/presets/dmmCast.ts +++ b/packages/core/src/presets/dmmCast.ts @@ -5,10 +5,10 @@ import { ParsedStream, Stream, AIOStream, -} from '../db'; -import { Preset, baseOptions } from './preset'; -import { constants, Env, RESOURCES } from '../utils'; -import { StreamParser } from '../parser'; +} from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { constants, Env, RESOURCES } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; class DMMCastStreamParser extends StreamParser { protected override getFilename( @@ -153,3 +153,5 @@ export class DMMCastPreset extends Preset { }; } } + + diff --git a/packages/core/src/presets/doctorWhoUniverse.ts b/packages/core/src/presets/doctorWhoUniverse.ts index 46441190..0dff60bd 100644 --- a/packages/core/src/presets/doctorWhoUniverse.ts +++ b/packages/core/src/presets/doctorWhoUniverse.ts @@ -1,9 +1,9 @@ // stremio://new-who.onrender.com/manifest.json -import { Addon, Option, ParsedStream, Stream, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; -import { StreamParser } from '../parser'; +import { Addon, Option, ParsedStream, Stream, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; class DoctorWhoUniverseStreamParser extends StreamParser { protected override getMessage( @@ -92,3 +92,5 @@ export class DoctorWhoUniversePreset extends Preset { }; } } + + diff --git a/packages/core/src/presets/easynews.ts b/packages/core/src/presets/easynews.ts index 8584e9b7..840c3dcf 100644 --- a/packages/core/src/presets/easynews.ts +++ b/packages/core/src/presets/easynews.ts @@ -1,5 +1,5 @@ -import { baseOptions, Preset } from './preset'; -import { constants, Env } from '../utils'; +import { baseOptions, Preset } from './preset.js'; +import { constants, Env } from '../utils/index.js'; import { PresetMetadata, Option, @@ -7,8 +7,8 @@ import { UserData, ParsedStream, Stream, -} from '../db'; -import { StreamParser } from '../parser'; +} from '../db/index.js'; +import { StreamParser } from '../parser/index.js'; export class EasynewsParser extends StreamParser { protected override getStreamType( @@ -115,3 +115,5 @@ export class EasynewsPreset extends Preset { return `${url}/${this.generateConfig(easynewsCredentials, options)}/manifest.json`; } } + + diff --git a/packages/core/src/presets/easynewsPlus.ts b/packages/core/src/presets/easynewsPlus.ts index 0f1c404a..5730f796 100644 --- a/packages/core/src/presets/easynewsPlus.ts +++ b/packages/core/src/presets/easynewsPlus.ts @@ -1,7 +1,7 @@ -import { PresetMetadata } from '../db'; -import { EasynewsPreset } from './easynews'; -import { constants, Env } from '../utils'; -import { baseOptions } from './preset'; +import { PresetMetadata } from '../db/index.js'; +import { EasynewsPreset } from './easynews.js'; +import { constants, Env } from '../utils/index.js'; +import { baseOptions } from './preset.js'; export class EasynewsPlusPreset extends EasynewsPreset { static override get METADATA(): PresetMetadata { diff --git a/packages/core/src/presets/easynewsPlusPlus.ts b/packages/core/src/presets/easynewsPlusPlus.ts index 41a80a81..3aaeb2b5 100644 --- a/packages/core/src/presets/easynewsPlusPlus.ts +++ b/packages/core/src/presets/easynewsPlusPlus.ts @@ -1,8 +1,8 @@ -import { ParsedStream, PresetMetadata, Stream } from '../db'; -import { EasynewsPreset, EasynewsParser } from './easynews'; -import { constants, Env } from '../utils'; -import { baseOptions } from './preset'; -import { StreamParser } from '../parser'; +import { ParsedStream, PresetMetadata, Stream } from '../db/index.js'; +import { EasynewsPreset, EasynewsParser } from './easynews.js'; +import { constants, Env } from '../utils/index.js'; +import { baseOptions } from './preset.js'; +import { StreamParser } from '../parser/index.js'; class EasynewsPlusPlusParser extends EasynewsParser { protected override get ageRegex(): RegExp { diff --git a/packages/core/src/presets/fkstream.ts b/packages/core/src/presets/fkstream.ts index 9df28d8b..25a93be7 100644 --- a/packages/core/src/presets/fkstream.ts +++ b/packages/core/src/presets/fkstream.ts @@ -1,9 +1,9 @@ // stremio://new-who.onrender.com/manifest.json -import { Addon, Option, ParsedStream, Stream, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { constants, Env, ServiceId } from '../utils'; -import { StremThruPreset } from './stremthru'; +import { Addon, Option, ParsedStream, Stream, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { constants, Env, ServiceId } from '../utils/index.js'; +import { StremThruPreset } from './stremthru.js'; export class FKStreamPreset extends StremThruPreset { static override get METADATA() { diff --git a/packages/core/src/presets/gdrive.ts b/packages/core/src/presets/gdrive.ts index 3ea5cccc..b029d60e 100644 --- a/packages/core/src/presets/gdrive.ts +++ b/packages/core/src/presets/gdrive.ts @@ -1,5 +1,5 @@ -import { baseOptions, Preset } from './preset'; -import { constants, Env } from '../utils'; +import { baseOptions, Preset } from './preset.js'; +import { constants, Env } from '../utils/index.js'; import { PresetMetadata, Option, @@ -7,10 +7,10 @@ import { UserData, ParsedStream, Stream, -} from '../db'; -import { StreamParser } from '../parser'; -import { GDriveAPI } from '../builtins/gdrive'; -import { GoogleOAuth } from '../builtins/gdrive/api'; +} from '../db/index.js'; +import { StreamParser } from '../parser/index.js'; +import { GDriveAPI } from '../builtins/gdrive/index.js'; +import { GoogleOAuth } from '../builtins/gdrive/api.js'; export class GDriveParser extends StreamParser { protected override raiseErrorIfNecessary( diff --git a/packages/core/src/presets/index.ts b/packages/core/src/presets/index.ts index e41c246d..570d1857 100644 --- a/packages/core/src/presets/index.ts +++ b/packages/core/src/presets/index.ts @@ -1,2 +1,4 @@ -export * from './preset'; -export * from './presetManager'; +export * from './preset.js'; +export * from './presetManager.js'; + + diff --git a/packages/core/src/presets/jackettio.ts b/packages/core/src/presets/jackettio.ts index 38a65273..f310a2a1 100644 --- a/packages/core/src/presets/jackettio.ts +++ b/packages/core/src/presets/jackettio.ts @@ -1,9 +1,9 @@ -import { Addon, Option, UserData, Resource } from '../db'; -import { baseOptions, Preset } from './preset'; -import { Env } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; -import { StremThruPreset } from './stremthru'; +import { Addon, Option, UserData, Resource } from '../db/index.js'; +import { baseOptions, Preset } from './preset.js'; +import { Env } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; +import { StremThruPreset } from './stremthru.js'; class JackettioStreamParser extends StreamParser { override applyUrlModifications(url: string | undefined): string | undefined { @@ -195,3 +195,5 @@ export class JackettioPreset extends StremThruPreset { return `${url}${configString ? '/' + configString : ''}/manifest.json`; } } + + diff --git a/packages/core/src/presets/marvel.ts b/packages/core/src/presets/marvel.ts index 549bf3eb..aaf5be10 100644 --- a/packages/core/src/presets/marvel.ts +++ b/packages/core/src/presets/marvel.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { CacheKeyRequestOptions, Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { CacheKeyRequestOptions, Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; export class MarvelPreset extends Preset { private static catalogs = [ @@ -133,3 +133,5 @@ export class MarvelPreset extends Preset { return cacheKey; } } + + diff --git a/packages/core/src/presets/mediafusion.ts b/packages/core/src/presets/mediafusion.ts index cfd08e42..81486647 100644 --- a/packages/core/src/presets/mediafusion.ts +++ b/packages/core/src/presets/mediafusion.ts @@ -1,8 +1,15 @@ -import { Addon, Option, UserData, Resource, Stream, ParsedStream } from '../db'; -import { baseOptions, Preset } from './preset'; -import { createLogger, Env, getSimpleTextHash } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; +import { + Addon, + Option, + UserData, + Resource, + Stream, + ParsedStream, +} from '../db/index.js'; +import { baseOptions, Preset } from './preset.js'; +import { createLogger, Env, getSimpleTextHash } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; const logger = createLogger('core'); @@ -517,3 +524,5 @@ export class MediaFusionPreset extends Preset { return encodedUserData; } } + + diff --git a/packages/core/src/presets/moreLikeThis.ts b/packages/core/src/presets/moreLikeThis.ts index e606fd78..3f58c6ba 100644 --- a/packages/core/src/presets/moreLikeThis.ts +++ b/packages/core/src/presets/moreLikeThis.ts @@ -1,13 +1,13 @@ -import { Addon, Option, ParsedStream, Stream, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; +import { Addon, Option, ParsedStream, Stream, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; import { Cache, constants, Env, getSimpleTextHash, makeRequest, -} from '../utils'; -import { StreamParser } from '../parser'; +} from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; const moreLikeThisManifests = Cache.getInstance( 'moreLikeThisManifests' @@ -504,3 +504,5 @@ export class MoreLikeThisPreset extends Preset { } } } + + diff --git a/packages/core/src/presets/newznab.ts b/packages/core/src/presets/newznab.ts index 37960c53..e09c2640 100644 --- a/packages/core/src/presets/newznab.ts +++ b/packages/core/src/presets/newznab.ts @@ -1,7 +1,7 @@ -import { Addon, Option, Stream, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, RESOURCES, ServiceId, constants } from '../utils'; -import { BuiltinAddonPreset } from './builtin'; +import { Addon, Option, Stream, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, RESOURCES, ServiceId, constants } from '../utils/index.js'; +import { BuiltinAddonPreset } from './builtin.js'; export class NewznabPreset extends BuiltinAddonPreset { static override get METADATA() { @@ -146,3 +146,5 @@ export class NewznabPreset extends BuiltinAddonPreset { return `${this.METADATA.URL}/${configString}/manifest.json`; } } + + diff --git a/packages/core/src/presets/nuviostreams.ts b/packages/core/src/presets/nuviostreams.ts index f25daa67..3f0131c8 100644 --- a/packages/core/src/presets/nuviostreams.ts +++ b/packages/core/src/presets/nuviostreams.ts @@ -1,8 +1,8 @@ -import { Addon, Option, UserData, Resource, Stream, ParsedStream } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, SERVICE_DETAILS } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { FileParser, StreamParser } from '../parser'; +import { Addon, Option, UserData, Resource, Stream, ParsedStream } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, SERVICE_DETAILS } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { FileParser, StreamParser } from '../parser/index.js'; class NuvioStreamsStreamParser extends StreamParser { parse(stream: Stream): ParsedStream { @@ -273,3 +273,5 @@ export class NuvioStreamsPreset extends Preset { return `${url}${configString ? '/' + configString : ''}/manifest.json`; } } + + diff --git a/packages/core/src/presets/opensubtitles-v3-plus.ts b/packages/core/src/presets/opensubtitles-v3-plus.ts index 45168d0c..873f4c04 100644 --- a/packages/core/src/presets/opensubtitles-v3-plus.ts +++ b/packages/core/src/presets/opensubtitles-v3-plus.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, RESOURCES, SUBTITLES_RESOURCE } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, RESOURCES, SUBTITLES_RESOURCE } from '../utils/index.js'; export class OpenSubtitlesV3PlusPreset extends Preset { static override get METADATA() { @@ -220,3 +220,5 @@ export class OpenSubtitlesV3PlusPreset extends Preset { return `${host}/${config}/manifest.json`; } } + + diff --git a/packages/core/src/presets/opensubtitles.ts b/packages/core/src/presets/opensubtitles.ts index 2b2b0776..32c66ca2 100644 --- a/packages/core/src/presets/opensubtitles.ts +++ b/packages/core/src/presets/opensubtitles.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, RESOURCES, SUBTITLES_RESOURCE } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, RESOURCES, SUBTITLES_RESOURCE } from '../utils/index.js'; export class OpenSubtitlesPreset extends Preset { static override get METADATA() { @@ -58,3 +58,5 @@ export class OpenSubtitlesPreset extends Preset { }; } } + + diff --git a/packages/core/src/presets/orion.ts b/packages/core/src/presets/orion.ts index 2725f938..59a53823 100644 --- a/packages/core/src/presets/orion.ts +++ b/packages/core/src/presets/orion.ts @@ -1,8 +1,8 @@ -import { Addon, Option, UserData, Resource, ParsedStream, Stream } from '../db'; -import { baseOptions, Preset } from './preset'; -import { Env } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; +import { Addon, Option, UserData, Resource, ParsedStream, Stream } from '../db/index.js'; +import { baseOptions, Preset } from './preset.js'; +import { Env } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; class OrionStreamParser extends StreamParser { protected override raiseErrorIfNecessary( @@ -188,3 +188,5 @@ export class OrionPreset extends Preset { return `${url}${configString ? '/' + configString : ''}/manifest.json`; } } + + diff --git a/packages/core/src/presets/peerflix.ts b/packages/core/src/presets/peerflix.ts index 0a3991ff..25c8a0b8 100644 --- a/packages/core/src/presets/peerflix.ts +++ b/packages/core/src/presets/peerflix.ts @@ -1,8 +1,8 @@ -import { Addon, Option, UserData, Resource, Stream } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, SERVICE_DETAILS } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; +import { Addon, Option, UserData, Resource, Stream } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, SERVICE_DETAILS } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; export class PeerflixPreset extends Preset { static override get METADATA() { @@ -181,3 +181,5 @@ export class PeerflixPreset extends Preset { return `${url}${configString ? '/' + configString : ''}/manifest.json`; } } + + diff --git a/packages/core/src/presets/preset.ts b/packages/core/src/presets/preset.ts index 225c3b36..cb8f1855 100644 --- a/packages/core/src/presets/preset.ts +++ b/packages/core/src/presets/preset.ts @@ -6,9 +6,9 @@ import { UserData, PresetMetadata, Addon, -} from '../db'; -import { StreamParser } from '../parser'; -import { Env, ServiceId, constants } from '../utils'; +} from '../db/index.js'; +import { StreamParser } from '../parser/index.js'; +import { Env, ServiceId, constants } from '../utils/index.js'; /** * * What modifications are needed for each preset: @@ -274,3 +274,5 @@ export abstract class Preset { return apiKey; } } + + diff --git a/packages/core/src/presets/presetManager.ts b/packages/core/src/presets/presetManager.ts index 22d4e269..fb56be6f 100644 --- a/packages/core/src/presets/presetManager.ts +++ b/packages/core/src/presets/presetManager.ts @@ -1,64 +1,64 @@ -import { PresetMetadata, PresetMinimalMetadata } from '../db'; -import { CometPreset } from './comet'; -import { CustomPreset } from './custom'; -import { MediaFusionPreset } from './mediafusion'; -import { StremthruStorePreset } from './stremthruStore'; -import { TorrentioPreset } from './torrentio'; -import { TorboxAddonPreset } from './torbox'; -import { EasynewsPreset } from './easynews'; -import { EasynewsPlusPreset } from './easynewsPlus'; -import { EasynewsPlusPlusPreset } from './easynewsPlusPlus'; -import { StremthruTorzPreset } from './stremthruTorz'; -import { DebridioPreset } from './debridioScraper'; -import { AIOStreamsPreset } from './aiostreams'; -import { OpenSubtitlesPreset } from './opensubtitles'; -import { PeerflixPreset } from './peerflix'; -import { DMMCastPreset } from './dmmCast'; -import { MarvelPreset } from './marvel'; -import { JackettioPreset } from './jackettio'; -import { OrionPreset } from './orion'; -import { StreamFusionPreset } from './streamfusion'; -import { AnimeKitsuPreset } from './animeKitsu'; -import { NuvioStreamsPreset } from './nuviostreams'; -import { RpdbCatalogsPreset } from './rpdbCatalogs'; -import { TmdbCollectionsPreset } from './tmdbCollections'; -import { DebridioWatchtowerPreset } from './debridioWatchtower'; -import { DebridioTmdbPreset } from './debridioTmdb'; -import { StarWarsUniversePreset } from './starWarsUniverse'; -import { DebridioTvdbPreset } from './debridioTvdb'; -import { DcUniversePreset } from './dcUniverse'; -import { DebridioTvPreset } from './debridioTv'; -import { TorrentCatalogsPreset } from './torrentCatalogs'; -import { StreamingCatalogsPreset } from './streamingCatalogs'; -import { AnimeCatalogsPreset } from './animeCatalogs'; -import { DoctorWhoUniversePreset } from './doctorWhoUniverse'; -import { WebStreamrPreset } from './webstreamr'; -import { TMDBAddonPreset } from './tmdb'; -import { TorrentsDbPreset } from './torrentsDb'; -import { USATVPreset } from './usaTv'; -import { ArgentinaTVPreset } from './argentinaTv'; -import { OpenSubtitlesV3PlusPreset } from './opensubtitles-v3-plus'; -import { SubSourcePreset } from './subsource'; -import { SubDLPreset } from './subdl'; -import { AISearchPreset } from './aiSearch'; -import { FKStreamPreset } from './fkstream'; -import { AIOSubtitlePreset } from './aiosubtitle'; -import { SubHeroPreset } from './subhero'; -import { StreamAsiaPreset } from './streamasia'; -import { MoreLikeThisPreset } from './moreLikeThis'; -import { GDriveAPI } from '../builtins/gdrive'; -import { GDrivePreset } from './gdrive'; -import { ContentDeepDivePreset } from './contentDeepDive'; -import { AICompanionPreset } from './aiCompanion'; -import { GoogleOAuth } from '../builtins/gdrive/api'; -import { TorBoxSearchPreset } from './torboxSearch'; -import { TorznabPreset } from './torznab'; -import { AStreamPreset } from './aStream'; -import { Env } from '../utils/env'; -import { ZileanPreset } from './zilean'; -import { AnimeToshoPreset } from './animetosho'; -import { NewznabPreset } from './newznab'; -import { ProwlarrPreset } from './prowlarr'; +import { PresetMetadata, PresetMinimalMetadata } from '../db/index.js'; +import { CometPreset } from './comet.js'; +import { CustomPreset } from './custom.js'; +import { MediaFusionPreset } from './mediafusion.js'; +import { StremthruStorePreset } from './stremthruStore.js'; +import { TorrentioPreset } from './torrentio.js'; +import { TorboxAddonPreset } from './torbox.js'; +import { EasynewsPreset } from './easynews.js'; +import { EasynewsPlusPreset } from './easynewsPlus.js'; +import { EasynewsPlusPlusPreset } from './easynewsPlusPlus.js'; +import { StremthruTorzPreset } from './stremthruTorz.js'; +import { DebridioPreset } from './debridioScraper.js'; +import { AIOStreamsPreset } from './aiostreams.js'; +import { OpenSubtitlesPreset } from './opensubtitles.js'; +import { PeerflixPreset } from './peerflix.js'; +import { DMMCastPreset } from './dmmCast.js'; +import { MarvelPreset } from './marvel.js'; +import { JackettioPreset } from './jackettio.js'; +import { OrionPreset } from './orion.js'; +import { StreamFusionPreset } from './streamfusion.js'; +import { AnimeKitsuPreset } from './animeKitsu.js'; +import { NuvioStreamsPreset } from './nuviostreams.js'; +import { RpdbCatalogsPreset } from './rpdbCatalogs.js'; +import { TmdbCollectionsPreset } from './tmdbCollections.js'; +import { DebridioWatchtowerPreset } from './debridioWatchtower.js'; +import { DebridioTmdbPreset } from './debridioTmdb.js'; +import { StarWarsUniversePreset } from './starWarsUniverse.js'; +import { DebridioTvdbPreset } from './debridioTvdb.js'; +import { DcUniversePreset } from './dcUniverse.js'; +import { DebridioTvPreset } from './debridioTv.js'; +import { TorrentCatalogsPreset } from './torrentCatalogs.js'; +import { StreamingCatalogsPreset } from './streamingCatalogs.js'; +import { AnimeCatalogsPreset } from './animeCatalogs.js'; +import { DoctorWhoUniversePreset } from './doctorWhoUniverse.js'; +import { WebStreamrPreset } from './webstreamr.js'; +import { TMDBAddonPreset } from './tmdb.js'; +import { TorrentsDbPreset } from './torrentsDb.js'; +import { USATVPreset } from './usaTv.js'; +import { ArgentinaTVPreset } from './argentinaTv.js'; +import { OpenSubtitlesV3PlusPreset } from './opensubtitles-v3-plus.js'; +import { SubSourcePreset } from './subsource.js'; +import { SubDLPreset } from './subdl.js'; +import { AISearchPreset } from './aiSearch.js'; +import { FKStreamPreset } from './fkstream.js'; +import { AIOSubtitlePreset } from './aiosubtitle.js'; +import { SubHeroPreset } from './subhero.js'; +import { StreamAsiaPreset } from './streamasia.js'; +import { MoreLikeThisPreset } from './moreLikeThis.js'; +import { GDriveAPI } from '../builtins/gdrive/index.js'; +import { GDrivePreset } from './gdrive.js'; +import { ContentDeepDivePreset } from './contentDeepDive.js'; +import { AICompanionPreset } from './aiCompanion.js'; +import { GoogleOAuth } from '../builtins/gdrive/api.js'; +import { TorBoxSearchPreset } from './torboxSearch.js'; +import { TorznabPreset } from './torznab.js'; +import { AStreamPreset } from './aStream.js'; +import { Env } from '../utils/env.js'; +import { ZileanPreset } from './zilean.js'; +import { AnimeToshoPreset } from './animetosho.js'; +import { NewznabPreset } from './newznab.js'; +import { ProwlarrPreset } from './prowlarr.js'; let PRESET_LIST: string[] = [ 'custom', @@ -261,3 +261,5 @@ export class PresetManager { } } } + + diff --git a/packages/core/src/presets/prowlarr.ts b/packages/core/src/presets/prowlarr.ts index 8c481e09..e3079f39 100644 --- a/packages/core/src/presets/prowlarr.ts +++ b/packages/core/src/presets/prowlarr.ts @@ -1,8 +1,8 @@ -import { Addon, Option, Stream, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, RESOURCES, ServiceId, constants } from '../utils'; -import { StremThruPreset } from './stremthru'; -import { BuiltinAddonPreset } from './builtin'; +import { Addon, Option, Stream, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, RESOURCES, ServiceId, constants } from '../utils/index.js'; +import { StremThruPreset } from './stremthru.js'; +import { BuiltinAddonPreset } from './builtin.js'; export class ProwlarrPreset extends BuiltinAddonPreset { static override get METADATA() { @@ -133,3 +133,5 @@ export class ProwlarrPreset extends BuiltinAddonPreset { return `${this.METADATA.URL}/${configString}/manifest.json`; } } + + diff --git a/packages/core/src/presets/rpdbCatalogs.ts b/packages/core/src/presets/rpdbCatalogs.ts index 62936bb7..37a2b96c 100644 --- a/packages/core/src/presets/rpdbCatalogs.ts +++ b/packages/core/src/presets/rpdbCatalogs.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { CacheKeyRequestOptions, Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { CacheKeyRequestOptions, Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; export class RpdbCatalogsPreset extends Preset { private static catalogs = [ @@ -109,3 +109,5 @@ export class RpdbCatalogsPreset extends Preset { return cacheKey; } } + + diff --git a/packages/core/src/presets/starWarsUniverse.ts b/packages/core/src/presets/starWarsUniverse.ts index 41d0453d..7b482bea 100644 --- a/packages/core/src/presets/starWarsUniverse.ts +++ b/packages/core/src/presets/starWarsUniverse.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { CacheKeyRequestOptions, Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { CacheKeyRequestOptions, Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; export class StarWarsUniversePreset extends Preset { private static catalogs = [ @@ -161,3 +161,5 @@ export class StarWarsUniversePreset extends Preset { return cacheKey; } } + + diff --git a/packages/core/src/presets/streamasia.ts b/packages/core/src/presets/streamasia.ts index 9c2b2886..db09e493 100644 --- a/packages/core/src/presets/streamasia.ts +++ b/packages/core/src/presets/streamasia.ts @@ -1,8 +1,8 @@ -import { Addon, Option, UserData, Resource, Stream, ParsedStream } from '../db'; -import { baseOptions, Preset } from './preset'; -import { createLogger, Env } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; +import { Addon, Option, UserData, Resource, Stream, ParsedStream } from '../db/index.js'; +import { baseOptions, Preset } from './preset.js'; +import { createLogger, Env } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; const logger = createLogger('core'); @@ -445,3 +445,5 @@ there is no need to provide these details here. return encodedUserData; } } + + diff --git a/packages/core/src/presets/streamfusion.ts b/packages/core/src/presets/streamfusion.ts index dc7c5983..3f892000 100644 --- a/packages/core/src/presets/streamfusion.ts +++ b/packages/core/src/presets/streamfusion.ts @@ -1,7 +1,7 @@ -import { Addon, Option, UserData, Resource } from '../db'; -import { baseOptions, Preset } from './preset'; -import { Env } from '../utils'; -import { constants, ServiceId } from '../utils'; +import { Addon, Option, UserData, Resource } from '../db/index.js'; +import { baseOptions, Preset } from './preset.js'; +import { Env } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; export class StreamFusionPreset extends Preset { static override get METADATA() { @@ -275,3 +275,5 @@ export class StreamFusionPreset extends Preset { return `${url}${configString ? '/' + configString : ''}/manifest.json`; } } + + diff --git a/packages/core/src/presets/streamingCatalogs.ts b/packages/core/src/presets/streamingCatalogs.ts index 2bb4f6c7..bf1ab868 100644 --- a/packages/core/src/presets/streamingCatalogs.ts +++ b/packages/core/src/presets/streamingCatalogs.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { CacheKeyRequestOptions, Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { CacheKeyRequestOptions, Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; export class StreamingCatalogsPreset extends Preset { // amp,atp,hbm,sst,vil,cpd,nlz,blv,zee,hay,clv,gop,hst,cru,mgl,cts,hlu,pmp,pcp,dnp,nfk,nfx @@ -220,3 +220,5 @@ export class StreamingCatalogsPreset extends Preset { return cacheKey; } } + + diff --git a/packages/core/src/presets/stremthru.ts b/packages/core/src/presets/stremthru.ts index 2460deea..b13e4072 100644 --- a/packages/core/src/presets/stremthru.ts +++ b/packages/core/src/presets/stremthru.ts @@ -1,7 +1,7 @@ -import { Option, ParsedStream, Stream, UserData } from '../db'; -import { StreamParser } from '../parser'; -import { constants, ServiceId } from '../utils'; -import { Preset } from './preset'; +import { Option, ParsedStream, Stream, UserData } from '../db/index.js'; +import { StreamParser } from '../parser/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { Preset } from './preset.js'; export const stremthruSpecialCases: Partial< Record any> @@ -76,3 +76,5 @@ export class StremThruPreset extends Preset { export type StremThruServiceId = (typeof StremThruPreset.supportedServices)[number]; + + diff --git a/packages/core/src/presets/stremthruStore.ts b/packages/core/src/presets/stremthruStore.ts index a7a0ede8..c039e502 100644 --- a/packages/core/src/presets/stremthruStore.ts +++ b/packages/core/src/presets/stremthruStore.ts @@ -1,9 +1,16 @@ -import { Addon, Option, UserData, Resource, Stream, ParsedStream } from '../db'; -import { baseOptions, Preset } from './preset'; -import { Env } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; -import { StremThruPreset, StremThruStreamParser } from './stremthru'; +import { + Addon, + Option, + UserData, + Resource, + Stream, + ParsedStream, +} from '../db/index.js'; +import { baseOptions, Preset } from './preset.js'; +import { Env } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; +import { StremThruPreset, StremThruStreamParser } from './stremthru.js'; class StremthruStoreStreamParser extends StremThruStreamParser { protected override applyUrlModifications( @@ -180,3 +187,5 @@ export class StremthruStorePreset extends StremThruPreset { return `${url}${configString ? '/' + configString : ''}/manifest.json`; } } + + diff --git a/packages/core/src/presets/stremthruTorz.ts b/packages/core/src/presets/stremthruTorz.ts index 645d5216..b9502903 100644 --- a/packages/core/src/presets/stremthruTorz.ts +++ b/packages/core/src/presets/stremthruTorz.ts @@ -1,9 +1,16 @@ -import { Addon, Option, UserData, Resource, ParsedStream, Stream } from '../db'; -import { baseOptions, Preset } from './preset'; -import { Env } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; -import { StremThruPreset, StremThruStreamParser } from './stremthru'; +import { + Addon, + Option, + UserData, + Resource, + ParsedStream, + Stream, +} from '../db/index.js'; +import { baseOptions, Preset } from './preset.js'; +import { Env } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; +import { StremThruPreset, StremThruStreamParser } from './stremthru.js'; class StremthruTorzStreamParser extends StremThruStreamParser { protected override applyUrlModifications( @@ -263,3 +270,5 @@ export class StremthruTorzPreset extends StremThruPreset { return this.getServiceCredential(serviceId, userData); } } + + diff --git a/packages/core/src/presets/subdl.ts b/packages/core/src/presets/subdl.ts index ffce1350..591f64d7 100644 --- a/packages/core/src/presets/subdl.ts +++ b/packages/core/src/presets/subdl.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, RESOURCES, SUBTITLES_RESOURCE } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, RESOURCES, SUBTITLES_RESOURCE } from '../utils/index.js'; export class SubDLPreset extends Preset { static override get METADATA() { @@ -184,3 +184,5 @@ export class SubDLPreset extends Preset { return `${host}/${config}/manifest.json`; } } + + diff --git a/packages/core/src/presets/subhero.ts b/packages/core/src/presets/subhero.ts index 9dfcb415..60406c10 100644 --- a/packages/core/src/presets/subhero.ts +++ b/packages/core/src/presets/subhero.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, FULL_LANGUAGE_MAPPING, SUBTITLES_RESOURCE } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, FULL_LANGUAGE_MAPPING, SUBTITLES_RESOURCE } from '../utils/index.js'; export class SubHeroPreset extends Preset { static override get METADATA() { @@ -157,3 +157,5 @@ export class SubHeroPreset extends Preset { return `${host}/${config}/manifest.json`; } } + + diff --git a/packages/core/src/presets/subsource.ts b/packages/core/src/presets/subsource.ts index a68ef2a6..c125656b 100644 --- a/packages/core/src/presets/subsource.ts +++ b/packages/core/src/presets/subsource.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, RESOURCES, SUBTITLES_RESOURCE } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, RESOURCES, SUBTITLES_RESOURCE } from '../utils/index.js'; export class SubSourcePreset extends Preset { static override get METADATA() { @@ -224,3 +224,5 @@ export class SubSourcePreset extends Preset { return `${host}/${config}/manifest.json`; } } + + diff --git a/packages/core/src/presets/tmdb.ts b/packages/core/src/presets/tmdb.ts index bfdadb5a..faf66f0d 100644 --- a/packages/core/src/presets/tmdb.ts +++ b/packages/core/src/presets/tmdb.ts @@ -1,6 +1,6 @@ -import { CacheKeyRequestOptions, Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; -import { Addon, Option, UserData } from '../db'; +import { CacheKeyRequestOptions, Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; +import { Addon, Option, UserData } from '../db/index.js'; export class TMDBAddonPreset extends Preset { static override get METADATA() { @@ -391,3 +391,5 @@ export class TMDBAddonPreset extends Preset { return cacheKey; } } + + diff --git a/packages/core/src/presets/tmdbCollections.ts b/packages/core/src/presets/tmdbCollections.ts index 64fa4ceb..d682400e 100644 --- a/packages/core/src/presets/tmdbCollections.ts +++ b/packages/core/src/presets/tmdbCollections.ts @@ -1,7 +1,7 @@ -import { Addon, Option, ParsedStream, Stream, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { constants, Env, FULL_LANGUAGE_MAPPING } from '../utils'; -import { StreamParser } from '../parser'; +import { Addon, Option, ParsedStream, Stream, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { constants, Env, FULL_LANGUAGE_MAPPING } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; class TmdbCollectionsStreamParser extends StreamParser { protected override getFilename( @@ -912,3 +912,5 @@ export class TmdbCollectionsPreset extends Preset { return `${url}/${config}/manifest.json`; } } + + diff --git a/packages/core/src/presets/torbox.ts b/packages/core/src/presets/torbox.ts index 0b34f6e0..13ea045a 100644 --- a/packages/core/src/presets/torbox.ts +++ b/packages/core/src/presets/torbox.ts @@ -1,9 +1,9 @@ -import { Addon, Option, UserData, Resource, ParsedStream } from '../db'; -import { baseOptions, Preset } from './preset'; -import { Env } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; -import { Stream } from '../db'; +import { Addon, Option, UserData, Resource, ParsedStream } from '../db/index.js'; +import { baseOptions, Preset } from './preset.js'; +import { Env } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; +import { Stream } from '../db/index.js'; class TorboxStreamParser extends StreamParser { override getSeeders( @@ -167,3 +167,5 @@ export class TorboxAddonPreset extends Preset { return `${url}/${torboxApiKey}/manifest.json`; } } + + diff --git a/packages/core/src/presets/torboxSearch.ts b/packages/core/src/presets/torboxSearch.ts index 0293e3b9..e4b2b5f2 100644 --- a/packages/core/src/presets/torboxSearch.ts +++ b/packages/core/src/presets/torboxSearch.ts @@ -1,9 +1,16 @@ -import { Addon, Option, UserData, Resource, Stream, ParsedStream } from '../db'; -import { baseOptions } from './preset'; -import { Env, SERVICE_DETAILS } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; -import { StremThruPreset } from './stremthru'; +import { + Addon, + Option, + UserData, + Resource, + Stream, + ParsedStream, +} from '../db/index.js'; +import { baseOptions } from './preset.js'; +import { Env, SERVICE_DETAILS } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; +import { StremThruPreset } from './stremthru.js'; export class TorboxSearchParser extends StreamParser { override getFolder(stream: Stream): string | undefined { diff --git a/packages/core/src/presets/torrentCatalogs.ts b/packages/core/src/presets/torrentCatalogs.ts index 7250f4ce..3c0890ce 100644 --- a/packages/core/src/presets/torrentCatalogs.ts +++ b/packages/core/src/presets/torrentCatalogs.ts @@ -1,6 +1,6 @@ -import { Addon, Option, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { constants, Env } from '../utils'; +import { Addon, Option, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { constants, Env } from '../utils/index.js'; export class TorrentCatalogsPreset extends Preset { static override get METADATA() { @@ -60,3 +60,5 @@ export class TorrentCatalogsPreset extends Preset { }; } } + + diff --git a/packages/core/src/presets/torrentio.ts b/packages/core/src/presets/torrentio.ts index a13e71a7..625d0489 100644 --- a/packages/core/src/presets/torrentio.ts +++ b/packages/core/src/presets/torrentio.ts @@ -1,8 +1,8 @@ -import { Addon, Option, UserData, Resource, Stream, ParsedStream } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, SERVICE_DETAILS } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; +import { Addon, Option, UserData, Resource, Stream, ParsedStream } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, SERVICE_DETAILS } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; export class TorrentioParser extends StreamParser { override getFolder(stream: Stream): string | undefined { @@ -310,3 +310,5 @@ export class TorrentioPreset extends Preset { return `${url}${configString ? '/' + configString : ''}/manifest.json`; } } + + diff --git a/packages/core/src/presets/torrentsDb.ts b/packages/core/src/presets/torrentsDb.ts index a38daf1e..9ef3cac5 100644 --- a/packages/core/src/presets/torrentsDb.ts +++ b/packages/core/src/presets/torrentsDb.ts @@ -1,8 +1,8 @@ -import { Addon, Option, UserData, Resource, Stream, ParsedStream } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, SERVICE_DETAILS } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { StreamParser } from '../parser'; +import { Addon, Option, UserData, Resource, Stream, ParsedStream } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, SERVICE_DETAILS } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { StreamParser } from '../parser/index.js'; export class TorrentsDbParser extends StreamParser { override getFolder(stream: Stream): string | undefined { @@ -332,3 +332,5 @@ export class TorrentsDbPreset extends Preset { return `${url}${configString ? '/' + configString : ''}/manifest.json`; } } + + diff --git a/packages/core/src/presets/torznab.ts b/packages/core/src/presets/torznab.ts index 0c519111..34be5f4e 100644 --- a/packages/core/src/presets/torznab.ts +++ b/packages/core/src/presets/torznab.ts @@ -1,8 +1,8 @@ -import { Addon, Option, Stream, UserData } from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, RESOURCES, ServiceId, constants } from '../utils'; -import { StremThruPreset } from './stremthru'; -import { BuiltinAddonPreset } from './builtin'; +import { Addon, Option, Stream, UserData } from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, RESOURCES, ServiceId, constants } from '../utils/index.js'; +import { StremThruPreset } from './stremthru.js'; +import { BuiltinAddonPreset } from './builtin.js'; export class TorznabPreset extends BuiltinAddonPreset { static override get METADATA() { @@ -162,3 +162,5 @@ export class TorznabPreset extends BuiltinAddonPreset { return `${this.METADATA.URL}/${configString}/manifest.json`; } } + + diff --git a/packages/core/src/presets/usaTv.ts b/packages/core/src/presets/usaTv.ts index 0c6be1d1..cb16a85f 100644 --- a/packages/core/src/presets/usaTv.ts +++ b/packages/core/src/presets/usaTv.ts @@ -5,10 +5,10 @@ import { ParsedFile, Stream, UserData, -} from '../db'; -import { Preset, baseOptions } from './preset'; -import { constants, Env, LIVE_STREAM_TYPE } from '../utils'; -import { FileParser, StreamParser } from '../parser'; +} from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { constants, Env, LIVE_STREAM_TYPE } from '../utils/index.js'; +import { FileParser, StreamParser } from '../parser/index.js'; class USATvStreamParser extends StreamParser { protected override getParsedFile( @@ -116,3 +116,5 @@ export class USATVPreset extends Preset { }; } } + + diff --git a/packages/core/src/presets/webstreamr.ts b/packages/core/src/presets/webstreamr.ts index 358fc144..2a7de2ad 100644 --- a/packages/core/src/presets/webstreamr.ts +++ b/packages/core/src/presets/webstreamr.ts @@ -8,11 +8,11 @@ import { PresetMinimalMetadata, PresetMetadata, ParsedFile, -} from '../db'; -import { Preset, baseOptions } from './preset'; -import { Env, SERVICE_DETAILS } from '../utils'; -import { constants, ServiceId } from '../utils'; -import { FileParser, StreamParser } from '../parser'; +} from '../db/index.js'; +import { Preset, baseOptions } from './preset.js'; +import { Env, SERVICE_DETAILS } from '../utils/index.js'; +import { constants, ServiceId } from '../utils/index.js'; +import { FileParser, StreamParser } from '../parser/index.js'; class WebStreamrStreamParser extends StreamParser { protected get indexerEmojis(): string[] { @@ -126,7 +126,8 @@ export class WebStreamrPreset extends Preset { value: 'en', }, { - label: '🇩🇪 German (Einschalten, KinoGer, MegaKino, MeineCloud, StreamKiste)', + label: + '🇩🇪 German (Einschalten, KinoGer, MegaKino, MeineCloud, StreamKiste)', value: 'de', }, { @@ -267,3 +268,5 @@ export class WebStreamrPreset extends Preset { return `${url}${config ? '/' + config : ''}/manifest.json`; } } + + diff --git a/packages/core/src/presets/zilean.ts b/packages/core/src/presets/zilean.ts index 872a1d77..c4839d10 100644 --- a/packages/core/src/presets/zilean.ts +++ b/packages/core/src/presets/zilean.ts @@ -1,8 +1,8 @@ -import { Option, UserData } from '../db'; -import { Env, constants } from '../utils'; -import { baseOptions } from './preset'; -import { StremThruPreset } from './stremthru'; -import { TorznabPreset } from './torznab'; +import { Option, UserData } from '../db/index.js'; +import { Env, constants } from '../utils/index.js'; +import { baseOptions } from './preset.js'; +import { StremThruPreset } from './stremthru.js'; +import { TorznabPreset } from './torznab.js'; export class ZileanPreset extends TorznabPreset { static override get METADATA() { @@ -75,3 +75,5 @@ export class ZileanPreset extends TorznabPreset { return `${Env.INTERNAL_URL}/builtins/torznab/${configString}/manifest.json`; } } + + diff --git a/packages/core/src/proxy/base.ts b/packages/core/src/proxy/base.ts index 551a57bb..cc952e93 100644 --- a/packages/core/src/proxy/base.ts +++ b/packages/core/src/proxy/base.ts @@ -1,5 +1,5 @@ -import { StreamProxyConfig } from '../db'; -import { Cache, createLogger, maskSensitiveInfo, Env } from '../utils'; +import { StreamProxyConfig } from '../db/schemas.js'; +import { Cache, createLogger, maskSensitiveInfo, Env } from '../utils/index.js'; const logger = createLogger('proxy'); const cache = Cache.getInstance('publicIp'); diff --git a/packages/core/src/proxy/index.ts b/packages/core/src/proxy/index.ts index 919b6741..a648074d 100644 --- a/packages/core/src/proxy/index.ts +++ b/packages/core/src/proxy/index.ts @@ -1,12 +1,12 @@ -export * from './base'; -export * from './mediaflow'; -export * from './stremthru'; +export * from './base.js'; +export * from './mediaflow.js'; +export * from './stremthru.js'; -import { constants } from '../utils'; -import { BaseProxy } from './base'; -import { MediaFlowProxy } from './mediaflow'; -import { StremThruProxy } from './stremthru'; -import { StreamProxyConfig } from '../db'; +import { constants } from '../utils/index.js'; +import { BaseProxy } from './base.js'; +import { MediaFlowProxy } from './mediaflow.js'; +import { StremThruProxy } from './stremthru.js'; +import { StreamProxyConfig } from '../db/schemas.js'; export function createProxy(config: StreamProxyConfig): BaseProxy { switch (config.id) { diff --git a/packages/core/src/proxy/mediaflow.ts b/packages/core/src/proxy/mediaflow.ts index 149dbb44..1347f913 100644 --- a/packages/core/src/proxy/mediaflow.ts +++ b/packages/core/src/proxy/mediaflow.ts @@ -1,5 +1,5 @@ -import { BaseProxy, ProxyStream } from './base'; -import { createLogger, maskSensitiveInfo, Env } from '../utils'; +import { BaseProxy, ProxyStream } from './base.js'; +import { createLogger, maskSensitiveInfo, Env } from '../utils/index.js'; import path from 'path'; const logger = createLogger('mediaflow'); diff --git a/packages/core/src/proxy/stremthru.ts b/packages/core/src/proxy/stremthru.ts index a66c3c57..ba9f249a 100644 --- a/packages/core/src/proxy/stremthru.ts +++ b/packages/core/src/proxy/stremthru.ts @@ -1,5 +1,5 @@ -import { BaseProxy, ProxyStream } from './base'; -import { createLogger, maskSensitiveInfo, Env } from '../utils'; +import { BaseProxy, ProxyStream } from './base.js'; +import { createLogger, maskSensitiveInfo, Env } from '../utils/index.js'; const logger = createLogger('stremthru'); diff --git a/packages/core/src/streams/deduplicator.ts b/packages/core/src/streams/deduplicator.ts index 61d9746c..52cac964 100644 --- a/packages/core/src/streams/deduplicator.ts +++ b/packages/core/src/streams/deduplicator.ts @@ -1,10 +1,10 @@ -import { ParsedStream, UserData } from '../db/schemas'; +import { ParsedStream, UserData } from '../db/schemas.js'; import { createLogger, getTimeTakenSincePoint, DSU, getSimpleTextHash, -} from '../utils'; +} from '../utils/index.js'; const logger = createLogger('deduplicator'); diff --git a/packages/core/src/streams/fetcher.ts b/packages/core/src/streams/fetcher.ts index 3c67cf35..827f5bcc 100644 --- a/packages/core/src/streams/fetcher.ts +++ b/packages/core/src/streams/fetcher.ts @@ -1,16 +1,16 @@ -import { Addon, ParsedStream, UserData } from '../db/schemas'; +import { Addon, ParsedStream, UserData } from '../db/schemas.js'; import { AnimeDatabase, constants, createLogger, + getAddonName, getTimeTakenSincePoint, -} from '../utils'; -import { Wrapper } from '../wrapper'; -import { GroupConditionEvaluator } from '../parser/streamExpression'; -import { getAddonName } from '../utils/general'; -import StreamFilter from './filterer'; -import StreamPrecompute from './precomputer'; -import StreamDeduplicator from './deduplicator'; +} from '../utils/index.js'; +import { Wrapper } from '../wrapper.js'; +import { GroupConditionEvaluator } from '../parser/streamExpression.js'; +import StreamFilter from './filterer.js'; +import StreamPrecompute from './precomputer.js'; +import StreamDeduplicator from './deduplicator.js'; const logger = createLogger('fetcher'); diff --git a/packages/core/src/streams/filterer.ts b/packages/core/src/streams/filterer.ts index cc9d7c4b..046d7ff3 100644 --- a/packages/core/src/streams/filterer.ts +++ b/packages/core/src/streams/filterer.ts @@ -1,4 +1,4 @@ -import { ParsedStream, UserData } from '../db/schemas'; +import { ParsedStream, UserData } from '../db/schemas.js'; import { createLogger, FeatureControl, @@ -6,19 +6,18 @@ import { constants, AnimeDatabase, IdParser, -} from '../utils'; -import { TYPES } from '../utils/constants'; -import { compileRegex } from '../utils/regex'; -import { formRegexFromKeywords } from '../utils/regex'; -import { safeRegexTest } from '../utils/regex'; -import { StreamType } from '../utils/constants'; -import { StreamSelector } from '../parser/streamExpression'; -import StreamUtils from './utils'; -import { MetadataService } from '../metadata/service'; -import { Metadata } from '../metadata/utils'; -import { titleMatch } from '../parser/utils'; + compileRegex, + formRegexFromKeywords, + safeRegexTest, +} from '../utils/index.js'; +import { StreamType } from '../utils/constants.js'; +import { StreamSelector } from '../parser/streamExpression.js'; +import StreamUtils from './utils.js'; +import { MetadataService } from '../metadata/service.js'; +import { Metadata } from '../metadata/utils.js'; +import { titleMatch } from '../parser/utils.js'; import { partial_ratio } from 'fuzzball'; -import { calculateAbsoluteEpisode } from '../builtins/utils/general'; +import { calculateAbsoluteEpisode } from '../builtins/utils/general.js'; const logger = createLogger('filterer'); @@ -113,7 +112,7 @@ class StreamFilterer { (this.userData.titleMatching?.enabled || this.userData.yearMatching?.enabled || this.userData.seasonEpisodeMatching?.enabled) && - TYPES.includes(type as any) + constants.TYPES.includes(type as any) ) { try { if (!parsedId) { diff --git a/packages/core/src/streams/index.ts b/packages/core/src/streams/index.ts index 8b1ba1bb..61db8c92 100644 --- a/packages/core/src/streams/index.ts +++ b/packages/core/src/streams/index.ts @@ -1,9 +1,9 @@ -import StreamFetcher from './fetcher'; -import StreamFilterer from './filterer'; -import StreamSorter from './sorter'; -import StreamDeduplicator from './deduplicator'; -import StreamPrecomputer from './precomputer'; -import StreamUtils from './utils'; +import StreamFetcher from './fetcher.js'; +import StreamFilterer from './filterer.js'; +import StreamSorter from './sorter.js'; +import StreamDeduplicator from './deduplicator.js'; +import StreamPrecomputer from './precomputer.js'; +import StreamUtils from './utils.js'; export { StreamFetcher, diff --git a/packages/core/src/streams/limiter.ts b/packages/core/src/streams/limiter.ts index bf6230c1..4b3544b9 100644 --- a/packages/core/src/streams/limiter.ts +++ b/packages/core/src/streams/limiter.ts @@ -1,5 +1,5 @@ -import { ParsedStream, UserData } from '../db/schemas'; -import { createLogger, getTimeTakenSincePoint } from '../utils'; +import { ParsedStream, UserData } from '../db/schemas.js'; +import { createLogger, getTimeTakenSincePoint } from '../utils/index.js'; const logger = createLogger('limiter'); diff --git a/packages/core/src/streams/precomputer.ts b/packages/core/src/streams/precomputer.ts index a4b544aa..11ef47ea 100644 --- a/packages/core/src/streams/precomputer.ts +++ b/packages/core/src/streams/precomputer.ts @@ -1,12 +1,14 @@ import { isMatch } from 'super-regex'; -import { ParsedStream, UserData } from '../db/schemas'; -import { createLogger, FeatureControl, getTimeTakenSincePoint } from '../utils'; +import { ParsedStream, UserData } from '../db/schemas.js'; import { + createLogger, + FeatureControl, + getTimeTakenSincePoint, formRegexFromKeywords, compileRegex, parseRegex, -} from '../utils/regex'; -import { StreamSelector } from '../parser/streamExpression'; +} from '../utils/index.js'; +import { StreamSelector } from '../parser/streamExpression.js'; const logger = createLogger('precomputer'); diff --git a/packages/core/src/streams/proxifier.ts b/packages/core/src/streams/proxifier.ts index 631da646..ce708296 100644 --- a/packages/core/src/streams/proxifier.ts +++ b/packages/core/src/streams/proxifier.ts @@ -1,6 +1,6 @@ -import { ParsedStream, UserData } from '../db/schemas'; -import { createLogger } from '../utils'; -import { createProxy } from '../proxy'; +import { ParsedStream, UserData } from '../db/schemas.js'; +import { createLogger } from '../utils/index.js'; +import { createProxy } from '../proxy/index.js'; const logger = createLogger('proxy'); diff --git a/packages/core/src/streams/sorter.ts b/packages/core/src/streams/sorter.ts index 28442091..8ea36e89 100644 --- a/packages/core/src/streams/sorter.ts +++ b/packages/core/src/streams/sorter.ts @@ -1,7 +1,9 @@ -import { ParsedStream, SortCriterion, UserData } from '../db/schemas'; -import { createLogger, getTimeTakenSincePoint } from '../utils'; -import { VISUAL_TAGS } from '../utils/constants'; -import { AUDIO_TAGS } from '../utils/constants'; +import { ParsedStream, SortCriterion, UserData } from '../db/schemas.js'; +import { + createLogger, + getTimeTakenSincePoint, + constants, +} from '../utils/index.js'; const logger = createLogger('sorter'); @@ -213,7 +215,7 @@ class StreamSorter { let minIndex = userData.preferredVisualTags?.length; for (const tag of effectiveVisualTags) { - if (VISUAL_TAGS.includes(tag as any)) { + if (constants.VISUAL_TAGS.includes(tag as any)) { const idx = userData.preferredVisualTags?.indexOf(tag as any); if (idx !== undefined && idx !== -1 && idx < minIndex) { minIndex = idx; @@ -241,7 +243,7 @@ class StreamSorter { let minAudioIndex = userData.preferredAudioTags.length; for (const tag of effectiveAudioTags) { - if (AUDIO_TAGS.includes(tag as any)) { + if (constants.AUDIO_TAGS.includes(tag as any)) { const idx = userData.preferredAudioTags?.indexOf(tag as any); if (idx !== undefined && idx !== -1 && idx < minAudioIndex) { minAudioIndex = idx; diff --git a/packages/core/src/streams/utils.ts b/packages/core/src/streams/utils.ts index c13e9ffa..c6628c7b 100644 --- a/packages/core/src/streams/utils.ts +++ b/packages/core/src/streams/utils.ts @@ -1,4 +1,4 @@ -import { ParsedStream } from '../db/schemas'; +import { ParsedStream } from '../db/schemas.js'; class StreamUtils { public static createDownloadableStream(stream: ParsedStream): ParsedStream { diff --git a/packages/core/src/transformers/api.ts b/packages/core/src/transformers/api.ts index 68b1f2b8..86b36b70 100644 --- a/packages/core/src/transformers/api.ts +++ b/packages/core/src/transformers/api.ts @@ -1,5 +1,5 @@ -import { ParsedStream, Resource, Subtitle, UserData } from '../db'; -import { AIOStreamsResponse } from '../main'; +import { ParsedStream, Resource, Subtitle, UserData } from '../db/index.js'; +import { AIOStreamsResponse } from '../main.js'; export interface ApiSearchResponseData { results: ApiSearchResult[]; diff --git a/packages/core/src/transformers/index.ts b/packages/core/src/transformers/index.ts index 707a7bfd..37cf7962 100644 --- a/packages/core/src/transformers/index.ts +++ b/packages/core/src/transformers/index.ts @@ -1,2 +1,2 @@ -export * from './stremio'; -export * from './api'; +export * from './stremio.js'; +export * from './api.js'; diff --git a/packages/core/src/transformers/stremio.ts b/packages/core/src/transformers/stremio.ts index aa7f1203..3150d28f 100644 --- a/packages/core/src/transformers/stremio.ts +++ b/packages/core/src/transformers/stremio.ts @@ -1,4 +1,4 @@ -import { constants, Env } from '..'; +import { constants, Env } from '../index.js'; import { Meta, MetaPreview, @@ -16,10 +16,10 @@ import { CatalogResponse, StreamResponse, ParsedMeta, -} from '../db'; -import { createFormatter } from '../formatters'; -import { AIOStreamsError, AIOStreamsResponse } from '../main'; -import { createLogger, getTimeTakenSincePoint } from '../utils'; +} from '../db/index.js'; +import { createFormatter } from '../formatters/index.js'; +import { AIOStreamsError, AIOStreamsResponse } from '../main.js'; +import { createLogger, getTimeTakenSincePoint } from '../utils/index.js'; type ErrorOptions = { errorTitle?: string; diff --git a/packages/core/src/utils/anime-database.ts b/packages/core/src/utils/anime-database.ts index d0b3f9fa..dc4ed6a4 100644 --- a/packages/core/src/utils/anime-database.ts +++ b/packages/core/src/utils/anime-database.ts @@ -1,13 +1,19 @@ import path from 'path'; import fs from 'fs/promises'; import { z, ZodError } from 'zod'; -import { getDataFolder } from './general'; -import { makeRequest } from './http'; -import { createLogger, getTimeTakenSincePoint } from './logger'; -import { IdParser, IdType, ID_TYPES } from './id-parser'; -import { formatZodError } from './config'; -import { DistributedLock, Env } from '.'; +import { + getDataFolder, + makeRequest, + getTimeTakenSincePoint, + IdParser, + IdType, + ID_TYPES, + formatZodError, + DistributedLock, + Env, +} from './index.js'; import { createWriteStream } from 'fs'; +import { createLogger } from './logger.js'; const logger = createLogger('anime-database'); diff --git a/packages/core/src/utils/cache-adapter.ts b/packages/core/src/utils/cache-adapter.ts index f524883e..b3db5b87 100644 --- a/packages/core/src/utils/cache-adapter.ts +++ b/packages/core/src/utils/cache-adapter.ts @@ -1,7 +1,6 @@ -import { createLogger } from './logger'; -import { Env } from './env'; import { RedisClientType } from 'redis'; -import { REDIS_PREFIX } from './constants'; +import { REDIS_PREFIX, Env } from './index.js'; +import { createLogger } from './logger.js'; const logger = createLogger('cache'); diff --git a/packages/core/src/utils/cache.ts b/packages/core/src/utils/cache.ts index 79322ee9..5898238b 100644 --- a/packages/core/src/utils/cache.ts +++ b/packages/core/src/utils/cache.ts @@ -1,10 +1,9 @@ -import { createLogger } from './logger'; -import { Env } from './env'; import { CacheBackend, MemoryCacheBackend, RedisCacheBackend, -} from './cache-adapter'; +} from './cache-adapter.js'; +import { createLogger, Env } from './index.js'; import { createClient, RedisClientType } from 'redis'; const logger = createLogger('cache'); diff --git a/packages/core/src/utils/config.ts b/packages/core/src/utils/config.ts index c92386fd..a3a4c886 100644 --- a/packages/core/src/utils/config.ts +++ b/packages/core/src/utils/config.ts @@ -6,23 +6,28 @@ import { Option, StreamProxyConfig, Group, -} from '../db/schemas'; -import { AIOStreams } from '../main'; -import { Preset, PresetManager } from '../presets'; -import { createProxy } from '../proxy'; -import { constants } from '.'; -import { TMDBMetadata } from '../metadata/tmdb'; -import { isEncrypted, decryptString, encryptString } from './crypto'; -import { Env } from './env'; -import { createLogger, maskSensitiveInfo } from './logger'; +} from '../db/schemas.js'; +import { AIOStreams } from '../main.js'; +import { Preset, PresetManager } from '../presets/index.js'; +import { createProxy } from '../proxy/index.js'; +import { TMDBMetadata } from '../metadata/tmdb.js'; +import { + isEncrypted, + decryptString, + encryptString, + Env, + maskSensitiveInfo, + RPDB, + FeatureControl, + compileRegex, + constants, +} from './index.js'; import { ZodError } from 'zod'; import { GroupConditionEvaluator, StreamSelector, -} from '../parser/streamExpression'; -import { RPDB } from './rpdb'; -import { FeatureControl } from './feature'; -import { compileRegex } from './regex'; +} from '../parser/streamExpression.js'; +import { createLogger } from './logger.js'; const logger = createLogger('core'); diff --git a/packages/core/src/utils/constants.ts b/packages/core/src/utils/constants.ts index 44f6fb29..02337a51 100644 --- a/packages/core/src/utils/constants.ts +++ b/packages/core/src/utils/constants.ts @@ -1,4 +1,4 @@ -import { Option } from '../db/schemas'; +import { Option } from '../db/schemas.js'; export enum ErrorCode { // User API diff --git a/packages/core/src/utils/crypto.ts b/packages/core/src/utils/crypto.ts index 4364a61e..330c1f9f 100644 --- a/packages/core/src/utils/crypto.ts +++ b/packages/core/src/utils/crypto.ts @@ -8,8 +8,8 @@ import { } from 'crypto'; import { genSalt, hash, compare } from 'bcrypt'; import { deflateSync, inflateSync } from 'zlib'; -import { Env } from './env'; -import { createLogger } from './logger'; +import { Env } from './index.js'; +import { createLogger } from './logger.js'; const logger = createLogger('crypto'); diff --git a/packages/core/src/utils/distributed-lock.ts b/packages/core/src/utils/distributed-lock.ts index 91a9db99..b36710f0 100644 --- a/packages/core/src/utils/distributed-lock.ts +++ b/packages/core/src/utils/distributed-lock.ts @@ -1,10 +1,8 @@ -import { createLogger } from './logger'; -import { DB } from '../db/db'; -import { Cache } from './cache'; +import { DB } from '../db/db.js'; import { RedisClientType } from 'redis'; -import { Env } from './env'; -import { REDIS_PREFIX } from './constants'; -import { TransactionQueue } from '../db/queue'; +import { TransactionQueue } from '../db/queue.js'; +import { Cache, Env, REDIS_PREFIX } from './index.js'; +import { createLogger } from './logger.js'; const logger = createLogger('distributed-lock'); const lockPrefix = `${REDIS_PREFIX}lock:`; diff --git a/packages/core/src/utils/env.ts b/packages/core/src/utils/env.ts index 8173f68c..e36ae4f4 100644 --- a/packages/core/src/utils/env.ts +++ b/packages/core/src/utils/env.ts @@ -1,5 +1,6 @@ import dotenv from 'dotenv'; import path from 'path'; +import { fileURLToPath } from 'url'; import { cleanEnv, str, @@ -13,9 +14,14 @@ import { port, EnvMissingError, } from 'envalid'; -import { ResourceManager } from './resources'; -import * as constants from './constants'; +import { ResourceManager } from './resources.js'; +import * as constants from './constants.js'; import { randomBytes } from 'crypto'; + +// Get __dirname equivalent in ESM +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + try { dotenv.config({ path: path.resolve(__dirname, '../../../../.env') }); } catch (error) { diff --git a/packages/core/src/utils/extras.ts b/packages/core/src/utils/extras.ts index fc959f1d..61859dd9 100644 --- a/packages/core/src/utils/extras.ts +++ b/packages/core/src/utils/extras.ts @@ -1,4 +1,4 @@ -import { Extras, ExtrasSchema } from '../db/schemas'; +import { Extras, ExtrasSchema } from '../db/schemas.js'; export class ExtrasParser { private extras: Partial; diff --git a/packages/core/src/utils/feature.ts b/packages/core/src/utils/feature.ts index 17d173ed..62ad2e47 100644 --- a/packages/core/src/utils/feature.ts +++ b/packages/core/src/utils/feature.ts @@ -1,9 +1,9 @@ import z from 'zod'; -import { UserData } from '../db/schemas'; -import { Env } from './env'; -import { makeRequest } from './http'; -import { createLogger } from './logger'; -import { Cache } from './cache'; +import { UserData } from '../db/schemas.js'; +import { Env } from './env.js'; +import { makeRequest } from './http.js'; +import { createLogger } from './logger.js'; +import { Cache } from './cache.js'; const DEFAULT_REASON = 'Disabled by owner of the instance'; diff --git a/packages/core/src/utils/general.ts b/packages/core/src/utils/general.ts index daf65052..2762e767 100644 --- a/packages/core/src/utils/general.ts +++ b/packages/core/src/utils/general.ts @@ -1,6 +1,6 @@ -import { Addon, Preset } from '../db/schemas'; -import { parseConnectionURI } from '../db/utils'; -import { Env } from './env'; +import { Addon, Preset } from '../db/schemas.js'; +import { parseConnectionURI } from '../db/utils.js'; +import { Env } from './env.js'; import path from 'path'; export function getAddonName(addon: Addon | Preset): string { diff --git a/packages/core/src/utils/http.ts b/packages/core/src/utils/http.ts index d24ee29c..a05b7b78 100644 --- a/packages/core/src/utils/http.ts +++ b/packages/core/src/utils/http.ts @@ -1,7 +1,10 @@ -import { Cache } from './cache'; -import { HEADERS_FOR_IP_FORWARDING, INTERNAL_SECRET_HEADER } from './constants'; -import { Env } from './env'; -import { createLogger, maskSensitiveInfo } from './logger'; +import { + Cache, + HEADERS_FOR_IP_FORWARDING, + INTERNAL_SECRET_HEADER, + Env, + maskSensitiveInfo, +} from './index.js'; import { BodyInit, Dispatcher, @@ -12,6 +15,7 @@ import { RequestInit, } from 'undici'; import { socksDispatcher } from 'fetch-socks'; +import { createLogger } from './logger.js'; const logger = createLogger('http'); const urlCount = Cache.getInstance( diff --git a/packages/core/src/utils/index.ts b/packages/core/src/utils/index.ts index ed65c1de..e172dee1 100644 --- a/packages/core/src/utils/index.ts +++ b/packages/core/src/utils/index.ts @@ -1,18 +1,20 @@ -export * from './cache'; -export * from './constants'; -export * from './env'; -export * from './logger'; -export * from './resources'; -export * from './feature'; -export * from './crypto'; -export * from './http'; -export * as constants from './constants'; -export * from './config'; -export * from './languages'; -export * from './dsu'; -export * from './startup'; -export * from './extras'; -export * from './rpdb'; -export * from './distributed-lock'; -export * from './id-parser'; -export * from './anime-database'; +export * from './cache.js'; +export * from './constants.js'; +export * from './env.js'; +export * from './logger.js'; +export * from './resources.js'; +export * from './feature.js'; +export * from './crypto.js'; +export * from './http.js'; +export * as constants from './constants.js'; +export * from './config.js'; +export * from './languages.js'; +export * from './dsu.js'; +export * from './startup.js'; +export * from './extras.js'; +export * from './rpdb.js'; +export * from './distributed-lock.js'; +export * from './id-parser.js'; +export * from './anime-database.js'; +export * from './regex.js'; +export * from './general.js'; diff --git a/packages/core/src/utils/logger.ts b/packages/core/src/utils/logger.ts index 2b9791d3..20a478a0 100644 --- a/packages/core/src/utils/logger.ts +++ b/packages/core/src/utils/logger.ts @@ -1,6 +1,6 @@ import winston from 'winston'; import moment from 'moment-timezone'; -import { Env } from './env'; +import { Env } from './env.js'; // Map log levels to their full names const levelMap: { [key: string]: string } = { diff --git a/packages/core/src/utils/regex.ts b/packages/core/src/utils/regex.ts index 3375270e..644e1bb3 100644 --- a/packages/core/src/utils/regex.ts +++ b/packages/core/src/utils/regex.ts @@ -1,7 +1,7 @@ import { isMatch } from 'super-regex'; -import { Cache } from './cache'; -import { getSimpleTextHash } from './crypto'; -import { createLogger } from './logger'; +import { Cache } from './cache.js'; +import { getSimpleTextHash } from './crypto.js'; +import { createLogger } from './logger.js'; const DEFAULT_TIMEOUT = 1000; // 1 second timeout const regexCache = Cache.getInstance('regexCache', 1_000, true); diff --git a/packages/core/src/utils/resources.ts b/packages/core/src/utils/resources.ts index 4abe572b..ad46d129 100644 --- a/packages/core/src/utils/resources.ts +++ b/packages/core/src/utils/resources.ts @@ -1,5 +1,10 @@ import fs from 'fs'; import path from 'path'; +import { fileURLToPath } from 'url'; + +// Get __dirname equivalent in ESM +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); export class ResourceManager { static getResource(resourceName: string) { diff --git a/packages/core/src/utils/rpdb.ts b/packages/core/src/utils/rpdb.ts index 56dc3e5a..9ce1cddd 100644 --- a/packages/core/src/utils/rpdb.ts +++ b/packages/core/src/utils/rpdb.ts @@ -1,9 +1,9 @@ -import { Cache } from './cache'; -import { makeRequest } from './http'; -import { RPDBIsValidResponse } from '../db/schemas'; -import { Env } from './env'; -import { IdParser } from './id-parser'; -import { AnimeDatabase } from './anime-database'; +import { Cache } from './cache.js'; +import { makeRequest } from './http.js'; +import { RPDBIsValidResponse } from '../db/schemas.js'; +import { Env } from './env.js'; +import { IdParser } from './id-parser.js'; +import { AnimeDatabase } from './anime-database.js'; const apiKeyValidationCache = Cache.getInstance('rpdbApiKey'); const posterCheckCache = Cache.getInstance('rpdbPosterCheck'); diff --git a/packages/core/src/utils/startup.ts b/packages/core/src/utils/startup.ts index be1bccdf..3f3eb26c 100644 --- a/packages/core/src/utils/startup.ts +++ b/packages/core/src/utils/startup.ts @@ -1,5 +1,5 @@ -import { createLogger, maskSensitiveInfo } from './logger'; -import { Env } from './env'; +import { createLogger, maskSensitiveInfo } from './logger.js'; +import { Env } from './env.js'; const logger = createLogger('startup'); diff --git a/packages/core/src/utils/torrent.ts b/packages/core/src/utils/torrent.ts index 10d79826..513f0efb 100644 --- a/packages/core/src/utils/torrent.ts +++ b/packages/core/src/utils/torrent.ts @@ -1,11 +1,11 @@ -import { Torrent, UnprocessedTorrent, DebridFile } from '../debrid'; +import { Torrent, UnprocessedTorrent, DebridFile } from '../debrid/index.js'; import { extractInfoHashFromMagnet, extractTrackersFromMagnet, -} from '../builtins/utils/debrid'; -import { createLogger } from './logger'; -import { Cache } from './cache'; -import { makeRequest } from './http'; +} from '../builtins/utils/debrid.js'; +import { createLogger } from './logger.js'; +import { Cache } from './cache.js'; +import { makeRequest } from './http.js'; const logger = createLogger('torrent'); diff --git a/packages/core/src/wrapper.ts b/packages/core/src/wrapper.ts index 723215a1..97143ee3 100644 --- a/packages/core/src/wrapper.ts +++ b/packages/core/src/wrapper.ts @@ -26,7 +26,7 @@ import { SubtitleResponseSchema, SubtitleSchema, ParsedMetaSchema, -} from './db/schemas'; +} from './db/schemas.js'; import { Cache, makeRequest, @@ -39,9 +39,9 @@ import { Env, getTimeTakenSincePoint, RequestOptions, -} from './utils'; -import { Preset, PresetManager } from './presets'; -import { StreamParser } from './parser'; +} from './utils/index.js'; +import { Preset, PresetManager } from './presets/index.js'; +import { StreamParser } from './parser/index.js'; import { z } from 'zod'; const logger = createLogger('wrappers'); diff --git a/packages/server/package.json b/packages/server/package.json index bd36ae7e..eaefa463 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -2,6 +2,7 @@ "name": "@aiostreams/server", "version": "0.0.0", "main": "dist/server.js", + "type": "module", "scripts": { "test": "vitest run --passWithNoTests", "test:watch": "vitest watch", diff --git a/packages/server/src/app.ts b/packages/server/src/app.ts index 8e849abd..98a89e2d 100644 --- a/packages/server/src/app.ts +++ b/packages/server/src/app.ts @@ -10,7 +10,7 @@ import { debridApi, searchApi, animeApi, -} from './routes/api'; +} from './routes/api/index.js'; import { configure, manifest, @@ -20,14 +20,14 @@ import { subtitle, addonCatalog, alias, -} from './routes/stremio'; +} from './routes/stremio/index.js'; import { gdrive, torboxSearch, torznab, newznab, prowlarr, -} from './routes/builtins'; +} from './routes/builtins/index.js'; import { ipMiddleware, loggerMiddleware, @@ -37,28 +37,33 @@ import { staticRateLimiter, internalMiddleware, stremioStreamRateLimiter, -} from './middlewares'; +} from './middlewares/index.js'; import { constants, createLogger, Env } from '@aiostreams/core'; import { StremioTransformer } from '@aiostreams/core'; -import { createResponse } from './utils/responses'; +import { createResponse } from './utils/responses.js'; import path from 'path'; import fs from 'fs'; +import { fileURLToPath } from 'url'; const app: Express = express(); const logger = createLogger('server'); +export enum StaticFiles { + DOWNLOAD_FAILED = 'download_failed.mp4', + DOWNLOADING = 'downloading.mp4', + UNAVAILABLE_FOR_LEGAL_REASONS = 'unavailable_for_legal_reasons.mp4', + CONTENT_PROXY_LIMIT_REACHED = 'content_proxy_limit_reached.mp4', + INTERNAL_SERVER_ERROR = '500.mp4', + FORBIDDEN = '403.mp4', + UNAUTHORIZED = '401.mp4', + NO_MATCHING_FILE = 'no_matching_file.mp4', +} + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + export const frontendRoot = path.join(__dirname, '../../frontend/out'); export const staticRoot = path.join(__dirname, './static'); -export const STATIC_DOWNLOAD_FAILED = 'download_failed.mp4'; -export const STATIC_DOWNLOADING = 'downloading.mp4'; -export const STATIC_UNAVAILABLE_FOR_LEGAL_REASONS = - 'unavailable_for_legal_reasons.mp4'; -export const STATIC_CONTENT_PROXY_LIMIT_REACHED = - 'content_proxy_limit_reached.mp4'; -export const STATIC_INTERNAL_SERVER_ERROR = '500.mp4'; -export const STATIC_FORBIDDEN = '403.mp4'; -export const STATIC_UNAUTHORIZED = '401.mp4'; -export const STATIC_NO_MATCHING_FILE = 'no_matching_file.mp4'; app.use(ipMiddleware); app.use(loggerMiddleware); diff --git a/packages/server/src/middlewares/errors.ts b/packages/server/src/middlewares/errors.ts index f1500b30..93180e70 100644 --- a/packages/server/src/middlewares/errors.ts +++ b/packages/server/src/middlewares/errors.ts @@ -5,7 +5,7 @@ import { constants, StremioTransformer, } from '@aiostreams/core'; -import { createResponse } from '../utils/responses'; +import { createResponse } from '../utils/responses.js'; const logger = createLogger('server'); diff --git a/packages/server/src/middlewares/index.ts b/packages/server/src/middlewares/index.ts index 802b95a4..ca3f006a 100644 --- a/packages/server/src/middlewares/index.ts +++ b/packages/server/src/middlewares/index.ts @@ -1,7 +1,7 @@ -export * from './errors'; -export * from './logger'; -export * from './userData'; -export * from './ip'; -export * from './cors'; -export * from './ratelimit'; -export * from './internal'; +export * from './errors.js'; +export * from './logger.js'; +export * from './userData.js'; +export * from './ip.js'; +export * from './cors.js'; +export * from './ratelimit.js'; +export * from './internal.js'; diff --git a/packages/server/src/middlewares/internal.ts b/packages/server/src/middlewares/internal.ts index 945eeea3..2231a9b7 100644 --- a/packages/server/src/middlewares/internal.ts +++ b/packages/server/src/middlewares/internal.ts @@ -1,5 +1,5 @@ import { Request, Response, NextFunction } from 'express'; -import { createResponse } from '../utils/responses'; +import { createResponse } from '../utils/responses.js'; import { constants, Env } from '@aiostreams/core'; export const internalMiddleware = ( diff --git a/packages/server/src/middlewares/userData.ts b/packages/server/src/middlewares/userData.ts index aba887b5..1d2c5593 100644 --- a/packages/server/src/middlewares/userData.ts +++ b/packages/server/src/middlewares/userData.ts @@ -3,13 +3,12 @@ import { createLogger, APIError, constants, - Env, decryptString, validateConfig, Resource, + StremioTransformer, + UserRepository, } from '@aiostreams/core'; -import { UserDataSchema, UserRepository, UserData } from '@aiostreams/core'; -import { StremioTransformer } from '@aiostreams/core'; const logger = createLogger('server'); diff --git a/packages/server/src/routes/api/anime.ts b/packages/server/src/routes/api/anime.ts index 2829817b..43f93a5a 100644 --- a/packages/server/src/routes/api/anime.ts +++ b/packages/server/src/routes/api/anime.ts @@ -1,5 +1,5 @@ import { Router, Request, Response, NextFunction } from 'express'; -import { createResponse } from '../../utils/responses'; +import { createResponse } from '../../utils/responses.js'; import { APIError, constants, @@ -10,7 +10,8 @@ import { ID_TYPES, } from '@aiostreams/core'; import { z, ZodError } from 'zod'; -import { animeApiRateLimiter } from '../../middlewares/ratelimit'; +import { animeApiRateLimiter } from '../../middlewares/ratelimit.js'; + const router: Router = Router(); const logger = createLogger('server'); diff --git a/packages/server/src/routes/api/catalog.ts b/packages/server/src/routes/api/catalog.ts index 490d9d17..2765df69 100644 --- a/packages/server/src/routes/api/catalog.ts +++ b/packages/server/src/routes/api/catalog.ts @@ -1,5 +1,6 @@ import { Router, Request, Response, NextFunction } from 'express'; -import { createResponse } from '../../utils/responses'; +import { createResponse } from '../../utils/responses.js'; +import { catalogApiRateLimiter } from '../../middlewares/ratelimit.js'; import { createLogger, UserData, @@ -9,7 +10,7 @@ import { APIError, constants, } from '@aiostreams/core'; -import { catalogApiRateLimiter } from '../../middlewares/ratelimit'; + const router: Router = Router(); const logger = createLogger('server'); diff --git a/packages/server/src/routes/api/debrid.ts b/packages/server/src/routes/api/debrid.ts index 8ecf30ac..97ef28fb 100644 --- a/packages/server/src/routes/api/debrid.ts +++ b/packages/server/src/routes/api/debrid.ts @@ -4,24 +4,13 @@ import { constants, createLogger, formatZodError, -} from '@aiostreams/core'; -import { DebridError, PlaybackInfoSchema, getDebridService, ServiceAuthSchema, } from '@aiostreams/core'; import { ZodError } from 'zod'; -import { - STATIC_DOWNLOAD_FAILED, - STATIC_DOWNLOADING, - STATIC_UNAVAILABLE_FOR_LEGAL_REASONS, - STATIC_CONTENT_PROXY_LIMIT_REACHED, - STATIC_INTERNAL_SERVER_ERROR, - STATIC_FORBIDDEN, - STATIC_UNAUTHORIZED, - STATIC_NO_MATCHING_FILE, -} from '../../app'; +import { StaticFiles } from '../../app.js'; const router: Router = Router(); const logger = createLogger('server'); @@ -64,31 +53,31 @@ router.get( try { streamUrl = await debridInterface.resolve(playbackInfo, filename); } catch (error: any) { - let staticFile: string = STATIC_INTERNAL_SERVER_ERROR; + let staticFile: string = StaticFiles.INTERNAL_SERVER_ERROR; if (error instanceof DebridError) { logger.error( `Got Debrid error during debrid resolve: ${error.code}: ${error.message}` ); switch (error.code) { case 'UNAVAILABLE_FOR_LEGAL_REASONS': - staticFile = STATIC_UNAVAILABLE_FOR_LEGAL_REASONS; + staticFile = StaticFiles.UNAVAILABLE_FOR_LEGAL_REASONS; break; case 'STORE_LIMIT_EXCEEDED': - staticFile = STATIC_CONTENT_PROXY_LIMIT_REACHED; + staticFile = StaticFiles.CONTENT_PROXY_LIMIT_REACHED; break; case 'FORBIDDEN': - staticFile = STATIC_FORBIDDEN; + staticFile = StaticFiles.FORBIDDEN; break; case 'UNAUTHORIZED': - staticFile = STATIC_UNAUTHORIZED; + staticFile = StaticFiles.UNAUTHORIZED; break; case 'UNPROCESSABLE_ENTITY': case 'UNSUPPORTED_MEDIA_TYPE': case 'STORE_MAGNET_INVALID': - staticFile = STATIC_DOWNLOAD_FAILED; + staticFile = StaticFiles.DOWNLOAD_FAILED; break; case 'NO_MATCHING_FILE': - staticFile = STATIC_NO_MATCHING_FILE; + staticFile = StaticFiles.NO_MATCHING_FILE; break; default: break; @@ -104,7 +93,7 @@ router.get( } if (!streamUrl) { - res.status(302).redirect(`/static/${STATIC_DOWNLOADING}`); + res.status(302).redirect(`/static/${StaticFiles.DOWNLOADING}`); return; } diff --git a/packages/server/src/routes/api/format.ts b/packages/server/src/routes/api/format.ts index 2ce4fb59..b893cc1f 100644 --- a/packages/server/src/routes/api/format.ts +++ b/packages/server/src/routes/api/format.ts @@ -1,18 +1,15 @@ -import { Router, Request, Response, NextFunction } from 'express'; -import { createResponse } from '../../utils/responses'; +import { Router, Request, Response } from 'express'; +import { createResponse } from '../../utils/responses.js'; import { createLogger, - UserData, UserDataSchema, formatZodError, -} from '@aiostreams/core'; -import { createFormatter, ParsedStreamSchema, APIError, + constants, } from '@aiostreams/core'; -import * as constants from '@aiostreams/core'; -import { formatApiRateLimiter } from '../../middlewares/ratelimit'; +import { formatApiRateLimiter } from '../../middlewares/ratelimit.js'; const router: Router = Router(); diff --git a/packages/server/src/routes/api/gdrive.ts b/packages/server/src/routes/api/gdrive.ts index 9868b522..f1d09ef6 100644 --- a/packages/server/src/routes/api/gdrive.ts +++ b/packages/server/src/routes/api/gdrive.ts @@ -1,7 +1,12 @@ import { Router, Request, Response, NextFunction } from 'express'; -import { createResponse } from '../../utils/responses'; -import { APIError, constants, createLogger, GDriveAPI } from '@aiostreams/core'; -import { GoogleOAuth } from '@aiostreams/core'; +import { createResponse } from '../../utils/responses.js'; +import { + APIError, + constants, + createLogger, + GoogleOAuth, +} from '@aiostreams/core'; + const router: Router = Router(); const logger = createLogger('server'); diff --git a/packages/server/src/routes/api/health.ts b/packages/server/src/routes/api/health.ts index 9f2e7963..a30d4676 100644 --- a/packages/server/src/routes/api/health.ts +++ b/packages/server/src/routes/api/health.ts @@ -1,5 +1,5 @@ import { Router, Request, Response, NextFunction } from 'express'; -import { createResponse } from '../../utils/responses'; +import { createResponse } from '../../utils/responses.js'; import { APIError, constants, diff --git a/packages/server/src/routes/api/index.ts b/packages/server/src/routes/api/index.ts index 3f4c9fc1..fb60793f 100644 --- a/packages/server/src/routes/api/index.ts +++ b/packages/server/src/routes/api/index.ts @@ -1,10 +1,10 @@ -export { default as userApi } from './user'; -export { default as healthApi } from './health'; -export { default as statusApi } from './status'; -export { default as formatApi } from './format'; -export { default as catalogApi } from './catalog'; -export { default as rpdbApi } from './rpdb'; -export { default as gdriveApi } from './gdrive'; -export { default as debridApi } from './debrid'; -export { default as searchApi } from './search'; -export { default as animeApi } from './anime'; +export { default as userApi } from './user.js'; +export { default as healthApi } from './health.js'; +export { default as statusApi } from './status.js'; +export { default as formatApi } from './format.js'; +export { default as catalogApi } from './catalog.js'; +export { default as rpdbApi } from './rpdb.js'; +export { default as gdriveApi } from './gdrive.js'; +export { default as debridApi } from './debrid.js'; +export { default as searchApi } from './search.js'; +export { default as animeApi } from './anime.js'; diff --git a/packages/server/src/routes/api/rpdb.ts b/packages/server/src/routes/api/rpdb.ts index f10d3451..33df8962 100644 --- a/packages/server/src/routes/api/rpdb.ts +++ b/packages/server/src/routes/api/rpdb.ts @@ -4,9 +4,9 @@ import { constants, createLogger, formatZodError, + RPDB, } from '@aiostreams/core'; -import { RPDB } from '@aiostreams/core'; -import { createResponse } from '../../utils/responses'; +import { createResponse } from '../../utils/responses.js'; import { z } from 'zod'; const router: Router = Router(); diff --git a/packages/server/src/routes/api/search.ts b/packages/server/src/routes/api/search.ts index 4d8cd2d1..db5c8c4c 100644 --- a/packages/server/src/routes/api/search.ts +++ b/packages/server/src/routes/api/search.ts @@ -11,11 +11,12 @@ import { validateConfig, isEncrypted, decryptString, + createLogger, + ApiTransformer, + ApiSearchResponseData, } from '@aiostreams/core'; -import { streamApiRateLimiter } from '../../middlewares/ratelimit'; -import { createLogger } from '@aiostreams/core'; -import { ApiTransformer, ApiSearchResponseData } from '@aiostreams/core'; -import { ApiResponse, createResponse } from '../../utils/responses'; +import { streamApiRateLimiter } from '../../middlewares/ratelimit.js'; +import { ApiResponse, createResponse } from '../../utils/responses.js'; import { z, ZodError } from 'zod'; const router: Router = Router(); diff --git a/packages/server/src/routes/api/status.ts b/packages/server/src/routes/api/status.ts index 1e6d033f..e50f6168 100644 --- a/packages/server/src/routes/api/status.ts +++ b/packages/server/src/routes/api/status.ts @@ -8,7 +8,7 @@ import { import { StatusResponse } from '@aiostreams/core'; import { encryptString } from '@aiostreams/core'; import { FeatureControl } from '@aiostreams/core'; -import { createResponse } from '../../utils/responses'; +import { createResponse } from '../../utils/responses.js'; const router: Router = Router(); diff --git a/packages/server/src/routes/api/user.ts b/packages/server/src/routes/api/user.ts index 64a39335..a97103c9 100644 --- a/packages/server/src/routes/api/user.ts +++ b/packages/server/src/routes/api/user.ts @@ -6,8 +6,8 @@ import { encryptString, UserRepository, } from '@aiostreams/core'; -import { userApiRateLimiter } from '../../middlewares/ratelimit'; -import { createResponse } from '../../utils/responses'; +import { userApiRateLimiter } from '../../middlewares/ratelimit.js'; +import { createResponse } from '../../utils/responses.js'; const router: Router = Router(); const logger = createLogger('server'); diff --git a/packages/server/src/routes/builtins/gdrive.ts b/packages/server/src/routes/builtins/gdrive.ts index f87aa400..b14a03cf 100644 --- a/packages/server/src/routes/builtins/gdrive.ts +++ b/packages/server/src/routes/builtins/gdrive.ts @@ -1,7 +1,5 @@ import { Router, Request, Response, NextFunction } from 'express'; -import { AIOStreams, AIOStreamResponse, GDriveAddon } from '@aiostreams/core'; -import { stremioStreamRateLimiter } from '../../middlewares/ratelimit'; -import { createLogger } from '@aiostreams/core'; +import { createLogger, GDriveAddon } from '@aiostreams/core'; const router: Router = Router(); const logger = createLogger('server'); diff --git a/packages/server/src/routes/builtins/index.ts b/packages/server/src/routes/builtins/index.ts index 6e4b91a2..6ca9a73a 100644 --- a/packages/server/src/routes/builtins/index.ts +++ b/packages/server/src/routes/builtins/index.ts @@ -1,5 +1,5 @@ -export { default as gdrive } from './gdrive'; -export { default as torboxSearch } from './torbox-search'; -export { default as torznab } from './torznab'; -export { default as newznab } from './newznab'; -export { default as prowlarr } from './prowlarr'; +export { default as gdrive } from './gdrive.js'; +export { default as torboxSearch } from './torbox-search.js'; +export { default as torznab } from './torznab.js'; +export { default as newznab } from './newznab.js'; +export { default as prowlarr } from './prowlarr.js'; diff --git a/packages/server/src/routes/builtins/newznab.ts b/packages/server/src/routes/builtins/newznab.ts index 40603035..1ccf2a45 100644 --- a/packages/server/src/routes/builtins/newznab.ts +++ b/packages/server/src/routes/builtins/newznab.ts @@ -1,6 +1,5 @@ import { Router, Request, Response, NextFunction } from 'express'; -import { NewznabAddon } from '@aiostreams/core'; -import { createLogger } from '@aiostreams/core'; +import { NewznabAddon, createLogger } from '@aiostreams/core'; const router: Router = Router(); const logger = createLogger('server'); diff --git a/packages/server/src/routes/builtins/prowlarr.ts b/packages/server/src/routes/builtins/prowlarr.ts index 6545199c..be3093ea 100644 --- a/packages/server/src/routes/builtins/prowlarr.ts +++ b/packages/server/src/routes/builtins/prowlarr.ts @@ -1,6 +1,5 @@ import { Router, Request, Response, NextFunction } from 'express'; -import { AIOStreams, AIOStreamResponse, ProwlarrAddon } from '@aiostreams/core'; -import { stremioStreamRateLimiter } from '../../middlewares/ratelimit'; +import { ProwlarrAddon } from '@aiostreams/core'; import { createLogger } from '@aiostreams/core'; const router: Router = Router(); diff --git a/packages/server/src/routes/builtins/torbox-search.ts b/packages/server/src/routes/builtins/torbox-search.ts index 421b0b18..6ac8c7ec 100644 --- a/packages/server/src/routes/builtins/torbox-search.ts +++ b/packages/server/src/routes/builtins/torbox-search.ts @@ -1,11 +1,10 @@ import { Router, Request, Response, NextFunction } from 'express'; -import { stremioStreamRateLimiter } from '../../middlewares/ratelimit'; import { createLogger, TorBoxSearchAddon, TorBoxSearchAddonError, } from '@aiostreams/core'; -import { createResponse } from '../../utils/responses'; +import { createResponse } from '../../utils/responses.js'; const router: Router = Router(); const logger = createLogger('builtins:torbox-search'); diff --git a/packages/server/src/routes/stremio/addonCatalog.ts b/packages/server/src/routes/stremio/addonCatalog.ts index 36d15232..decf2d85 100644 --- a/packages/server/src/routes/stremio/addonCatalog.ts +++ b/packages/server/src/routes/stremio/addonCatalog.ts @@ -1,8 +1,10 @@ import { Router, Request, Response } from 'express'; -import { AddonCatalogResponse, AIOStreams, constants } from '@aiostreams/core'; -import { createLogger } from '@aiostreams/core'; -import { createResponse } from '../../utils/responses'; -import { StremioTransformer } from '@aiostreams/core'; +import { + AddonCatalogResponse, + AIOStreams, + createLogger, + StremioTransformer, +} from '@aiostreams/core'; const logger = createLogger('server'); const router: Router = Router(); diff --git a/packages/server/src/routes/stremio/alias.ts b/packages/server/src/routes/stremio/alias.ts index c5d87a72..a9aaf554 100644 --- a/packages/server/src/routes/stremio/alias.ts +++ b/packages/server/src/routes/stremio/alias.ts @@ -1,8 +1,5 @@ -// looks at Env.ALIASED_CONFIGURATIONS and then redirects to /stremio/{uuid}/{encryptedPassword} after parsing the alias value - import { APIError, constants, createLogger, Env } from '@aiostreams/core'; import { Router, Request, Response } from 'express'; -import { createResponse } from '../../utils/responses'; const logger = createLogger('server'); const router: Router = Router(); diff --git a/packages/server/src/routes/stremio/catalog.ts b/packages/server/src/routes/stremio/catalog.ts index 86873863..7454497d 100644 --- a/packages/server/src/routes/stremio/catalog.ts +++ b/packages/server/src/routes/stremio/catalog.ts @@ -1,9 +1,11 @@ import { Router, Request, Response } from 'express'; -import { AIOStreams, CatalogResponse, constants } from '@aiostreams/core'; -import { stremioCatalogRateLimiter } from '../../middlewares/ratelimit'; -import { createResponse } from '../../utils/responses'; -import { StremioTransformer } from '@aiostreams/core'; -import { createLogger } from '@aiostreams/core'; +import { + AIOStreams, + CatalogResponse, + createLogger, + StremioTransformer, +} from '@aiostreams/core'; +import { stremioCatalogRateLimiter } from '../../middlewares/ratelimit.js'; const logger = createLogger('server'); const router: Router = Router(); diff --git a/packages/server/src/routes/stremio/configure.ts b/packages/server/src/routes/stremio/configure.ts index 5cad1ea9..3979e066 100644 --- a/packages/server/src/routes/stremio/configure.ts +++ b/packages/server/src/routes/stremio/configure.ts @@ -1,8 +1,8 @@ import { Router, Request, Response } from 'express'; import path from 'path'; const router: Router = Router(); -import { staticRateLimiter } from '../../middlewares/ratelimit'; -import { frontendRoot } from '../../app'; +import { staticRateLimiter } from '../../middlewares/ratelimit.js'; +import { frontendRoot } from '../../app.js'; export default router; diff --git a/packages/server/src/routes/stremio/index.ts b/packages/server/src/routes/stremio/index.ts index 57b7165a..df66a6b8 100644 --- a/packages/server/src/routes/stremio/index.ts +++ b/packages/server/src/routes/stremio/index.ts @@ -1,11 +1,11 @@ -import manifest from './manifest'; -import stream from './stream'; -import meta from './meta'; -import catalog from './catalog'; -import subtitle from './subtitle'; -import addonCatalog from './addonCatalog'; -import configure from './configure'; -import alias from './alias'; +import manifest from './manifest.js'; +import stream from './stream.js'; +import meta from './meta.js'; +import catalog from './catalog.js'; +import subtitle from './subtitle.js'; +import addonCatalog from './addonCatalog.js'; +import configure from './configure.js'; +import alias from './alias.js'; export { manifest, diff --git a/packages/server/src/routes/stremio/manifest.ts b/packages/server/src/routes/stremio/manifest.ts index 8f321959..544a8511 100644 --- a/packages/server/src/routes/stremio/manifest.ts +++ b/packages/server/src/routes/stremio/manifest.ts @@ -9,7 +9,7 @@ import { } from '@aiostreams/core'; import { Manifest } from '@aiostreams/core'; import { createLogger } from '@aiostreams/core'; -import { stremioManifestRateLimiter } from '../../middlewares/ratelimit'; +import { stremioManifestRateLimiter } from '../../middlewares/ratelimit.js'; const logger = createLogger('server'); const router: Router = Router(); diff --git a/packages/server/src/routes/stremio/meta.ts b/packages/server/src/routes/stremio/meta.ts index 4628b169..4c566339 100644 --- a/packages/server/src/routes/stremio/meta.ts +++ b/packages/server/src/routes/stremio/meta.ts @@ -1,9 +1,12 @@ import { Router, Request, Response } from 'express'; -import { AIOStreams, constants, MetaResponse } from '@aiostreams/core'; -import { createLogger } from '@aiostreams/core'; -import { createResponse } from '../../utils/responses'; -import { StremioTransformer } from '@aiostreams/core'; -import { stremioMetaRateLimiter } from '../../middlewares/ratelimit'; +import { + AIOStreams, + MetaResponse, + createLogger, + StremioTransformer, +} from '@aiostreams/core'; + +import { stremioMetaRateLimiter } from '../../middlewares/ratelimit.js'; const logger = createLogger('server'); const router: Router = Router(); diff --git a/packages/server/src/routes/stremio/stream.ts b/packages/server/src/routes/stremio/stream.ts index 22e75b98..005bcc4e 100644 --- a/packages/server/src/routes/stremio/stream.ts +++ b/packages/server/src/routes/stremio/stream.ts @@ -1,8 +1,13 @@ import { Router, Request, Response } from 'express'; -import { AIOStreams, AIOStreamResponse, Env } from '@aiostreams/core'; -import { stremioStreamRateLimiter } from '../../middlewares/ratelimit'; -import { createLogger } from '@aiostreams/core'; -import { StremioTransformer } from '@aiostreams/core'; +import { + AIOStreams, + AIOStreamResponse, + Env, + createLogger, + StremioTransformer, +} from '@aiostreams/core'; +import { stremioStreamRateLimiter } from '../../middlewares/ratelimit.js'; + const router: Router = Router(); const logger = createLogger('server'); diff --git a/packages/server/src/routes/stremio/subtitle.ts b/packages/server/src/routes/stremio/subtitle.ts index 888ed7e4..1cf744cb 100644 --- a/packages/server/src/routes/stremio/subtitle.ts +++ b/packages/server/src/routes/stremio/subtitle.ts @@ -1,8 +1,11 @@ import { Router, Request, Response } from 'express'; -import { AIOStreams, SubtitleResponse } from '@aiostreams/core'; -import { createLogger } from '@aiostreams/core'; -import { StremioTransformer } from '@aiostreams/core'; -import { stremioSubtitleRateLimiter } from '../../middlewares/ratelimit'; +import { + AIOStreams, + SubtitleResponse, + createLogger, + StremioTransformer, +} from '@aiostreams/core'; +import { stremioSubtitleRateLimiter } from '../../middlewares/ratelimit.js'; const logger = createLogger('server'); const router: Router = Router(); diff --git a/packages/server/src/server.ts b/packages/server/src/server.ts index 59a581a5..89c1d06f 100644 --- a/packages/server/src/server.ts +++ b/packages/server/src/server.ts @@ -1,4 +1,4 @@ -import app from './app'; +import app from './app.js'; import { Env, diff --git a/patches/go-ptt@0.4.0.patch b/patches/go-ptt@0.4.0.patch new file mode 100644 index 00000000..1dbf1e5a --- /dev/null +++ b/patches/go-ptt@0.4.0.patch @@ -0,0 +1,22 @@ +diff --git a/dist/index.mjs b/dist/index.mjs +index 3c5817fa8a4eced1839031b0bc4e03381a214cd7..ff7d97e7b83e1ddde582e04744d61edfc9218de4 100644 +--- a/dist/index.mjs ++++ b/dist/index.mjs +@@ -4,6 +4,8 @@ import { rm } from 'node:fs/promises'; + import { resolve } from 'node:path'; + import { setTimeout } from 'node:timers/promises'; + import { BinaryWriter, BinaryReader } from '@bufbuild/protobuf/wire'; ++import { fileURLToPath } from 'url'; ++import path from 'path'; + + function createBaseParseRequest() { + return { torrent_titles: [], normalize: false }; +@@ -975,6 +977,8 @@ function isSet(value) { + return value !== null && value !== void 0; + } + ++const __filename = fileURLToPath(import.meta.url); ++const __dirname = path.dirname(__filename); + const BIN_PATH = `${resolve(__dirname, "../bin/ptt")}${process.platform === "win32" ? ".exe" : ""}`; + class PTTServer { + network; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index da99218c..cd765550 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,11 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +patchedDependencies: + go-ptt@0.4.0: + hash: c33069e8968004bf0b191c5c11cf7451b2ddaf38e2d343785493af925268d4f7 + path: patches/go-ptt@0.4.0.patch + importers: .: @@ -55,7 +60,7 @@ importers: version: 2.2.3 go-ptt: specifier: ^0.4.0 - version: 0.4.0 + version: 0.4.0(patch_hash=c33069e8968004bf0b191c5c11cf7451b2ddaf38e2d343785493af925268d4f7) moment-timezone: specifier: ^0.5.48 version: 0.5.48 @@ -7847,7 +7852,7 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - go-ptt@0.4.0: + go-ptt@0.4.0(patch_hash=c33069e8968004bf0b191c5c11cf7451b2ddaf38e2d343785493af925268d4f7): dependencies: '@bufbuild/protobuf': 2.7.0 '@grpc/grpc-js': 1.13.4 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5e86f141..a76c792b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -14,3 +14,6 @@ onlyBuiltDependencies: - unrs-resolver - utf-8-validate - utp-native + +patchedDependencies: + go-ptt@0.4.0: patches/go-ptt@0.4.0.patch diff --git a/tsconfig.base.json b/tsconfig.base.json index 043a5b08..5bdfa9e7 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,8 +1,9 @@ { "compilerOptions": { - "target": "es2021", - "module": "commonjs", - "moduleResolution": "node", + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Node", + "lib": ["esnext"], "incremental": true, "composite": true, "declaration": true,