Skip to content

Commit 6868bad

Browse files
longlhoLong Ho
authored andcommitted
chore: remove invariant and use intl-utils
1 parent a6d684b commit 6868bad

File tree

6 files changed

+53
-112
lines changed

6 files changed

+53
-112
lines changed

package-lock.json

Lines changed: 35 additions & 69 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -131,18 +131,18 @@
131131
"types": "./lib/react-intl.d.ts",
132132
"sideEffects": false,
133133
"dependencies": {
134-
"@formatjs/intl-listformat": "^1.3.2",
135-
"@formatjs/intl-relativetimeformat": "^4.5.2",
136-
"@formatjs/intl-unified-numberformat": "^3.0.0",
134+
"@formatjs/intl-listformat": "^1.3.4",
135+
"@formatjs/intl-relativetimeformat": "^4.5.4",
136+
"@formatjs/intl-unified-numberformat": "^3.0.1",
137+
"@formatjs/intl-utils": "^2.0.1",
137138
"@formatjs/macro": "^0.2.6",
138139
"@types/hoist-non-react-statics": "^3.3.1",
139140
"@types/invariant": "^2.2.31",
140141
"hoist-non-react-statics": "^3.3.1",
141-
"intl-format-cache": "^4.2.14",
142+
"intl-format-cache": "^4.2.16",
142143
"intl-locales-supported": "^1.8.4",
143-
"intl-messageformat": "^7.7.3",
144-
"intl-messageformat-parser": "^3.5.2",
145-
"invariant": "^2.1.1",
144+
"intl-messageformat": "^7.7.5",
145+
"intl-messageformat-parser": "^3.5.3",
146146
"shallow-equal": "^1.2.1"
147147
},
148148
"peerDependencies": {
@@ -155,7 +155,7 @@
155155
"@babel/plugin-transform-modules-commonjs": "^7.7.5",
156156
"@babel/preset-env": "^7.7.7",
157157
"@babel/preset-react": "^7.7.4",
158-
"@formatjs/intl-pluralrules": "^1.4.0",
158+
"@formatjs/intl-pluralrules": "^1.4.1",
159159
"@microsoft/api-documenter": "^7.7.2",
160160
"@microsoft/api-extractor": "^7.7.0",
161161
"@types/benchmark": "^1.0.31",

src/components/provider.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,6 @@ export default class IntlProvider extends React.PureComponent<
178178

179179
render(): JSX.Element {
180180
invariantIntlContext(this.state.intl);
181-
return <Provider value={this.state.intl!}>{this.props.children}</Provider>;
181+
return <Provider value={this.state.intl}>{this.props.children}</Provider>;
182182
}
183183
}

src/components/relative.tsx

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,7 @@ import {Context} from './injectIntl';
88
import {FormatRelativeTimeOptions} from '../types';
99
import {Unit} from '@formatjs/intl-relativetimeformat';
1010
import {invariantIntlContext} from '../utils';
11-
12-
// Since rollup cannot deal with namespace being a function,
13-
// this is to interop with TypeScript since `invariant`
14-
// does not export a default
15-
// https://github.com/rollup/rollup/issues/1267
16-
import * as invariant_ from 'invariant';
17-
const invariant: typeof invariant_ = (invariant_ as any).default || invariant_;
11+
import {invariant} from '@formatjs/intl-utils'
1812
const MINUTE = 60;
1913
const HOUR = 60 * 60;
2014
const DAY = 60 * 60 * 24;
@@ -82,13 +76,6 @@ function canIncrement(unit: Unit = 'second'): boolean {
8276
return INCREMENTABLE_UNITS.includes(unit);
8377
}
8478

85-
function verifyProps(updateIntervalInSeconds?: number, unit?: Unit): void {
86-
invariant(
87-
!updateIntervalInSeconds || (updateIntervalInSeconds && canIncrement(unit)),
88-
'Cannot schedule update with unit longer than hour'
89-
);
90-
}
91-
9279
export class FormattedRelativeTime extends React.PureComponent<Props, State> {
9380
// Public for testing
9481
_updateTimer: any = null;
@@ -107,7 +94,10 @@ export class FormattedRelativeTime extends React.PureComponent<Props, State> {
10794

10895
constructor(props: Props) {
10996
super(props);
110-
verifyProps(props.updateIntervalInSeconds, props.unit);
97+
invariant(
98+
!props.updateIntervalInSeconds || !!(props.updateIntervalInSeconds && canIncrement(props.unit)),
99+
'Cannot schedule update with unit longer than hour'
100+
);
111101
}
112102

113103
scheduleNextUpdate(

src/formatters/message.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,7 @@
55
*/
66

77
import * as React from 'react';
8-
// Since rollup cannot deal with namespace being a function,
9-
// this is to interop with TypeScript since `invariant`
10-
// does not export a default
11-
// https://github.com/rollup/rollup/issues/1267
12-
import * as invariant_ from 'invariant';
13-
const invariant: typeof invariant_ = (invariant_ as any).default || invariant_;
8+
import {invariant} from '@formatjs/intl-utils'
149

1510
import {
1611
Formatters,
@@ -127,12 +122,7 @@ export function formatMessage(
127122
const {id, defaultMessage} = messageDescriptor;
128123

129124
// `id` is a required field of a Message Descriptor.
130-
invariant(id, '[React Intl] An `id` must be provided to format a message.');
131-
if (!id) {
132-
throw new Error(
133-
'[React Intl] An `id` must be provided to format a message.'
134-
);
135-
}
125+
invariant(!!id, '[React Intl] An `id` must be provided to format a message.');
136126
const message = messages && messages[id];
137127
formats = deepMergeFormatsAndSetTimeZone(formats, timeZone);
138128
defaultFormats = deepMergeFormatsAndSetTimeZone(defaultFormats, timeZone);

src/utils.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,8 @@ import {IntlConfig, IntlCache, CustomFormats, Formatters} from './types';
1313
import * as React from 'react';
1414
import IntlMessageFormat from 'intl-messageformat';
1515
import memoizeIntlConstructor from 'intl-format-cache';
16-
// Since rollup cannot deal with namespace being a function,
17-
// this is to interop with TypeScript since `invariant`
18-
// does not export a default
19-
// https://github.com/rollup/rollup/issues/1267
20-
import * as invariant_ from 'invariant';
16+
import {invariant} from '@formatjs/intl-utils'
2117
import {IntlRelativeTimeFormatOptions} from '@formatjs/intl-relativetimeformat';
22-
const invariant: typeof invariant_ = (invariant_ as any).default || invariant_;
2318

2419
const ESCAPED_CHARS: Record<number, string> = {
2520
38: '&amp;',
@@ -54,7 +49,7 @@ export function filterProps<T extends Record<string, any>, K extends string>(
5449
}, {} as Pick<T, K>);
5550
}
5651

57-
export function invariantIntlContext(intl?: any): void {
52+
export function invariantIntlContext(intl?: any): asserts intl {
5853
invariant(
5954
intl,
6055
'[React Intl] Could not find required `intl` object. ' +

0 commit comments

Comments
 (0)