@rosen-bridge/utils 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +1 -0
- package/README.md +25 -0
- package/babel.config.json +3 -0
- package/dist/lib/constants.d.ts +4 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +4 -0
- package/dist/lib/downloadRosenAssets.d.ts +10 -0
- package/dist/lib/downloadRosenAssets.d.ts.map +1 -0
- package/dist/lib/downloadRosenAssets.js +43 -0
- package/dist/lib/error.d.ts +4 -0
- package/dist/lib/error.d.ts.map +1 -0
- package/dist/lib/error.js +4 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +3 -0
- package/dist/lib/types/index.d.ts +6 -0
- package/dist/lib/types/index.d.ts.map +1 -0
- package/dist/lib/types/index.js +2 -0
- package/dist/lib/utils/github.d.ts +412 -0
- package/dist/lib/utils/github.d.ts.map +1 -0
- package/dist/lib/utils/github.js +69 -0
- package/dist/lib/utils/rosen.d.ts +14 -0
- package/dist/lib/utils/rosen.d.ts.map +1 -0
- package/dist/lib/utils/rosen.js +14 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/jest.config.json +7 -0
- package/lib/constants.ts +3 -0
- package/lib/downloadRosenAssets.ts +56 -0
- package/lib/error.ts +3 -0
- package/lib/index.ts +3 -0
- package/lib/types/index.ts +11 -0
- package/lib/utils/github.ts +103 -0
- package/lib/utils/rosen.ts +22 -0
- package/package.json +48 -0
- package/tests/data/octokit.data.ts +121 -0
- package/tests/downloadRosenAssets.spec.ts +170 -0
- package/tests/mocks/octokit.mock.ts +23 -0
- package/tests/setup.ts +1 -0
- package/tests/utils/github.spec.ts +237 -0
- package/tests/utils/rosen.spec.ts +145 -0
- package/tsconfig.build.json +4 -0
- package/tsconfig.json +8 -0
package/.eslintignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dist
|
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# @rosen-bridge/utils
|
|
2
|
+
|
|
3
|
+
## Table of contents
|
|
4
|
+
|
|
5
|
+
- [Introduction](#introduction)
|
|
6
|
+
- [Installation](#installation)
|
|
7
|
+
|
|
8
|
+
## Introduction
|
|
9
|
+
|
|
10
|
+
`@rosen-bridge/utils` contains some common utility functions and apis that are used
|
|
11
|
+
inside other Rosen bridge projects.
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
npm:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
npm i @rosen-bridge/utils
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
yarn:
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
yarn add @rosen-bridge/utils
|
|
25
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mCAAmC,IAAI,CAAC;AACrD,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AACxD,eAAO,MAAM,kBAAkB,aAAa,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export const DEFAULT_RELEASES_FETCHING_PAGE_SIZE = 5;
|
|
2
|
+
export const ROSEN_BRIDGE_ORGANIZATION = 'rosen-bridge';
|
|
3
|
+
export const CONTRACT_REPO_NAME = 'contract';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxDQUFDLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsY0FBYyxDQUFDO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBERUZBVUxUX1JFTEVBU0VTX0ZFVENISU5HX1BBR0VfU0laRSA9IDU7XG5leHBvcnQgY29uc3QgUk9TRU5fQlJJREdFX09SR0FOSVpBVElPTiA9ICdyb3Nlbi1icmlkZ2UnO1xuZXhwb3J0IGNvbnN0IENPTlRSQUNUX1JFUE9fTkFNRSA9ICdjb250cmFjdCc7XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Download all required Rosen assets (tokenMap and all chain address files) to a specific path
|
|
3
|
+
* @param chainType chain type (e.g. mainnet, testnet, etc.)
|
|
4
|
+
* @param includePrereleases weather to include prereleases into account when searching for a matching release in GitHub
|
|
5
|
+
* @param destinationPath path to folder in which the files will be saved
|
|
6
|
+
* @param nameSuffix an optional suffix to append to saved files names
|
|
7
|
+
*/
|
|
8
|
+
declare const downloadRosenAssets: (chainType: string, destinationPath: string, includePrereleases?: boolean, nameSuffix?: string) => Promise<void>;
|
|
9
|
+
export default downloadRosenAssets;
|
|
10
|
+
//# sourceMappingURL=downloadRosenAssets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"downloadRosenAssets.d.ts","sourceRoot":"","sources":["../../lib/downloadRosenAssets.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,QAAA,MAAM,mBAAmB,cACZ,MAAM,mBACA,MAAM,6CAEV,MAAM,kBAmCpB,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import download from 'download';
|
|
2
|
+
import { findLatestRelease, findLatestStableRelease } from './utils/github';
|
|
3
|
+
import { isValidAssetName, truncateAssetName } from './utils/rosen';
|
|
4
|
+
import { RosenAssetsDownloadError } from './error';
|
|
5
|
+
/**
|
|
6
|
+
* Download all required Rosen assets (tokenMap and all chain address files) to a specific path
|
|
7
|
+
* @param chainType chain type (e.g. mainnet, testnet, etc.)
|
|
8
|
+
* @param includePrereleases weather to include prereleases into account when searching for a matching release in GitHub
|
|
9
|
+
* @param destinationPath path to folder in which the files will be saved
|
|
10
|
+
* @param nameSuffix an optional suffix to append to saved files names
|
|
11
|
+
*/
|
|
12
|
+
const downloadRosenAssets = async (chainType, destinationPath, includePrereleases = false, nameSuffix) => {
|
|
13
|
+
try {
|
|
14
|
+
const release = includePrereleases
|
|
15
|
+
? await findLatestRelease(chainType)
|
|
16
|
+
: await findLatestStableRelease(chainType);
|
|
17
|
+
if (release) {
|
|
18
|
+
await Promise.all([
|
|
19
|
+
...(release &&
|
|
20
|
+
release.assets
|
|
21
|
+
.filter((asset) => isValidAssetName(chainType)(asset.name))
|
|
22
|
+
.map(async (asset) => download(asset.browser_download_url, destinationPath, {
|
|
23
|
+
filename: truncateAssetName(asset.name, nameSuffix),
|
|
24
|
+
}))),
|
|
25
|
+
]);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
console.error(`No release found for [${chainType}] chain type.`);
|
|
29
|
+
if (!includePrereleases) {
|
|
30
|
+
console.error('Please note that `includePrereleases` is set to false. There may be some matching releases in prereleases.');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.error(`An error occurred while trying to download Rosen assets: ${error}`);
|
|
36
|
+
if (error instanceof Error) {
|
|
37
|
+
console.error(error.stack);
|
|
38
|
+
}
|
|
39
|
+
throw new RosenAssetsDownloadError('', { cause: error });
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
export default downloadRosenAssets;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWRSb3NlbkFzc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9kb3dubG9hZFJvc2VuQXNzZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRW5EOzs7Ozs7R0FNRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxFQUMvQixTQUFpQixFQUNqQixlQUF1QixFQUN2QixrQkFBa0IsR0FBRyxLQUFLLEVBQzFCLFVBQW1CLEVBQ25CLEVBQUU7SUFDRixJQUFJO1FBQ0YsTUFBTSxPQUFPLEdBQUcsa0JBQWtCO1lBQ2hDLENBQUMsQ0FBQyxNQUFNLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztZQUNwQyxDQUFDLENBQUMsTUFBTSx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3QyxJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDaEIsR0FBRyxDQUFDLE9BQU87b0JBQ1QsT0FBTyxDQUFDLE1BQU07eUJBQ1gsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQzFELEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDbkIsUUFBUSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxlQUFlLEVBQUU7d0JBQ3BELFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztxQkFDcEQsQ0FBQyxDQUNILENBQUM7YUFDUCxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsU0FBUyxlQUFlLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQ1gsNEdBQTRHLENBQzdHLENBQUM7YUFDSDtTQUNGO0tBQ0Y7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLE9BQU8sQ0FBQyxLQUFLLENBQ1gsNERBQTRELEtBQUssRUFBRSxDQUNwRSxDQUFDO1FBQ0YsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsTUFBTSxJQUFJLHdCQUF3QixDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQzFEO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsZUFBZSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkb3dubG9hZCBmcm9tICdkb3dubG9hZCc7XG5cbmltcG9ydCB7IGZpbmRMYXRlc3RSZWxlYXNlLCBmaW5kTGF0ZXN0U3RhYmxlUmVsZWFzZSB9IGZyb20gJy4vdXRpbHMvZ2l0aHViJztcbmltcG9ydCB7IGlzVmFsaWRBc3NldE5hbWUsIHRydW5jYXRlQXNzZXROYW1lIH0gZnJvbSAnLi91dGlscy9yb3Nlbic7XG5cbmltcG9ydCB7IFJvc2VuQXNzZXRzRG93bmxvYWRFcnJvciB9IGZyb20gJy4vZXJyb3InO1xuXG4vKipcbiAqIERvd25sb2FkIGFsbCByZXF1aXJlZCBSb3NlbiBhc3NldHMgKHRva2VuTWFwIGFuZCBhbGwgY2hhaW4gYWRkcmVzcyBmaWxlcykgdG8gYSBzcGVjaWZpYyBwYXRoXG4gKiBAcGFyYW0gY2hhaW5UeXBlIGNoYWluIHR5cGUgKGUuZy4gbWFpbm5ldCwgdGVzdG5ldCwgZXRjLilcbiAqIEBwYXJhbSBpbmNsdWRlUHJlcmVsZWFzZXMgd2VhdGhlciB0byBpbmNsdWRlIHByZXJlbGVhc2VzIGludG8gYWNjb3VudCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXRjaGluZyByZWxlYXNlIGluIEdpdEh1YlxuICogQHBhcmFtIGRlc3RpbmF0aW9uUGF0aCBwYXRoIHRvIGZvbGRlciBpbiB3aGljaCB0aGUgZmlsZXMgd2lsbCBiZSBzYXZlZFxuICogQHBhcmFtIG5hbWVTdWZmaXggYW4gb3B0aW9uYWwgc3VmZml4IHRvIGFwcGVuZCB0byBzYXZlZCBmaWxlcyBuYW1lc1xuICovXG5jb25zdCBkb3dubG9hZFJvc2VuQXNzZXRzID0gYXN5bmMgKFxuICBjaGFpblR5cGU6IHN0cmluZyxcbiAgZGVzdGluYXRpb25QYXRoOiBzdHJpbmcsXG4gIGluY2x1ZGVQcmVyZWxlYXNlcyA9IGZhbHNlLFxuICBuYW1lU3VmZml4Pzogc3RyaW5nXG4pID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZWxlYXNlID0gaW5jbHVkZVByZXJlbGVhc2VzXG4gICAgICA/IGF3YWl0IGZpbmRMYXRlc3RSZWxlYXNlKGNoYWluVHlwZSlcbiAgICAgIDogYXdhaXQgZmluZExhdGVzdFN0YWJsZVJlbGVhc2UoY2hhaW5UeXBlKTtcblxuICAgIGlmIChyZWxlYXNlKSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIC4uLihyZWxlYXNlICYmXG4gICAgICAgICAgcmVsZWFzZS5hc3NldHNcbiAgICAgICAgICAgIC5maWx0ZXIoKGFzc2V0KSA9PiBpc1ZhbGlkQXNzZXROYW1lKGNoYWluVHlwZSkoYXNzZXQubmFtZSkpXG4gICAgICAgICAgICAubWFwKGFzeW5jIChhc3NldCkgPT5cbiAgICAgICAgICAgICAgZG93bmxvYWQoYXNzZXQuYnJvd3Nlcl9kb3dubG9hZF91cmwsIGRlc3RpbmF0aW9uUGF0aCwge1xuICAgICAgICAgICAgICAgIGZpbGVuYW1lOiB0cnVuY2F0ZUFzc2V0TmFtZShhc3NldC5uYW1lLCBuYW1lU3VmZml4KSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkpLFxuICAgICAgXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE5vIHJlbGVhc2UgZm91bmQgZm9yIFske2NoYWluVHlwZX1dIGNoYWluIHR5cGUuYCk7XG4gICAgICBpZiAoIWluY2x1ZGVQcmVyZWxlYXNlcykge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdQbGVhc2Ugbm90ZSB0aGF0IGBpbmNsdWRlUHJlcmVsZWFzZXNgIGlzIHNldCB0byBmYWxzZS4gVGhlcmUgbWF5IGJlIHNvbWUgbWF0Y2hpbmcgcmVsZWFzZXMgaW4gcHJlcmVsZWFzZXMuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byBkb3dubG9hZCBSb3NlbiBhc3NldHM6ICR7ZXJyb3J9YFxuICAgICk7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3Iuc3RhY2spO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUm9zZW5Bc3NldHNEb3dubG9hZEVycm9yKCcnLCB7IGNhdXNlOiBlcnJvciB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZG93bmxvYWRSb3NlbkFzc2V0cztcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../lib/error.ts"],"names":[],"mappings":"AAAA,cAAM,wBAAyB,SAAQ,KAAK;CAAG;AAE/C,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
class RosenAssetsDownloadError extends Error {
|
|
2
|
+
}
|
|
3
|
+
export { RosenAssetsDownloadError };
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSx3QkFBeUIsU0FBUSxLQUFLO0NBQUc7QUFFL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBSb3NlbkFzc2V0c0Rvd25sb2FkRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG5leHBvcnQgeyBSb3NlbkFzc2V0c0Rvd25sb2FkRXJyb3IgfTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { default as downloadRosenAssets } from './downloadRosenAssets';
|
|
2
|
+
export { RosenAssetsDownloadError } from './error';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sSUFBSSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgZG93bmxvYWRSb3NlbkFzc2V0cyB9IGZyb20gJy4vZG93bmxvYWRSb3NlbkFzc2V0cyc7XG5cbmV4cG9ydCB7IFJvc2VuQXNzZXRzRG93bmxvYWRFcnJvciB9IGZyb20gJy4vZXJyb3InO1xuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Octokit } from 'octokit';
|
|
2
|
+
export type ArrayElement<T extends any[]> = T extends (infer Element)[] ? Element : never;
|
|
3
|
+
type GithubReleases = Awaited<ReturnType<InstanceType<typeof Octokit>['rest']['repos']['listReleases']>>['data'];
|
|
4
|
+
export type GithubRelease = ArrayElement<GithubReleases>;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,EAAE,GACnE,OAAO,GACP,KAAK,CAAC;AAEV,KAAK,cAAc,GAAG,OAAO,CAC3B,UAAU,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAC1E,CAAC,MAAM,CAAC,CAAC;AAEV,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9jdG9raXQgfSBmcm9tICdvY3Rva2l0JztcblxuZXhwb3J0IHR5cGUgQXJyYXlFbGVtZW50PFQgZXh0ZW5kcyBhbnlbXT4gPSBUIGV4dGVuZHMgKGluZmVyIEVsZW1lbnQpW11cbiAgPyBFbGVtZW50XG4gIDogbmV2ZXI7XG5cbnR5cGUgR2l0aHViUmVsZWFzZXMgPSBBd2FpdGVkPFxuICBSZXR1cm5UeXBlPEluc3RhbmNlVHlwZTx0eXBlb2YgT2N0b2tpdD5bJ3Jlc3QnXVsncmVwb3MnXVsnbGlzdFJlbGVhc2VzJ10+XG4+WydkYXRhJ107XG5cbmV4cG9ydCB0eXBlIEdpdGh1YlJlbGVhc2UgPSBBcnJheUVsZW1lbnQ8R2l0aHViUmVsZWFzZXM+O1xuIl19
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
import { GithubRelease } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Fetch a page of releases from Github Api in each iteration until there are no
|
|
4
|
+
* more releases.
|
|
5
|
+
* @param pageSize
|
|
6
|
+
*/
|
|
7
|
+
declare function fetchReleasesPage(pageSize?: number): AsyncGenerator<{
|
|
8
|
+
url: string;
|
|
9
|
+
html_url: string;
|
|
10
|
+
assets_url: string;
|
|
11
|
+
upload_url: string;
|
|
12
|
+
tarball_url: string | null;
|
|
13
|
+
zipball_url: string | null;
|
|
14
|
+
id: number;
|
|
15
|
+
node_id: string;
|
|
16
|
+
tag_name: string;
|
|
17
|
+
target_commitish: string;
|
|
18
|
+
name: string | null;
|
|
19
|
+
body?: string | null | undefined;
|
|
20
|
+
draft: boolean;
|
|
21
|
+
prerelease: boolean;
|
|
22
|
+
created_at: string;
|
|
23
|
+
published_at: string | null;
|
|
24
|
+
author: {
|
|
25
|
+
name?: string | null | undefined;
|
|
26
|
+
email?: string | null | undefined;
|
|
27
|
+
login: string;
|
|
28
|
+
id: number;
|
|
29
|
+
node_id: string;
|
|
30
|
+
avatar_url: string;
|
|
31
|
+
gravatar_id: string | null;
|
|
32
|
+
url: string;
|
|
33
|
+
html_url: string;
|
|
34
|
+
followers_url: string;
|
|
35
|
+
following_url: string;
|
|
36
|
+
gists_url: string;
|
|
37
|
+
starred_url: string;
|
|
38
|
+
subscriptions_url: string;
|
|
39
|
+
organizations_url: string;
|
|
40
|
+
repos_url: string;
|
|
41
|
+
events_url: string;
|
|
42
|
+
received_events_url: string;
|
|
43
|
+
type: string;
|
|
44
|
+
site_admin: boolean;
|
|
45
|
+
starred_at?: string | undefined;
|
|
46
|
+
};
|
|
47
|
+
assets: {
|
|
48
|
+
url: string;
|
|
49
|
+
browser_download_url: string;
|
|
50
|
+
id: number;
|
|
51
|
+
node_id: string;
|
|
52
|
+
name: string;
|
|
53
|
+
label: string | null;
|
|
54
|
+
state: "uploaded" | "open";
|
|
55
|
+
content_type: string;
|
|
56
|
+
size: number;
|
|
57
|
+
download_count: number;
|
|
58
|
+
created_at: string;
|
|
59
|
+
updated_at: string;
|
|
60
|
+
uploader: {
|
|
61
|
+
name?: string | null | undefined;
|
|
62
|
+
email?: string | null | undefined;
|
|
63
|
+
login: string;
|
|
64
|
+
id: number;
|
|
65
|
+
node_id: string;
|
|
66
|
+
avatar_url: string;
|
|
67
|
+
gravatar_id: string | null;
|
|
68
|
+
url: string;
|
|
69
|
+
html_url: string;
|
|
70
|
+
followers_url: string;
|
|
71
|
+
following_url: string;
|
|
72
|
+
gists_url: string;
|
|
73
|
+
starred_url: string;
|
|
74
|
+
subscriptions_url: string;
|
|
75
|
+
organizations_url: string;
|
|
76
|
+
repos_url: string;
|
|
77
|
+
events_url: string;
|
|
78
|
+
received_events_url: string;
|
|
79
|
+
type: string;
|
|
80
|
+
site_admin: boolean;
|
|
81
|
+
starred_at?: string | undefined;
|
|
82
|
+
} | null;
|
|
83
|
+
}[];
|
|
84
|
+
body_html?: string | undefined;
|
|
85
|
+
body_text?: string | undefined;
|
|
86
|
+
mentions_count?: number | undefined;
|
|
87
|
+
discussion_url?: string | undefined;
|
|
88
|
+
reactions?: {
|
|
89
|
+
url: string;
|
|
90
|
+
total_count: number;
|
|
91
|
+
"+1": number;
|
|
92
|
+
"-1": number;
|
|
93
|
+
laugh: number;
|
|
94
|
+
confused: number;
|
|
95
|
+
heart: number;
|
|
96
|
+
hooray: number;
|
|
97
|
+
eyes: number;
|
|
98
|
+
rocket: number;
|
|
99
|
+
} | undefined;
|
|
100
|
+
}[], void, unknown>;
|
|
101
|
+
/**
|
|
102
|
+
* Find the last release matching the predicate. If all releases are iterated and
|
|
103
|
+
* no matching release is found, return null.
|
|
104
|
+
* @param predicate
|
|
105
|
+
*/
|
|
106
|
+
declare const findLastRelease: (predicate?: (release: GithubRelease) => boolean) => Promise<{
|
|
107
|
+
url: string;
|
|
108
|
+
html_url: string;
|
|
109
|
+
assets_url: string;
|
|
110
|
+
upload_url: string;
|
|
111
|
+
tarball_url: string | null;
|
|
112
|
+
zipball_url: string | null;
|
|
113
|
+
id: number;
|
|
114
|
+
node_id: string;
|
|
115
|
+
tag_name: string;
|
|
116
|
+
target_commitish: string;
|
|
117
|
+
name: string | null;
|
|
118
|
+
body?: string | null | undefined;
|
|
119
|
+
draft: boolean;
|
|
120
|
+
prerelease: boolean;
|
|
121
|
+
created_at: string;
|
|
122
|
+
published_at: string | null;
|
|
123
|
+
author: {
|
|
124
|
+
name?: string | null | undefined;
|
|
125
|
+
email?: string | null | undefined;
|
|
126
|
+
login: string;
|
|
127
|
+
id: number;
|
|
128
|
+
node_id: string;
|
|
129
|
+
avatar_url: string;
|
|
130
|
+
gravatar_id: string | null;
|
|
131
|
+
url: string;
|
|
132
|
+
html_url: string;
|
|
133
|
+
followers_url: string;
|
|
134
|
+
following_url: string;
|
|
135
|
+
gists_url: string;
|
|
136
|
+
starred_url: string;
|
|
137
|
+
subscriptions_url: string;
|
|
138
|
+
organizations_url: string;
|
|
139
|
+
repos_url: string;
|
|
140
|
+
events_url: string;
|
|
141
|
+
received_events_url: string;
|
|
142
|
+
type: string;
|
|
143
|
+
site_admin: boolean;
|
|
144
|
+
starred_at?: string | undefined;
|
|
145
|
+
};
|
|
146
|
+
assets: {
|
|
147
|
+
url: string;
|
|
148
|
+
browser_download_url: string;
|
|
149
|
+
id: number;
|
|
150
|
+
node_id: string;
|
|
151
|
+
name: string;
|
|
152
|
+
label: string | null;
|
|
153
|
+
state: "uploaded" | "open";
|
|
154
|
+
content_type: string;
|
|
155
|
+
size: number;
|
|
156
|
+
download_count: number;
|
|
157
|
+
created_at: string;
|
|
158
|
+
updated_at: string;
|
|
159
|
+
uploader: {
|
|
160
|
+
name?: string | null | undefined;
|
|
161
|
+
email?: string | null | undefined;
|
|
162
|
+
login: string;
|
|
163
|
+
id: number;
|
|
164
|
+
node_id: string;
|
|
165
|
+
avatar_url: string;
|
|
166
|
+
gravatar_id: string | null;
|
|
167
|
+
url: string;
|
|
168
|
+
html_url: string;
|
|
169
|
+
followers_url: string;
|
|
170
|
+
following_url: string;
|
|
171
|
+
gists_url: string;
|
|
172
|
+
starred_url: string;
|
|
173
|
+
subscriptions_url: string;
|
|
174
|
+
organizations_url: string;
|
|
175
|
+
repos_url: string;
|
|
176
|
+
events_url: string;
|
|
177
|
+
received_events_url: string;
|
|
178
|
+
type: string;
|
|
179
|
+
site_admin: boolean;
|
|
180
|
+
starred_at?: string | undefined;
|
|
181
|
+
} | null;
|
|
182
|
+
}[];
|
|
183
|
+
body_html?: string | undefined;
|
|
184
|
+
body_text?: string | undefined;
|
|
185
|
+
mentions_count?: number | undefined;
|
|
186
|
+
discussion_url?: string | undefined;
|
|
187
|
+
reactions?: {
|
|
188
|
+
url: string;
|
|
189
|
+
total_count: number;
|
|
190
|
+
"+1": number;
|
|
191
|
+
"-1": number;
|
|
192
|
+
laugh: number;
|
|
193
|
+
confused: number;
|
|
194
|
+
heart: number;
|
|
195
|
+
hooray: number;
|
|
196
|
+
eyes: number;
|
|
197
|
+
rocket: number;
|
|
198
|
+
} | undefined;
|
|
199
|
+
} | null>;
|
|
200
|
+
/**
|
|
201
|
+
* Return a function which checks if a release has at least one asset for a
|
|
202
|
+
* specific chain type
|
|
203
|
+
* @param chainType
|
|
204
|
+
* @param release
|
|
205
|
+
*/
|
|
206
|
+
declare const hasAssetForChainType: (chainType: string) => (release: GithubRelease) => boolean;
|
|
207
|
+
/**
|
|
208
|
+
* Return a function which checks if a release is a stable (that is, non-prerelease)
|
|
209
|
+
* and has some asset matching a specific chain type
|
|
210
|
+
* @param chainType
|
|
211
|
+
*/
|
|
212
|
+
declare const isStableReleaseForChainType: (chainType: string) => (release: GithubRelease) => boolean;
|
|
213
|
+
/**
|
|
214
|
+
* Find latest release (prerelease or non-prerelease) having some asset matching
|
|
215
|
+
* a specific chain type
|
|
216
|
+
* @param chainType
|
|
217
|
+
*/
|
|
218
|
+
declare const findLatestRelease: (chainType: string) => Promise<{
|
|
219
|
+
url: string;
|
|
220
|
+
html_url: string;
|
|
221
|
+
assets_url: string;
|
|
222
|
+
upload_url: string;
|
|
223
|
+
tarball_url: string | null;
|
|
224
|
+
zipball_url: string | null;
|
|
225
|
+
id: number;
|
|
226
|
+
node_id: string;
|
|
227
|
+
tag_name: string;
|
|
228
|
+
target_commitish: string;
|
|
229
|
+
name: string | null;
|
|
230
|
+
body?: string | null | undefined;
|
|
231
|
+
draft: boolean;
|
|
232
|
+
prerelease: boolean;
|
|
233
|
+
created_at: string;
|
|
234
|
+
published_at: string | null;
|
|
235
|
+
author: {
|
|
236
|
+
name?: string | null | undefined;
|
|
237
|
+
email?: string | null | undefined;
|
|
238
|
+
login: string;
|
|
239
|
+
id: number;
|
|
240
|
+
node_id: string;
|
|
241
|
+
avatar_url: string;
|
|
242
|
+
gravatar_id: string | null;
|
|
243
|
+
url: string;
|
|
244
|
+
html_url: string;
|
|
245
|
+
followers_url: string;
|
|
246
|
+
following_url: string;
|
|
247
|
+
gists_url: string;
|
|
248
|
+
starred_url: string;
|
|
249
|
+
subscriptions_url: string;
|
|
250
|
+
organizations_url: string;
|
|
251
|
+
repos_url: string;
|
|
252
|
+
events_url: string;
|
|
253
|
+
received_events_url: string;
|
|
254
|
+
type: string;
|
|
255
|
+
site_admin: boolean;
|
|
256
|
+
starred_at?: string | undefined;
|
|
257
|
+
};
|
|
258
|
+
assets: {
|
|
259
|
+
url: string;
|
|
260
|
+
browser_download_url: string;
|
|
261
|
+
id: number;
|
|
262
|
+
node_id: string;
|
|
263
|
+
name: string;
|
|
264
|
+
label: string | null;
|
|
265
|
+
state: "uploaded" | "open";
|
|
266
|
+
content_type: string;
|
|
267
|
+
size: number;
|
|
268
|
+
download_count: number;
|
|
269
|
+
created_at: string;
|
|
270
|
+
updated_at: string;
|
|
271
|
+
uploader: {
|
|
272
|
+
name?: string | null | undefined;
|
|
273
|
+
email?: string | null | undefined;
|
|
274
|
+
login: string;
|
|
275
|
+
id: number;
|
|
276
|
+
node_id: string;
|
|
277
|
+
avatar_url: string;
|
|
278
|
+
gravatar_id: string | null;
|
|
279
|
+
url: string;
|
|
280
|
+
html_url: string;
|
|
281
|
+
followers_url: string;
|
|
282
|
+
following_url: string;
|
|
283
|
+
gists_url: string;
|
|
284
|
+
starred_url: string;
|
|
285
|
+
subscriptions_url: string;
|
|
286
|
+
organizations_url: string;
|
|
287
|
+
repos_url: string;
|
|
288
|
+
events_url: string;
|
|
289
|
+
received_events_url: string;
|
|
290
|
+
type: string;
|
|
291
|
+
site_admin: boolean;
|
|
292
|
+
starred_at?: string | undefined;
|
|
293
|
+
} | null;
|
|
294
|
+
}[];
|
|
295
|
+
body_html?: string | undefined;
|
|
296
|
+
body_text?: string | undefined;
|
|
297
|
+
mentions_count?: number | undefined;
|
|
298
|
+
discussion_url?: string | undefined;
|
|
299
|
+
reactions?: {
|
|
300
|
+
url: string;
|
|
301
|
+
total_count: number;
|
|
302
|
+
"+1": number;
|
|
303
|
+
"-1": number;
|
|
304
|
+
laugh: number;
|
|
305
|
+
confused: number;
|
|
306
|
+
heart: number;
|
|
307
|
+
hooray: number;
|
|
308
|
+
eyes: number;
|
|
309
|
+
rocket: number;
|
|
310
|
+
} | undefined;
|
|
311
|
+
} | null>;
|
|
312
|
+
/**
|
|
313
|
+
* Find latest stable (that is, non-prerelease) release having some asset matching
|
|
314
|
+
* a specific chain type
|
|
315
|
+
* @param chainType
|
|
316
|
+
*/
|
|
317
|
+
declare const findLatestStableRelease: (chainType: string) => Promise<{
|
|
318
|
+
url: string;
|
|
319
|
+
html_url: string;
|
|
320
|
+
assets_url: string;
|
|
321
|
+
upload_url: string;
|
|
322
|
+
tarball_url: string | null;
|
|
323
|
+
zipball_url: string | null;
|
|
324
|
+
id: number;
|
|
325
|
+
node_id: string;
|
|
326
|
+
tag_name: string;
|
|
327
|
+
target_commitish: string;
|
|
328
|
+
name: string | null;
|
|
329
|
+
body?: string | null | undefined;
|
|
330
|
+
draft: boolean;
|
|
331
|
+
prerelease: boolean;
|
|
332
|
+
created_at: string;
|
|
333
|
+
published_at: string | null;
|
|
334
|
+
author: {
|
|
335
|
+
name?: string | null | undefined;
|
|
336
|
+
email?: string | null | undefined;
|
|
337
|
+
login: string;
|
|
338
|
+
id: number;
|
|
339
|
+
node_id: string;
|
|
340
|
+
avatar_url: string;
|
|
341
|
+
gravatar_id: string | null;
|
|
342
|
+
url: string;
|
|
343
|
+
html_url: string;
|
|
344
|
+
followers_url: string;
|
|
345
|
+
following_url: string;
|
|
346
|
+
gists_url: string;
|
|
347
|
+
starred_url: string;
|
|
348
|
+
subscriptions_url: string;
|
|
349
|
+
organizations_url: string;
|
|
350
|
+
repos_url: string;
|
|
351
|
+
events_url: string;
|
|
352
|
+
received_events_url: string;
|
|
353
|
+
type: string;
|
|
354
|
+
site_admin: boolean;
|
|
355
|
+
starred_at?: string | undefined;
|
|
356
|
+
};
|
|
357
|
+
assets: {
|
|
358
|
+
url: string;
|
|
359
|
+
browser_download_url: string;
|
|
360
|
+
id: number;
|
|
361
|
+
node_id: string;
|
|
362
|
+
name: string;
|
|
363
|
+
label: string | null;
|
|
364
|
+
state: "uploaded" | "open";
|
|
365
|
+
content_type: string;
|
|
366
|
+
size: number;
|
|
367
|
+
download_count: number;
|
|
368
|
+
created_at: string;
|
|
369
|
+
updated_at: string;
|
|
370
|
+
uploader: {
|
|
371
|
+
name?: string | null | undefined;
|
|
372
|
+
email?: string | null | undefined;
|
|
373
|
+
login: string;
|
|
374
|
+
id: number;
|
|
375
|
+
node_id: string;
|
|
376
|
+
avatar_url: string;
|
|
377
|
+
gravatar_id: string | null;
|
|
378
|
+
url: string;
|
|
379
|
+
html_url: string;
|
|
380
|
+
followers_url: string;
|
|
381
|
+
following_url: string;
|
|
382
|
+
gists_url: string;
|
|
383
|
+
starred_url: string;
|
|
384
|
+
subscriptions_url: string;
|
|
385
|
+
organizations_url: string;
|
|
386
|
+
repos_url: string;
|
|
387
|
+
events_url: string;
|
|
388
|
+
received_events_url: string;
|
|
389
|
+
type: string;
|
|
390
|
+
site_admin: boolean;
|
|
391
|
+
starred_at?: string | undefined;
|
|
392
|
+
} | null;
|
|
393
|
+
}[];
|
|
394
|
+
body_html?: string | undefined;
|
|
395
|
+
body_text?: string | undefined;
|
|
396
|
+
mentions_count?: number | undefined;
|
|
397
|
+
discussion_url?: string | undefined;
|
|
398
|
+
reactions?: {
|
|
399
|
+
url: string;
|
|
400
|
+
total_count: number;
|
|
401
|
+
"+1": number;
|
|
402
|
+
"-1": number;
|
|
403
|
+
laugh: number;
|
|
404
|
+
confused: number;
|
|
405
|
+
heart: number;
|
|
406
|
+
hooray: number;
|
|
407
|
+
eyes: number;
|
|
408
|
+
rocket: number;
|
|
409
|
+
} | undefined;
|
|
410
|
+
} | null>;
|
|
411
|
+
export { fetchReleasesPage, findLastRelease, findLatestRelease, findLatestStableRelease, hasAssetForChainType, isStableReleaseForChainType, };
|
|
412
|
+
//# sourceMappingURL=github.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../lib/utils/github.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;GAIG;AACH,iBAAgB,iBAAiB,CAC/B,QAAQ,SAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAqB/C;AAED;;;;GAIG;AACH,QAAA,MAAM,eAAe,yBACE,aAAa,KAAK,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAY/C,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,oBAAoB,cAAe,MAAM,eAAe,aAAa,YACE,CAAC;AAE9E;;;;GAIG;AACH,QAAA,MAAM,2BAA2B,cACnB,MAAM,eAAe,aAAa,YACmB,CAAC;AAEpE;;;;GAIG;AACH,QAAA,MAAM,iBAAiB,cAAqB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SACA,CAAC;AAEnD;;;;GAIG;AACH,QAAA,MAAM,uBAAuB,cAAqB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SACC,CAAC;AAE1D,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,GAC5B,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Octokit } from 'octokit';
|
|
2
|
+
import { isValidAssetName } from './rosen';
|
|
3
|
+
import { CONTRACT_REPO_NAME, DEFAULT_RELEASES_FETCHING_PAGE_SIZE, ROSEN_BRIDGE_ORGANIZATION, } from '../constants';
|
|
4
|
+
/**
|
|
5
|
+
* Fetch a page of releases from Github Api in each iteration until there are no
|
|
6
|
+
* more releases.
|
|
7
|
+
* @param pageSize
|
|
8
|
+
*/
|
|
9
|
+
async function* fetchReleasesPage(pageSize = DEFAULT_RELEASES_FETCHING_PAGE_SIZE) {
|
|
10
|
+
const octokit = new Octokit();
|
|
11
|
+
let currentPage = 1;
|
|
12
|
+
while (true) {
|
|
13
|
+
const releasesPage = await octokit.rest.repos.listReleases({
|
|
14
|
+
owner: ROSEN_BRIDGE_ORGANIZATION,
|
|
15
|
+
repo: CONTRACT_REPO_NAME,
|
|
16
|
+
per_page: pageSize,
|
|
17
|
+
page: currentPage,
|
|
18
|
+
});
|
|
19
|
+
if (releasesPage.data.length) {
|
|
20
|
+
yield releasesPage.data;
|
|
21
|
+
currentPage += 1;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Find the last release matching the predicate. If all releases are iterated and
|
|
30
|
+
* no matching release is found, return null.
|
|
31
|
+
* @param predicate
|
|
32
|
+
*/
|
|
33
|
+
const findLastRelease = async (predicate = () => true) => {
|
|
34
|
+
const releasesPageIterator = fetchReleasesPage();
|
|
35
|
+
for await (const releasesPage of releasesPageIterator) {
|
|
36
|
+
const foundRelease = releasesPage.find(predicate);
|
|
37
|
+
if (foundRelease) {
|
|
38
|
+
return foundRelease;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Return a function which checks if a release has at least one asset for a
|
|
45
|
+
* specific chain type
|
|
46
|
+
* @param chainType
|
|
47
|
+
* @param release
|
|
48
|
+
*/
|
|
49
|
+
const hasAssetForChainType = (chainType) => (release) => release.assets.map((asset) => asset.name).some(isValidAssetName(chainType));
|
|
50
|
+
/**
|
|
51
|
+
* Return a function which checks if a release is a stable (that is, non-prerelease)
|
|
52
|
+
* and has some asset matching a specific chain type
|
|
53
|
+
* @param chainType
|
|
54
|
+
*/
|
|
55
|
+
const isStableReleaseForChainType = (chainType) => (release) => !release.prerelease && hasAssetForChainType(chainType)(release);
|
|
56
|
+
/**
|
|
57
|
+
* Find latest release (prerelease or non-prerelease) having some asset matching
|
|
58
|
+
* a specific chain type
|
|
59
|
+
* @param chainType
|
|
60
|
+
*/
|
|
61
|
+
const findLatestRelease = async (chainType) => findLastRelease(hasAssetForChainType(chainType));
|
|
62
|
+
/**
|
|
63
|
+
* Find latest stable (that is, non-prerelease) release having some asset matching
|
|
64
|
+
* a specific chain type
|
|
65
|
+
* @param chainType
|
|
66
|
+
*/
|
|
67
|
+
const findLatestStableRelease = async (chainType) => findLastRelease(isStableReleaseForChainType(chainType));
|
|
68
|
+
export { fetchReleasesPage, findLastRelease, findLatestRelease, findLatestStableRelease, hasAssetForChainType, isStableReleaseForChainType, };
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3V0aWxzL2dpdGh1Yi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUzQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG1DQUFtQyxFQUNuQyx5QkFBeUIsR0FDMUIsTUFBTSxjQUFjLENBQUM7QUFJdEI7Ozs7R0FJRztBQUNILEtBQUssU0FBUyxDQUFDLENBQUMsaUJBQWlCLENBQy9CLFFBQVEsR0FBRyxtQ0FBbUM7SUFFOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUU5QixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFFcEIsT0FBTyxJQUFJLEVBQUU7UUFDWCxNQUFNLFlBQVksR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUN6RCxLQUFLLEVBQUUseUJBQXlCO1lBQ2hDLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFLFdBQVc7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM1QixNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDeEIsV0FBVyxJQUFJLENBQUMsQ0FBQztTQUNsQjthQUFNO1lBQ0wsT0FBTztTQUNSO0tBQ0Y7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sZUFBZSxHQUFHLEtBQUssRUFDM0IsWUFBaUQsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUMzRCxFQUFFO0lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBRWpELElBQUksS0FBSyxFQUFFLE1BQU0sWUFBWSxJQUFJLG9CQUFvQixFQUFFO1FBQ3JELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbEQsSUFBSSxZQUFZLEVBQUU7WUFDaEIsT0FBTyxZQUFZLENBQUM7U0FDckI7S0FDRjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFzQixFQUFFLEVBQUUsQ0FDN0UsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUU5RTs7OztHQUlHO0FBQ0gsTUFBTSwyQkFBMkIsR0FDL0IsQ0FBQyxTQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQXNCLEVBQUUsRUFBRSxDQUNoRCxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFcEU7Ozs7R0FJRztBQUNILE1BQU0saUJBQWlCLEdBQUcsS0FBSyxFQUFFLFNBQWlCLEVBQUUsRUFBRSxDQUNwRCxlQUFlLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUVuRDs7OztHQUlHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLEVBQUUsU0FBaUIsRUFBRSxFQUFFLENBQzFELGVBQWUsQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBRTFELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLDJCQUEyQixHQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2N0b2tpdCB9IGZyb20gJ29jdG9raXQnO1xuXG5pbXBvcnQgeyBpc1ZhbGlkQXNzZXROYW1lIH0gZnJvbSAnLi9yb3Nlbic7XG5cbmltcG9ydCB7XG4gIENPTlRSQUNUX1JFUE9fTkFNRSxcbiAgREVGQVVMVF9SRUxFQVNFU19GRVRDSElOR19QQUdFX1NJWkUsXG4gIFJPU0VOX0JSSURHRV9PUkdBTklaQVRJT04sXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7IEdpdGh1YlJlbGVhc2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogRmV0Y2ggYSBwYWdlIG9mIHJlbGVhc2VzIGZyb20gR2l0aHViIEFwaSBpbiBlYWNoIGl0ZXJhdGlvbiB1bnRpbCB0aGVyZSBhcmUgbm9cbiAqIG1vcmUgcmVsZWFzZXMuXG4gKiBAcGFyYW0gcGFnZVNpemVcbiAqL1xuYXN5bmMgZnVuY3Rpb24qIGZldGNoUmVsZWFzZXNQYWdlKFxuICBwYWdlU2l6ZSA9IERFRkFVTFRfUkVMRUFTRVNfRkVUQ0hJTkdfUEFHRV9TSVpFXG4pIHtcbiAgY29uc3Qgb2N0b2tpdCA9IG5ldyBPY3Rva2l0KCk7XG5cbiAgbGV0IGN1cnJlbnRQYWdlID0gMTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IHJlbGVhc2VzUGFnZSA9IGF3YWl0IG9jdG9raXQucmVzdC5yZXBvcy5saXN0UmVsZWFzZXMoe1xuICAgICAgb3duZXI6IFJPU0VOX0JSSURHRV9PUkdBTklaQVRJT04sXG4gICAgICByZXBvOiBDT05UUkFDVF9SRVBPX05BTUUsXG4gICAgICBwZXJfcGFnZTogcGFnZVNpemUsXG4gICAgICBwYWdlOiBjdXJyZW50UGFnZSxcbiAgICB9KTtcblxuICAgIGlmIChyZWxlYXNlc1BhZ2UuZGF0YS5sZW5ndGgpIHtcbiAgICAgIHlpZWxkIHJlbGVhc2VzUGFnZS5kYXRhO1xuICAgICAgY3VycmVudFBhZ2UgKz0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEZpbmQgdGhlIGxhc3QgcmVsZWFzZSBtYXRjaGluZyB0aGUgcHJlZGljYXRlLiBJZiBhbGwgcmVsZWFzZXMgYXJlIGl0ZXJhdGVkIGFuZFxuICogbm8gbWF0Y2hpbmcgcmVsZWFzZSBpcyBmb3VuZCwgcmV0dXJuIG51bGwuXG4gKiBAcGFyYW0gcHJlZGljYXRlXG4gKi9cbmNvbnN0IGZpbmRMYXN0UmVsZWFzZSA9IGFzeW5jIChcbiAgcHJlZGljYXRlOiAocmVsZWFzZTogR2l0aHViUmVsZWFzZSkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWVcbikgPT4ge1xuICBjb25zdCByZWxlYXNlc1BhZ2VJdGVyYXRvciA9IGZldGNoUmVsZWFzZXNQYWdlKCk7XG5cbiAgZm9yIGF3YWl0IChjb25zdCByZWxlYXNlc1BhZ2Ugb2YgcmVsZWFzZXNQYWdlSXRlcmF0b3IpIHtcbiAgICBjb25zdCBmb3VuZFJlbGVhc2UgPSByZWxlYXNlc1BhZ2UuZmluZChwcmVkaWNhdGUpO1xuXG4gICAgaWYgKGZvdW5kUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIGZvdW5kUmVsZWFzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vKipcbiAqIFJldHVybiBhIGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBpZiBhIHJlbGVhc2UgaGFzIGF0IGxlYXN0IG9uZSBhc3NldCBmb3IgYVxuICogc3BlY2lmaWMgY2hhaW4gdHlwZVxuICogQHBhcmFtIGNoYWluVHlwZVxuICogQHBhcmFtIHJlbGVhc2VcbiAqL1xuY29uc3QgaGFzQXNzZXRGb3JDaGFpblR5cGUgPSAoY2hhaW5UeXBlOiBzdHJpbmcpID0+IChyZWxlYXNlOiBHaXRodWJSZWxlYXNlKSA9PlxuICByZWxlYXNlLmFzc2V0cy5tYXAoKGFzc2V0KSA9PiBhc3NldC5uYW1lKS5zb21lKGlzVmFsaWRBc3NldE5hbWUoY2hhaW5UeXBlKSk7XG5cbi8qKlxuICogUmV0dXJuIGEgZnVuY3Rpb24gd2hpY2ggY2hlY2tzIGlmIGEgcmVsZWFzZSBpcyBhIHN0YWJsZSAodGhhdCBpcywgbm9uLXByZXJlbGVhc2UpXG4gKiBhbmQgaGFzIHNvbWUgYXNzZXQgbWF0Y2hpbmcgYSBzcGVjaWZpYyBjaGFpbiB0eXBlXG4gKiBAcGFyYW0gY2hhaW5UeXBlXG4gKi9cbmNvbnN0IGlzU3RhYmxlUmVsZWFzZUZvckNoYWluVHlwZSA9XG4gIChjaGFpblR5cGU6IHN0cmluZykgPT4gKHJlbGVhc2U6IEdpdGh1YlJlbGVhc2UpID0+XG4gICAgIXJlbGVhc2UucHJlcmVsZWFzZSAmJiBoYXNBc3NldEZvckNoYWluVHlwZShjaGFpblR5cGUpKHJlbGVhc2UpO1xuXG4vKipcbiAqIEZpbmQgbGF0ZXN0IHJlbGVhc2UgKHByZXJlbGVhc2Ugb3Igbm9uLXByZXJlbGVhc2UpIGhhdmluZyBzb21lIGFzc2V0IG1hdGNoaW5nXG4gKiBhIHNwZWNpZmljIGNoYWluIHR5cGVcbiAqIEBwYXJhbSBjaGFpblR5cGVcbiAqL1xuY29uc3QgZmluZExhdGVzdFJlbGVhc2UgPSBhc3luYyAoY2hhaW5UeXBlOiBzdHJpbmcpID0+XG4gIGZpbmRMYXN0UmVsZWFzZShoYXNBc3NldEZvckNoYWluVHlwZShjaGFpblR5cGUpKTtcblxuLyoqXG4gKiBGaW5kIGxhdGVzdCBzdGFibGUgKHRoYXQgaXMsIG5vbi1wcmVyZWxlYXNlKSByZWxlYXNlIGhhdmluZyBzb21lIGFzc2V0IG1hdGNoaW5nXG4gKiBhIHNwZWNpZmljIGNoYWluIHR5cGVcbiAqIEBwYXJhbSBjaGFpblR5cGVcbiAqL1xuY29uc3QgZmluZExhdGVzdFN0YWJsZVJlbGVhc2UgPSBhc3luYyAoY2hhaW5UeXBlOiBzdHJpbmcpID0+XG4gIGZpbmRMYXN0UmVsZWFzZShpc1N0YWJsZVJlbGVhc2VGb3JDaGFpblR5cGUoY2hhaW5UeXBlKSk7XG5cbmV4cG9ydCB7XG4gIGZldGNoUmVsZWFzZXNQYWdlLFxuICBmaW5kTGFzdFJlbGVhc2UsXG4gIGZpbmRMYXRlc3RSZWxlYXNlLFxuICBmaW5kTGF0ZXN0U3RhYmxlUmVsZWFzZSxcbiAgaGFzQXNzZXRGb3JDaGFpblR5cGUsXG4gIGlzU3RhYmxlUmVsZWFzZUZvckNoYWluVHlwZSxcbn07XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if an asset name is a valid Rosen asset name and matches a specific
|
|
3
|
+
* chain type
|
|
4
|
+
* @param chainType
|
|
5
|
+
*/
|
|
6
|
+
export declare const isValidAssetName: (chainType: string) => (assetName: string) => boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Remove chain type and tag from the asset name and optionally replaces them
|
|
9
|
+
* with a suffix
|
|
10
|
+
* @param assetName
|
|
11
|
+
* @param alternativeSuffix a suffix which will be added before `.json` (if provided)
|
|
12
|
+
*/
|
|
13
|
+
export declare const truncateAssetName: (assetName: string, alternativeSuffix?: string) => string;
|
|
14
|
+
//# sourceMappingURL=rosen.d.ts.map
|