tc39 / proposal-intl-relative-time

`Intl.RelativeTimeFormat` specification [draft]
http://tc39.github.io/proposal-intl-relative-time/
215 stars 24 forks source link

"Polyfills" section: comparison table. Closes #111 #112

Closed catamphetamine closed 5 years ago

catamphetamine commented 5 years ago

Closes #111

longlho commented 5 years ago

Just some context we used test262 to be completely spec-compliant which is why node 10+ is needed for formatToParts. Otherwise polyfilling that requires numberformat polyfills as well

catamphetamine commented 5 years ago

@longlho So can I replace Node 10+ in the "Requirements" with Intl.NumberFormat?

Edit: replaced Node 10+ in the "Requirements" with Intl.NumberFormat.

catamphetamine commented 5 years ago

@longlho We could also add a "test262" section to the table if you want. I don't know what "test262" is so you'd have to phrase it for us. Reply with "yes" if you want to add anything, otherwise the PR can be merged as-is.

littledan commented 5 years ago

Do you know anything about why the bundle size of one of them is bigger?

catamphetamine commented 5 years ago

@littledan I used unpkg.com to get the bundle sizes: https://unpkg.com/intl-relative-time-format@1.0.6/dist/ I guess that the bundle for intl-relative-time-format is big because Frederik Wessberg @wessberg (the author) didn't include a "core" bundle in the distribution but instead put all locales into the bundle. It's speculation though, perhaps @wessberg could answer in more details.

wessberg commented 5 years ago

@catamphetamine, that is incorrect. No CLDR data is loaded by default. It is, however, a literal implementation of the spec, so that may explain in part the larger size. Also, it contains cross-references to the spec at every line and these comments aren't stripped from the output.

Additionally, it is distributed in ES3-compatible syntax, so that makes it larger. Finally, it isn't minified

catamphetamine commented 5 years ago

@wessberg Ok, then the bundle size is big for some other reason.

wessberg commented 5 years ago

@catamphetamine, I would suggest that we instead show sizes with minification since intl-relative-time-format is distributed without minification and with comments. Would lead to a more balanced comparison. πŸ™‚

catamphetamine commented 5 years ago

@wessberg Oh, so it's not minified. Perhaps you could minify it to measure the resulting core bundle size? Then we could add the correct size to the comparison table.

wessberg commented 5 years ago

It's 12.33kb minified with Terser (without compression)

catamphetamine commented 5 years ago

@wessberg Ok, I've pushed the updated bundle size to the PR.

wessberg commented 5 years ago

Perfect πŸ‘

longlho commented 5 years ago

@littledan can provide more details on test262 but it’s the test suite used by spec implementers like v8 & spidermonkey to be fully spec-compliant (although it is subject to cldr version). There’re subtle impl differences like you can call Intl.RelativeTimeFormat without β€œnew”, or -0 is β€œ0 seconds ago” vs +0 is β€œin 0 seconds”. You can add that as a row as well.

catamphetamine commented 5 years ago

@longlho

There’re subtle impl differences like you can call Intl.RelativeTimeFormat without β€œnew”.

I guess this one is insignificant so it can be omitted.

or -0 is β€œ0 seconds ago” vs +0 is β€œin 0 seconds”. You can add that as a row as well.

A quote from http://2ality.com/2012/03/signedzero.html :

It is claimed that the inclusion of signed zero in IEEE 754 makes it much easier to achieve numerical accuracy in some critical problems, in particular when computing with complex elementary functions.

I'd argue that -0 vs +0 feature while easy to add is unnecessary for the task of formatting time because both "in 0 seconds" and "0 seconds ago" are actually "right now" and since formatting time is all about the common sense of a common human it shouldn't involve any purely mathematical concepts. So I'd skip this mentioning "feature" as well.

The comparison table should be kept minimal only showcasing significant differences when using the library so that it doesn't add unnecessary confusion with -0 vs +0 and similar purely technical details a generic library user might not be familiar with (and doesn't need to).

@longlho If you have anything really significant for the end user to add to the PR post your suggestions in the form of the already formulated text. Otherwise the PR can be merged.

longlho commented 5 years ago

That’s not correct. If you set numeric to always, what are the output of 0 vs -0 vs +0? Those are just examples, there are others surrounding how the prototype object should look like to be spec-compliant.

The β€œnew” keywords affect caching infrastructure semantics (e.g fast-memoize which is super popular only cache function calls).

longlho commented 5 years ago

It is subject to cldr version thou, e.g https://github.com/tc39/test262/pull/2191

catamphetamine commented 5 years ago

@longlho I see, so basically what you're telling is that there's a test suite called tc39/test262 that contains various test cases for a 100% compliant implementation of Intl.RelativeTimeFormat. Ok then, I guess it could be added as a row in the comparison table. Something like:

Official ECMAScript Conformance Test | empty | empty | checkmark icon

@longlho Would that be it?

longlho commented 5 years ago

Yeah i think so

On Wed, Jun 19, 2019 at 12:46 PM Nikolay notifications@github.com wrote:

@longlho https://github.com/longlho I see, so basically what you're telling is that there's a test suite called tc39/test262 that contains various test cases for a 100% compliant implementation of Intl.RelativeTimeFormat. Ok then, I guess it could be added as a row in the comparison table. Something like:

Official ECMAScript Conformance Test | empty | empty | checkmark icon

@longlho https://github.com/longlho Would that be it?

β€” You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/tc39/proposal-intl-relative-time/pull/112?email_source=notifications&email_token=AABQM36J2BVKLJ7ZD3JJSTDP3JPG3A5CNFSM4HZKOGA2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYCPCIY#issuecomment-503640355, or mute the thread https://github.com/notifications/unsubscribe-auth/AABQM35KXFI6PZLN4ZJ3HILP3JPG3ANCNFSM4HZKOGAQ .

catamphetamine commented 5 years ago

Updated the PR with the new "Passes the Official ECMAScript Conformance Test" comparison table row.

Also removed the sequential polyfills list in favour of just the comparison table.

wessberg commented 5 years ago

If we're going to add the test262 conformance data to the comparison table, I think it needs to link to a source showing the test data results using each polyfill.

catamphetamine commented 5 years ago

@longlho If you have the results of passing the test262 suite then you can provide a link here so that it could be added to the table.

wessberg commented 5 years ago

@catamphetamine, yes, that would be valuable, but in order for it to be a proper comparison, we should provide test results for all 3 polyfills including raw data πŸ™‚

longlho commented 5 years ago

No I had to port the tests over to the formatjs repo. Test262-harness rn doesn’t include relativetimeformat

On Wed, Jun 19, 2019 at 1:27 PM Frederik Wessberg notifications@github.com wrote:

@catamphetamine https://github.com/catamphetamine, yes, that would be valuable, but in order for it to be a proper comparison, we should provide test results for all 3 polyfills including raw data πŸ™‚

β€” You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/tc39/proposal-intl-relative-time/pull/112?email_source=notifications&email_token=AABQM35RLVJUS5CMVZKN663P3JUB3A5CNFSM4HZKOGA2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYCSVLQ#issuecomment-503655086, or mute the thread https://github.com/notifications/unsubscribe-auth/AABQM35UHWUWBUQCMKUTK6LP3JUB3ANCNFSM4HZKOGAQ .

wessberg commented 5 years ago

In all fairness, and just to reiterate, I strongly suggest we either provide raw data based on the same test suite for all 3 polyfills, or leave the spec conformance data out entirely from the table.

catamphetamine commented 5 years ago

@wessberg Oooh, I see what you mean, an ultimate test results comparison table. Well, I guess it could be implemented as some generic "test suite" that would import each polyfill and perform the tests. Something like this:

import polyfill1 from '...'
import polyfill2 from '...'
import polyfill3 from '...'

const RTF1 = polyfill1
const RTF2 = polyfill2
const RTF3 = polyfill3

function test(RTF) {
  // Perform the tests, generate the summary output.
}

test(RTF1)
test(RTF2)
test(RTF3)

@longlho Since you're already familiar with this thing and have made it running can you write the ultimate comparison script? Otherwise it wouldn't be too fair to all the participants, I agree. I'll remove the Test262 row from the comparison table for now.

longlho commented 5 years ago

I don't mind either way but won't have to time make the test suite work across implementations.

catamphetamine commented 5 years ago

@longlho Or maybe you could publish a repo with the test runner and then each of the polyfill authors could fork that repo to run the tests against their library, so that it would be like a "standard" test suite for any Intl.RelativeTimeFormat polyfill.

catamphetamine commented 5 years ago

@littledan I guess the Test262 thing is gonna take some time due to the complexity of the whole thing, don't want to rush @longlho on this. Feel free to merge this PR as-is at any time if you feel like it: we can always create another one in the future when we have Test262 suite properly set up and running.

littledan commented 5 years ago

I'm going to wait on merging this PR until the authors of the referenced polyfills are happy with it.

catamphetamine commented 5 years ago

I see, it won't be merged then. Too little cooperation. No one's happy with the previous PR that caused the confusion to begin with.

longlho commented 5 years ago

That’s subjective

On Sat, Jun 22, 2019 at 6:14 AM Nikolay notifications@github.com wrote:

I see, it won't be merged then. Too little cooperation. No one's happy with the previous PR https://github.com/tc39/proposal-intl-relative-time/pull/110 that caused the confusion to begin with.

β€” You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/tc39/proposal-intl-relative-time/pull/112?email_source=notifications&email_token=AABQM32VDJD3GRZKIZBWPRLP3X3P3A5CNFSM4HZKOGA2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYKGCXY#issuecomment-504652127, or mute the thread https://github.com/notifications/unsubscribe-auth/AABQM34VA54WRVQD7TGGDYDP3X3P3ANCNFSM4HZKOGAQ .

longlho commented 5 years ago
@formatjs/intl-relativetimeformat: Running "test262-harness --reporter-keys file,attrs,result -t 3 --prelude ./dist/polyfill-with-locales.js -r json /home/longlho/formatjs/test262/test/intl402/RelativeTimeFormat/**/*.js"
@formatjs/intl-relativetimeformat: βœ“ Checks the "length" property of the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks the "length" property of the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "name" property of the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks the "name" property of the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ "RelativeTimeFormat" property of Intl.
@formatjs/intl-relativetimeformat: βœ“ "RelativeTimeFormat" property of Intl.
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ The prototype of the Intl.RelativeTimeFormat constructor is %FunctionPrototype%.
@formatjs/intl-relativetimeformat: βœ“ Intl.RelativeTimeFormat instance object extensibility
@formatjs/intl-relativetimeformat: βœ“ The prototype of the Intl.RelativeTimeFormat constructor is %FunctionPrototype%. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Intl.RelativeTimeFormat instance object extensibility
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Intl.RelativeTimeFormat instance object is created from %RelativeTimeFormatPrototype%.
@formatjs/intl-relativetimeformat: βœ“ Intl.RelativeTimeFormat instance object is created from %RelativeTimeFormatPrototype%.
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "prototype" property of the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks error cases for the locales argument to the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks the "prototype" property of the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks error cases for the locales argument to the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks various cases for the locales argument to the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks various cases for the locales argument to the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Verifies the NewTarget check for Intl.RelativeTimeFormat.
@formatjs/intl-relativetimeformat: βœ“ Verifies the NewTarget check for Intl.RelativeTimeFormat.
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of a null options argument to the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks handling of a null options argument to the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of invalid value for the localeMatcher option to the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of invalid value for the localeMatcher option to the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks handling of invalid value for the numeric option to the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks handling of valid values for the numeric option to the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks handling of invalid value for the numeric option to the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the order of operations on the options argument to the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks the order of operations on the options argument to the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of valid values for the numeric option to the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks that the RelativeTimeFormat constructor does not cause the
@formatjs/intl-relativetimeformat: NumberFormat and PluralRules constructors to get properties off
@formatjs/intl-relativetimeformat: Object.prototype through the options objects it creates.
@formatjs/intl-relativetimeformat: βœ“ Checks handling of invalid value for the style option to the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks that the RelativeTimeFormat constructor does not cause the
@formatjs/intl-relativetimeformat: NumberFormat and PluralRules constructors to get properties off
@formatjs/intl-relativetimeformat: Object.prototype through the options objects it creates.
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of invalid value for the style option to the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of valid values for the style option to the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of valid values for the style option to the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks the propagation of exceptions from the options for the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks handling of non-object option arguments to the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks the propagation of exceptions from the options for the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of non-object option arguments to the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of non-object option arguments to the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks handling of non-object option arguments to the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of non-object option arguments to the RelativeTimeFormat constructor.
@formatjs/intl-relativetimeformat: βœ“ Checks that RelativeTimeFormat can be subclassed.
@formatjs/intl-relativetimeformat: βœ“ Checks handling of non-object option arguments to the RelativeTimeFormat constructor. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks that RelativeTimeFormat can be subclassed. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Tests that Intl.RelativeTimeFormat has a supportedLocalesOf property, and it works as planned.
@formatjs/intl-relativetimeformat: βœ“ Tests that Intl.RelativeTimeFormat has a supportedLocalesOf property, and it works as planned.
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Verifies there's no branding check for Intl.RelativeTimeFormat.supportedLocalesOf().
@formatjs/intl-relativetimeformat: βœ“ Checks the "length" property of Intl.RelativeTimeFormat.supportedLocalesOf().
@formatjs/intl-relativetimeformat: βœ“ Verifies there's no branding check for Intl.RelativeTimeFormat.supportedLocalesOf().
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "length" property of Intl.RelativeTimeFormat.supportedLocalesOf().
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks error cases for the locales argument to the supportedLocalesOf function. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks error cases for the locales argument to the supportedLocalesOf function.
@formatjs/intl-relativetimeformat: βœ“ Checks the "name" property of Intl.RelativeTimeFormat.supportedLocalesOf().
@formatjs/intl-relativetimeformat: βœ“ Checks the "name" property of Intl.RelativeTimeFormat.supportedLocalesOf().
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of invalid values for the localeMatcher option to the supportedLocalesOf function.
@formatjs/intl-relativetimeformat: βœ“ Checks handling of invalid values for the localeMatcher option to the supportedLocalesOf function. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of a null options argument to the supportedLocalesOf function. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of a null options argument to the supportedLocalesOf function.
@formatjs/intl-relativetimeformat: βœ“ Checks handling of non-object options arguments to the supportedLocalesOf function.
@formatjs/intl-relativetimeformat: βœ“ Checks handling of an undefined options argument to the supportedLocalesOf function.
@formatjs/intl-relativetimeformat: βœ“ Checks handling of non-object options arguments to the supportedLocalesOf function. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "supportedLocalesOf" property of the RelativeTimeFormat prototype object.
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks handling of an undefined options argument to the supportedLocalesOf function. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "supportedLocalesOf" property of the RelativeTimeFormat prototype object.
@formatjs/intl-relativetimeformat: βœ“ Verifies the type of the return value of Intl.RelativeTimeFormat.supportedLocalesOf().
@formatjs/intl-relativetimeformat: βœ“ Verifies the type of the return value of Intl.RelativeTimeFormat.supportedLocalesOf(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "constructor" property of the RelativeTimeFormat prototype object.
@formatjs/intl-relativetimeformat: βœ“ Checks the "constructor" property of the RelativeTimeFormat prototype object. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Verifies the branding check for the "format" function of the RelativeTimeFormat prototype object.
@formatjs/intl-relativetimeformat: βœ“ Verifies the branding check for the "format" function of the RelativeTimeFormat prototype object. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English.
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English.
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English.
@formatjs/intl-relativetimeformat: βœ“ Checks the "length" property of Intl.RelativeTimeFormat.prototype.format().
@formatjs/intl-relativetimeformat: βœ“ Checks the "length" property of Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "name" property of Intl.RelativeTimeFormat.prototype.format().
@formatjs/intl-relativetimeformat: βœ“ Checks the "name" property of Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish.
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish.
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish.
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "format" property of the RelativeTimeFormat prototype object. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "format" property of the RelativeTimeFormat prototype object.
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of invalid unit arguments to Intl.RelativeTimeFormat.prototype.format().
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of invalid unit arguments to Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.format().
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.format().
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.format().
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of non-number value arguments to Intl.RelativeTimeFormat.prototype.format().
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Verifies the branding check for the "formatToParts" function of the RelativeTimeFormat prototype object.
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of non-number value arguments to Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Verifies the branding check for the "formatToParts" function of the RelativeTimeFormat prototype object. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.formatToParts() in English.
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.formatToParts() in English.
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.formatToParts() in English. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.formatToParts() in English. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.formatToParts() in English. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.formatToParts() in English.
@formatjs/intl-relativetimeformat: βœ“ Checks the "length" property of Intl.RelativeTimeFormat.prototype.formatToParts().
@formatjs/intl-relativetimeformat: βœ“ Checks the "name" property of Intl.RelativeTimeFormat.prototype.formatToParts().
@formatjs/intl-relativetimeformat: βœ“ Checks the "length" property of Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "name" property of Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish.
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish.
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish.
@formatjs/intl-relativetimeformat: βœ“ Checks the "formatToParts" property of the RelativeTimeFormat prototype object.
@formatjs/intl-relativetimeformat: βœ“ Checks the "formatToParts" property of the RelativeTimeFormat prototype object. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts().
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of invalid unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts().
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of invalid unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts().
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.formatToParts().
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.formatToParts().
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of non-number value arguments to Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the handling of non-number value arguments to Intl.RelativeTimeFormat.prototype.format().
@formatjs/intl-relativetimeformat: βœ“ Verifies the branding check for the "resolvedOptions" function of the RelativeTimeFormat prototype object.
@formatjs/intl-relativetimeformat: βœ“ Verifies the branding check for the "resolvedOptions" function of the RelativeTimeFormat prototype object. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Verifies that the return value of Intl.RelativeTimeFormat.prototype.resolvedOptions() is not cached.
@formatjs/intl-relativetimeformat: βœ“ Verifies that the return value of Intl.RelativeTimeFormat.prototype.resolvedOptions() is not cached. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "length" property of Intl.RelativeTimeFormat.prototype.resolvedOptions(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "length" property of Intl.RelativeTimeFormat.prototype.resolvedOptions().
@formatjs/intl-relativetimeformat: βœ“ Checks the "name" property of Intl.RelativeTimeFormat.prototype.resolvedOptions().
@formatjs/intl-relativetimeformat: βœ“ Verifies the property order for the object returned by resolvedOptions().
@formatjs/intl-relativetimeformat: βœ“ Checks the "name" property of Intl.RelativeTimeFormat.prototype.resolvedOptions(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Verifies the property order for the object returned by resolvedOptions(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "resolvedOptions" property of the RelativeTimeFormat prototype object. (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the "resolvedOptions" property of the RelativeTimeFormat prototype object.
@formatjs/intl-relativetimeformat: βœ“ Checks the properties of the result of Intl.RelativeTimeFormat.prototype.resolvedOptions().
@formatjs/intl-relativetimeformat: βœ“ Checks Object.prototype.toString with Intl.RelativeTimeFormat objects.
@formatjs/intl-relativetimeformat: βœ“ Checks the properties of the result of Intl.RelativeTimeFormat.prototype.resolvedOptions(). (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks Object.prototype.toString with Intl.RelativeTimeFormat objects.
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: βœ“ Checks the @@toStringTag property of the RelativeTimeFormat prototype object.
@formatjs/intl-relativetimeformat: βœ“ Checks the @@toStringTag property of the RelativeTimeFormat prototype object.
@formatjs/intl-relativetimeformat:  (Strict Mode)
@formatjs/intl-relativetimeformat: Tests: 150 passed, 150 total

You guys can follow something similar to this PR https://github.com/eemeli/intl-pluralrules/pull/9

wessberg commented 5 years ago

I’ve integrated the test262-harness submodule with intl-relative-time-format and here’s the test results: (150/150 passing tests):

Running "test262-harness --hostArgs "--icu-data-dir=node_modules/full-icu" --reporter-keys file,attrs,result -t 8 --prelude ./test262-polyfill.js -r json test262/test/intl402/RelativeTimeFormat/**/*.*"
βœ“ Checks the "length" property of the RelativeTimeFormat constructor.

βœ“ The prototype of the Intl.RelativeTimeFormat constructor is %FunctionPrototype%. (Strict Mode)
βœ“ "RelativeTimeFormat" property of Intl.
 (Strict Mode)
βœ“ The prototype of the Intl.RelativeTimeFormat constructor is %FunctionPrototype%.
βœ“ "RelativeTimeFormat" property of Intl.

βœ“ Checks the "name" property of the RelativeTimeFormat constructor.

βœ“ Checks the "name" property of the RelativeTimeFormat constructor.
 (Strict Mode)
βœ“ Checks the "length" property of the RelativeTimeFormat constructor.
 (Strict Mode)
βœ“ Checks the "prototype" property of the RelativeTimeFormat constructor.

βœ“ Intl.RelativeTimeFormat instance object extensibility
 (Strict Mode)
βœ“ Intl.RelativeTimeFormat instance object is created from %RelativeTimeFormatPrototype%.

βœ“ Checks error cases for the locales argument to the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Intl.RelativeTimeFormat instance object extensibility

βœ“ Checks error cases for the locales argument to the RelativeTimeFormat constructor.
βœ“ Checks the "prototype" property of the RelativeTimeFormat constructor.
 (Strict Mode)
βœ“ Intl.RelativeTimeFormat instance object is created from %RelativeTimeFormatPrototype%.
 (Strict Mode)
βœ“ Verifies the NewTarget check for Intl.RelativeTimeFormat.
 (Strict Mode)
βœ“ Checks handling of a null options argument to the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Verifies the NewTarget check for Intl.RelativeTimeFormat.

βœ“ Checks handling of a null options argument to the RelativeTimeFormat constructor.
βœ“ Checks handling of invalid value for the localeMatcher option to the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Checks various cases for the locales argument to the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Checks handling of invalid value for the localeMatcher option to the RelativeTimeFormat constructor.
βœ“ Checks various cases for the locales argument to the RelativeTimeFormat constructor.
βœ“ Checks handling of invalid value for the numeric option to the RelativeTimeFormat constructor.
βœ“ Checks handling of valid values for the numeric option to the RelativeTimeFormat constructor.
βœ“ Checks handling of valid values for the numeric option to the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Checks handling of invalid value for the numeric option to the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Checks that the RelativeTimeFormat constructor does not cause the
NumberFormat and PluralRules constructors to get properties off
Object.prototype through the options objects it creates.
 (Strict Mode)
βœ“ Checks that the RelativeTimeFormat constructor does not cause the
NumberFormat and PluralRules constructors to get properties off
Object.prototype through the options objects it creates.

βœ“ Checks the order of operations on the options argument to the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Checks the order of operations on the options argument to the RelativeTimeFormat constructor.
βœ“ Checks handling of invalid value for the style option to the RelativeTimeFormat constructor.
βœ“ Checks the propagation of exceptions from the options for the RelativeTimeFormat constructor.
βœ“ Checks the propagation of exceptions from the options for the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Checks handling of invalid value for the style option to the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Checks handling of non-object option arguments to the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Checks handling of non-object option arguments to the RelativeTimeFormat constructor.
βœ“ Checks handling of valid values for the style option to the RelativeTimeFormat constructor.
βœ“ Checks handling of valid values for the style option to the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Checks handling of non-object option arguments to the RelativeTimeFormat constructor.
βœ“ Checks handling of non-object option arguments to the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Tests that Intl.RelativeTimeFormat has a supportedLocalesOf property, and it works as planned.

βœ“ Tests that Intl.RelativeTimeFormat has a supportedLocalesOf property, and it works as planned.
 (Strict Mode)
βœ“ Checks that RelativeTimeFormat can be subclassed.
βœ“ Checks that RelativeTimeFormat can be subclassed. (Strict Mode)
βœ“ Checks handling of non-object option arguments to the RelativeTimeFormat constructor. (Strict Mode)
βœ“ Checks handling of non-object option arguments to the RelativeTimeFormat constructor.
βœ“ Verifies there's no branding check for Intl.RelativeTimeFormat.supportedLocalesOf().
 (Strict Mode)
βœ“ Verifies there's no branding check for Intl.RelativeTimeFormat.supportedLocalesOf().

βœ“ Checks error cases for the locales argument to the supportedLocalesOf function. (Strict Mode)
βœ“ Checks the "name" property of Intl.RelativeTimeFormat.supportedLocalesOf().

βœ“ Checks error cases for the locales argument to the supportedLocalesOf function.
βœ“ Checks the "name" property of Intl.RelativeTimeFormat.supportedLocalesOf().
 (Strict Mode)
βœ“ Checks the "length" property of Intl.RelativeTimeFormat.supportedLocalesOf().

βœ“ Checks the "length" property of Intl.RelativeTimeFormat.supportedLocalesOf().
 (Strict Mode)
βœ“ Checks handling of invalid values for the localeMatcher option to the supportedLocalesOf function. (Strict Mode)
βœ“ Checks handling of invalid values for the localeMatcher option to the supportedLocalesOf function.
βœ“ Checks handling of an undefined options argument to the supportedLocalesOf function. (Strict Mode)
βœ“ Checks handling of an undefined options argument to the supportedLocalesOf function.
βœ“ Checks handling of non-object options arguments to the supportedLocalesOf function. (Strict Mode)
βœ“ Checks handling of non-object options arguments to the supportedLocalesOf function.
βœ“ Checks handling of a null options argument to the supportedLocalesOf function. (Strict Mode)
βœ“ Checks handling of a null options argument to the supportedLocalesOf function.
βœ“ Checks the "supportedLocalesOf" property of the RelativeTimeFormat prototype object.
 (Strict Mode)
βœ“ Verifies the type of the return value of Intl.RelativeTimeFormat.supportedLocalesOf(). (Strict Mode)
βœ“ Checks the "constructor" property of the RelativeTimeFormat prototype object.
βœ“ Checks the "supportedLocalesOf" property of the RelativeTimeFormat prototype object.

βœ“ Verifies the branding check for the "format" function of the RelativeTimeFormat prototype object. (Strict Mode)
βœ“ Verifies the branding check for the "format" function of the RelativeTimeFormat prototype object.
βœ“ Checks the "constructor" property of the RelativeTimeFormat prototype object. (Strict Mode)
βœ“ Verifies the type of the return value of Intl.RelativeTimeFormat.supportedLocalesOf().
βœ“ Checks the "length" property of Intl.RelativeTimeFormat.prototype.format().
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English. (Strict Mode)
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English. (Strict Mode)
βœ“ Checks the "length" property of Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English.
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English.
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English. (Strict Mode)
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in English.
βœ“ Checks the "name" property of Intl.RelativeTimeFormat.prototype.format().
βœ“ Checks the "name" property of Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish. (Strict Mode)
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish.
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish.
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish. (Strict Mode)
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish.
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish. (Strict Mode)
βœ“ Checks the "format" property of the RelativeTimeFormat prototype object.
βœ“ Checks the "format" property of the RelativeTimeFormat prototype object. (Strict Mode)
βœ“ Checks the handling of invalid unit arguments to Intl.RelativeTimeFormat.prototype.format().
βœ“ Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.format().
βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
βœ“ Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.format().
βœ“ Checks the handling of invalid unit arguments to Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.format().
βœ“ Verifies the branding check for the "formatToParts" function of the RelativeTimeFormat prototype object.
βœ“ Verifies the branding check for the "formatToParts" function of the RelativeTimeFormat prototype object. (Strict Mode)
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.formatToParts() in English.
βœ“ Checks the handling of non-number value arguments to Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
βœ“ Checks the handling of non-number value arguments to Intl.RelativeTimeFormat.prototype.format().
βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.formatToParts() in English.
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.formatToParts() in English. (Strict Mode)
βœ“ Checks the "length" property of Intl.RelativeTimeFormat.prototype.formatToParts().
βœ“ Checks the "name" property of Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
βœ“ Checks the "length" property of Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
βœ“ Checks the "name" property of Intl.RelativeTimeFormat.prototype.formatToParts().
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish.
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.formatToParts() in English. (Strict Mode)
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.formatToParts() in English.
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.formatToParts() in English. (Strict Mode)
βœ“ Checks the "formatToParts" property of the RelativeTimeFormat prototype object.
βœ“ Checks the "formatToParts" property of the RelativeTimeFormat prototype object. (Strict Mode)
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish. (Strict Mode)
βœ“ Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts().
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish. (Strict Mode)
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish. (Strict Mode)
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish.
βœ“ Checks the behavior of Intl.RelativeTimeFormat.prototype.format() in Polish.
βœ“ Checks the handling of invalid unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts().
βœ“ Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
βœ“ Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts().
βœ“ Checks the handling of plural unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
βœ“ Checks the handling of invalid unit arguments to Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.formatToParts().
βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.formatToParts().
βœ“ Verifies the branding check for the "resolvedOptions" function of the RelativeTimeFormat prototype object.
βœ“ Checks the "length" property of Intl.RelativeTimeFormat.prototype.resolvedOptions().
βœ“ Checks the handling of invalid value arguments to Intl.RelativeTimeFormat.prototype.formatToParts(). (Strict Mode)
βœ“ Verifies the branding check for the "resolvedOptions" function of the RelativeTimeFormat prototype object. (Strict Mode)
βœ“ Verifies that the return value of Intl.RelativeTimeFormat.prototype.resolvedOptions() is not cached. (Strict Mode)
βœ“ Verifies that the return value of Intl.RelativeTimeFormat.prototype.resolvedOptions() is not cached.
βœ“ Checks the handling of non-number value arguments to Intl.RelativeTimeFormat.prototype.format().
βœ“ Checks the handling of non-number value arguments to Intl.RelativeTimeFormat.prototype.format(). (Strict Mode)
βœ“ Checks the "length" property of Intl.RelativeTimeFormat.prototype.resolvedOptions(). (Strict Mode)
βœ“ Checks the "name" property of Intl.RelativeTimeFormat.prototype.resolvedOptions().
βœ“ Checks the "name" property of Intl.RelativeTimeFormat.prototype.resolvedOptions(). (Strict Mode)
βœ“ Checks the properties of the result of Intl.RelativeTimeFormat.prototype.resolvedOptions().
βœ“ Verifies the property order for the object returned by resolvedOptions(). (Strict Mode)
βœ“ Verifies the property order for the object returned by resolvedOptions().
βœ“ Checks the "resolvedOptions" property of the RelativeTimeFormat prototype object. (Strict Mode)
βœ“ Checks the "resolvedOptions" property of the RelativeTimeFormat prototype object.
βœ“ Checks the @@toStringTag property of the RelativeTimeFormat prototype object.

βœ“ Checks the @@toStringTag property of the RelativeTimeFormat prototype object.
 (Strict Mode)
βœ“ Checks Object.prototype.toString with Intl.RelativeTimeFormat objects.

βœ“ Checks Object.prototype.toString with Intl.RelativeTimeFormat objects.
 (Strict Mode)
βœ“ Checks the properties of the result of Intl.RelativeTimeFormat.prototype.resolvedOptions(). (Strict Mode)
Tests: 150 passed, 150 total
catamphetamine commented 5 years ago

@longlho @wessberg I see, so I'm the last one... I guess I'll pass on implementing all of the 150 test cases, about 100 is fine for me. I've updated the table to reflect the Test262 passage status. I've also moved my library to the right side after yours because it chose to not implement the full list of the test cases. See if you're ok with the results.

longlho commented 5 years ago

u can actually replace the size w/ badge since it's live:

intl-relative-time-format relative-time-format @formatjs/intl-relativetimeformat

Otherwise, LGTM

wessberg commented 5 years ago

LGTM

catamphetamine commented 5 years ago

@longlho I see, so it downloads a package, runs npm install, passes ${packagePath}/index.js to webpack and returns the bundle size after gzipSync(). https://github.com/pastelsky/package-build-stats/blob/master/src/getPackageStats.js

The images you have provided have non-human-readable URLs so it's unclear whether they're stale or do they refresh themselves. I found another service for that called "bundlephobia" which seems to calculate the sizes dynamically. I've added these badges to the table instead of the actual sizes. @longlho See if it works. https://github.com/catamphetamine/proposal-intl-relative-time/blob/patch-1/README.md#polyfills

longlho commented 5 years ago

the badges I listed were bundlephobia so that works :)

catamphetamine commented 5 years ago

@littledan Alright, looks like we finally made it.

littledan commented 5 years ago

OK, sounds like the authors all agree on this comparison table, so I'm merging it. Please let me know if there are issues remaining.