@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.
Files changed (42) hide show
  1. package/.eslintignore +1 -0
  2. package/README.md +25 -0
  3. package/babel.config.json +3 -0
  4. package/dist/lib/constants.d.ts +4 -0
  5. package/dist/lib/constants.d.ts.map +1 -0
  6. package/dist/lib/constants.js +4 -0
  7. package/dist/lib/downloadRosenAssets.d.ts +10 -0
  8. package/dist/lib/downloadRosenAssets.d.ts.map +1 -0
  9. package/dist/lib/downloadRosenAssets.js +43 -0
  10. package/dist/lib/error.d.ts +4 -0
  11. package/dist/lib/error.d.ts.map +1 -0
  12. package/dist/lib/error.js +4 -0
  13. package/dist/lib/index.d.ts +3 -0
  14. package/dist/lib/index.d.ts.map +1 -0
  15. package/dist/lib/index.js +3 -0
  16. package/dist/lib/types/index.d.ts +6 -0
  17. package/dist/lib/types/index.d.ts.map +1 -0
  18. package/dist/lib/types/index.js +2 -0
  19. package/dist/lib/utils/github.d.ts +412 -0
  20. package/dist/lib/utils/github.d.ts.map +1 -0
  21. package/dist/lib/utils/github.js +69 -0
  22. package/dist/lib/utils/rosen.d.ts +14 -0
  23. package/dist/lib/utils/rosen.d.ts.map +1 -0
  24. package/dist/lib/utils/rosen.js +14 -0
  25. package/dist/tsconfig.build.tsbuildinfo +1 -0
  26. package/jest.config.json +7 -0
  27. package/lib/constants.ts +3 -0
  28. package/lib/downloadRosenAssets.ts +56 -0
  29. package/lib/error.ts +3 -0
  30. package/lib/index.ts +3 -0
  31. package/lib/types/index.ts +11 -0
  32. package/lib/utils/github.ts +103 -0
  33. package/lib/utils/rosen.ts +22 -0
  34. package/package.json +48 -0
  35. package/tests/data/octokit.data.ts +121 -0
  36. package/tests/downloadRosenAssets.spec.ts +170 -0
  37. package/tests/mocks/octokit.mock.ts +23 -0
  38. package/tests/setup.ts +1 -0
  39. package/tests/utils/github.spec.ts +237 -0
  40. package/tests/utils/rosen.spec.ts +145 -0
  41. package/tsconfig.build.json +4 -0
  42. 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,3 @@
1
+ {
2
+ "extends": "../../babel.config.base.json"
3
+ }
@@ -0,0 +1,4 @@
1
+ export declare const DEFAULT_RELEASES_FETCHING_PAGE_SIZE = 5;
2
+ export declare const ROSEN_BRIDGE_ORGANIZATION = "rosen-bridge";
3
+ export declare const CONTRACT_REPO_NAME = "contract";
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -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,4 @@
1
+ declare class RosenAssetsDownloadError extends Error {
2
+ }
3
+ export { RosenAssetsDownloadError };
4
+ //# sourceMappingURL=error.d.ts.map
@@ -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,3 @@
1
+ export { default as downloadRosenAssets } from './downloadRosenAssets';
2
+ export { RosenAssetsDownloadError } from './error';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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