aboutsummaryrefslogtreecommitdiffstats
path: root/packages/monorepo-scripts/src/utils/npm_utils.ts
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-06-18 22:55:59 +0800
committerFabio Berger <me@fabioberger.com>2018-06-19 05:06:32 +0800
commit8633fa702436cceeafa52ec39a7fabb5b2650c38 (patch)
tree0702ff5b590396e86f71508a16a87b7440ffe0c0 /packages/monorepo-scripts/src/utils/npm_utils.ts
parent19668b9b48eb08645f500dd8453b8cb2f7abc400 (diff)
downloaddexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.tar
dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.tar.gz
dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.tar.bz2
dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.tar.lz
dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.tar.xz
dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.tar.zst
dexon-sol-tools-8633fa702436cceeafa52ec39a7fabb5b2650c38.zip
Add more prepublish checks
Diffstat (limited to 'packages/monorepo-scripts/src/utils/npm_utils.ts')
-rw-r--r--packages/monorepo-scripts/src/utils/npm_utils.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/packages/monorepo-scripts/src/utils/npm_utils.ts b/packages/monorepo-scripts/src/utils/npm_utils.ts
new file mode 100644
index 000000000..cc1e046e7
--- /dev/null
+++ b/packages/monorepo-scripts/src/utils/npm_utils.ts
@@ -0,0 +1,28 @@
+import 'isomorphic-fetch';
+import * as _ from 'lodash';
+
+import { PackageRegistryJson } from '../types';
+
+const NPM_REGISTRY_BASE_URL = 'https://registry.npmjs.org';
+const SUCCESS_STATUS = 200;
+const NOT_FOUND_STATUS = 404;
+
+export const npmUtils = {
+ async getPackageRegistryJsonIfExistsAsync(packageName: string): Promise<PackageRegistryJson | undefined> {
+ const url = `${NPM_REGISTRY_BASE_URL}/${packageName}`;
+ const response = await fetch(url);
+
+ if (response.status === NOT_FOUND_STATUS) {
+ return undefined;
+ } else if (response.status !== SUCCESS_STATUS) {
+ throw new Error(`Request to ${url} failed. Check your internet connection and that npmjs.org is up.`);
+ }
+ const packageRegistryJson = await response.json();
+ return packageRegistryJson;
+ },
+ getPreviouslyPublishedVersions(packageRegistryJson: PackageRegistryJson): string[] {
+ const timeWithOnlyVersions = _.omit(packageRegistryJson.time, ['modified', 'created']);
+ const versions = _.keys(timeWithOnlyVersions);
+ return versions;
+ },
+};