diff --git a/src/android.ts b/src/android.ts index e0502a5..c891f06 100644 --- a/src/android.ts +++ b/src/android.ts @@ -16,10 +16,16 @@ export const getAndroidVersion = async (storeURL = '') => { }); const matches = response.match(/\[\[\[['"]((\d+\.)+\d+)['"]\]\],/); + const releaseNotes = response.match( + /(.*?)<\/div>/gm + )?.[0]; - if (!matches) { + if (!matches && !releaseNotes) { throw new Error("can't get android app version."); } - return matches[1]; + return { + version: matches?.[1] ?? '', + releaseNotes: releaseNotes ?? '', + }; }; diff --git a/src/index.ts b/src/index.ts index 6d3fb61..dc93c96 100644 --- a/src/index.ts +++ b/src/index.ts @@ -16,8 +16,17 @@ type CheckVersionResponse = { remote: string; result: 'new' | 'old' | 'equal'; detail: 'remote > local' | 'remote < local' | 'remote === local'; + releaseNotes: string; + + packageSize?: number; }; +interface StoreFetchResponse { + version: string; + releaseNotes: string; + packageSize?: number; +} + export const compareVersion = ( local: string, remote: string @@ -49,10 +58,10 @@ const checkVersion = async ( } /* get version */ - let remoteVersion: string; + let dataStore: StoreFetchResponse; try { - remoteVersion = + dataStore = Platform.OS === 'ios' ? await getIOSVersion(params.iosStoreURL, params.country || 'jp') : await getAndroidVersion(params.androidStoreURL); @@ -64,7 +73,7 @@ const checkVersion = async ( throw new Error(`can't get ${Platform.OS} version`); } - const result = compareVersion(params.version, remoteVersion); + const result = compareVersion(params.version, dataStore.version); let detail: CheckVersionResponse['detail']; switch (result) { case 'new': @@ -81,9 +90,11 @@ const checkVersion = async ( /* compare version */ return { local: params.version, - remote: remoteVersion, + remote: dataStore.version, result, detail, + releaseNotes: dataStore.releaseNotes, + packageSize: dataStore.packageSize, }; }; diff --git a/src/ios.ts b/src/ios.ts index c7e4440..e3743ce 100644 --- a/src/ios.ts +++ b/src/ios.ts @@ -18,9 +18,15 @@ export const getIOSVersion = async (storeURL = '', country = 'jp') => { .then((r) => r.text()) .then((r) => JSON.parse(r)); - if (!response || !response.results || response.results.length === 0) { + if (!response?.results || response.results.length === 0) { throw new Error(`appID(${appID[1]}) is not released.`); } - return response.results[0].version as string; + return { + version: response.results[0].version as string, + releaseNotes: response.results[0].releaseNotes as string, + + /**kb */ + packageSize: response.results[0].fileSizeBytes, + }; };