From 24389590b91e539deea89d4d934aaa295a67c3e9 Mon Sep 17 00:00:00 2001 From: Philip Wang Date: Thu, 22 Jan 2026 14:13:03 -0500 Subject: [PATCH 1/8] modded --- internal/api/routes_scene.go | 37 +++++++++++++++++++ package-lock.json | 22 +++++++++++ package.json | 5 +++ .../SceneDetails/ExternalPlayerButton.tsx | 19 ++++++++-- 4 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 package-lock.json create mode 100644 package.json diff --git a/internal/api/routes_scene.go b/internal/api/routes_scene.go index 2905bd53a..b2ec83269 100644 --- a/internal/api/routes_scene.go +++ b/internal/api/routes_scene.go @@ -8,6 +8,10 @@ import ( "strconv" "strings" + // Added by Philip + "os" + // Added ends. + "github.com/go-chi/chi/v5" "github.com/stashapp/stash/internal/manager" @@ -69,6 +73,8 @@ func (rs sceneRoutes) Routes() chi.Router { r.Get("/stream.mpd/{segment}_v.webm", rs.StreamDASHVideoSegment) r.Get("/stream.mpd/{segment}_a.webm", rs.StreamDASHAudioSegment) + r.Get("/stream/org/{streamOrgFile}", rs.StreamOrgDirect) // Added by Philip + r.Get("/screenshot", rs.Screenshot) r.Get("/preview", rs.Preview) r.Get("/webp", rs.Webp) @@ -99,6 +105,37 @@ func (rs sceneRoutes) StreamDirect(w http.ResponseWriter, r *http.Request) { ss.StreamSceneDirect(scene, w, r) } +// Added by Philip +func (rs sceneRoutes) StreamOrgDirect(w http.ResponseWriter, r *http.Request) { + scene := r.Context().Value(sceneKey).(*models.Scene) + // check if it's funscript + aStr := strings.Split(chi.URLParam(r, "streamOrgFile"), ".") + // aStr := strings.Split(r.RequestURI, ".") + if strings.ToLower(aStr[len(aStr)-1]) == "funscript" { + // it's a funscript request + rs.Funscript(w, r) + return + } + + // return 404 if the scene does not have a primary file + f := scene.Files.Primary() + if f == nil { + w.WriteHeader(http.StatusNotFound) + if _, err := w.Write([]byte("Primary file not found for streaming original file.")); err != nil { + logger.Warnf("[scene] error getting primary file for streaming original: $v", err) + } + return + } + // Also return 404 if the actual video file cannot be found + if _, err := os.Stat(f.Path); errors.Is(err, os.ErrNotExist) { + w.WriteHeader(http.StatusNotFound) + return + } + http.ServeFile(w, r, f.Path) +} + +// Added ends. + func (rs sceneRoutes) StreamMp4(w http.ResponseWriter, r *http.Request) { rs.streamTranscode(w, r, ffmpeg.StreamTypeMP4) } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..210f4f17d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,22 @@ +{ + "name": "stash4deovr", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "baseline-browser-mapping": "^2.9.17" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.17", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.17.tgz", + "integrity": "sha512-agD0MgJFUP/4nvjqzIB29zRPUuCF7Ge6mEv9s8dHrtYD7QWXRcx75rOADE/d5ah1NI+0vkDl0yorDd5U852IQQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..5f1acfe1a --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "baseline-browser-mapping": "^2.9.17" + } +} diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx index 3701f4138..35d066838 100644 --- a/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx +++ b/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx @@ -19,8 +19,16 @@ export const ExternalPlayerButton: React.FC = ({ const { paths } = scene; - if (!paths || !paths.stream || (!isAndroid && !isAppleDevice)) - return ; + // Added by Philip + const alwaysShow = true; + const { files } = scene; + const { path } = files[0]; + const pathStr = path??''; + const fileName = pathStr.split('/').pop()?.split('\\').pop()??''; + // Added ends. + + if (!paths || !paths.stream || (!isAndroid && !isAppleDevice && !alwaysShow)) // Modded by Philip + return ; const { stream } = paths; const title = objectTitle(scene); @@ -47,7 +55,10 @@ export const ExternalPlayerButton: React.FC = ({ url = streamURL .toString() .replace(new RegExp(`^${streamURL.protocol}`), "vlc-x-callback:"); + } else if (alwaysShow) { // Added by Philip + url = stream + "/org/" + encodeURIComponent(fileName); // like http://192.168.1.10:9999/scene/123/stream/org/file.mp4 } + // Added ends. return ( ); }; From 6cdb4c6e3b68a135d6166a586bba300093254180 Mon Sep 17 00:00:00 2001 From: Philip Wang Date: Thu, 22 Jan 2026 19:17:33 -0500 Subject: [PATCH 2/8] modded-2 with setting --- graphql/schema/types/config.graphql | 6 +++++ ui/v2.5/graphql/data/config.graphql | 3 ++- .../SceneDetails/ExternalPlayerButton.tsx | 23 +++++++++---------- .../SettingsInterfacePanel.tsx | 7 +++++- ui/v2.5/src/core/config.ts | 2 ++ ui/v2.5/src/locales/en-GB.json | 1 + 6 files changed, 28 insertions(+), 14 deletions(-) diff --git a/graphql/schema/types/config.graphql b/graphql/schema/types/config.graphql index b6f52091b..b0b8898b2 100644 --- a/graphql/schema/types/config.graphql +++ b/graphql/schema/types/config.graphql @@ -413,6 +413,9 @@ input ConfigInterfaceInput { noBrowser: Boolean "True if we should send notifications to the desktop" notificationsEnabled: Boolean + + "True if 'Open Org File' in scene details is shown" + showOpenExternal: Boolean } type ConfigDisableDropdownCreate { @@ -483,6 +486,9 @@ type ConfigInterfaceResult { funscriptOffset: Int "Whether to use Stash Hosted Funscript" useStashHostedFunscript: Boolean + + "Show 'Open Org File' in scene details" + showOpenExternal: Boolean } input ConfigDLNAInput { diff --git a/ui/v2.5/graphql/data/config.graphql b/ui/v2.5/graphql/data/config.graphql index b65ba21cc..a823cc6fa 100644 --- a/ui/v2.5/graphql/data/config.graphql +++ b/ui/v2.5/graphql/data/config.graphql @@ -59,7 +59,7 @@ fragment ConfigGeneralData on ConfigGeneralResult { liveTranscodeInputArgs liveTranscodeOutputArgs drawFunscriptHeatmapRange - + scraperPackageSources { name url @@ -112,6 +112,7 @@ fragment ConfigInterfaceData on ConfigInterfaceResult { handyKey funscriptOffset useStashHostedFunscript + showOpenExternal } fragment ConfigDLNAData on ConfigDLNAResult { diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx index 35d066838..5728ad02b 100644 --- a/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx +++ b/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx @@ -5,6 +5,7 @@ import { useIntl } from "react-intl"; import { Icon } from "src/components/Shared/Icon"; import { objectTitle } from "src/core/files"; import { SceneDataFragment } from "src/core/generated-graphql"; +import { useConfigurationContext } from "src/hooks/Config"; export interface IExternalPlayerButtonProps { scene: SceneDataFragment; @@ -16,18 +17,17 @@ export const ExternalPlayerButton: React.FC = ({ const isAndroid = /(android)/i.test(navigator.userAgent); const isAppleDevice = /(ipod|iphone|ipad)/i.test(navigator.userAgent); const intl = useIntl(); - + const { configuration } = useConfigurationContext(); + const interfaceConfig = configuration?.interface; + const uiConfig = configuration?.ui; + const showOpenExternal = uiConfig?.showOpenExternal??true; const { paths } = scene; - // Added by Philip - const alwaysShow = true; const { files } = scene; const { path } = files[0]; - const pathStr = path??''; - const fileName = pathStr.split('/').pop()?.split('\\').pop()??''; - // Added ends. - - if (!paths || !paths.stream || (!isAndroid && !isAppleDevice && !alwaysShow)) // Modded by Philip + const fileName = path.split('/').pop()?.split('\\').pop()??''; + + if (!paths || !paths.stream || (!isAndroid && !isAppleDevice && !showOpenExternal)) return ; const { stream } = paths; @@ -55,10 +55,9 @@ export const ExternalPlayerButton: React.FC = ({ url = streamURL .toString() .replace(new RegExp(`^${streamURL.protocol}`), "vlc-x-callback:"); - } else if (alwaysShow) { // Added by Philip + } else if (showOpenExternal) { // Added by Philip url = stream + "/org/" + encodeURIComponent(fileName); // like http://192.168.1.10:9999/scene/123/stream/org/file.mp4 } - // Added ends. return ( ); }; diff --git a/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx b/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx index 0ebe3f736..cffe1b410 100644 --- a/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx +++ b/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx @@ -462,13 +462,18 @@ export const SettingsInterfacePanel: React.FC = PatchComponent( return {TextUtils.secondsToTimestamp(v ?? 0)}; }} /> - saveUI({ showAbLoopControls: v })} /> + saveUI({ showOpenExternal: v })} + /> Date: Thu, 22 Jan 2026 19:24:37 -0500 Subject: [PATCH 3/8] modded-3 --- .../components/Scenes/SceneDetails/ExternalPlayerButton.tsx | 4 ++-- ui/v2.5/src/locales/en-GB.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx index 5728ad02b..564719031 100644 --- a/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx +++ b/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx @@ -55,8 +55,8 @@ export const ExternalPlayerButton: React.FC = ({ url = streamURL .toString() .replace(new RegExp(`^${streamURL.protocol}`), "vlc-x-callback:"); - } else if (showOpenExternal) { // Added by Philip - url = stream + "/org/" + encodeURIComponent(fileName); // like http://192.168.1.10:9999/scene/123/stream/org/file.mp4 + } else if (showOpenExternal) { + url = stream + "/org/" + encodeURIComponent(fileName); } return ( diff --git a/ui/v2.5/src/locales/en-GB.json b/ui/v2.5/src/locales/en-GB.json index dad4aa827..704373fb0 100644 --- a/ui/v2.5/src/locales/en-GB.json +++ b/ui/v2.5/src/locales/en-GB.json @@ -782,7 +782,7 @@ "disable_mobile_media_auto_rotate": "Disable auto-rotate of fullscreen media on Mobile", "enable_chromecast": "Enable Chromecast", "show_ab_loop_controls": "Show AB Loop plugin controls", - "show_open_original": "Show Open Original button in scene details", + "show_open_external": "Show 'Open In External Player' button", "show_scrubber": "Show Scrubber", "show_range_markers": "Show Range Markers", "track_activity": "Enable Scene Play history", From a3d6a0342b83fdd4d1e7a8efd9a6bc455c450c03 Mon Sep 17 00:00:00 2001 From: Philip Wang Date: Thu, 22 Jan 2026 19:55:09 -0500 Subject: [PATCH 4/8] after prettier --- ui/v2.5/graphql/data/config.graphql | 2 +- .../Scenes/SceneDetails/ExternalPlayerButton.tsx | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ui/v2.5/graphql/data/config.graphql b/ui/v2.5/graphql/data/config.graphql index a823cc6fa..9f605e862 100644 --- a/ui/v2.5/graphql/data/config.graphql +++ b/ui/v2.5/graphql/data/config.graphql @@ -59,7 +59,7 @@ fragment ConfigGeneralData on ConfigGeneralResult { liveTranscodeInputArgs liveTranscodeOutputArgs drawFunscriptHeatmapRange - + scraperPackageSources { name url diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx index 564719031..766c683d3 100644 --- a/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx +++ b/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx @@ -18,17 +18,20 @@ export const ExternalPlayerButton: React.FC = ({ const isAppleDevice = /(ipod|iphone|ipad)/i.test(navigator.userAgent); const intl = useIntl(); const { configuration } = useConfigurationContext(); - const interfaceConfig = configuration?.interface; const uiConfig = configuration?.ui; - const showOpenExternal = uiConfig?.showOpenExternal??true; + const showOpenExternal = uiConfig?.showOpenExternal ?? true; const { paths } = scene; const { files } = scene; const { path } = files[0]; - const fileName = path.split('/').pop()?.split('\\').pop()??''; - - if (!paths || !paths.stream || (!isAndroid && !isAppleDevice && !showOpenExternal)) - return ; + const fileName = path.split("/").pop()?.split("\\").pop() ?? ""; + + if ( + !paths || + !paths.stream || + (!isAndroid && !isAppleDevice && !showOpenExternal) + ) + return ; const { stream } = paths; const title = objectTitle(scene); From ccf1f4aabab91fe70eb2cfc8877fb13c1d8109d9 Mon Sep 17 00:00:00 2001 From: Philip Wang Date: Fri, 23 Jan 2026 13:00:32 -0500 Subject: [PATCH 5/8] small changes --- internal/api/routes_scene.go | 11 ++--------- .../Scenes/SceneDetails/ExternalPlayerButton.tsx | 3 +-- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/internal/api/routes_scene.go b/internal/api/routes_scene.go index b2ec83269..8a5c4f023 100644 --- a/internal/api/routes_scene.go +++ b/internal/api/routes_scene.go @@ -5,13 +5,10 @@ import ( "context" "errors" "net/http" + "os" "strconv" "strings" - // Added by Philip - "os" - // Added ends. - "github.com/go-chi/chi/v5" "github.com/stashapp/stash/internal/manager" @@ -72,8 +69,7 @@ func (rs sceneRoutes) Routes() chi.Router { r.Get("/stream.mpd", rs.StreamDASH) r.Get("/stream.mpd/{segment}_v.webm", rs.StreamDASHVideoSegment) r.Get("/stream.mpd/{segment}_a.webm", rs.StreamDASHAudioSegment) - - r.Get("/stream/org/{streamOrgFile}", rs.StreamOrgDirect) // Added by Philip + r.Get("/stream/org/{streamOrgFile}", rs.StreamOrgDirect) r.Get("/screenshot", rs.Screenshot) r.Get("/preview", rs.Preview) @@ -105,7 +101,6 @@ func (rs sceneRoutes) StreamDirect(w http.ResponseWriter, r *http.Request) { ss.StreamSceneDirect(scene, w, r) } -// Added by Philip func (rs sceneRoutes) StreamOrgDirect(w http.ResponseWriter, r *http.Request) { scene := r.Context().Value(sceneKey).(*models.Scene) // check if it's funscript @@ -134,8 +129,6 @@ func (rs sceneRoutes) StreamOrgDirect(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, f.Path) } -// Added ends. - func (rs sceneRoutes) StreamMp4(w http.ResponseWriter, r *http.Request) { rs.streamTranscode(w, r, ffmpeg.StreamTypeMP4) } diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx index 766c683d3..c5cca5f81 100644 --- a/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx +++ b/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx @@ -18,8 +18,7 @@ export const ExternalPlayerButton: React.FC = ({ const isAppleDevice = /(ipod|iphone|ipad)/i.test(navigator.userAgent); const intl = useIntl(); const { configuration } = useConfigurationContext(); - const uiConfig = configuration?.ui; - const showOpenExternal = uiConfig?.showOpenExternal ?? true; + const showOpenExternal = configuration?.ui?.showOpenExternal ?? true; const { paths } = scene; const { files } = scene; From 3ca4822bb1b086b22e2295aac222c53c38cc8e7c Mon Sep 17 00:00:00 2001 From: Philip Wang Date: Fri, 23 Jan 2026 14:28:45 -0500 Subject: [PATCH 6/8] more small fixes --- graphql/schema/types/config.graphql | 4 ++-- internal/api/routes_scene.go | 25 ++++++++++++++++++------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/graphql/schema/types/config.graphql b/graphql/schema/types/config.graphql index b0b8898b2..87bf3ae54 100644 --- a/graphql/schema/types/config.graphql +++ b/graphql/schema/types/config.graphql @@ -414,7 +414,7 @@ input ConfigInterfaceInput { "True if we should send notifications to the desktop" notificationsEnabled: Boolean - "True if 'Open Org File' in scene details is shown" + "True if 'Open in Ext. Player' button in scene details is shown" showOpenExternal: Boolean } @@ -487,7 +487,7 @@ type ConfigInterfaceResult { "Whether to use Stash Hosted Funscript" useStashHostedFunscript: Boolean - "Show 'Open Org File' in scene details" + "Show 'Open in Ext. Player' button in scene details" showOpenExternal: Boolean } diff --git a/internal/api/routes_scene.go b/internal/api/routes_scene.go index 8a5c4f023..a3fa766aa 100644 --- a/internal/api/routes_scene.go +++ b/internal/api/routes_scene.go @@ -5,6 +5,7 @@ import ( "context" "errors" "net/http" + "net/url" "os" "strconv" "strings" @@ -104,8 +105,9 @@ func (rs sceneRoutes) StreamDirect(w http.ResponseWriter, r *http.Request) { func (rs sceneRoutes) StreamOrgDirect(w http.ResponseWriter, r *http.Request) { scene := r.Context().Value(sceneKey).(*models.Scene) // check if it's funscript - aStr := strings.Split(chi.URLParam(r, "streamOrgFile"), ".") - // aStr := strings.Split(r.RequestURI, ".") + streamOrgFile := chi.URLParam(r, "streamOrgFile") + aStr := strings.Split(streamOrgFile, ".") + // aStr usually is the primary file, but can be .srt or other file format. if strings.ToLower(aStr[len(aStr)-1]) == "funscript" { // it's a funscript request rs.Funscript(w, r) @@ -113,20 +115,29 @@ func (rs sceneRoutes) StreamOrgDirect(w http.ResponseWriter, r *http.Request) { } // return 404 if the scene does not have a primary file - f := scene.Files.Primary() - if f == nil { + primaryFile := scene.Files.Primary() + if primaryFile == nil { w.WriteHeader(http.StatusNotFound) if _, err := w.Write([]byte("Primary file not found for streaming original file.")); err != nil { logger.Warnf("[scene] error getting primary file for streaming original: $v", err) } return } - // Also return 404 if the actual video file cannot be found - if _, err := os.Stat(f.Path); errors.Is(err, os.ErrNotExist) { + pathBase := primaryFile.Path[:len(primaryFile.Path)-len(primaryFile.Basename)] // remove filename from the path. + f, err := url.PathUnescape(streamOrgFile) + if err != nil { w.WriteHeader(http.StatusNotFound) return } - http.ServeFile(w, r, f.Path) + f = pathBase + f + // Also return 404 if the actual file cannot be found + if _, err := os.Stat(f); errors.Is(err, os.ErrNotExist) { + w.WriteHeader(http.StatusNotFound) + return + } + + utils.ServeStaticFile(w, r, f) + // http.ServeFile(w, r, f.Path) } func (rs sceneRoutes) StreamMp4(w http.ResponseWriter, r *http.Request) { From a9601f23c74015d999b7aca2047c8e5001b93ecf Mon Sep 17 00:00:00 2001 From: Philip Wang Date: Sat, 24 Jan 2026 10:40:01 -0500 Subject: [PATCH 7/8] a little more --- .../Scenes/SceneDetails/ExternalPlayerButton.tsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx index c5cca5f81..5a7b6f8d7 100644 --- a/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx +++ b/ui/v2.5/src/components/Scenes/SceneDetails/ExternalPlayerButton.tsx @@ -18,12 +18,10 @@ export const ExternalPlayerButton: React.FC = ({ const isAppleDevice = /(ipod|iphone|ipad)/i.test(navigator.userAgent); const intl = useIntl(); const { configuration } = useConfigurationContext(); - const showOpenExternal = configuration?.ui?.showOpenExternal ?? true; - const { paths } = scene; - - const { files } = scene; - const { path } = files[0]; - const fileName = path.split("/").pop()?.split("\\").pop() ?? ""; + const showOpenExternal = configuration.ui.showOpenExternal ?? true; + const { paths, files } = scene; + // Get only file name from the full path. + const fileName = files[0].path?.split("/").pop()?.split("\\").pop() ?? ""; if ( !paths || From 44f51f45df1a557afaa7bffe23a8daff0f930b32 Mon Sep 17 00:00:00 2001 From: Philip Wang Date: Tue, 27 Jan 2026 14:31:11 -0500 Subject: [PATCH 8/8] no package.json --- package-lock.json | 22 ---------------------- package.json | 5 ----- 2 files changed, 27 deletions(-) delete mode 100644 package-lock.json delete mode 100644 package.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 210f4f17d..000000000 --- a/package-lock.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "stash4deovr", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "baseline-browser-mapping": "^2.9.17" - } - }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.17", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.17.tgz", - "integrity": "sha512-agD0MgJFUP/4nvjqzIB29zRPUuCF7Ge6mEv9s8dHrtYD7QWXRcx75rOADE/d5ah1NI+0vkDl0yorDd5U852IQQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 5f1acfe1a..000000000 --- a/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "devDependencies": { - "baseline-browser-mapping": "^2.9.17" - } -}