feat(my library): osu lazer support (#485)
This commit is contained in:
@@ -117,6 +117,7 @@
|
||||
"long": "^4.0.0",
|
||||
"node-machine-id": "^1.1.12",
|
||||
"osu-db-parser": "git+https://github.com/yadPe/osu-db-parser.git#6cc783f3a9270f730cd5038d03ada4a78634cd65",
|
||||
"osu-lazer-db-reader": "0.1.6",
|
||||
"ps-node": "^0.1.6",
|
||||
"react": "^18.1.0",
|
||||
"react-dom": "^18.1.0",
|
||||
|
||||
@@ -142,6 +142,7 @@ checkBrowsers(paths.appPath, isInteractive)
|
||||
console.log(chalk.green("Run 'yarn electron-dev' from either powershell or cmd."));
|
||||
} else {
|
||||
console.log(chalk.yellow("Couldn't launch electron, try starting it manually"));
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
}).stdout.pipe(process.stdout).on('exit', () => console.log('Electron process terminated'));
|
||||
|
||||
@@ -6,7 +6,10 @@ import { outputJSON, readJson } from 'fs-extra';
|
||||
import { join } from 'path';
|
||||
import { error, log } from 'electron-log';
|
||||
import { memoize } from 'underscore';
|
||||
import { ipcRenderer } from 'electron';
|
||||
import { connect } from 'react-redux';
|
||||
import { getOsPath } from '../helpers/path';
|
||||
import { getIsLazer, getOsuPath } from '../modules/Settings/reducer/selectors';
|
||||
|
||||
export const HistoryContext = createContext();
|
||||
export const useDownloadHistory = () => useContext(HistoryContext);
|
||||
@@ -74,7 +77,18 @@ class HistoryProvider extends Component {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
this._readHistory();
|
||||
const setup = async () => {
|
||||
await this._readHistory();
|
||||
|
||||
const { osuPath, isLazer } = this.props;
|
||||
const result = await ipcRenderer.invoke('osuSongsScan', {
|
||||
osuPath,
|
||||
isLazer,
|
||||
});
|
||||
|
||||
this.set(result);
|
||||
};
|
||||
setup();
|
||||
}
|
||||
|
||||
componentDidUpdate() {
|
||||
@@ -127,8 +141,8 @@ class HistoryProvider extends Component {
|
||||
});
|
||||
};
|
||||
|
||||
_readHistory = () => {
|
||||
readJson(this.path)
|
||||
_readHistory = async () => {
|
||||
await readJson(this.path)
|
||||
.then(rawHistory => {
|
||||
// Check if history is from a version prior to 0.3.0
|
||||
if (!Array.isArray(Object.values(rawHistory)[0])) {
|
||||
@@ -175,4 +189,8 @@ class HistoryProvider extends Component {
|
||||
}
|
||||
}
|
||||
|
||||
export default HistoryProvider;
|
||||
const mapStateToProps = state => ({
|
||||
osuPath: getOsuPath(state),
|
||||
isLazer: getIsLazer(state),
|
||||
});
|
||||
export default connect(mapStateToProps)(HistoryProvider);
|
||||
|
||||
@@ -6,6 +6,7 @@ import { getFadeIn, sectionSwitchAnimation } from '../../helpers/css.utils';
|
||||
import AllBeatmapsCollection from './components/AllBeatmaps';
|
||||
import Collection from './components/Collection';
|
||||
import CollectionDetails from './components/CollectionDetails';
|
||||
import { getCollections } from './selectors';
|
||||
|
||||
const useStyle = createUseStyles({
|
||||
...getFadeIn(),
|
||||
@@ -51,7 +52,7 @@ const MyLibrary = ({ setHeaderContent, collections }) => {
|
||||
<div className={classes.myLibraryWrapper}>
|
||||
<div className={classes.collections}>
|
||||
<AllBeatmapsCollection select={setSelectedCollection} />
|
||||
{Object.entries(collections).map(([name, beatmapsHash]) => (
|
||||
{collections.map(([name, beatmapsHash]) => (
|
||||
<Collection
|
||||
select={setSelectedCollection}
|
||||
key={`${name}${beatmapsHash.length}`}
|
||||
@@ -64,8 +65,8 @@ const MyLibrary = ({ setHeaderContent, collections }) => {
|
||||
);
|
||||
};
|
||||
|
||||
const mapStateToProps = ({ app, library }) => ({
|
||||
windowSize: app.window,
|
||||
collections: library.collections,
|
||||
const mapStateToProps = (state) => ({
|
||||
windowSize: state.app.window,
|
||||
collections: getCollections(state)
|
||||
});
|
||||
export default connect(mapStateToProps)(MyLibrary);
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
export const getCollections = state => state.library.collections;
|
||||
@@ -108,7 +108,12 @@ const Setting = ({ settingCategory }) => {
|
||||
case 'Button':
|
||||
return (
|
||||
<div style={{ textAlign: 'start' }}>
|
||||
<Button className="btn" color={theme.palette.primary.accent} onClick={item.action}>
|
||||
<Button
|
||||
className="btn"
|
||||
color={theme.palette.primary.accent}
|
||||
onClick={item.action}
|
||||
disabled={item.disabled}
|
||||
>
|
||||
{item.name}
|
||||
</Button>
|
||||
<div style={{ fontSize: '0.8rem', margin: '0px 8px' }}>{item.description}</div>
|
||||
|
||||
@@ -9,6 +9,7 @@ export default Object.freeze({
|
||||
autoImport: true,
|
||||
importMethod: 'auto',
|
||||
osuPath: '',
|
||||
isLazer: false,
|
||||
osuSongsPath: '',
|
||||
theme: {
|
||||
accentColor: config.display.defaultAccentColor,
|
||||
@@ -21,7 +22,7 @@ export default Object.freeze({
|
||||
isBotAccount: false,
|
||||
},
|
||||
osuApi: {
|
||||
key: "",
|
||||
key: '',
|
||||
},
|
||||
},
|
||||
beatconnectAPI: {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React, { useEffect, useState, cloneElement } from 'react';
|
||||
import { useTheme } from 'react-jss';
|
||||
import { remote, shell } from 'electron';
|
||||
import { connect, useDispatch } from 'react-redux';
|
||||
import { connect, useDispatch, useSelector } from 'react-redux';
|
||||
import { error } from 'electron-log';
|
||||
import { setIrcUser, setIrcPass, setIRCIsBot, setOSUApiKey, setPrefix } from './reducer/actions';
|
||||
import ConfLoader from './helpers/ConfLoader';
|
||||
@@ -17,6 +17,7 @@ import { clearCollections } from '../MyLibrary/actions';
|
||||
import { scanOsuCollection } from './utils/scanOsuCollections';
|
||||
import store from '../../../shared/store';
|
||||
import { getVersion } from '../../helpers/path';
|
||||
import { getIsLazer } from './reducer/selectors';
|
||||
|
||||
const Settings = ({ userPreferences }) => {
|
||||
const { irc, osuApi, prefix, osuSongsPath, osuPath, lastScan, importMethod } = userPreferences;
|
||||
@@ -24,11 +25,12 @@ const Settings = ({ userPreferences }) => {
|
||||
const theme = useTheme();
|
||||
const history = useDownloadHistory();
|
||||
const dispatch = useDispatch();
|
||||
const isLazer = useSelector(getIsLazer);
|
||||
|
||||
const { handleAccentColorSelect, handleImportMethodChange, osuPathSetup } = useSettingsUtils(userPreferences);
|
||||
const scanOsuSongs = useOsuDbScan();
|
||||
const scanOsu = () => {
|
||||
scanOsuSongs();
|
||||
scanOsuSongs(isLazer);
|
||||
scanOsuCollection(osuPath);
|
||||
};
|
||||
|
||||
@@ -54,7 +56,12 @@ const Settings = ({ userPreferences }) => {
|
||||
'Giving access to the osu! folder allow osu!.db and collection.db read, enabling Beatconnect to auto sync on startup with your game',
|
||||
type: 'Text',
|
||||
},
|
||||
{ name: 'Select your Osu! Songs folder', action: () => osuPathSetup('song'), type: 'Button' },
|
||||
{
|
||||
name: 'Select your Osu! Songs folder',
|
||||
action: () => osuPathSetup('song'),
|
||||
type: 'Button',
|
||||
disabled: isLazer,
|
||||
},
|
||||
{
|
||||
name: osuSongsPath || 'No songs folder set',
|
||||
description: 'By selecting your osu songs folder enable the Bulk import and scan option',
|
||||
@@ -75,8 +82,8 @@ const Settings = ({ userPreferences }) => {
|
||||
value: importMethod === config.settings.importMethod.bulk,
|
||||
action: () => handleImportMethodChange(config.settings.importMethod.bulk),
|
||||
description:
|
||||
'Beatmaps are placed in you songs folder after downloading and osu! will import them after reload of the beatmaps selection',
|
||||
disabled: !osuSongsPath || osuSongsPath === '',
|
||||
'Beatmaps are placed in you songs folder after downloading and osu! will import them after reload of the beatmaps selection. Not supported for Osu!Lazer',
|
||||
disabled: !osuSongsPath || osuSongsPath === '' || isLazer,
|
||||
type: 'CheckBox',
|
||||
},
|
||||
{
|
||||
|
||||
@@ -45,3 +45,5 @@ export const setLastScan = payload => store.dispatch({ type: 'LASTSCAN', payload
|
||||
export const setImportMethod = payload => store.dispatch({ type: 'SETIMPORTMETHOD', payload });
|
||||
|
||||
export const saveThemeAccentColor = payload => store.dispatch({ type: 'SET_THEME_ACCENT_COLOR', payload });
|
||||
|
||||
export const setIsLazer = payload => store.dispatch({ type: 'SET_IS_LAZER', payload });
|
||||
|
||||
@@ -45,6 +45,9 @@ export default (settings = confLoader.config, { type, payload }) => {
|
||||
case 'SET_THEME_ACCENT_COLOR':
|
||||
userPreferences = { ...userPreferences, theme: { accentColor: payload } };
|
||||
return { ...settings, userPreferences: { ...userPreferences } };
|
||||
case 'SET_IS_LAZER':
|
||||
userPreferences = { ...userPreferences, isLazer: payload };
|
||||
return { ...settings, userPreferences: { ...userPreferences } };
|
||||
default:
|
||||
return settings;
|
||||
}
|
||||
|
||||
@@ -12,3 +12,5 @@ export const getOsuApiKey = state => {
|
||||
let apiKey = _.get(getUserPreference(state), ['osuApi', 'key'], '');
|
||||
return _.isEmpty(apiKey.trim()) ? process.env.BEATCONNECT_CLIENT_API_KEY_V1 : apiKey;
|
||||
};
|
||||
|
||||
export const getIsLazer = state => _.get(getUserPreference(state), ['isLazer'], false);
|
||||
|
||||
@@ -7,7 +7,7 @@ import { useSelector } from 'react-redux';
|
||||
import { useDownloadHistory } from '../../../Providers/HistoryProvider';
|
||||
import { useTasks } from '../../../Providers/TaskProvider.bs';
|
||||
import { setLastScan } from '../reducer/actions';
|
||||
import { getOsuPath, getOsuSongPath } from '../reducer/selectors';
|
||||
import { getIsLazer, getOsuPath, getOsuSongPath } from '../reducer/selectors';
|
||||
import { scanOsuCollection } from './scanOsuCollections';
|
||||
|
||||
export const useOsuDbScan = () => {
|
||||
@@ -17,7 +17,8 @@ export const useOsuDbScan = () => {
|
||||
const history = useDownloadHistory();
|
||||
const [isScanning, setIsScanning] = useState(false);
|
||||
|
||||
const scanOsuSongs = async () => {
|
||||
const scanOsuSongs = async isLazer => {
|
||||
console.log('scanOsuSongs', isLazer);
|
||||
if (isScanning) return;
|
||||
if (!osuPath && !osuSongsPath) {
|
||||
alert('You need to select your osu! or songs folder before performing a scan');
|
||||
@@ -26,7 +27,7 @@ export const useOsuDbScan = () => {
|
||||
setIsScanning(true);
|
||||
addTask({ name: 'Scanning beatmaps', status: 'running', description: '', section: 'Settings' });
|
||||
try {
|
||||
const result = await ipcRenderer.invoke('osuSongsScan', { osuPath });
|
||||
const result = await ipcRenderer.invoke('osuSongsScan', { osuPath, isLazer });
|
||||
history.set(result);
|
||||
setLastScan({ date: Date.now(), beatmaps: Object.keys(result.beatmaps).length });
|
||||
} catch (e) {
|
||||
@@ -45,9 +46,10 @@ export const useOsuDbAutoScan = () => {
|
||||
const osuDbScan = useOsuDbScan();
|
||||
const osuSongsPath = useSelector(getOsuSongPath);
|
||||
const osuPath = useSelector(getOsuPath);
|
||||
const isLazer = useSelector(getIsLazer);
|
||||
useEffect(() => {
|
||||
if (osuPath && osuSongsPath !== '') {
|
||||
osuDbScan();
|
||||
osuDbScan(isLazer);
|
||||
scanOsuCollection(osuPath);
|
||||
}
|
||||
}, []);
|
||||
|
||||
@@ -5,18 +5,17 @@ import { useSelector } from 'react-redux';
|
||||
import config from '../../../../shared/config';
|
||||
import { useDownloadQueue } from '../../../Providers/downloadManager';
|
||||
import { useSetTheme } from '../../../Providers/ThemeProvider';
|
||||
import { saveThemeAccentColor, setImportMethod, setOsuSongsPath, setOsuPath } from '../reducer/actions';
|
||||
import { saveThemeAccentColor, setImportMethod, setOsuSongsPath, setOsuPath, setIsLazer } from '../reducer/actions';
|
||||
import { getOsuSongPath } from '../reducer/selectors';
|
||||
|
||||
const checkOsuPath = async path => {
|
||||
try {
|
||||
const isPathValid = await ipcRenderer.invoke('validate-osu-path', path);
|
||||
return !!isPathValid;
|
||||
return await ipcRenderer.invoke('validate-osu-path', path);
|
||||
} catch (e) {
|
||||
// eslint-disable-next-line no-alert
|
||||
alert(`An error occured while setting the osu folder, please try again.`);
|
||||
error('[osuPathSetup]: ', e);
|
||||
return false;
|
||||
return { isValid: false, isLazer: false };
|
||||
}
|
||||
};
|
||||
|
||||
@@ -43,14 +42,16 @@ const useSettingsUtils = ({ osuSongsPath, importMethod }) => {
|
||||
setPath(importMethod, filePaths[0]);
|
||||
setOsuSongsPath(filePaths[0]);
|
||||
} else {
|
||||
const isValid = await checkOsuPath(filePaths[0]);
|
||||
const { isValid, isLazer } = await checkOsuPath(filePaths[0]);
|
||||
if (!isValid) {
|
||||
// eslint-disable-next-line no-alert
|
||||
alert(`The provided folder doesn't seems be a valid osu folder.`);
|
||||
return;
|
||||
}
|
||||
// always set isLazer before osuPath or bad things will happen!
|
||||
setIsLazer(isLazer);
|
||||
setOsuPath(filePaths[0]);
|
||||
if (!currentOsuSongsPath) {
|
||||
if (!currentOsuSongsPath && !isLazer) {
|
||||
const songsPath = join(filePaths[0], 'Songs');
|
||||
if (await isDirectory(songsPath)) {
|
||||
setOsuSongsPath(join(filePaths[0], 'Songs'));
|
||||
|
||||
@@ -20,6 +20,9 @@ const useStyles = createUseStyles({
|
||||
'&:active': {
|
||||
opacity: 0.9,
|
||||
},
|
||||
'&:disabled' : {
|
||||
filter: 'grayscale(.55)',
|
||||
},
|
||||
'&:active svg': {
|
||||
transform: 'scale(.88)',
|
||||
},
|
||||
|
||||
@@ -9,7 +9,7 @@ import { changeCurrentSection } from '../../../../app.actions';
|
||||
import { tFromJs as sections } from '../../../Sections.bs';
|
||||
import { useOsuDbScan } from '../../../Settings/utils/useScanOsuSongs';
|
||||
import { scanOsuCollection } from '../../../Settings/utils/scanOsuCollections';
|
||||
import { getOsuPath } from '../../../Settings/reducer/selectors';
|
||||
import { getIsLazer, getOsuPath } from '../../../Settings/reducer/selectors';
|
||||
|
||||
const useStyle = createUseStyles({
|
||||
playOsuWrapper: {
|
||||
@@ -100,6 +100,7 @@ const PlayOsu = ({ onSelect, osuGamePath, ...otherProps }) => {
|
||||
const isScanning = useRef(false);
|
||||
const osuScan = useOsuDbScan();
|
||||
const osuPath = useSelector(getOsuPath);
|
||||
const isLazer = useSelector(getIsLazer);
|
||||
const invalidateNextOsuState = useRef(false);
|
||||
|
||||
const launchOsu = () => {
|
||||
@@ -125,7 +126,7 @@ const PlayOsu = ({ onSelect, osuGamePath, ...otherProps }) => {
|
||||
useEffect(() => {
|
||||
if (!isOsuSet || isScanning.current || osuIsRunning) return;
|
||||
isScanning.current = true;
|
||||
osuScan();
|
||||
osuScan(isLazer);
|
||||
scanOsuCollection(osuPath)
|
||||
.catch(e => {
|
||||
error(`[scanOsuCollection]: ${e}`);
|
||||
@@ -133,12 +134,12 @@ const PlayOsu = ({ onSelect, osuGamePath, ...otherProps }) => {
|
||||
.finally(() => {
|
||||
isScanning.current = false;
|
||||
});
|
||||
}, [osuIsRunning, isOsuSet]);
|
||||
}, [osuIsRunning, isOsuSet, isLazer]);
|
||||
|
||||
return (
|
||||
<div
|
||||
className={classes.playOsuWrapper}
|
||||
onClick={isOsuSet ? launchOsu : () => dispatch(changeCurrentSection(sections('Settings')))}
|
||||
onClick={isOsuSet && !isLazer ? launchOsu : () => dispatch(changeCurrentSection(sections('Settings')))}
|
||||
role="tab"
|
||||
>
|
||||
<span data-radium="true" className={classes.span}>
|
||||
@@ -154,7 +155,8 @@ const PlayOsu = ({ onSelect, osuGamePath, ...otherProps }) => {
|
||||
</div>
|
||||
<span data-radium="true" className={classes.title}>
|
||||
{!isOsuSet && 'Osu! not set'}
|
||||
{isOsuSet && (osuIsRunning ? 'Playing !' : 'Play !')}
|
||||
{isOsuSet && !isLazer && (osuIsRunning ? 'Playing!' : 'Play!')}
|
||||
{isLazer && 'Lazer!'}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -125,8 +125,10 @@ const TasksControl = ({ onSelect, ...otherProps }) => {
|
||||
))}
|
||||
</>
|
||||
);
|
||||
return null;
|
||||
};
|
||||
return (
|
||||
// eslint-disable-next-line jsx-a11y/anchor-is-valid
|
||||
<a
|
||||
data-radium="true"
|
||||
className={classes.a}
|
||||
|
||||
+6
-6
@@ -23,9 +23,9 @@ const container = document.getElementById('root');
|
||||
const root = createRoot(container);
|
||||
root.render(
|
||||
<ErrorBoundary>
|
||||
<HistoryProvider>
|
||||
<ThemeProvider>
|
||||
<Provider store={store}>
|
||||
<ThemeProvider>
|
||||
<Provider store={store}>
|
||||
<HistoryProvider>
|
||||
<AudioPlayerProvider>
|
||||
<TasksProvider>
|
||||
<DownloadManagerProvider>
|
||||
@@ -33,8 +33,8 @@ root.render(
|
||||
</DownloadManagerProvider>
|
||||
</TasksProvider>
|
||||
</AudioPlayerProvider>
|
||||
</Provider>
|
||||
</ThemeProvider>
|
||||
</HistoryProvider>
|
||||
</HistoryProvider>
|
||||
</Provider>
|
||||
</ThemeProvider>
|
||||
</ErrorBoundary>,
|
||||
);
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
const { promises: fs } = require('fs');
|
||||
|
||||
const readableBits = (bytes, decimals) => {
|
||||
if (bytes === 0) return '0 Bytes';
|
||||
const k = 1000;
|
||||
@@ -17,9 +19,19 @@ const getBeatconnectProtocolParams = (argv = [''], protocol) => {
|
||||
return undefined;
|
||||
};
|
||||
|
||||
async function exists(path) {
|
||||
try {
|
||||
await fs.access(path);
|
||||
return true;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
readableBits,
|
||||
makeDownloadUrl,
|
||||
getBeatconnectProtocolParams,
|
||||
removeProtocolPrefix,
|
||||
exists,
|
||||
};
|
||||
|
||||
@@ -6,7 +6,7 @@ const readCollectionDB = path =>
|
||||
fs.readFile(path, (err, buf) => {
|
||||
if (err || !buf) return reject(new Error('Failed to open collection.db'));
|
||||
|
||||
const collections = {};
|
||||
const collections = [];
|
||||
|
||||
// eslint-disable-next-line no-underscore-dangle, no-unused-vars
|
||||
const _version = buf.readInt32LE(0);
|
||||
@@ -15,7 +15,8 @@ const readCollectionDB = path =>
|
||||
for (let i = 0; i < collectionCount; i++) {
|
||||
const name = readString(buf, offset);
|
||||
offset += name.length;
|
||||
collections[name.str] = [];
|
||||
|
||||
collections[i] = [name.str, []];
|
||||
|
||||
const beatmapCount = buf.readInt32LE(offset);
|
||||
offset += 4;
|
||||
@@ -23,7 +24,7 @@ const readCollectionDB = path =>
|
||||
for (let j = 0; j < beatmapCount; j++) {
|
||||
const md5 = readString(buf, offset);
|
||||
offset += md5.length;
|
||||
collections[name.str].push(md5.str);
|
||||
collections[i][1].push(md5.str);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,19 +37,17 @@ const writeCollectionDB = (path, collections) =>
|
||||
let buf = Buffer.alloc(8);
|
||||
|
||||
buf.writeInt32LE(20160212);
|
||||
buf.writeInt32LE(Object.keys(collections).length, 4);
|
||||
buf.writeInt32LE(collections.length, 4);
|
||||
|
||||
const collectionNames = Object.keys(collections);
|
||||
|
||||
collectionNames.forEach(name => {
|
||||
collections.forEach(([name, beatmapsMd5]) => {
|
||||
buf = Buffer.concat([buf, createString(name)]);
|
||||
|
||||
const beatmapCountBuf = Buffer.alloc(4);
|
||||
beatmapCountBuf.writeInt32LE(collections[name].length);
|
||||
beatmapCountBuf.writeInt32LE(beatmapsMd5.length);
|
||||
buf = Buffer.concat([buf, beatmapCountBuf]);
|
||||
|
||||
for (let j = 0; j < collections[name].length; j++) {
|
||||
buf = Buffer.concat([buf, createString(collections[name][j])]);
|
||||
for (let j = 0; j < beatmapsMd5.length; j++) {
|
||||
buf = Buffer.concat([buf, createString(beatmapsMd5[j])]);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
const { open } = require('osu-lazer-db-reader');
|
||||
|
||||
const readLazerDb = async path => {
|
||||
const { beatmaps } = await open(path);
|
||||
return beatmaps;
|
||||
};
|
||||
|
||||
module.exports = { readLazerDb };
|
||||
@@ -190,16 +190,3 @@ module.exports = {
|
||||
readScoresDB,
|
||||
writeScoresDB,
|
||||
};
|
||||
|
||||
// readCollectionDB('./collection.db', collections => {
|
||||
// console.log('READ : ', collections);
|
||||
// collections['Top KEK'] = [
|
||||
// 'DABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB',
|
||||
// 'OMEGAROBDAB',
|
||||
// 'SAMARCH',
|
||||
// '44444444444444444444444444444449',
|
||||
// ];
|
||||
// writeCollectionDB('./collection.db', collections, () => {
|
||||
// readCollectionDB('./collection.db', console.log);
|
||||
// });
|
||||
// });
|
||||
|
||||
@@ -4,13 +4,14 @@ const { ipcMain, dialog, shell } = require('electron');
|
||||
const fs = require('fs').promises;
|
||||
const { join } = require('path');
|
||||
const { downloadAndSetWallpaper } = require('./wallpaper');
|
||||
const { readCollectionDB } = require('./helpers/osuCollections/collections.utils');
|
||||
const { readCollectionDB, writeCollectionDB } = require('./helpers/osuCollections/collections.utils');
|
||||
const startPullingOsuState = require('./threads/osuIsRunning');
|
||||
const scanOsuDb = require('./threads/osuSongsScan');
|
||||
const { exists } = require('./helpers');
|
||||
|
||||
ipcMain.handle('osuSongsScan', async (event, { osuPath }) => {
|
||||
ipcMain.handle('osuSongsScan', async (event, { osuPath, isLazer }) => {
|
||||
try {
|
||||
const [beatmaps, overallDuration, overallUnplayedCount] = await scanOsuDb(`${osuPath}/osu!.db`);
|
||||
const [beatmaps, overallDuration, overallUnplayedCount] = await scanOsuDb(`${osuPath}/osu!.db`, isLazer);
|
||||
return { beatmaps, overallDuration, overallUnplayedCount };
|
||||
} catch (e) {
|
||||
error(`[scan-osu-songs]: ${e.message}`);
|
||||
@@ -46,6 +47,17 @@ ipcMain.once('start-pulling-osu-state', event => {
|
||||
ipcMain.handle('scan-osu-collections', async (event, osuPath) => {
|
||||
try {
|
||||
const collection = await readCollectionDB(`${osuPath}/collection.db`);
|
||||
|
||||
// const test = await readCollectionDB(`${osuPath}/collection.db`);
|
||||
|
||||
// console.log('READ : ', test);
|
||||
// test.push([
|
||||
// 'Top KEK',
|
||||
// ['DABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB', 'OMEGAROBDAB', 'SAMARCH', '44444444444444444444444444444449'],
|
||||
// ]);
|
||||
|
||||
// await writeCollectionDB(`${osuPath}/collection.db`, test);
|
||||
|
||||
return collection;
|
||||
} catch (e) {
|
||||
error(`[scan-osu-collections]: ${e.message}`);
|
||||
@@ -54,12 +66,13 @@ ipcMain.handle('scan-osu-collections', async (event, osuPath) => {
|
||||
});
|
||||
|
||||
ipcMain.handle('validate-osu-path', async (event, osuPath) => {
|
||||
try {
|
||||
const isPathValid = await fs.stat(`${osuPath}/osu!.db`);
|
||||
return isPathValid.isFile();
|
||||
} catch {
|
||||
return false;
|
||||
const isPathValid = await exists(`${osuPath}/collection.db`);
|
||||
if (isPathValid) {
|
||||
const isLegacyOsu = await exists(`${osuPath}/osu.db`);
|
||||
const isLazer = await exists(`${osuPath}/client.realm`);
|
||||
return { isValid: isLegacyOsu || isLazer, isLazer };
|
||||
}
|
||||
return { isValid: false, isLazer: false };
|
||||
});
|
||||
|
||||
ipcMain.handle('is-dir', async (event, path) => {
|
||||
|
||||
@@ -1,31 +1,71 @@
|
||||
const { Worker } = require('worker_threads');
|
||||
const { join } = require('path');
|
||||
const { error } = require('electron-log');
|
||||
const { readLazerDb } = require('../helpers/osuLazer');
|
||||
|
||||
const scanOsuDb = osuDbPath =>
|
||||
const scanOsuDb = (osuDbPath, isLazer = false) =>
|
||||
new Promise((resolve, reject) => {
|
||||
const worker = new Worker(join(__dirname, './osuSongsScan.worker.js'));
|
||||
const terminate = () => {
|
||||
worker.removeAllListeners();
|
||||
worker.terminate();
|
||||
};
|
||||
worker.on('message', data => {
|
||||
switch (data[0]) {
|
||||
case 'result':
|
||||
terminate();
|
||||
resolve(data[1]);
|
||||
break;
|
||||
case 'error':
|
||||
terminate();
|
||||
error(`[scanOsuDb thread]: ${data[1]}`);
|
||||
reject(data[1]);
|
||||
break;
|
||||
default:
|
||||
terminate();
|
||||
break;
|
||||
switch (isLazer) {
|
||||
case true: {
|
||||
readLazerDb('/Users/ypetitot/.local/share/osu/client.realm')
|
||||
.then(beatmaps => {
|
||||
const beatmapsList = {};
|
||||
|
||||
beatmaps.forEach(beatmap => {
|
||||
if (beatmap.BeatmapSet.OnlineID === -1) return;
|
||||
|
||||
if (beatmapsList[beatmap.BeatmapSet.OnlineID]) {
|
||||
beatmapsList[beatmap.BeatmapSet.OnlineID].mapsMd5.push(beatmap.MD5Hash);
|
||||
return;
|
||||
}
|
||||
beatmapsList[beatmap.BeatmapSet.OnlineID] = {
|
||||
id: beatmap.BeatmapSet.OnlineID,
|
||||
date: beatmap.BeatmapSet.DateAdded.getTime(),
|
||||
title: beatmap.Metadata.Title,
|
||||
artist: beatmap.Metadata.Artist,
|
||||
creator: beatmap.Metadata.Author.Username,
|
||||
isUnplayed: false,
|
||||
mapsMd5: [beatmap.MD5Hash],
|
||||
audioPath: '',
|
||||
previewOffset: beatmap.Metadata.PreviewTime,
|
||||
songDuration: beatmap.Length / 1000,
|
||||
};
|
||||
});
|
||||
|
||||
resolve([beatmapsList]);
|
||||
})
|
||||
.catch(reject);
|
||||
|
||||
break;
|
||||
}
|
||||
});
|
||||
worker.postMessage(osuDbPath);
|
||||
case false: {
|
||||
const worker = new Worker(join(__dirname, './osuSongsScan.worker.js'));
|
||||
const terminate = () => {
|
||||
worker.removeAllListeners();
|
||||
worker.terminate();
|
||||
};
|
||||
worker.on('message', data => {
|
||||
switch (data[0]) {
|
||||
case 'result':
|
||||
terminate();
|
||||
resolve(data[1]);
|
||||
break;
|
||||
case 'error':
|
||||
terminate();
|
||||
error(`[scanOsuDb thread]: ${data[1]}`);
|
||||
reject(data[1]);
|
||||
break;
|
||||
default:
|
||||
terminate();
|
||||
break;
|
||||
}
|
||||
});
|
||||
worker.postMessage({ osuDbPath, isLazer });
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = scanOsuDb;
|
||||
|
||||
@@ -2,40 +2,52 @@ const { parentPort } = require('worker_threads');
|
||||
const { join } = require('path');
|
||||
const { readOsuDB, winTickToMs } = require('../helpers/osudb');
|
||||
|
||||
parentPort.on('message', osuDbPath => {
|
||||
if (osuDbPath) {
|
||||
try {
|
||||
const re = readOsuDB(osuDbPath);
|
||||
const beatmaps = {};
|
||||
let overallDuration = 0;
|
||||
let overallUnplayedCount = 0;
|
||||
if (!re.beatmaps || !Array.isArray(re.beatmaps)) {
|
||||
throw new Error('Could not get beatmaps from osu db');
|
||||
}
|
||||
re.beatmaps.forEach(beatmap => {
|
||||
if (beatmap.beatmapset_id === -1) return;
|
||||
if (beatmaps[beatmap.beatmapset_id]) {
|
||||
beatmaps[beatmap.beatmapset_id].mapsMd5.push(beatmap.md5);
|
||||
return;
|
||||
}
|
||||
if (beatmap.unplayed) overallUnplayedCount += 1;
|
||||
overallDuration += beatmap.total_time;
|
||||
beatmaps[beatmap.beatmapset_id] = {
|
||||
id: beatmap.beatmapset_id,
|
||||
date: winTickToMs(beatmap.last_modification_time),
|
||||
title: beatmap.song_title,
|
||||
artist: beatmap.artist_name,
|
||||
creator: beatmap.creator_name,
|
||||
isUnplayed: beatmap.unplayed,
|
||||
mapsMd5: [beatmap.md5],
|
||||
audioPath: join(beatmap.folder_name, beatmap.audio_file_name),
|
||||
previewOffset: beatmap.preview_offset,
|
||||
songDuration: Math.ceil(beatmap.total_time / 1000),
|
||||
};
|
||||
});
|
||||
parentPort.postMessage(['result', [beatmaps, overallDuration, overallUnplayedCount]]);
|
||||
} catch (e) {
|
||||
parentPort.postMessage(['error', e.message]);
|
||||
parentPort.on('message', ({ osuDbPath, isLazer = false }) => {
|
||||
if (!osuDbPath) {
|
||||
parentPort.postMessage(['error', 'missing osuDbPath']);
|
||||
return;
|
||||
}
|
||||
switch (isLazer) {
|
||||
case true: {
|
||||
break;
|
||||
}
|
||||
case false: {
|
||||
try {
|
||||
const re = readOsuDB(osuDbPath);
|
||||
const beatmaps = {};
|
||||
let overallDuration = 0;
|
||||
let overallUnplayedCount = 0;
|
||||
if (!re.beatmaps || !Array.isArray(re.beatmaps)) {
|
||||
throw new Error('Could not get beatmaps from osu db');
|
||||
}
|
||||
re.beatmaps.forEach(beatmap => {
|
||||
if (beatmap.beatmapset_id === -1) return;
|
||||
if (beatmaps[beatmap.beatmapset_id]) {
|
||||
beatmaps[beatmap.beatmapset_id].mapsMd5.push(beatmap.md5);
|
||||
return;
|
||||
}
|
||||
if (beatmap.unplayed) overallUnplayedCount += 1;
|
||||
overallDuration += beatmap.total_time;
|
||||
beatmaps[beatmap.beatmapset_id] = {
|
||||
id: beatmap.beatmapset_id,
|
||||
date: winTickToMs(beatmap.last_modification_time),
|
||||
title: beatmap.song_title,
|
||||
artist: beatmap.artist_name,
|
||||
creator: beatmap.creator_name,
|
||||
isUnplayed: beatmap.unplayed,
|
||||
mapsMd5: [beatmap.md5],
|
||||
audioPath: join(beatmap.folder_name, beatmap.audio_file_name),
|
||||
previewOffset: beatmap.preview_offset,
|
||||
songDuration: Math.ceil(beatmap.total_time / 1000),
|
||||
};
|
||||
});
|
||||
parentPort.postMessage(['result', [beatmaps, overallDuration, overallUnplayedCount]]);
|
||||
} catch (e) {
|
||||
parentPort.postMessage(['error', e.message]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -2208,6 +2208,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@realm.io/common@npm:^0.1.1":
|
||||
version: 0.1.1
|
||||
resolution: "@realm.io/common@npm:0.1.1"
|
||||
checksum: 29e9e0e0f706d31e1c12babb9d019f87bbd4a51b006d7b4796de375f9bb53ca893beb05a3e21b31d32314dbb905a9dadeebd4742c09a9ff83a612af7c5656192
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rescript/react@npm:0.10.3":
|
||||
version: 0.10.3
|
||||
resolution: "@rescript/react@npm:0.10.3"
|
||||
@@ -2957,6 +2964,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"abort-controller@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "abort-controller@npm:3.0.0"
|
||||
dependencies:
|
||||
event-target-shim: ^5.0.0
|
||||
checksum: cc53ad8df9a6de3f55d4f804fca5106908f855e47b572fb5ab3cdd723b76374686dcefa557a2f87d4396db77e31bc0e6ce9d48637388cef6d884c29ad2691448
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8":
|
||||
version: 1.3.8
|
||||
resolution: "accepts@npm:1.3.8"
|
||||
@@ -3069,6 +3085,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"agent-base@npm:^4.3.0":
|
||||
version: 4.3.0
|
||||
resolution: "agent-base@npm:4.3.0"
|
||||
dependencies:
|
||||
es6-promisify: ^5.0.0
|
||||
checksum: b40b7d9675c475202afac88c31d5ce42f041e50d2028bd4ad0cfc25b60abe4aedf6b976d9f653641663cbf45295539282d0cf7d50ece7f7c1dd0c05dc99a8112
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"agentkeepalive@npm:^4.2.1":
|
||||
version: 4.2.1
|
||||
resolution: "agentkeepalive@npm:4.2.1"
|
||||
@@ -3300,7 +3325,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"aproba@npm:^1.1.1":
|
||||
"aproba@npm:^1.0.3, aproba@npm:^1.1.1":
|
||||
version: 1.2.0
|
||||
resolution: "aproba@npm:1.2.0"
|
||||
checksum: d4bac3e640af1f35eea8d5ee2b96ce2682549e47289f071aa37ae56066e19d239e43dea170c207d0f71586d7634099089523dd5701f26d4ded7b31dd5848a24a
|
||||
@@ -3317,6 +3342,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"are-we-there-yet@npm:~1.1.2":
|
||||
version: 1.1.7
|
||||
resolution: "are-we-there-yet@npm:1.1.7"
|
||||
dependencies:
|
||||
delegates: ^1.0.0
|
||||
readable-stream: ^2.0.6
|
||||
checksum: 2f2301155887bba5217cadd2a8aeffbc9716bd6339353950732bf3f2df6bbbec2b8a1291066a985719e30dd2a3eb873e9d81ed7962d2c46f9ac182dd265f97ed
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"argparse@npm:^1.0.7":
|
||||
version: 1.0.10
|
||||
resolution: "argparse@npm:1.0.10"
|
||||
@@ -3364,6 +3399,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"array-back@npm:^3.0.1, array-back@npm:^3.1.0":
|
||||
version: 3.1.0
|
||||
resolution: "array-back@npm:3.1.0"
|
||||
checksum: 959a3377f21ac97490bc14607cc3fe888d087dc7beadab8db09e03061d59e901d695ac870b050f37cddd261e03963e4fca86287e3055e0688a06b95be66f0825
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"array-equal@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "array-equal@npm:1.0.0"
|
||||
@@ -3464,6 +3506,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"asap@npm:~2.0.3":
|
||||
version: 2.0.6
|
||||
resolution: "asap@npm:2.0.6"
|
||||
checksum: 3d314f8c598b625a98347bacdba609d4c889c616ca5d8ea65acaae8050ab8b7aa6630df2cfe9856c20b260b432adf2ee7a65a1021f268ef70408c70f809e3a39
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"asar@npm:^3.1.0":
|
||||
version: 3.1.0
|
||||
resolution: "asar@npm:3.1.0"
|
||||
@@ -3585,6 +3634,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"async@npm:^3.2.3":
|
||||
version: 3.2.3
|
||||
resolution: "async@npm:3.2.3"
|
||||
checksum: 566b6d62e3108757bca3bfbd2313d833bf3b13fb8d65a7715db8b5de7a284271584aee2029f7f39cc6f39cd9cb58336ea204003f76ca02c31240919022948b97
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"asynckit@npm:^0.4.0":
|
||||
version: 0.4.0
|
||||
resolution: "asynckit@npm:0.4.0"
|
||||
@@ -3972,6 +4028,7 @@ __metadata:
|
||||
miragejs: ^0.1.41
|
||||
node-machine-id: ^1.1.12
|
||||
osu-db-parser: "git+https://github.com/yadPe/osu-db-parser.git#6cc783f3a9270f730cd5038d03ada4a78634cd65"
|
||||
osu-lazer-db-reader: 0.1.6
|
||||
pnp-webpack-plugin: 1.2.1
|
||||
prettier: ^1.18.2
|
||||
ps-node: ^0.1.6
|
||||
@@ -4028,6 +4085,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"bl@npm:^4.0.3":
|
||||
version: 4.1.0
|
||||
resolution: "bl@npm:4.1.0"
|
||||
dependencies:
|
||||
buffer: ^5.5.0
|
||||
inherits: ^2.0.4
|
||||
readable-stream: ^3.4.0
|
||||
checksum: 15d009339c2eeaedb9dab39c48f910a2fd6a9ba11400e61990917ebf3b25fa32cd9b80c7531a95467078258f6a59bd3f5d93323565423a7843855a16a1794261
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"bluebird-lst@npm:^1.0.9":
|
||||
version: 1.0.9
|
||||
resolution: "bluebird-lst@npm:1.0.9"
|
||||
@@ -4299,6 +4367,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"bson@npm:4.4.1":
|
||||
version: 4.4.1
|
||||
resolution: "bson@npm:4.4.1"
|
||||
dependencies:
|
||||
buffer: ^5.6.0
|
||||
checksum: 2f6ba7f22a0818f0fd33509dd723a9f3f800f0142a7109180d5b17dca4e8cb67461c9f2c9fad71e68d9b9435f499d1b028af6eefa812f3ba727aeeec72a61c89
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"buffer-alloc-unsafe@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "buffer-alloc-unsafe@npm:1.1.0"
|
||||
@@ -4369,7 +4446,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"buffer@npm:^5.1.0":
|
||||
"buffer@npm:^5.1.0, buffer@npm:^5.5.0, buffer@npm:^5.6.0":
|
||||
version: 5.7.1
|
||||
resolution: "buffer@npm:5.7.1"
|
||||
dependencies:
|
||||
@@ -4630,6 +4707,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"caseless@npm:~0.11.0":
|
||||
version: 0.11.0
|
||||
resolution: "caseless@npm:0.11.0"
|
||||
checksum: 548c8594a26fc3ad14c8ba3df7674f0b45ca6886a3d5b6e77232b490d31e491d2d1b35ba724af6598d7be6ff4acb684afa65ae85a5ad377b91b3b5cb536ee178
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"caseless@npm:~0.12.0":
|
||||
version: 0.12.0
|
||||
resolution: "caseless@npm:0.12.0"
|
||||
@@ -4803,6 +4887,21 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"clang-format@npm:^1.6.0":
|
||||
version: 1.8.0
|
||||
resolution: "clang-format@npm:1.8.0"
|
||||
dependencies:
|
||||
async: ^3.2.3
|
||||
glob: ^7.0.0
|
||||
resolve: ^1.1.6
|
||||
bin:
|
||||
check-clang-format: bin/check-clang-format.js
|
||||
clang-format: index.js
|
||||
git-clang-format: bin/git-clang-format
|
||||
checksum: ab9c75aff5ade98ff08c9599c9f557c85f6fc5e61c757c6c3f8480667bfb75f445613c8b533ce58edee44248a6e84aa9df47bbcbcf38e97703f89a80e0d832cf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"class-utils@npm:^0.3.5":
|
||||
version: 0.3.6
|
||||
resolution: "class-utils@npm:0.3.6"
|
||||
@@ -4924,6 +5023,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"code-point-at@npm:^1.0.0":
|
||||
version: 1.1.0
|
||||
resolution: "code-point-at@npm:1.1.0"
|
||||
checksum: 7d9837296e0f1c00239c88542f5a3e0bad11e45d3d0e8d9d097901fe54722dd5d2c006969077a287be8648a202c43f74e096f17552cbd897568308fba7b87ac0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"collect-v8-coverage@npm:^1.0.0":
|
||||
version: 1.0.1
|
||||
resolution: "collect-v8-coverage@npm:1.0.1"
|
||||
@@ -4998,6 +5104,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"command-line-args@npm:^5.1.1":
|
||||
version: 5.2.1
|
||||
resolution: "command-line-args@npm:5.2.1"
|
||||
dependencies:
|
||||
array-back: ^3.1.0
|
||||
find-replace: ^3.0.0
|
||||
lodash.camelcase: ^4.3.0
|
||||
typical: ^4.0.0
|
||||
checksum: d1ac094956e20d52f8da015718586b04dec3b99455fd00c8c1776bbecbc5d94da97a0adb6bdcf31d100b8aebfb970bd47a82604975d15a720012b07a8da56826
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"commander@npm:2.17.x":
|
||||
version: 2.17.1
|
||||
resolution: "commander@npm:2.17.1"
|
||||
@@ -5097,7 +5215,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"concat-stream@npm:^1.5.0, concat-stream@npm:^1.6.2":
|
||||
"concat-stream@npm:^1.4.6, concat-stream@npm:^1.4.7, concat-stream@npm:^1.5.0, concat-stream@npm:^1.6.2":
|
||||
version: 1.6.2
|
||||
resolution: "concat-stream@npm:1.6.2"
|
||||
dependencies:
|
||||
@@ -5161,7 +5279,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"console-control-strings@npm:^1.1.0":
|
||||
"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0, console-control-strings@npm:~1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "console-control-strings@npm:1.1.0"
|
||||
checksum: 58a404d951bf270494fb91e136cf064652c1208ccedac23e4da24e6a3a3933998f302cadc45cbf6582a007a4aa44dab944e84056b24e3b1964e9a28aeedf76c9
|
||||
@@ -5808,7 +5926,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"debug@npm:^3.1.1, debug@npm:^3.2.5, debug@npm:^3.2.7":
|
||||
"debug@npm:^3.1.0, debug@npm:^3.1.1, debug@npm:^3.2.5, debug@npm:^3.2.7":
|
||||
version: 3.2.7
|
||||
resolution: "debug@npm:3.2.7"
|
||||
dependencies:
|
||||
@@ -5857,6 +5975,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"decompress-response@npm:^6.0.0":
|
||||
version: 6.0.0
|
||||
resolution: "decompress-response@npm:6.0.0"
|
||||
dependencies:
|
||||
mimic-response: ^3.1.0
|
||||
checksum: bb8b8c42be7767994764d27f91a3949e3dc9008da82f1aaeab1de40f1ebb50d7abf17b31b2e4000f8d267a1e75f76052efd58d4419124c04bf430e184c164fad
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"deep-equal@npm:^1.0.1":
|
||||
version: 1.1.1
|
||||
resolution: "deep-equal@npm:1.1.1"
|
||||
@@ -5885,6 +6012,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"deepmerge@npm:2.1.0":
|
||||
version: 2.1.0
|
||||
resolution: "deepmerge@npm:2.1.0"
|
||||
checksum: 7ddcbc182fc324df524ad7e7f079d10d70fc665613a46a04b8979cbe560742410eb866cfec9ea4d58276b2767018da8d225c5146d860340507ddee276e2f0c91
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"deepmerge@npm:^4.2.2":
|
||||
version: 4.2.2
|
||||
resolution: "deepmerge@npm:4.2.2"
|
||||
@@ -5999,6 +6133,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"detect-libc@npm:^2.0.0":
|
||||
version: 2.0.1
|
||||
resolution: "detect-libc@npm:2.0.1"
|
||||
checksum: 18266d3cc95aff315809cd0d292cbb0e40673df164a0a674c31e05ff9574b5b088e9f6517c9ac9b5e1896548edc105ad59af71b4c8172229226fbc448a6814ad
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"detect-newline@npm:^3.0.0":
|
||||
version: 3.1.0
|
||||
resolution: "detect-newline@npm:3.1.0"
|
||||
@@ -6543,7 +6684,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0":
|
||||
"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1":
|
||||
version: 1.4.4
|
||||
resolution: "end-of-stream@npm:1.4.4"
|
||||
dependencies:
|
||||
@@ -6659,6 +6800,22 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"es6-promise@npm:^4.0.3":
|
||||
version: 4.2.8
|
||||
resolution: "es6-promise@npm:4.2.8"
|
||||
checksum: b85e5faab1b3785b8bf1a6c91b5f176cf3e5e4550359508ef54dd58b19ad2b831e04607e2a0a464f2a1407bf02897d5c88daf6e3d94c2ee4510e8191b44b64ef
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"es6-promisify@npm:^5.0.0":
|
||||
version: 5.0.0
|
||||
resolution: "es6-promisify@npm:5.0.0"
|
||||
dependencies:
|
||||
es6-promise: ^4.0.3
|
||||
checksum: 657d2f0623ddec94f7e3a881fcd73e33c26e796c25791169b50527014b58995a1cc35578595b6f28a71896d44dc00a98e6cf838804582c8fa38f9a4bb7ef1761
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"escalade@npm:^3.1.1":
|
||||
version: 3.1.1
|
||||
resolution: "escalade@npm:3.1.1"
|
||||
@@ -7082,6 +7239,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"event-target-shim@npm:^5.0.0":
|
||||
version: 5.0.1
|
||||
resolution: "event-target-shim@npm:5.0.1"
|
||||
checksum: d176477a31adf328ff50148886e46cef3f61ff8bdc1d6db161f6b3ead2501085d5652a81fab8dddc59aed93727231c0b5c8a0948de77ae401b2d977a3d18329e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"eventemitter3@npm:^4.0.0":
|
||||
version: 4.0.7
|
||||
resolution: "eventemitter3@npm:4.0.7"
|
||||
@@ -7177,6 +7341,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"expand-template@npm:^2.0.3":
|
||||
version: 2.0.3
|
||||
resolution: "expand-template@npm:2.0.3"
|
||||
checksum: d1c08a374a2335647562d6958bf23a40371fd9eb64362f3a2475b232a8d2e4bfa8f746066ff45c17efde185dab66f5d0824eaaa26e3e491d03bff50be0be7c3d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"expect@npm:^26.6.2":
|
||||
version: 26.6.2
|
||||
resolution: "expect@npm:26.6.2"
|
||||
@@ -7497,6 +7668,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"find-replace@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "find-replace@npm:3.0.0"
|
||||
dependencies:
|
||||
array-back: ^3.0.1
|
||||
checksum: 9aec6a6dfe746e7dddb12bf38bd395f30b40d2f3f3518ed10b63286daf9ad9f29ee6b4a74e7e4fda4a3bbd63fca9d96c32fdcb7dfe117010d601d2bf74bbf34d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"find-root@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "find-root@npm:1.1.0"
|
||||
@@ -7674,6 +7854,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fs-constants@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "fs-constants@npm:1.0.0"
|
||||
checksum: b8382395f555012591b20bddf08d258723f660b4e7312943d10431a893e2af879295fefc15a917df43c9ed52d80d2f014c0ca8ca359367969be5c8a133e39742
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fs-extra@npm:^10.0.0":
|
||||
version: 10.0.1
|
||||
resolution: "fs-extra@npm:10.0.1"
|
||||
@@ -7685,6 +7872,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fs-extra@npm:^4.0.3":
|
||||
version: 4.0.3
|
||||
resolution: "fs-extra@npm:4.0.3"
|
||||
dependencies:
|
||||
graceful-fs: ^4.1.2
|
||||
jsonfile: ^4.0.0
|
||||
universalify: ^0.1.0
|
||||
checksum: ad42def19446c82543ebfa707250de2e1adff8f1c902f9cad3946f69b3dad326696f70e86c3aebeab4bc4f19ff3ef9abee0460d7fb775122f3dc9142a4b1280f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fs-extra@npm:^8.1.0":
|
||||
version: 8.1.0
|
||||
resolution: "fs-extra@npm:8.1.0"
|
||||
@@ -7804,6 +8002,22 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"gauge@npm:~2.7.3":
|
||||
version: 2.7.4
|
||||
resolution: "gauge@npm:2.7.4"
|
||||
dependencies:
|
||||
aproba: ^1.0.3
|
||||
console-control-strings: ^1.0.0
|
||||
has-unicode: ^2.0.0
|
||||
object-assign: ^4.1.0
|
||||
signal-exit: ^3.0.0
|
||||
string-width: ^1.0.1
|
||||
strip-ansi: ^3.0.1
|
||||
wide-align: ^1.1.0
|
||||
checksum: b136dbeb8e40acaaddab6c71c9f34d3c9aa104efc538c8c0ddcd74b25efb8daeb8dca24a9b30626b477d66beccd3dee8dd31e25eb4c7c97ec58a3f1a82914be1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"gensync@npm:^1.0.0-beta.2":
|
||||
version: 1.0.0-beta.2
|
||||
resolution: "gensync@npm:1.0.0-beta.2"
|
||||
@@ -7940,6 +8154,13 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"github-from-package@npm:0.0.0":
|
||||
version: 0.0.0
|
||||
resolution: "github-from-package@npm:0.0.0"
|
||||
checksum: 9c3bae601535f7de7e2f54cc58dcd2ae62aa7afd262e9edea9021a264e633859ad0aef6ec23328e26607e4259f1efb97ce9b5b01e3f80d7d258085a628c9b710
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"glob-parent@npm:^3.1.0":
|
||||
version: 3.1.0
|
||||
resolution: "glob-parent@npm:3.1.0"
|
||||
@@ -7966,6 +8187,20 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"glob@npm:^7.0.0":
|
||||
version: 7.2.3
|
||||
resolution: "glob@npm:7.2.3"
|
||||
dependencies:
|
||||
fs.realpath: ^1.0.0
|
||||
inflight: ^1.0.4
|
||||
inherits: 2
|
||||
minimatch: ^3.1.1
|
||||
once: ^1.3.0
|
||||
path-is-absolute: ^1.0.0
|
||||
checksum: 48c72ab438f8fc8aa2135d408d8af167d7bacf175b84d87a60d401cbdc50330aeb602cf16868efd4dbdb249117173394c25d49b2f642dd4764813ee6f9458c6c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"glob@npm:^7.0.3, glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0":
|
||||
version: 7.2.0
|
||||
resolution: "glob@npm:7.2.0"
|
||||
@@ -8240,7 +8475,7 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"has-unicode@npm:^2.0.1":
|
||||
"has-unicode@npm:^2.0.0, has-unicode@npm:^2.0.1":
|
||||
version: 2.0.1
|
||||
resolution: "has-unicode@npm:2.0.1"
|
||||
checksum: ed3719f95cbd7dada9e3fde6fad113eae6d317bc8e818a2350954914c098ca6eddb203261af2c291c49a14c52f83610becbc7ab8d569bee81261b9c260a435f2
|
||||
@@ -8457,6 +8692,17 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"http-basic@npm:^2.5.1":
|
||||
version: 2.5.1
|
||||
resolution: "http-basic@npm:2.5.1"
|
||||
dependencies:
|
||||
caseless: ~0.11.0
|
||||
concat-stream: ^1.4.6
|
||||
http-response-object: ^1.0.0
|
||||
checksum: d7cc8b94838e84b8049cf4a90378f6d199c36883aa070e9212db1c877efe3b65f4e524d01c86544e9ae618b4eba78257ec1d5470928a794a53f51a0ab82c8286
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0":
|
||||
version: 4.1.0
|
||||
resolution: "http-cache-semantics@npm:4.1.0"
|
||||
@@ -8548,6 +8794,13 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"http-response-object@npm:^1.0.0, http-response-object@npm:^1.0.1, http-response-object@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "http-response-object@npm:1.1.0"
|
||||
checksum: 4a3a131c521056ba7158b300494d9eb9a880fcf4545bb139cb107b903bbb1c52e81c32583cb45cc5ec1a5c61bd3c2f745c783fe7fa569057c19402a72711e7e8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"http-signature@npm:~1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "http-signature@npm:1.2.0"
|
||||
@@ -8566,6 +8819,16 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"https-proxy-agent@npm:^2.2.4":
|
||||
version: 2.2.4
|
||||
resolution: "https-proxy-agent@npm:2.2.4"
|
||||
dependencies:
|
||||
agent-base: ^4.3.0
|
||||
debug: ^3.1.0
|
||||
checksum: 4e42bed005d75debcfd6d3901edbd391dd72cda32a2ece4584443eb7025ac0a0f85fb01f45d385608a380f6bf2d659c632776ac17b898c6d991fd9ec1d32a1f0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"https-proxy-agent@npm:^5.0.0":
|
||||
version: 5.0.0
|
||||
resolution: "https-proxy-agent@npm:5.0.0"
|
||||
@@ -8785,7 +9048,7 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ini@npm:^1.3.2, ini@npm:^1.3.4, ini@npm:^1.3.5, ini@npm:~1.3.0":
|
||||
"ini@npm:^1.3.2, ini@npm:^1.3.4, ini@npm:^1.3.5, ini@npm:^1.3.7, ini@npm:~1.3.0":
|
||||
version: 1.3.8
|
||||
resolution: "ini@npm:1.3.8"
|
||||
checksum: 62189ce7ea44c5778e757e4232c581212e838f3c39e79d931bb9152fd4b9275f09fb20b96afdd60ba9f5d7996b92486cad6cc617fcb84ff4beedd1b33b86221e
|
||||
@@ -9085,6 +9348,15 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"is-fullwidth-code-point@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "is-fullwidth-code-point@npm:1.0.0"
|
||||
dependencies:
|
||||
number-is-nan: ^1.0.0
|
||||
checksum: fc3d51ef082eaf0c0d44e94b74cf43b97446e008b147b08186daea8bd5ff402596f04b5fe4fa4c0457470beab5c2de8339c49c96b5be65fe9fdf88f60a0001e8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"is-fullwidth-code-point@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "is-fullwidth-code-point@npm:2.0.0"
|
||||
@@ -11399,6 +11671,13 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mimic-response@npm:^3.1.0":
|
||||
version: 3.1.0
|
||||
resolution: "mimic-response@npm:3.1.0"
|
||||
checksum: cfbf19f66de6ad46df7481d9e8c1a7f30b6fa77dd771ad4a72a0443265041a39768182bde6d1de39001c2774168635bc74f42902e401c8ba33db55d69b773004
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"min-indent@npm:^1.0.0":
|
||||
version: 1.0.1
|
||||
resolution: "min-indent@npm:1.0.1"
|
||||
@@ -11429,7 +11708,7 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"minimatch@npm:^3.0.4, minimatch@npm:^3.1.2":
|
||||
"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
|
||||
version: 3.1.2
|
||||
resolution: "minimatch@npm:3.1.2"
|
||||
dependencies:
|
||||
@@ -11449,7 +11728,7 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"minimist@npm:^1.1.1, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6":
|
||||
"minimist@npm:^1.1.1, minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6":
|
||||
version: 1.2.6
|
||||
resolution: "minimist@npm:1.2.6"
|
||||
checksum: 56b3aeedcc7776139f72ca9dce0dae06825437f71ebd823d97dc49a34f3280e627909d54aca6fa81c47e17f11e5affc7357bfb8fd8140ca6138e80f946dd0dbc
|
||||
@@ -11588,6 +11867,13 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3":
|
||||
version: 0.5.3
|
||||
resolution: "mkdirp-classic@npm:0.5.3"
|
||||
checksum: b3c46c62840bdc82c2a5bee417e4e7518a8109d32a85a6dc67bdcfecbe6aff5cfc73cdb98844a61178ddd8ac75743f977857f0badd6e12d14fd18cf1639e41a1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3, mkdirp@npm:^0.5.4, mkdirp@npm:^0.5.5, mkdirp@npm:~0.5.1":
|
||||
version: 0.5.6
|
||||
resolution: "mkdirp@npm:0.5.6"
|
||||
@@ -11704,6 +11990,13 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"napi-build-utils@npm:^1.0.1":
|
||||
version: 1.0.2
|
||||
resolution: "napi-build-utils@npm:1.0.2"
|
||||
checksum: e4dfbec94d315533fea33a96ef5fb4de0d9e8828f2bb2b30e38de089500dfe35fe058ea5bcd72e104381457263f854c3d52d4d8700df9e1f9e6b78e9500ba435
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"natural-compare@npm:^1.4.0":
|
||||
version: 1.4.0
|
||||
resolution: "natural-compare@npm:1.4.0"
|
||||
@@ -11741,6 +12034,24 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-abi@npm:^3.3.0":
|
||||
version: 3.22.0
|
||||
resolution: "node-abi@npm:3.22.0"
|
||||
dependencies:
|
||||
semver: ^7.3.5
|
||||
checksum: fc1a69ad3085a631ad8ef1c5b1f9554353c40f2fc8f83720a2635e363be92ad4acf04c4961a02896bf2213eaac173a4b0361228de6e762ae42f2ada39c889032
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-addon-api@npm:4.2.0":
|
||||
version: 4.2.0
|
||||
resolution: "node-addon-api@npm:4.2.0"
|
||||
dependencies:
|
||||
node-gyp: latest
|
||||
checksum: e0911dd01efed65c0a70db660570225904bf24d77b17801be42ecea01c8aaa9423c511b78fd89ce84b09149a7a4ed115bf9a84ff9ee6b779a1f68eefeef3972c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-addon-api@npm:^1.6.3":
|
||||
version: 1.7.2
|
||||
resolution: "node-addon-api@npm:1.7.2"
|
||||
@@ -11750,7 +12061,7 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-fetch@npm:^2.6.1":
|
||||
"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1":
|
||||
version: 2.6.7
|
||||
resolution: "node-fetch@npm:2.6.7"
|
||||
dependencies:
|
||||
@@ -11829,7 +12140,7 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-machine-id@npm:^1.1.12":
|
||||
"node-machine-id@npm:^1.1.10, node-machine-id@npm:^1.1.12":
|
||||
version: 1.1.12
|
||||
resolution: "node-machine-id@npm:1.1.12"
|
||||
checksum: 893cf7e3693fd693c3564a2dc1e32c5e43bb09e819365a3fbcbcc9fe1b694a2dd647da842483992653bd4afb7f797ef67c9e654665de5443143eed1db520b495
|
||||
@@ -11950,6 +12261,18 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"npmlog@npm:^4.0.1":
|
||||
version: 4.1.2
|
||||
resolution: "npmlog@npm:4.1.2"
|
||||
dependencies:
|
||||
are-we-there-yet: ~1.1.2
|
||||
console-control-strings: ~1.1.0
|
||||
gauge: ~2.7.3
|
||||
set-blocking: ~2.0.0
|
||||
checksum: 0cd63f127c1bbda403a112e83b11804aaee2b58b0bc581c3bde9b82e4d957c7ed0ad3bee499af706cdd3599bb93669d7cbbf29fb500407d35fe75687ac96e2c0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"npmlog@npm:^6.0.0":
|
||||
version: 6.0.1
|
||||
resolution: "npmlog@npm:6.0.1"
|
||||
@@ -11980,6 +12303,13 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"number-is-nan@npm:^1.0.0":
|
||||
version: 1.0.1
|
||||
resolution: "number-is-nan@npm:1.0.1"
|
||||
checksum: 42251b2653a16f8b47639d93c3b646fff295a4582a6b3a2fc51a651d4511427c247629709063d19befbceb8a3db1a8e9f17016b3a207291e79e4bd1413032918
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"nwsapi@npm:^2.1.3, nwsapi@npm:^2.2.0":
|
||||
version: 2.2.0
|
||||
resolution: "nwsapi@npm:2.2.0"
|
||||
@@ -11994,7 +12324,7 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"object-assign@npm:^4.0.1, object-assign@npm:^4.1.1":
|
||||
"object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1":
|
||||
version: 4.1.1
|
||||
resolution: "object-assign@npm:4.1.1"
|
||||
checksum: 66cf021898fc1b13ea573ea8635fbd5a76533f50cecbc2fcd5eee1e8029af41bcebe7023788b6d0e06cbe4401ecea075d972f78ec74467cdc571a0f1a4d1a081
|
||||
@@ -12257,6 +12587,15 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"osu-lazer-db-reader@npm:0.1.6":
|
||||
version: 0.1.6
|
||||
resolution: "osu-lazer-db-reader@npm:0.1.6"
|
||||
dependencies:
|
||||
realm: ^10.17.0
|
||||
checksum: 69303143eda7fb06c7b5cbc5d6ef9d29ba327663ce2dc45629e6ae02bf419192a03877a2e8ac0f31035de8662ff577051bded1213762393e580c3b4c3913bee9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"p-cancelable@npm:^1.0.0":
|
||||
version: 1.1.0
|
||||
resolution: "p-cancelable@npm:1.1.0"
|
||||
@@ -12715,6 +13054,29 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"prebuild-install@npm:^7.0.1":
|
||||
version: 7.1.0
|
||||
resolution: "prebuild-install@npm:7.1.0"
|
||||
dependencies:
|
||||
detect-libc: ^2.0.0
|
||||
expand-template: ^2.0.3
|
||||
github-from-package: 0.0.0
|
||||
minimist: ^1.2.3
|
||||
mkdirp-classic: ^0.5.3
|
||||
napi-build-utils: ^1.0.1
|
||||
node-abi: ^3.3.0
|
||||
npmlog: ^4.0.1
|
||||
pump: ^3.0.0
|
||||
rc: ^1.2.7
|
||||
simple-get: ^4.0.0
|
||||
tar-fs: ^2.0.0
|
||||
tunnel-agent: ^0.6.0
|
||||
bin:
|
||||
prebuild-install: bin.js
|
||||
checksum: 6ac90302e771952f51614bab7be7234bfd7e38c00cef4561abbe5b3f498d0f76a2d0d3f758f5c7c6d4761b13ac9342d90e39f535b2cfc063f139ab5eddc89642
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"prelude-ls@npm:^1.2.1":
|
||||
version: 1.2.1
|
||||
resolution: "prelude-ls@npm:1.2.1"
|
||||
@@ -12815,6 +13177,15 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"promise@npm:^7.1.1":
|
||||
version: 7.3.1
|
||||
resolution: "promise@npm:7.3.1"
|
||||
dependencies:
|
||||
asap: ~2.0.3
|
||||
checksum: 23267a4b078fcb02c57b06ca1a1d5739109deb0932c0fd79615a2c5636dd0571ac6a161f19c4ea9683a4ab89791da13112678fa410b65334de490e97c33410ae
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"prompts@npm:^2.0.1":
|
||||
version: 2.4.2
|
||||
resolution: "prompts@npm:2.4.2"
|
||||
@@ -12825,7 +13196,7 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"prop-types@npm:^15.5.8, prop-types@npm:^15.6.0, prop-types@npm:^15.8.1":
|
||||
"prop-types@npm:^15.5.8, prop-types@npm:^15.6.0, prop-types@npm:^15.6.2, prop-types@npm:^15.8.1":
|
||||
version: 15.8.1
|
||||
resolution: "prop-types@npm:15.8.1"
|
||||
dependencies:
|
||||
@@ -12965,6 +13336,15 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"qs@npm:^6.1.0":
|
||||
version: 6.10.3
|
||||
resolution: "qs@npm:6.10.3"
|
||||
dependencies:
|
||||
side-channel: ^1.0.4
|
||||
checksum: 8428e7246f1cb17b6c05ca9d394ca5149926613409dafab943c7de2393efe5564944d2c8af73508a6dd825b1f9efb036053bed0f73dade26e1d44cfb465ee768
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"qs@npm:~6.5.2":
|
||||
version: 6.5.3
|
||||
resolution: "qs@npm:6.5.3"
|
||||
@@ -13038,7 +13418,7 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rc@npm:^1.2.8":
|
||||
"rc@npm:^1.2.7, rc@npm:^1.2.8":
|
||||
version: 1.2.8
|
||||
resolution: "rc@npm:1.2.8"
|
||||
dependencies:
|
||||
@@ -13274,7 +13654,7 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"readable-stream@npm:1 || 2, readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.1.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6":
|
||||
"readable-stream@npm:1 || 2, readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.6, readable-stream@npm:^2.1.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6":
|
||||
version: 2.3.7
|
||||
resolution: "readable-stream@npm:2.3.7"
|
||||
dependencies:
|
||||
@@ -13289,7 +13669,7 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.6, readable-stream@npm:^3.6.0":
|
||||
"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0":
|
||||
version: 3.6.0
|
||||
resolution: "readable-stream@npm:3.6.0"
|
||||
dependencies:
|
||||
@@ -13320,6 +13700,51 @@ fsevents@^1.2.7:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"realm-network-transport@npm:^0.7.2":
|
||||
version: 0.7.2
|
||||
resolution: "realm-network-transport@npm:0.7.2"
|
||||
dependencies:
|
||||
abort-controller: ^3.0.0
|
||||
node-fetch: ^2.6.0
|
||||
checksum: 982b1b5a3a038d99b97dd70c54404d893a652385cd73da9905b8b51a2e03afe70ed53ddaf89f4b2326ec1e949f5e758474730efe88066a0364de0e4608b50f52
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"realm@npm:^10.17.0":
|
||||
version: 10.17.0
|
||||
resolution: "realm@npm:10.17.0"
|
||||
dependencies:
|
||||
"@realm.io/common": ^0.1.1
|
||||
bindings: ^1.5.0
|
||||
bson: 4.4.1
|
||||
clang-format: ^1.6.0
|
||||
command-line-args: ^5.1.1
|
||||
deepmerge: 2.1.0
|
||||
fs-extra: ^4.0.3
|
||||
https-proxy-agent: ^2.2.4
|
||||
ini: ^1.3.7
|
||||
node-addon-api: 4.2.0
|
||||
node-fetch: ^2.6.1
|
||||
node-gyp: latest
|
||||
node-machine-id: ^1.1.10
|
||||
prebuild-install: ^7.0.1
|
||||
progress: ^2.0.3
|
||||
prop-types: ^15.6.2
|
||||
realm-network-transport: ^0.7.2
|
||||
request: ^2.88.0
|
||||
stream-counter: ^1.0.0
|
||||
sync-request: ^3.0.1
|
||||
tar: ^6.0.1
|
||||
url-parse: ^1.4.4
|
||||
peerDependencies:
|
||||
react-native: ">=0.60"
|
||||
peerDependenciesMeta:
|
||||
react-native:
|
||||
optional: true
|
||||
checksum: b02357598a730454edc479df1a06ed704e3ce94b65314abffcfa96df29b8d52419e3fa86b695523b5b92faa0c4c4088ca7f81176161bac6176a31f1da7bb1a04
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"realpath-native@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "realpath-native@npm:1.1.0"
|
||||
@@ -13654,7 +14079,7 @@ resolve@1.17.0:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0":
|
||||
"resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0":
|
||||
version: 1.22.0
|
||||
resolution: "resolve@npm:1.22.0"
|
||||
dependencies:
|
||||
@@ -13686,7 +14111,7 @@ resolve@^2.0.0-next.3:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"resolve@patch:resolve@^1.10.0#builtin<compat/resolve>, resolve@patch:resolve@^1.12.0#builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#builtin<compat/resolve>, resolve@patch:resolve@^1.17.0#builtin<compat/resolve>, resolve@patch:resolve@^1.18.1#builtin<compat/resolve>, resolve@patch:resolve@^1.19.0#builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#builtin<compat/resolve>":
|
||||
"resolve@patch:resolve@^1.1.6#builtin<compat/resolve>, resolve@patch:resolve@^1.10.0#builtin<compat/resolve>, resolve@patch:resolve@^1.12.0#builtin<compat/resolve>, resolve@patch:resolve@^1.14.2#builtin<compat/resolve>, resolve@patch:resolve@^1.17.0#builtin<compat/resolve>, resolve@patch:resolve@^1.18.1#builtin<compat/resolve>, resolve@patch:resolve@^1.19.0#builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#builtin<compat/resolve>":
|
||||
version: 1.22.0
|
||||
resolution: "resolve@patch:resolve@npm%3A1.22.0#builtin<compat/resolve>::version=1.22.0&hash=3388aa"
|
||||
dependencies:
|
||||
@@ -14104,7 +14529,7 @@ resolve@^2.0.0-next.3:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"set-blocking@npm:^2.0.0":
|
||||
"set-blocking@npm:^2.0.0, set-blocking@npm:~2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "set-blocking@npm:2.0.0"
|
||||
checksum: 0ac2403b0c2d39bf452f6d5d17dfd3cb952b9113098e1231cc0614c436e2f465637e39d27cf3b93556f5c59795e9790fd7e98da784c5f9919edeba4295ffeb29
|
||||
@@ -14234,6 +14659,24 @@ resolve@^2.0.0-next.3:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"simple-concat@npm:^1.0.0":
|
||||
version: 1.0.1
|
||||
resolution: "simple-concat@npm:1.0.1"
|
||||
checksum: 4623960448a49731b5abeedc5430f8158c5caa05f10a685b405b13ed8532c80b5d99e6ef5d53f76a695e66f551cdbcca22c1363ceef8f8b246cda1e21b9ef871
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"simple-get@npm:^4.0.0":
|
||||
version: 4.0.1
|
||||
resolution: "simple-get@npm:4.0.1"
|
||||
dependencies:
|
||||
decompress-response: ^6.0.0
|
||||
once: ^1.3.1
|
||||
simple-concat: ^1.0.0
|
||||
checksum: 8e7d8dd396915df8461d27ca3ecb8c0c3ddb6c48e14cc44cd6999374295ea125ad332f15b1cb5bd4b579df99685e749a27f4c72e9bd8fa81a46830172032e44b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sisteransi@npm:^1.0.5":
|
||||
version: 1.0.5
|
||||
resolution: "sisteransi@npm:1.0.5"
|
||||
@@ -14651,6 +15094,13 @@ resolve@^2.0.0-next.3:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"stream-counter@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "stream-counter@npm:1.0.0"
|
||||
checksum: fc5d2ad666d1c19866500ea0a49d22249882556ffec23f04350e87d2fea1bcb1e55cab70e447cb83c4ed3f41230be981aeb64c521235835be17fe45cee47fe7b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"stream-each@npm:^1.1.0":
|
||||
version: 1.2.3
|
||||
resolution: "stream-each@npm:1.2.3"
|
||||
@@ -14713,6 +15163,17 @@ resolve@^2.0.0-next.3:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"string-width@npm:^1.0.1":
|
||||
version: 1.0.2
|
||||
resolution: "string-width@npm:1.0.2"
|
||||
dependencies:
|
||||
code-point-at: ^1.0.0
|
||||
is-fullwidth-code-point: ^1.0.0
|
||||
strip-ansi: ^3.0.0
|
||||
checksum: b11745daa9398a1b3bb37ffa64263f9869c5f790901ed1242decb08171785346447112ead561cffde6b222a5ebeab9d2b382c72ae688859e852aa29325ca9d0b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3":
|
||||
version: 4.2.3
|
||||
resolution: "string-width@npm:4.2.3"
|
||||
@@ -15006,6 +15467,17 @@ resolve@^2.0.0-next.3:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sync-request@npm:^3.0.1":
|
||||
version: 3.0.1
|
||||
resolution: "sync-request@npm:3.0.1"
|
||||
dependencies:
|
||||
concat-stream: ^1.4.7
|
||||
http-response-object: ^1.0.1
|
||||
then-request: ^2.0.1
|
||||
checksum: 1d4c1bcd058018a5208ff9c8c13f7d46c1d6735c80b85e4fac8153264ff8758df1c5d941e46ee0cc071b4c00287fc5151f90f60b1e12f7a569ac575dde346169
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"table-parser@npm:^0.1.3":
|
||||
version: 0.1.3
|
||||
resolution: "table-parser@npm:0.1.3"
|
||||
@@ -15035,7 +15507,32 @@ resolve@^2.0.0-next.3:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tar@npm:^6.1.11, tar@npm:^6.1.2":
|
||||
"tar-fs@npm:^2.0.0":
|
||||
version: 2.1.1
|
||||
resolution: "tar-fs@npm:2.1.1"
|
||||
dependencies:
|
||||
chownr: ^1.1.1
|
||||
mkdirp-classic: ^0.5.2
|
||||
pump: ^3.0.0
|
||||
tar-stream: ^2.1.4
|
||||
checksum: 4739382487b6ed646670a52cac637c818ecdceb728eb4718847dfdaddd7322d8cce2ea9db160ba8ad2920194034fda7c307b44f4eeb50d244f198bd7e28f2914
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tar-stream@npm:^2.1.4":
|
||||
version: 2.2.0
|
||||
resolution: "tar-stream@npm:2.2.0"
|
||||
dependencies:
|
||||
bl: ^4.0.3
|
||||
end-of-stream: ^1.4.1
|
||||
fs-constants: ^1.0.0
|
||||
inherits: ^2.0.3
|
||||
readable-stream: ^3.1.1
|
||||
checksum: 7eec0a7fc8d0337729c1c2356d567a7527141d6ba0dd4804db979e17fc6389163e70fd4abdb855fc5ab54b944aeff7988e35e95ab6cee34a4156ca2d42980576
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tar@npm:^6.0.1, tar@npm:^6.1.11, tar@npm:^6.1.2":
|
||||
version: 6.1.11
|
||||
resolution: "tar@npm:6.1.11"
|
||||
dependencies:
|
||||
@@ -15200,6 +15697,20 @@ resolve@^2.0.0-next.3:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"then-request@npm:^2.0.1":
|
||||
version: 2.2.0
|
||||
resolution: "then-request@npm:2.2.0"
|
||||
dependencies:
|
||||
caseless: ~0.11.0
|
||||
concat-stream: ^1.4.7
|
||||
http-basic: ^2.5.1
|
||||
http-response-object: ^1.1.0
|
||||
promise: ^7.1.1
|
||||
qs: ^6.1.0
|
||||
checksum: 35a12253decf13fe6cd3752955c8a3f0eda1bb18bf53acdfbf4da4f5f74111d24736ddf91bd97803a6c239622d7c3e74ac40c178470ace2c2f2c7f1b84756ea6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"throat@npm:^5.0.0":
|
||||
version: 5.0.0
|
||||
resolution: "throat@npm:5.0.0"
|
||||
@@ -15611,6 +16122,13 @@ typescript@^3.5.3:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typical@npm:^4.0.0":
|
||||
version: 4.0.0
|
||||
resolution: "typical@npm:4.0.0"
|
||||
checksum: 6b166af2fe0a11d84e114e6fb227f5f1b91e291506b86502af54e267d2ae74e5dc61c78c487af04d332affcc0626e52a6bf544fd7e45feceeaaf114b73617258
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"uglify-js@npm:3.4.x":
|
||||
version: 3.4.10
|
||||
resolution: "uglify-js@npm:3.4.10"
|
||||
@@ -15864,7 +16382,7 @@ typescript@^3.5.3:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"url-parse@npm:^1.4.3, url-parse@npm:^1.5.10":
|
||||
"url-parse@npm:^1.4.3, url-parse@npm:^1.4.4, url-parse@npm:^1.5.10":
|
||||
version: 1.5.10
|
||||
resolution: "url-parse@npm:1.5.10"
|
||||
dependencies:
|
||||
@@ -16393,7 +16911,7 @@ typescript@^3.5.3:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"wide-align@npm:^1.1.5":
|
||||
"wide-align@npm:^1.1.0, wide-align@npm:^1.1.5":
|
||||
version: 1.1.5
|
||||
resolution: "wide-align@npm:1.1.5"
|
||||
dependencies:
|
||||
|
||||
Reference in New Issue
Block a user