diff --git a/packages/webamp/demo/js/Webamp.ts b/packages/webamp/demo/js/Webamp.ts index 87bfbd5d..d26adde1 100644 --- a/packages/webamp/demo/js/Webamp.ts +++ b/packages/webamp/demo/js/Webamp.ts @@ -14,6 +14,7 @@ export { ButterchurnOptions, Track, AppState, + PartialState, URLTrack, FilePicker, Action, diff --git a/packages/webamp/demo/js/config.ts b/packages/webamp/demo/js/config.ts index 10293387..9bdaaa9f 100644 --- a/packages/webamp/demo/js/config.ts +++ b/packages/webamp/demo/js/config.ts @@ -1,14 +1,13 @@ -import { Track, AppState, URLTrack } from "./Webamp"; +import { Track, URLTrack, PartialState } from "./Webamp"; // @ts-ignore import llamaAudio from "../mp3/llama-2.91.mp3"; -import { DeepPartial } from "redux"; interface Config { initialTracks?: Track[]; audioUrl?: string; skinUrl?: string; disableMarquee?: boolean; - initialState?: DeepPartial; + initialState?: PartialState; } const { hash } = window.location; diff --git a/packages/webamp/demo/js/screenshotInitialState.ts b/packages/webamp/demo/js/screenshotInitialState.ts index 520756da..6080be51 100644 --- a/packages/webamp/demo/js/screenshotInitialState.ts +++ b/packages/webamp/demo/js/screenshotInitialState.ts @@ -1,5 +1,4 @@ -import { DeepPartial } from "redux"; -import { AppState } from "./Webamp"; +import { PartialState } from "./Webamp"; const defaultTracksState = { "0": { @@ -44,7 +43,7 @@ const defaultTracksState = { }, }; -const initialState: DeepPartial = { +const initialState: PartialState = { equalizer: { sliders: { "60": 52, diff --git a/packages/webamp/js/store.ts b/packages/webamp/js/store.ts index c013db24..c3eaed98 100644 --- a/packages/webamp/js/store.ts +++ b/packages/webamp/js/store.ts @@ -1,4 +1,4 @@ -import { createStore, applyMiddleware, DeepPartial } from "redux"; +import { createStore, applyMiddleware } from "redux"; import thunk from "redux-thunk"; import { composeWithDevTools } from "redux-devtools-extension"; import reducer from "./reducers"; @@ -7,7 +7,7 @@ import { merge } from "./utils"; import { UPDATE_TIME_ELAPSED, STEP_MARQUEE } from "./actionTypes"; import Media from "./media"; import Emitter from "./emitter"; -import { Extras, Dispatch, Action, AppState, Middleware } from "./types"; +import { Extras, Dispatch, Action, Middleware, PartialState } from "./types"; // TODO: Move to demo const compose = composeWithDevTools({ @@ -18,7 +18,7 @@ export default function ( media: Media, actionEmitter: Emitter, customMiddlewares: Middleware[] = [], - stateOverrides: DeepPartial | undefined, + stateOverrides: PartialState | undefined, extras: Extras ) { let initialState; diff --git a/packages/webamp/js/types.ts b/packages/webamp/js/types.ts index 2199d62f..bbdf9c38 100644 --- a/packages/webamp/js/types.ts +++ b/packages/webamp/js/types.ts @@ -666,6 +666,8 @@ export interface AppState { milkdrop: MilkdropState; } +export type PartialState = any; + /** * Type definition of the music-metadata-browser module. * Ref: https://github.com/Borewit/music-metadata-browser/blob/master/src/index.ts @@ -732,7 +734,6 @@ export interface Store extends ReduxStore { subscribe(cb: () => void): () => void; dispatch: Dispatch; getState: GetState; - replaceReducer(reducer: Reducer): void; } export interface MiddlewareStore { diff --git a/packages/webamp/js/webampLazy.tsx b/packages/webamp/js/webampLazy.tsx index c4320b50..9d73b86c 100644 --- a/packages/webamp/js/webampLazy.tsx +++ b/packages/webamp/js/webampLazy.tsx @@ -10,6 +10,7 @@ import { Middleware, WindowPosition, ButterchurnOptions, + PartialState, } from "./types"; import getStore from "./store"; import App from "./components/App"; @@ -37,7 +38,6 @@ import Emitter from "./emitter"; import { SerializedStateV1 } from "./serializedStates/v1Types"; import Disposable from "./Disposable"; -import { DeepPartial } from "redux"; export interface Options { /** @@ -123,7 +123,7 @@ export interface PrivateOptions { avaliableSkins?: { url: string; name: string }[]; // Old misspelled name requireJSZip(): Promise; // TODO: Type JSZip requireMusicMetadata(): Promise; // TODO: Type musicmetadata - __initialState?: DeepPartial; + __initialState?: PartialState; __customMiddlewares?: Middleware[]; __initialWindowLayout?: WindowLayout; __butterchurnOptions?: ButterchurnOptions; diff --git a/packages/webamp/package.json b/packages/webamp/package.json index 1004e473..886059d7 100644 --- a/packages/webamp/package.json +++ b/packages/webamp/package.json @@ -69,7 +69,7 @@ "@types/css-font-loading-module": "^0.0.2", "@types/fscreen": "^1.0.1", "@types/invariant": "^2.2.29", - "@types/jest": "^23.3.2", + "@types/jest": "^27.0.3", "@types/jszip": "^3.1.5", "@types/lodash": "^4.14.116", "@types/lodash-es": "^4.17.1", diff --git a/packages/webamp/tsconfig.json b/packages/webamp/tsconfig.json index f02dc7e6..ef5f7ceb 100644 --- a/packages/webamp/tsconfig.json +++ b/packages/webamp/tsconfig.json @@ -11,7 +11,7 @@ "jsx": "preserve", "noEmit": true, "pretty": true, - "types": ["react/experimental", "react-dom/experimental"] + "types": ["react/experimental", "react-dom/experimental", "jest"] }, "include": ["**/*.ts", "**/*.tsx"], "exclude": ["node_modules", "demo/built"] diff --git a/yarn.lock b/yarn.lock index 8b3f4b6b..880347ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3168,6 +3168,14 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" +"@types/jest@^27.0.3": + version "27.0.3" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.3.tgz#0cf9dfe9009e467f70a342f0f94ead19842a783a" + integrity sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg== + dependencies: + jest-diff "^27.0.0" + pretty-format "^27.0.0" + "@types/json-schema@*", "@types/json-schema@^7.0.7": version "7.0.8" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818" @@ -6239,6 +6247,11 @@ diff-sequences@^26.6.2: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== +diff-sequences@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" + integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ== + diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -9615,6 +9628,16 @@ jest-diff@^26.1.0: jest-get-type "^26.0.0" pretty-format "^26.1.0" +jest-diff@^27.0.0: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.3.1.tgz#d2775fea15411f5f5aeda2a5e02c2f36440f6d55" + integrity sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.0.6" + jest-get-type "^27.3.1" + pretty-format "^27.3.1" + jest-docblock@^24.3.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" @@ -9747,6 +9770,11 @@ jest-get-type@^26.3.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== +jest-get-type@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.3.1.tgz#a8a2b0a12b50169773099eee60a0e6dd11423eff" + integrity sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg== + jest-haste-map@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" @@ -13107,7 +13135,7 @@ pretty-format@^26.1.0: ansi-styles "^4.0.0" react-is "^16.12.0" -pretty-format@^27.0.2: +pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.3.1: version "27.3.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.3.1.tgz#7e9486365ccdd4a502061fa761d3ab9ca1b78df5" integrity sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==