summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibJS
AgeCommit message (Collapse)Author
2021-07-23LibJS: Add missing PlainDateTime case in ToTemporalDateIdan Horowitz
2021-07-23LibJS: Implement Temporal.PlainDateTime.prototype.getISOFields()Linus Groh
2021-07-23LibJS: Implement Temporal.PlainDateTime.prototype.toPlainDate()Linus Groh
2021-07-23LibJS: Fix return type of PlainDateTime::iso_{milli,micro,nano}second()Linus Groh
2021-07-22LibJS/Tests: Fix this value error test description in a PlainDate testLinus Groh
2021-07-22LibJS/Tests: Replace snake_case with pascalCase in two PlainDate testsLinus Groh
2021-07-22LibJS: Add missing step number in PlainDatePrototypeLinus Groh
2021-07-22LibJS: Implement Temporal.PlainDateTime.prototype.calendarLinus Groh
2021-07-22LibJS: Implement Temporal.PlainDateTime.prototype.valueOf()Linus Groh
2021-07-22LibJS: Implement Temporal.PlainDateTime.prototype[@@toStringTag]Linus Groh
2021-07-22LibJS: Start implementing Temporal.PlainDateTimeLinus Groh
This commit adds the PlainDateTime object itself, its constructor and prototype (currently empty), and the CreateTemporalDateTime abstract operation.
2021-07-22LibJS: Add missing spec links to System{Instant,UTCEpochNanoseconds}Linus Groh
2021-07-22LibJS: Remove pointless 'explicit' from a couple of constructorsLinus Groh
2021-07-22LibJS: Fix value of Temporal.PlainDate.lengthLinus Groh
Should be 3 (year, month, day, optional calendar-like), not 0.
2021-07-22LibJS: Implement String.prototype.split with UTF-16 code unitsTimothy Flynn
Also required implementing the SplitMatch abstract operation with UTF-16 code units.
2021-07-22LibJS: Implement String.prototype.replaceAll with UTF-16 code unitsTimothy Flynn
2021-07-22LibJS: Implement String.prototype.replace with UTF-16 code unitsTimothy Flynn
2021-07-22LibJS: Implement String.prototype.endsWith with UTF-16 code unitsTimothy Flynn
2021-07-22LibJS: Implement String.prototype.startsWith with UTF-16 code unitsTimothy Flynn
2021-07-22LibJS: Implement String.prototype.lastIndexOf with UTF-16 code unitsTimothy Flynn
2021-07-22LibJS: Implement String.prototype.slice with UTF-16 code unitsTimothy Flynn
This also implements String.prototype.slice more closely to the spec (such as handling indices equivalent to Infinity).
2021-07-22LibJS: Implement StringPad abstract operation with UTF-16 code unitsTimothy Flynn
Affects String.prototype.padStart and String.prototype.padEnd.
2021-07-22LibJS: Implement String.prototype.at with UTF-16 code unitsTimothy Flynn
2021-07-22LibJS: Implement String.prototype.substr with UTF-16 code unitsTimothy Flynn
2021-07-22LibJS: Implement String.prototype.substring with UTF-16 code unitsTimothy Flynn
2021-07-22LibJS: Implement String.prototype.indexOf with UTF-16 code unitsTimothy Flynn
2021-07-22LibJS: Implement String.prototype.includes with UTF-16 code unitsTimothy Flynn
This also implements String.prototype.includes more closely to the spec (such as returning false when the search string is a RegExp object).
2021-07-22LibJS: Implement String.prototype.codePointAt with UTF-16 code unitsTimothy Flynn
This also implements the CodePointAt abstract operation. This is needed to handle invalid code units specific to the JavaScript spec, rather than e.g. inserting replacement code units. This abstraction is public because RegExp.prototype will also need it.
2021-07-22LibJS: Implement String.prototype.charCodeAt with UTF-16 code unitsTimothy Flynn
2021-07-22LibJS: Implement String.prototype.charAt with UTF-16 code unitsTimothy Flynn
2021-07-22LibJS: Report string properties using UTF-16 code unitsTimothy Flynn
String length is reported as the number of UTF-16 code units, and string indices are reported as the UTF-16 code units themselves.
2021-07-22LibJS: Transcode UTF-8 strings to UTF-16 and add UTF-16 accessorsTimothy Flynn
LibJS parses JavaScript as UTF-8, so when creating a string, we must transcode it to UTF-16 to handle encoded surrogate pairs. For example, consider the following string: "\ud83d\ude00" The UTF-8 encoding of this surrogate pair is: 0xf0 0x9f 0x98 0x80 However, LibJS will currently store the two surrogates individually as UTF-8 encoded bytes, rather than combining the pair: 0xed 0xa0 0xb8, 0xed 0xb8 0x80 These are not equivalent. So, as String.prototype becomes UTF-16 aware, this encoding will no longer work for abstractions like strict equality.
2021-07-22LibJS: Add UTF-16 tests to String.prototype methods that already workTimothy Flynn
These methods did not require UTF-16 views, so just add test cases to ensure they remain correct. This also adds a couple of FIXME comments on tests that will fail even with UTF-16 String.prototype support (for reasons such as lack of UTF-16 support in RegExp.prototype and Unicode case folding).
2021-07-21LibJS: Implement Temporal.PlainDate.prototype.equals & Required AOIdan Horowitz
2021-07-21LibJS: Implement the ToTemporalDate Abstract OperationIdan Horowitz
This is required by most Temporal.PlainDate.prototype methods.
2021-07-21LibJS: Add Temporal.Calendar.prototype.dateFromFields & required AOsIdan Horowitz
This is required for implementing the DateFromFields PlainDate AO.
2021-07-21LibJS: Use trunc instead of a static_cast<i64> in is_integral_numberIdan Horowitz
This ensures we return true for integers that do not fit in an i64 aka, above 9223372036854775807. (2**63 - 1)
2021-07-21LibJS: Remove usages of String's null state in Temporal AOsIdan Horowitz
2021-07-21LibJS: Implement Temporal.PlainDate.prototype.valueOfIdan Horowitz
2021-07-21LibJS: Use IntrusiveList for keeping track of WeakContainersAndreas Kling
2021-07-21LibJS: Use IntrusiveList for keeping track of MarkedValueListsAndreas Kling
2021-07-21LibJS: Use IntrusiveList for keeping track of HandleImplsAndreas Kling
This allows us to remove a HashTable from heap and cuts down on some of the malloc traffic when creating handles.
2021-07-20LibJS: Add tests for strict mode and strict mode propagationdavidot
2021-07-20LibJS: Fix that non-existent references are unresolvable in strict modedavidot
2021-07-20LibJS: Fix tests that expected wrong this valuesdavidot
2021-07-20LibJS: Follow the spec more closely when determining the this valueTimothy Flynn
Co-authored-by: davidot <david.tuin@gmail.com>
2021-07-20LibJS: Fix that vm.in_strict_mode was propagated to eval and functionsdavidot
For eval it depends on the CallerMode and for a created function it depends on the function itself.
2021-07-20LibJS: Disallow unqualified deletes in strict modedavidot
2021-07-20LibJS: Disallow multiple __proto__ keys in object expressiondavidot
2021-07-20LibJS: Disallow static methods named prototype in classesdavidot