From cb95b4ac230f3597fc3937e50aa5dea0107727b0 Mon Sep 17 00:00:00 2001 From: Linjie Ding Date: Tue, 23 Jun 2020 06:58:08 -0700 Subject: [PATCH] fix(react-intl): fix d.ts rollup (#1741) fix(@formatjs/intl-numberformat): fix rollup'ed d.ts --- package.json | 2 +- packages/intl-numberformat/src/core.ts | 8 +- packages/react-intl/package.json | 3 +- packages/react-intl/src/components/plural.tsx | 8 +- packages/react-intl/src/index.ts | 21 +++-- yarn.lock | 79 +++++++++---------- 6 files changed, 64 insertions(+), 57 deletions(-) diff --git a/package.json b/package.json index d2bedbfcc7..864b2abd72 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "test": "yarn run prettier:check && lerna run test" }, "devDependencies": { - "@microsoft/api-extractor": "^7.7.13", + "@microsoft/api-extractor": "^7.8.12", "@rollup/plugin-json": "^4.0.3", "@types/jest": "^25.2.1", "@typescript-eslint/eslint-plugin": "^2.29.0", diff --git a/packages/intl-numberformat/src/core.ts b/packages/intl-numberformat/src/core.ts index c4c871ef1c..b878b740f6 100644 --- a/packages/intl-numberformat/src/core.ts +++ b/packages/intl-numberformat/src/core.ts @@ -21,11 +21,15 @@ import {names as numberingSystemNames} from './data/numbering-systems.json'; import formatToParts from './format_to_parts'; // eslint-disable-next-line import/no-cycle import getInternalSlots from './get_internal_slots'; -import {NumberFormatConstructor, NumberFormatOptions} from './types'; +import { + NumberFormatConstructor, + NumberFormatOptions, + NumberFormat as NumberFormatType, +} from './types'; import type {getCanonicalLocales} from '@formatjs/intl-getcanonicallocales'; // Merge declaration with the constructor defined below. -export type NumberFormat = import('./types').NumberFormat; +export type NumberFormat = NumberFormatType; const VALID_NUMBERING_SYSTEM_NAMES = new Set(numberingSystemNames); diff --git a/packages/react-intl/package.json b/packages/react-intl/package.json index 5a3d9ad765..db4331b21d 100644 --- a/packages/react-intl/package.json +++ b/packages/react-intl/package.json @@ -168,8 +168,7 @@ ], "devDependencies": { "@formatjs/intl-pluralrules": "^2.2.9", - "@microsoft/api-documenter": "^7.7.18", - "@microsoft/api-extractor": "^7.7.13", + "@microsoft/api-documenter": "^7.8.14", "@types/benchmark": "^1.0.31", "@types/enzyme": "^3.10.5", "@types/jest": "^25.2.1", diff --git a/packages/react-intl/src/components/plural.tsx b/packages/react-intl/src/components/plural.tsx index 27f985cb2c..6194088a59 100644 --- a/packages/react-intl/src/components/plural.tsx +++ b/packages/react-intl/src/components/plural.tsx @@ -47,6 +47,10 @@ FormattedPlural.defaultProps = { FormattedPlural.displayName = 'FormattedPlural'; -export default withIntl(FormattedPlural) as React.FC> & { +// Explicitly annotate type here to workaround API extractor's inability to handle `import('./someModule')` +// type annotations when rolling up DTS file. +const FormattedPluralWithIntl: React.FC> & { WrappedComponent: React.ComponentType; -}; +} = withIntl(FormattedPlural); + +export default FormattedPluralWithIntl; diff --git a/packages/react-intl/src/index.ts b/packages/react-intl/src/index.ts index 4289d85ef8..2b66a38810 100644 --- a/packages/react-intl/src/index.ts +++ b/packages/react-intl/src/index.ts @@ -15,7 +15,7 @@ import { createFormattedComponent, createFormattedDateTimePartsComponent, } from './components/createFormattedComponent'; -import {CustomFormatConfig} from './types'; +import {CustomFormatConfig, FormatDateOptions} from './types'; import {NumberFormatOptions} from '@formatjs/intl-numberformat'; import {IntlListFormatOptions} from '@formatjs/intl-listformat'; import {DisplayNamesOptions} from '@formatjs/intl-displaynames/lib'; @@ -58,12 +58,19 @@ export const FormattedDisplayName: React.FC< value: string | number | object; } > = createFormattedComponent('formatDisplayName'); -export const FormattedDateParts = createFormattedDateTimePartsComponent( - 'formatDate' -); -export const FormattedTimeParts = createFormattedDateTimePartsComponent( - 'formatTime' -); +export const FormattedDateParts: React.FC< + FormatDateOptions & { + value: Parameters[0] | string; + children(val: Intl.DateTimeFormatPart[]): React.ReactElement | null; + } +> = createFormattedDateTimePartsComponent('formatDate'); +export const FormattedTimeParts: React.FC< + FormatDateOptions & { + value: Parameters[0] | string; + children(val: Intl.DateTimeFormatPart[]): React.ReactElement | null; + } +> = createFormattedDateTimePartsComponent('formatTime'); + export {FormattedNumberParts} from './components/createFormattedComponent'; export {default as FormattedRelativeTime} from './components/relative'; export {default as FormattedPlural} from './components/plural'; diff --git a/yarn.lock b/yarn.lock index 6191afead2..145f918fb5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2209,39 +2209,39 @@ resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.1.tgz#c1e8480844dfaeecde8b827d0e4bbf8793274659" integrity sha512-A3TBBjg5iVo8S4TTG0VrW8G9YNLob4+M6rALKjY8Sxr9zPExWQ7iTPUSvJVE7YhF9E08EQMubx1vRal3jtpJ9Q== -"@microsoft/api-documenter@^7.7.18": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@microsoft/api-documenter/-/api-documenter-7.8.0.tgz#92816329eb4286bf284b92e31bcbed05b8bd5195" - integrity sha512-PZuOlS+b5LfCUOQ2iI32dl9xFcXine4Yu9xrb1w3LCwqYUxWU3K/tbwTatleOVPVDD6ZrH5XaddnGPyng2SrmA== +"@microsoft/api-documenter@^7.8.14": + version "7.8.14" + resolved "https://registry.yarnpkg.com/@microsoft/api-documenter/-/api-documenter-7.8.14.tgz#bcedaa07a598ee02cf84579b6b8f24108219c908" + integrity sha512-QlLV1MXRehAz16Mp+OW1bKHLVfVIki/fHDtfkiwzOVJP2r1wMVNc4Uast2wcHIyqfcYOIZuvGadF+1YW+PT44g== dependencies: - "@microsoft/api-extractor-model" "7.8.0" + "@microsoft/api-extractor-model" "7.8.8" "@microsoft/tsdoc" "0.12.19" - "@rushstack/node-core-library" "3.19.7" - "@rushstack/ts-command-line" "4.3.14" + "@rushstack/node-core-library" "3.24.1" + "@rushstack/ts-command-line" "4.4.2" colors "~1.2.1" js-yaml "~3.13.1" - resolve "1.8.1" + resolve "~1.17.0" -"@microsoft/api-extractor-model@7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.8.0.tgz#5f532998f01109f23d57b422803bbdf5ad655d80" - integrity sha512-rk3n2GJ2DyKsmKmSK0VYN92ZAWPgc5+zBLbGASpty3pBZBuByJ0ioZdkxbtm5gaeurJzsG9DFTPCmpg/+Mt/nw== +"@microsoft/api-extractor-model@7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.8.8.tgz#4ba1974c9b1e2d6b65daf56f6149c88d0a784680" + integrity sha512-oiUkYZmBUUd1afxkOXDgdaz/ROnNQT72xHE1ALHJzlCUWnAhQcWjVUOr9WnigIOJp1fiwfA6F2l1wUgDzFQ6Iw== dependencies: "@microsoft/tsdoc" "0.12.19" - "@rushstack/node-core-library" "3.19.7" + "@rushstack/node-core-library" "3.24.1" -"@microsoft/api-extractor@^7.7.13": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.8.0.tgz#fea68e4f21c1bf18020560fd5728b15fe44f0976" - integrity sha512-H9dI7dCw005XuGa1dPAdZLQWEUu+B4yiF2v7NZ3p70mKo2iAZcd9LwmDTZ5OFALsNiHnJk1I5JZjcsj8dtB73g== +"@microsoft/api-extractor@^7.8.12": + version "7.8.12" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.8.12.tgz#dc04530f2bbbe63b644bd253e153e95b05b12033" + integrity sha512-tXJAlJCZ96Offii+4QelYOYbESc5az7MeJ34+EnluE1Exx0ksCsuZuKuyOBWqEandnEJ8tT3eMs8b/bvjH/2QA== dependencies: - "@microsoft/api-extractor-model" "7.8.0" + "@microsoft/api-extractor-model" "7.8.8" "@microsoft/tsdoc" "0.12.19" - "@rushstack/node-core-library" "3.19.7" - "@rushstack/ts-command-line" "4.3.14" + "@rushstack/node-core-library" "3.24.1" + "@rushstack/ts-command-line" "4.4.2" colors "~1.2.1" lodash "~4.17.15" - resolve "1.8.1" + resolve "~1.17.0" source-map "~0.6.1" typescript "~3.7.2" @@ -2458,10 +2458,10 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@rushstack/node-core-library@3.19.7": - version "3.19.7" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.19.7.tgz#8d8a193fd6f99536c92dd797ab50fd5fcb7630ea" - integrity sha512-gKE/OXH5GAj8yJ1kEyRW68UekJernilZ3QTRgmQ0MUHBCQmtZ9Q6T5PQ1sVbcL4teH8BMdpZeFy1DKnHs8h3PA== +"@rushstack/node-core-library@3.24.1": + version "3.24.1" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.24.1.tgz#4da7d59e9555c633f4cfdd4e4f097e5348891eb7" + integrity sha512-A21eDQwXAD9bZnvJZIEIhD171EQEWWo2afRs0sSUJ5FpMFpoDwx5DOY4hDE7dnczSKRmKsiDBV8hTSKhJrsw/A== dependencies: "@types/node" "10.17.13" colors "~1.2.1" @@ -2471,12 +2471,12 @@ timsort "~0.3.0" z-schema "~3.18.3" -"@rushstack/ts-command-line@4.3.14": - version "4.3.14" - resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.3.14.tgz#5d7a437d4e9c564ff1b8e876215fca96c74858a1" - integrity sha512-YJZIyKvkm3f6ZdKSfMntHS9542Y2mmMWzaiPPoXxLFZntKxEIDE3WfUNlvOSo3yK4fNd09Tz3hfvTivQNHSiKQ== +"@rushstack/ts-command-line@4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.4.2.tgz#8e2518b41045ba91275c2bfc872ec9cdaa074adf" + integrity sha512-iJ6wV+ICaE252J2snVPDiX4pz1r25CY1Ua/3QE4nd+lD+80hv6i6JLCDdmkculgYRXkAxvYXRtriD4JfqvgdKA== dependencies: - "@types/argparse" "1.0.33" + "@types/argparse" "1.0.38" argparse "~1.0.9" colors "~1.2.1" @@ -2492,10 +2492,10 @@ resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== -"@types/argparse@1.0.33": - version "1.0.33" - resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.33.tgz#2728669427cdd74a99e53c9f457ca2866a37c52d" - integrity sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ== +"@types/argparse@1.0.38": + version "1.0.38" + resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" + integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== "@types/babel__core@^7.1.7": version "7.1.7" @@ -11813,7 +11813,7 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.5, path-parse@^1.0.6: +path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== @@ -13738,14 +13738,7 @@ resolve@1.15.1: dependencies: path-parse "^1.0.6" -resolve@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" - integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== - dependencies: - path-parse "^1.0.5" - -resolve@^1.1.5, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: +resolve@^1.1.5, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1, resolve@~1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==