Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v6.0.0 #208

Merged
merged 12 commits into from
Sep 14, 2021
Prev Previous commit
Next Next commit
Fix SemVer issues
  • Loading branch information
smithki committed Sep 14, 2021
commit 008a93e876fc4758a9fa657dd4b93ebad589a539
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@
"packages/magic-sdk"
]
},
"resolutions": {
"@rollup/plugin-commonjs": "18.1.0"
},
"repository": "magiclabs/magic-js",
"author": "Magic Labs <[email protected]>",
"auto": {
Expand Down
2 changes: 1 addition & 1 deletion packages/@magic-sdk/provider/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"dist/**/*.js.map",
"dist/**/*.d.ts"
],
"target": "web",
"target": "node",
"main": "./dist/cjs/index.js",
"module": "./dist/es/index.js",
"types": "./dist/types/index.d.ts",
Expand Down
23 changes: 5 additions & 18 deletions packages/@magic-sdk/provider/src/core/sdk.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
/* eslint-disable no-param-reassign */

import { EthNetworkConfiguration, QueryParameters, SupportedLocale } from '@magic-sdk/types';
import semverSatisfies from 'semver/functions/satisfies';
import type { AbstractProvider } from 'web3-core';
import { SemVer, coerce, satisfies } from '../util/semver';
import { encodeJSON } from '../util/base64-json';
import {
createMissingApiKeyError,
Expand All @@ -23,23 +23,10 @@ import { SDKEnvironment, sdkNameToEnvName } from './sdk-environment';
* SDK currently in use.
*/
function checkExtensionCompat(ext: Extension<string>) {
if (ext.compat) {
// Check web compatibility
if (SDKEnvironment.sdkName === 'magic-sdk') {
return typeof ext.compat['magic-sdk'] === 'string'
? semverSatisfies(SDKEnvironment.version, ext.compat['magic-sdk'])
: !!ext.compat['magic-sdk'];
}

// Check React Native compatibility
/* istanbul ignore else */
if (SDKEnvironment.sdkName === '@magic-sdk/react-native') {
return typeof ext.compat['@magic-sdk/react-native'] === 'string'
? semverSatisfies(SDKEnvironment.version, ext.compat['@magic-sdk/react-native'])
: !!ext.compat['@magic-sdk/react-native'];
}

// Else case should be impossible here...
if (ext.compat && ext.compat[SDKEnvironment.sdkName] != null) {
return typeof ext.compat[SDKEnvironment.sdkName] === 'string'
? satisfies(coerce(SDKEnvironment.version) as SemVer, ext.compat[SDKEnvironment.sdkName] as string)
: !!ext.compat[SDKEnvironment.sdkName];
}

// To gracefully support older extensions, we assume
Expand Down
9 changes: 6 additions & 3 deletions packages/@magic-sdk/provider/src/util/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
export * from './base64-json';
export * from './events';
export * from './get-payload-id';
export * from './promise-tools';
export * from './base64-json';
export * from './semver';
export * as storage from './storage';
export * from './type-guards';
export * from './events';
export * from './url';
export * as storage from './storage';
export * from './uuid';
export * from './web-crypto';
20 changes: 20 additions & 0 deletions packages/@magic-sdk/provider/src/util/semver.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// We have to wrap `semver` functions due to a long-standing cyclic dependency
// which causes Rollup to break the `satisfies` function.
// See:
// - https://github.com/magiclabs/magic-js/issues/198
// - https://github.com/rollup/plugins/issues/879
// - https://github.com/npm/node-semver/issues/318
// - https://github.com/npm/node-semver/issues/381

/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable global-require */

// Do not remove or change the order of these requires.
const SemVer = require('semver/classes/semver');
const Comparator = require('semver/classes/comparator');
const Range = require('semver/classes/range');
const satisfies = require('semver/functions/satisfies') as typeof import('semver/functions/satisfies');
const coerce = require('semver/functions/satisfies') as typeof import('semver/functions/coerce');

export { satisfies, coerce };
export type { SemVer } from 'semver';
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4720,9 +4720,9 @@ __metadata:
languageName: node
linkType: hard

"@rollup/plugin-commonjs@npm:^17.0.0":
version: 17.1.0
resolution: "@rollup/plugin-commonjs@npm:17.1.0"
"@rollup/plugin-commonjs@npm:18.1.0":
version: 18.1.0
resolution: "@rollup/plugin-commonjs@npm:18.1.0"
dependencies:
"@rollup/pluginutils": ^3.1.0
commondir: ^1.0.1
Expand All @@ -4733,7 +4733,7 @@ __metadata:
resolve: ^1.17.0
peerDependencies:
rollup: ^2.30.0
checksum: b83f05c7923ecc0f946eef3ef63b7cde090a7205b06aa7f43d29c06823c9848243691f4a799da9d6f07fb4915a9b12c66261c60913ea6f48441ff0715fb689a9
checksum: 7bb553119b0dcc1860e1c0b74ccc81b9519f5163c15660649191622e5911c6d3a1b1ecd743c510dcc28b8c88cd6c3df4776131a384719b9502328ff5f30cb8d6
languageName: node
linkType: hard

Expand Down