Commit graph

45 commits

Author SHA1 Message Date
Linus Groh
70e8a9bc8b LibJS: Remove unused is_valid_time_zone_numeric_utc_offset_syntax()
...as well as the underlying function:
parse_time_zone_numeric_utc_offset_syntax()
2023-01-26 20:20:54 +00:00
Linus Groh
bb0362ec3b LibJS: Port builtin_time_zone_get_offset_string_for() to String 2023-01-26 20:20:54 +00:00
Linus Groh
95becb22ef LibJS: Port format_iso_time_zone_offset_string() to String 2023-01-26 20:20:54 +00:00
Linus Groh
c2656f4ee7 LibJS: Port format_time_zone_offset_string() to String 2023-01-26 20:20:54 +00:00
Linus Groh
5a2dfc52f8 LibJS: Port create_temporal_time_zone() to String 2023-01-26 20:20:54 +00:00
Linus Groh
0f5f9acc9c LibJS: Port canonicalize_time_zone_name() to String 2023-01-26 20:20:54 +00:00
Linus Groh
6e19ab2bbc AK+Everywhere: Rename String to DeprecatedString
We have a new, improved string type coming up in AK (OOM aware, no null
state), and while it's going to use UTF-8, the name UTF8String is a
mouthful - so let's free up the String name by renaming the existing
class.
Making the old one have an annoying name will hopefully also help with
quick adoption :^)
2022-12-06 08:54:33 +01:00
Linus Groh
57162ad510 LibJS: Rename IsValidTimeZoneName to IsAvailableTimeZoneName
This is an editorial change in the Temporal spec.

See: https://github.com/tc39/proposal-temporal/commit/873313b
2022-10-17 12:56:05 +02:00
Linus Groh
72997c6b77 LibJS: Define IsValidTimeZoneName in terms of AvailableTimeZones
This is an editorial change in the Temporal spec.

See: https://github.com/tc39/proposal-temporal/commit/d83dcf0

Note that even though we already implement AvailableTimeZones for Intl,
I kept the existing implementation calling into LibTimeZone directly.
2022-10-17 12:56:05 +02:00
Linus Groh
484c66125d LibJS: Rename Get{IANA => Named}TimeZonePreviousTransition
This is an editorial change in the Temporal spec.

See: https://github.com/tc39/proposal-temporal/commit/6b759d1
2022-10-16 14:45:09 +02:00
Linus Groh
8cc260107d LibJS: Rename Get{IANA => Named}TimeZoneNextTransition
This is an editorial change in the Temporal spec.

See: https://github.com/tc39/proposal-temporal/commit/4b0246a
2022-10-16 14:45:09 +02:00
Timothy Flynn
443ffab9dc LibJS: Use infallible ParseTimeZoneOffsetString
This is an editorial change in the Temporal spec. See:
https://github.com/tc39/proposal-temporal/commit/654e300
2022-10-15 18:05:02 +02:00
Timothy Flynn
d992cba014 LibJS: Remove Temporal::DefaultTimeZone
This is an editorial change in the Temporal spec. See:
https://github.com/tc39/proposal-temporal/commit/e232580
2022-10-15 18:05:02 +02:00
Timothy Flynn
735e1c4e20 LibJS: Replace GetIANATimeZoneOffset[Ns] with GetNamedTimeZoneOffset[Ns]
This is an editorial change in the Temporal spec. See:
https://github.com/tc39/proposal-temporal/commit/e44d36b
2022-10-15 18:05:02 +02:00
Timothy Flynn
053cc90dbe LibJS: Replace GetIANATimeZoneEpochValue with GetNamedTimeZoneEpoch[Ns]
This is an editorial change in the Temporal spec. See:
https://github.com/tc39/proposal-temporal/commit/e834014
2022-10-15 18:05:02 +02:00
Andreas Kling
35c9aa7c05 LibJS: Hide all the constructors!
Now that the GC allocator is able to invoke Cell subclass constructors
directly via friendship, we no longer need to keep them public. :^)
2022-08-29 03:24:54 +02:00
Linus Groh
694f66b5ca LibJS: Replace GlobalObject with VM in Temporal AOs [Part 2/19] 2022-08-23 13:58:30 +01:00
Linus Groh
0057d489bd LibJS: Fix some clang-tidy warnings in Temporal
- Remove unused declarations of removed functions
- Remove unused includes
- Declare pointer values as `auto*`
2022-04-04 19:22:58 +01:00
Linus Groh
a5ea066693 LibJS: Fix number types in GetISOPartsFromEpoch
This is an editorial change in the Temporal spec.

See: https://github.com/tc39/proposal-temporal/commit/c5b645d

This means we now have to pass a global object and construct a BigInt
object just for the assertion, but oh well. We might want to have an
assertion macro that's optimized away in release builds at a later
point, however.
2022-03-25 18:33:55 +00:00
Linus Groh
bc183dbbcb LibJS: Replace uses of MarkedValueList with MarkedVector<Value>
This is effectively a drop-in replacement.
2022-02-09 12:25:27 +00:00
Linus Groh
1d32ac7b8b LibJS: Convert get_iana_time_zone_epoch_value() to MarkedVector<BigInt*> 2022-02-09 12:25:27 +00:00
Linus Groh
af7003ebd2 LibJS: Convert 'possible instants' AOs to MarkedVector<Instant*>
Resolve TODOs suggesting the use of a strongly typed MarkedValueList
(a.k.a. MarkedVector<T>) in the following AOs:

- get_possible_instants_for()
- disambiguate_possible_instants()
2022-02-09 12:25:27 +00:00
Linus Groh
31283b5e64 LibJS: Pass valid offset string directly to CreateTemporalTimeZone
This is an editorial change in the Temporal spec.

See:
- https://github.com/tc39/proposal-temporal/commit/75490b9
- https://github.com/tc39/proposal-temporal/commit/8b70e4b
2022-01-23 00:22:10 +00:00
Luke Wilde
706296374b LibJS: Implement Temporal.ZonedDateTime.prototype.equals 2021-11-07 15:35:16 +02:00
Linus Groh
38809f90d9 LibJS: Introduce & use FormatISOTimeZoneOffsetString
This is a normative change in the Temporal spec.

See: https://github.com/tc39/proposal-temporal/commit/6b7a993
2021-11-04 16:45:54 +01:00
Linus Groh
97f6c6029f LibJS: Implement Temporal.TimeZone.prototype.getInstantFor() 2021-11-01 21:39:45 +01:00
Linus Groh
92fdae178b LibJS: Implement Temporal.TimeZone.prototype.getPreviousTransition() 2021-10-30 16:32:20 +02:00
Linus Groh
e9cbeeac45 LibJS: Implement Temporal.TimeZone.prototype.getNextTransition() 2021-10-30 16:32:20 +02:00
Linus Groh
5fde02184d LibJS: Implement Temporal.TimeZone.prototype.getPossibleInstantsFor() 2021-10-30 16:32:20 +02:00
Idan Horowitz
cc00a726a8 LibJS: Convert TimeZone AOs to ThrowCompletionOr 2021-09-16 13:53:37 +01:00
Idan Horowitz
830d484d78 LibJS: Change GetISOPartsFromEpoch's return type to ISODateTime
This AO can't throw so its optional is never empty.
2021-09-16 13:53:37 +01:00
Linus Groh
e4c07c5b8f LibJS: Make new_target parameter of all Temporal AOs a const*
These are passed to ordinary_create_from_constructor() in each case,
which takes the parameter as a const&, so these can also be const.
2021-09-09 23:46:45 +01:00
Linus Groh
576be0f8e7 LibJS: Implement Temporal.Instant.prototype.toString() 2021-08-31 16:35:51 +02:00
Linus Groh
53c44bea00 LibJS: Mark getters of more Temporal objects [[nodiscard]]
PlainDate, PlainTime, and PlainDateTime already do this. All the others
should as well.
2021-08-08 17:45:06 +01:00
Linus Groh
6c345c8107 LibJS: Implement Temporal.ZonedDateTime.prototype.offset 2021-08-05 19:19:40 +02:00
Linus Groh
1b9b995f93 LibJS: Use "T m_foo; // [[Foo]]" style for all Temporal internal slots 2021-08-01 20:31:31 +01:00
Linus Groh
e511390423 LibJS: Implement Temporal.TimeZone.prototype.getPlainDateTimeFor() 2021-08-01 10:24:38 +01:00
Linus Groh
c4123d8aad LibJS: Implement Temporal.TimeZone.prototype.getOffsetStringFor() 2021-08-01 10:24:38 +01:00
Linus Groh
c303bbde54 LibJS: Implement Temporal.Now.plainDate()
...and ten required AOs we didn't have yet:

- BalanceISODate
- BalanceISODateTime
- BalanceISOYearMonth
- BalanceTime
- BuiltinTimeZoneGetPlainDateTimeFor
- GetISOPartsFromEpoch
- GetOffsetNanosecondsFor
- ParseTemporalTimeZone
- SystemDateTime
- ToTemporalTimeZone
2021-07-27 19:51:44 +01:00
Linus Groh
96e63415b6 LibJS: Implement Temporal.TimeZone.prototype.getOffsetNanosecondsFor() 2021-07-25 23:44:36 +01:00
Linus Groh
bece2093f2 LibJS: Remove pointless 'explicit' from a couple of constructors 2021-07-22 21:19:40 +01:00
Linus Groh
7921d8ba91 LibJS: Start implementing Temporal.Duration
This patch adds the Duration object itself, its constructor and
prototype (currently empty), and three required abstract operations.
2021-07-16 01:07:01 +01:00
Linus Groh
6c8f0fbb35 LibJS: Use more specific return types for some Temporal AOs
Instead of returning Object* we should be specific and return Instant*,
TimeZone* etc.
2021-07-14 23:50:03 +01:00
Idan Horowitz
b816037739 LibJS: Add the ToTemporalInstant Abstract Operation & its requirements
This is Abstract Operation is required for the majority of
InstantConstructor's and InstantPrototype's methods.

The implementation is not entirely complete, (specifically 2 of the
underlying required abstract operations, ParseTemporalTimeZoneString
and ParseISODateTime are missing the required lexing, and as such are
TODO()-ed) but the majority of it is done.
2021-07-12 19:05:17 +01:00
Linus Groh
265e89367e LibJS: Start implementing Temporal.TimeZone
Here we got our first Temporal object :^)
This patch adds the TimeZone object itself, its constructor and
prototype (currently empty), and a bunch of required abstract operations
2021-07-07 00:42:01 +01:00