|
@@ -36,29 +36,27 @@ namespace level {
|
|
|
levelSets: LevelSet[]
|
|
|
}
|
|
|
|
|
|
- export function loadFromJson(url: string): Promise<Config> {
|
|
|
- return window.fetch(url)
|
|
|
- .then(response => response.json())
|
|
|
+ export async function loadFromJson(url: string): Promise<Config> {
|
|
|
+ const response = await window.fetch(url);
|
|
|
+ return await response.json();
|
|
|
}
|
|
|
|
|
|
let parser = new DOMParser();
|
|
|
|
|
|
- function parseXML(response: Response): Promise<Document> {
|
|
|
- return response.text().then(text => {
|
|
|
- let normalized = text.replace(/[“”]/g, '"');
|
|
|
- return parser.parseFromString(normalized, "text/xml");
|
|
|
- });
|
|
|
+ async function parseXML(response: Response): Promise<Document> {
|
|
|
+ const text = await response.text();
|
|
|
+ let normalized = text.replace(/[“”]/g, '"');
|
|
|
+ return parser.parseFromString(normalized, "text/xml");
|
|
|
}
|
|
|
|
|
|
- export function loadFromTM(base: string): Promise<Config> {
|
|
|
+ export async function loadFromTM(base: string): Promise<Config> {
|
|
|
let settingsXML = window.fetch(base+'/settings.xml').then(parseXML);
|
|
|
let levelSets = window.fetch(base+'/folderlist.xml')
|
|
|
.then(parseXML)
|
|
|
.then(dom => parseTMFolderList(base, dom));
|
|
|
|
|
|
- return Promise.all([settingsXML, levelSets]).then(pair => {
|
|
|
- return parseTMSettings(base, pair[1], pair[0]);
|
|
|
- })
|
|
|
+ const [settings, levels] = await Promise.all([settingsXML, levelSets]);
|
|
|
+ return parseTMSettings(base, levels, settings);
|
|
|
}
|
|
|
|
|
|
function parseTMSettings(base: string, levelSets: LevelSet[], dom: Document): Config {
|
|
@@ -119,7 +117,7 @@ namespace level {
|
|
|
return Promise.all(promises);
|
|
|
}
|
|
|
|
|
|
- function parseTMFolder(base: string, name: string, dom: Document): Promise<LevelSet> {
|
|
|
+ async function parseTMFolder(base: string, name: string, dom: Document): Promise<LevelSet> {
|
|
|
let musicList = dom.querySelectorAll('musicinfo');
|
|
|
let promises = [];
|
|
|
for (let i = 0; i < musicList.length; ++i) {
|
|
@@ -157,10 +155,8 @@ namespace level {
|
|
|
|
|
|
promises.push(promise);
|
|
|
}
|
|
|
- return Promise.all(promises)
|
|
|
- .then(levels => {
|
|
|
- return { name, levels }
|
|
|
- })
|
|
|
+ const levels = await Promise.all(promises);
|
|
|
+ return { name, levels }
|
|
|
}
|
|
|
|
|
|
function parseTMSong(dom: Document): Line[] {
|