Es5 Shim Versions Save

ECMAScript 5 compatibility shims for legacy (and modern) JavaScript engines

v4.4.1

8 years ago

Fix (shim)

  • ensure that IE 11 in compatibility mode doesn't throw (#370)

Docs

  • add missing shimmed things

v4.4.0

8 years ago

New Stuff

  • Detect and patch RegExp#toString in IE 8, which returns flags in the wrong order (#364)

Fixes (shim)

  • Patch Array#sort on {Chrome, Safari, IE < 9, FF 4} that throws improperly, per ES5 (#354)
  • In IE 6, window.external makes Object.keys throw
  • Array#slice: boxed string access on IE <= 8 (#349)
  • Array#join: fix IE 6-8 join called on string literal (#352)
  • Ensure that Error#message and Error#name are non-enumerable (#358)

Fixes (sham)

  • Object.getOwnPropertyDescriptor: In Opera 11.6, propertyIsEnumerable is a nonshadowable global, like toString

Robustness

  • Use a bound form of Array#slice.call

Tests

  • Properly check for descriptor support in IE <= 8
  • test on node v5.1
  • Add Array#slice tests (#346)

Dev Deps

  • update uglify-js, eslint, jscs, uglify-js, semver

Docs

  • Fix broken UMD links (#344)

v4.3.1

8 years ago

Fix (shim)

  • String#split: revert part of dcce96ae21185a69d2d40e67416e7496b73e8e47 which broke in older browsers (#342)

Dev Deps

  • update eslint, @ljharb/eslint-config, jscs

Tests

  • Firefox allows Number#toPrecision values of [1,100], which the spec permits

v4.3.0

8 years ago

New Shims (shim)

  • Array#push: in IE <= 7, Array#push was not generic (#336)
  • Array#push in Opera 10.6 has a super weird bug when pushing undefined
  • Array#join: In IE <= 7, passing undefined didn't use the default separator (#333)
  • Error#toString: prints out the proper message in IE 7 and below (#334)
  • Number#toPrecision: IE 7 and below incorrectly throw when an explicit undefined precision is passed (#340)

Fixes (shim)

  • String#lastIndexOf: ensure the correct length in IE 8
  • ensure parseInt accepts negative and plus-prefixed hex values (#332)

Robustness

  • Use a bound Array#push instead of relying on Function#call

Dev Deps

  • update eslint, @ljharb/eslint-config, jscs

Tests

  • Add some conditionals to avoid impossible-to-fix test failures in IE 6-8, due to it being unable to distinguish between undefined and an absent index (#114)
  • Fix false negatives in IE 6-8 with jasmine comparing arrays to arraylikes (#114)
  • add additional Array#shift tests (#337)
  • Add additional Array#splice tests (#339)
  • Add Array#pop tests, just in case (#338)
  • include global tests in HTML test files
  • Make sure the HTML tests run with the right charset
  • ensure node v0.8 tests stay passing.
  • Prevent nondeterminism in the tests - this sometime produced values that are one ms off
  • test on node v5.0
  • fix npm upgrades for older nodes

v4.2.0

8 years ago

shim (new)

  • Overwrite String#lastIndexOf in IE 9, 10, 11, and Edge, so it has proper unicode support (#331)

Dev Deps

  • update eslint, jscs

v4.1.15

8 years ago

Fixes (shim)

  • new Date + Date.parse: Fix a Safari 8 & 9 bug where the ms arg is treated as a signed instead of unsigned int (#329)
  • add 'frame' to blacklisted keys (#330)

Tests

  • Test on node v4.2
  • Date: prevent nondeterminism in the tests - this sometime produced values that are one ms off

Dev Deps

  • update eslint, @ljharb/eslint-config, jscs, uglify-js

v4.1.14

8 years ago

Fix (shim)

  • Wrap more things in a try/catch, because IE sucks and sometimes throws on [[Get]] of window.localStorage (#327)

Refactor

  • Use ES.ToUint32 instead of inline >>>

Tests

  • Test up to node v4.1

Dev Deps

  • update eslint, @ljharb/eslint-config, semver, jscs

v4.1.13

8 years ago

Fix (shim)

  • Fix a bug where Date(x) threw instead of equalling String(Date(x)) (#326)

v4.1.12

8 years ago

Fix (build process)

  • Make sure uglify doesn't remove function names

Fix (shim)

  • Use is-arguments implementation; don't call down legacy code path in modern engines (#325)

Tests

  • up to io.js v3.3

Dev Deps

  • update eslint, @ljharb/eslint-config

v4.1.11

8 years ago

Fixes (shim)

  • Object.keys in Safari 9 has some bugs. (Already fixed in Webkit Nightly)
  • Omit !Date.parse check in the if statement (#323)

Fixes (sham)

  • Fix Object.create sham to not set proto (#301)
  • Add a typeof check to Object.getPrototypeOf (#319, #320)

Tests

  • up to io.js v3.1
  • Make sure Object.getPrototypeOf tests don't fail when engines implement ES6 semantics

Docs

  • Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG (#318)

Dev Dependencies

  • Update eslint, uglify-js, jscs; use my personal shared eslint config