noda-js 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Bcl/CldrWindowsZones.generated.ts +1 -1
- package/Bcl/CldrWindowsZones.ts +2 -2
- package/Browser/BrowserDateTimeZoneSource.ts +11 -3
- package/CalendarOrdinal.generated.ts +1 -1
- package/Cultures/all.generated.ts +98 -0
- package/Cultures/cs-CZ.generated.ts +2 -2
- package/Cultures/da-DK.generated.ts +2 -2
- package/Cultures/de-AT.generated.ts +2 -2
- package/Cultures/de-CH.generated.ts +2 -2
- package/Cultures/de-DE.generated.ts +2 -2
- package/Cultures/el-GR.generated.ts +2 -2
- package/Cultures/en-001.generated.ts +2 -2
- package/Cultures/en-AU.generated.ts +2 -2
- package/Cultures/en-CA.generated.ts +2 -2
- package/Cultures/en-GB.generated.ts +2 -2
- package/Cultures/en-IE.generated.ts +2 -2
- package/Cultures/en-IL.generated.ts +2 -2
- package/Cultures/en-IN.generated.ts +2 -2
- package/Cultures/en-NZ.generated.ts +2 -2
- package/Cultures/en-US.generated.ts +2 -2
- package/Cultures/en-ZA.generated.ts +2 -2
- package/Cultures/es-419.generated.ts +2 -2
- package/Cultures/es-ES.generated.ts +2 -2
- package/Cultures/es-MX.generated.ts +2 -2
- package/Cultures/fi-FI.generated.ts +2 -2
- package/Cultures/fr-CA.generated.ts +2 -2
- package/Cultures/fr-CH.generated.ts +2 -2
- package/Cultures/fr-FR.generated.ts +2 -2
- package/Cultures/he-IL.generated.ts +2 -2
- package/Cultures/hi-IN.generated.ts +2 -2
- package/Cultures/id-ID.generated.ts +2 -2
- package/Cultures/index.generated.ts +1 -1
- package/Cultures/it-IT.generated.ts +2 -2
- package/Cultures/ja-JP.generated.ts +2 -2
- package/Cultures/ko-KR.generated.ts +2 -2
- package/Cultures/nb-NO.generated.ts +2 -2
- package/Cultures/nl-NL.generated.ts +2 -2
- package/Cultures/pl-PL.generated.ts +2 -2
- package/Cultures/pt-BR.generated.ts +2 -2
- package/Cultures/pt-PT.generated.ts +2 -2
- package/Cultures/ru-RU.generated.ts +2 -2
- package/Cultures/sv-SE.generated.ts +2 -2
- package/Cultures/tr-TR.generated.ts +2 -2
- package/Cultures/uk-UA.generated.ts +2 -2
- package/Cultures/vi-VN.generated.ts +2 -2
- package/Cultures/zh-CN.generated.ts +2 -2
- package/Cultures/zh-TW.generated.ts +2 -2
- package/DateTimeZone.ts +1 -1
- package/Extensions/DateTimeZoneProviderExtensions.ts +1 -1
- package/Globalization/InvariantCultureData.generated.ts +1 -1
- package/Globalization/NodaCultureInfo.ts +189 -14
- package/Globalization/PatternResources.generated.ts +1 -1
- package/IDateTimeZoneProvider.ts +1 -1
- package/IsoDayOfWeek.generated.ts +1 -1
- package/LICENSE.txt +201 -201
- package/NodaConstants.generated.ts +1 -1
- package/PeriodBuilder.ts +4 -4
- package/PeriodUnits.generated.ts +1 -1
- package/README.md +4 -3
- package/Text/Patterns/PatternFields.generated.ts +1 -1
- package/Text/PeriodPattern.ts +3 -3
- package/Text/TextErrorMessages.generated.ts +1 -1
- package/Text/ZonedDateTimePatternParser.ts +1 -1
- package/TimeZones/DateTimeZoneCache.ts +2 -2
- package/TimeZones/IO/DateTimeZoneReader.ts +2 -2
- package/TimeZones/IO/DateTimeZoneWriter.DateTimeZoneType.generated.ts +1 -1
- package/TimeZones/IO/TzdbStreamFieldId.generated.ts +1 -1
- package/TimeZones/TransitionMode.generated.ts +1 -1
- package/TimeZones/TzdbBundledData.generated.ts +1 -1
- package/TimeZones/TzdbDateTimeZoneSource.ts +1 -14
- package/TimeZones/ZoneEqualityComparer.Options.generated.ts +1 -1
- package/Utility/Encoding.ts +101 -0
- package/Utility/TickArithmetic.ts +110 -109
- package/dist/Bcl/CldrWindowsZones.d.ts +1 -1
- package/dist/Bcl/CldrWindowsZones.generated.js +1 -1
- package/dist/Bcl/CldrWindowsZones.generated.js.map +1 -1
- package/dist/Bcl/CldrWindowsZones.js +2 -2
- package/dist/Browser/BrowserDateTimeZoneSource.d.ts +1 -0
- package/dist/Browser/BrowserDateTimeZoneSource.d.ts.map +1 -1
- package/dist/Browser/BrowserDateTimeZoneSource.js +9 -3
- package/dist/Browser/BrowserDateTimeZoneSource.js.map +1 -1
- package/dist/CalendarOrdinal.generated.js +1 -1
- package/dist/CalendarOrdinal.generated.js.map +1 -1
- package/dist/Cultures/all.generated.d.ts +2 -0
- package/dist/Cultures/all.generated.d.ts.map +1 -0
- package/dist/Cultures/all.generated.js +12 -0
- package/dist/Cultures/all.generated.js.map +1 -0
- package/dist/Cultures/cs-CZ.generated.js +2 -2
- package/dist/Cultures/cs-CZ.generated.js.map +1 -1
- package/dist/Cultures/da-DK.generated.js +2 -2
- package/dist/Cultures/da-DK.generated.js.map +1 -1
- package/dist/Cultures/de-AT.generated.js +2 -2
- package/dist/Cultures/de-AT.generated.js.map +1 -1
- package/dist/Cultures/de-CH.generated.js +2 -2
- package/dist/Cultures/de-CH.generated.js.map +1 -1
- package/dist/Cultures/de-DE.generated.js +2 -2
- package/dist/Cultures/de-DE.generated.js.map +1 -1
- package/dist/Cultures/el-GR.generated.js +2 -2
- package/dist/Cultures/el-GR.generated.js.map +1 -1
- package/dist/Cultures/en-001.generated.js +2 -2
- package/dist/Cultures/en-001.generated.js.map +1 -1
- package/dist/Cultures/en-AU.generated.js +2 -2
- package/dist/Cultures/en-AU.generated.js.map +1 -1
- package/dist/Cultures/en-CA.generated.js +2 -2
- package/dist/Cultures/en-CA.generated.js.map +1 -1
- package/dist/Cultures/en-GB.generated.js +2 -2
- package/dist/Cultures/en-GB.generated.js.map +1 -1
- package/dist/Cultures/en-IE.generated.js +2 -2
- package/dist/Cultures/en-IE.generated.js.map +1 -1
- package/dist/Cultures/en-IL.generated.js +2 -2
- package/dist/Cultures/en-IL.generated.js.map +1 -1
- package/dist/Cultures/en-IN.generated.js +2 -2
- package/dist/Cultures/en-IN.generated.js.map +1 -1
- package/dist/Cultures/en-NZ.generated.js +2 -2
- package/dist/Cultures/en-NZ.generated.js.map +1 -1
- package/dist/Cultures/en-US.generated.js +2 -2
- package/dist/Cultures/en-US.generated.js.map +1 -1
- package/dist/Cultures/en-ZA.generated.js +2 -2
- package/dist/Cultures/en-ZA.generated.js.map +1 -1
- package/dist/Cultures/es-419.generated.js +2 -2
- package/dist/Cultures/es-419.generated.js.map +1 -1
- package/dist/Cultures/es-ES.generated.js +2 -2
- package/dist/Cultures/es-ES.generated.js.map +1 -1
- package/dist/Cultures/es-MX.generated.js +2 -2
- package/dist/Cultures/es-MX.generated.js.map +1 -1
- package/dist/Cultures/fi-FI.generated.js +2 -2
- package/dist/Cultures/fi-FI.generated.js.map +1 -1
- package/dist/Cultures/fr-CA.generated.js +2 -2
- package/dist/Cultures/fr-CA.generated.js.map +1 -1
- package/dist/Cultures/fr-CH.generated.js +2 -2
- package/dist/Cultures/fr-CH.generated.js.map +1 -1
- package/dist/Cultures/fr-FR.generated.js +2 -2
- package/dist/Cultures/fr-FR.generated.js.map +1 -1
- package/dist/Cultures/he-IL.generated.js +2 -2
- package/dist/Cultures/he-IL.generated.js.map +1 -1
- package/dist/Cultures/hi-IN.generated.js +2 -2
- package/dist/Cultures/hi-IN.generated.js.map +1 -1
- package/dist/Cultures/id-ID.generated.js +2 -2
- package/dist/Cultures/id-ID.generated.js.map +1 -1
- package/dist/Cultures/index.generated.js +1 -1
- package/dist/Cultures/index.generated.js.map +1 -1
- package/dist/Cultures/it-IT.generated.js +2 -2
- package/dist/Cultures/it-IT.generated.js.map +1 -1
- package/dist/Cultures/ja-JP.generated.js +2 -2
- package/dist/Cultures/ja-JP.generated.js.map +1 -1
- package/dist/Cultures/ko-KR.generated.js +2 -2
- package/dist/Cultures/ko-KR.generated.js.map +1 -1
- package/dist/Cultures/nb-NO.generated.js +2 -2
- package/dist/Cultures/nb-NO.generated.js.map +1 -1
- package/dist/Cultures/nl-NL.generated.js +2 -2
- package/dist/Cultures/nl-NL.generated.js.map +1 -1
- package/dist/Cultures/pl-PL.generated.js +2 -2
- package/dist/Cultures/pl-PL.generated.js.map +1 -1
- package/dist/Cultures/pt-BR.generated.js +2 -2
- package/dist/Cultures/pt-BR.generated.js.map +1 -1
- package/dist/Cultures/pt-PT.generated.js +2 -2
- package/dist/Cultures/pt-PT.generated.js.map +1 -1
- package/dist/Cultures/ru-RU.generated.js +2 -2
- package/dist/Cultures/ru-RU.generated.js.map +1 -1
- package/dist/Cultures/sv-SE.generated.js +2 -2
- package/dist/Cultures/sv-SE.generated.js.map +1 -1
- package/dist/Cultures/tr-TR.generated.js +2 -2
- package/dist/Cultures/tr-TR.generated.js.map +1 -1
- package/dist/Cultures/uk-UA.generated.js +2 -2
- package/dist/Cultures/uk-UA.generated.js.map +1 -1
- package/dist/Cultures/vi-VN.generated.js +2 -2
- package/dist/Cultures/vi-VN.generated.js.map +1 -1
- package/dist/Cultures/zh-CN.generated.js +2 -2
- package/dist/Cultures/zh-CN.generated.js.map +1 -1
- package/dist/Cultures/zh-TW.generated.js +2 -2
- package/dist/Cultures/zh-TW.generated.js.map +1 -1
- package/dist/DateTimeZone.js +1 -1
- package/dist/Extensions/DateTimeZoneProviderExtensions.js +1 -1
- package/dist/Globalization/InvariantCultureData.generated.js +1 -1
- package/dist/Globalization/InvariantCultureData.generated.js.map +1 -1
- package/dist/Globalization/NodaCultureInfo.d.ts +73 -8
- package/dist/Globalization/NodaCultureInfo.d.ts.map +1 -1
- package/dist/Globalization/NodaCultureInfo.js +124 -6
- package/dist/Globalization/NodaCultureInfo.js.map +1 -1
- package/dist/Globalization/PatternResources.generated.js +1 -1
- package/dist/Globalization/PatternResources.generated.js.map +1 -1
- package/dist/IDateTimeZoneProvider.d.ts +1 -1
- package/dist/IsoDayOfWeek.generated.js +1 -1
- package/dist/IsoDayOfWeek.generated.js.map +1 -1
- package/dist/NodaConstants.generated.js +1 -1
- package/dist/NodaConstants.generated.js.map +1 -1
- package/dist/PeriodBuilder.d.ts +2 -2
- package/dist/PeriodBuilder.js +2 -2
- package/dist/PeriodUnits.generated.js +1 -1
- package/dist/PeriodUnits.generated.js.map +1 -1
- package/dist/Text/Patterns/PatternFields.generated.js +1 -1
- package/dist/Text/Patterns/PatternFields.generated.js.map +1 -1
- package/dist/Text/PeriodPattern.js +3 -3
- package/dist/Text/TextErrorMessages.generated.js +1 -1
- package/dist/Text/TextErrorMessages.generated.js.map +1 -1
- package/dist/Text/ZonedDateTimePatternParser.js +1 -1
- package/dist/TimeZones/DateTimeZoneCache.d.ts +1 -1
- package/dist/TimeZones/DateTimeZoneCache.js +2 -2
- package/dist/TimeZones/IO/DateTimeZoneReader.js +2 -2
- package/dist/TimeZones/IO/DateTimeZoneReader.js.map +1 -1
- package/dist/TimeZones/IO/DateTimeZoneWriter.DateTimeZoneType.generated.js +1 -1
- package/dist/TimeZones/IO/DateTimeZoneWriter.DateTimeZoneType.generated.js.map +1 -1
- package/dist/TimeZones/IO/TzdbStreamFieldId.generated.js +1 -1
- package/dist/TimeZones/IO/TzdbStreamFieldId.generated.js.map +1 -1
- package/dist/TimeZones/TransitionMode.generated.js +1 -1
- package/dist/TimeZones/TransitionMode.generated.js.map +1 -1
- package/dist/TimeZones/TzdbBundledData.generated.js +1 -1
- package/dist/TimeZones/TzdbBundledData.generated.js.map +1 -1
- package/dist/TimeZones/TzdbDateTimeZoneSource.d.ts.map +1 -1
- package/dist/TimeZones/TzdbDateTimeZoneSource.js +1 -14
- package/dist/TimeZones/TzdbDateTimeZoneSource.js.map +1 -1
- package/dist/TimeZones/ZoneEqualityComparer.Options.generated.js +1 -1
- package/dist/TimeZones/ZoneEqualityComparer.Options.generated.js.map +1 -1
- package/dist/Utility/Encoding.d.ts +5 -0
- package/dist/Utility/Encoding.d.ts.map +1 -0
- package/dist/Utility/Encoding.js +100 -0
- package/dist/Utility/Encoding.js.map +1 -0
- package/dist/Utility/TickArithmetic.js +1 -0
- package/dist/Utility/TickArithmetic.js.map +1 -1
- package/package.json +11 -4
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Japanese (Japan) (ja-JP) culture, as .NET sees it. */
|
|
10
|
-
export const jaJP: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const jaJP: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "ja-JP",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Korean (Korea) (ko-KR) culture, as .NET sees it. */
|
|
10
|
-
export const koKR: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const koKR: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "ko-KR",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Norwegian Bokmål (Norway) (nb-NO) culture, as .NET sees it. */
|
|
10
|
-
export const nbNO: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const nbNO: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "nb-NO",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Dutch (Netherlands) (nl-NL) culture, as .NET sees it. */
|
|
10
|
-
export const nlNL: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const nlNL: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "nl-NL",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Polish (Poland) (pl-PL) culture, as .NET sees it. */
|
|
10
|
-
export const plPL: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const plPL: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "pl-PL",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Portuguese (Brazil) (pt-BR) culture, as .NET sees it. */
|
|
10
|
-
export const ptBR: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const ptBR: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "pt-BR",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Portuguese (Portugal) (pt-PT) culture, as .NET sees it. */
|
|
10
|
-
export const ptPT: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const ptPT: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "pt-PT",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Russian (Russia) (ru-RU) culture, as .NET sees it. */
|
|
10
|
-
export const ruRU: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const ruRU: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "ru-RU",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Swedish (Sweden) (sv-SE) culture, as .NET sees it. */
|
|
10
|
-
export const svSE: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const svSE: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "sv-SE",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Turkish (Türkiye) (tr-TR) culture, as .NET sees it. */
|
|
10
|
-
export const trTR: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const trTR: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "tr-TR",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Ukrainian (Ukraine) (uk-UA) culture, as .NET sees it. */
|
|
10
|
-
export const ukUA: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const ukUA: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "uk-UA",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Vietnamese (Vietnam) (vi-VN) culture, as .NET sees it. */
|
|
10
|
-
export const viVN: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const viVN: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "vi-VN",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Chinese (China) (zh-CN) culture, as .NET sees it. */
|
|
10
|
-
export const zhCN: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const zhCN: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "zh-CN",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
7
7
|
import { NodaCultureInfo } from "../Globalization/NodaCultureInfo.ts";
|
|
8
8
|
|
|
9
9
|
/** The Chinese (Taiwan) (zh-TW) culture, as .NET sees it. */
|
|
10
|
-
export const zhTW: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.
|
|
10
|
+
export const zhTW: NodaCultureInfo = /*#__PURE__*/ NodaCultureInfo.FromDataRegistered({
|
|
11
11
|
Name: "zh-TW",
|
|
12
12
|
DateTimeFormat: {
|
|
13
13
|
Calendar: "GregorianCalendar",
|
package/DateTimeZone.ts
CHANGED
|
@@ -554,7 +554,7 @@ export abstract class DateTimeZone implements IZoneIntervalMap {
|
|
|
554
554
|
*/
|
|
555
555
|
static fromJSON(json: string, provider: IDateTimeZoneProvider): DateTimeZone {
|
|
556
556
|
Preconditions.CheckNotNull(provider, "provider");
|
|
557
|
-
return provider.
|
|
557
|
+
return provider.Get(json);
|
|
558
558
|
}
|
|
559
559
|
// #endregion
|
|
560
560
|
}
|
|
@@ -19,7 +19,7 @@ export function GetAllZones(provider: IDateTimeZoneProvider): Iterable<DateTimeZ
|
|
|
19
19
|
Preconditions.CheckNotNull(provider, "provider");
|
|
20
20
|
return (function* () {
|
|
21
21
|
for (const id of provider.Ids) {
|
|
22
|
-
yield provider.
|
|
22
|
+
yield provider.Get(id);
|
|
23
23
|
}
|
|
24
24
|
})();
|
|
25
25
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Culture data comes from ICU/CLDR via .NET's globalization layer (Unicode License; see NOTICE.txt).
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
// NodaTime reads. The data is generated from .NET by tools/NodaJs.Tools data, into src/noda-js/Cultures/*.generated.ts,
|
|
3
3
|
// and member names are .NET's (PascalCase), so ported code reads them as NodaTime reads the .NET objects.
|
|
4
4
|
|
|
5
|
+
import { ArgumentError, InvalidOperationError } from "../Utility/SystemExceptions.ts";
|
|
5
6
|
import { invariantCultureData } from "./InvariantCultureData.generated.ts";
|
|
6
7
|
import { PatternResources } from "./PatternResources.generated.ts";
|
|
7
8
|
|
|
8
9
|
/** Culture data as written by tools/NodaJs.Tools (data). */
|
|
9
10
|
export interface CultureData {
|
|
11
|
+
/** The culture name (CultureInfo.Name), e.g. "es-ES"; "" for the invariant culture. */
|
|
10
12
|
readonly Name: string;
|
|
13
|
+
/** The culture's date and time formatting data (CultureInfo.DateTimeFormat). */
|
|
11
14
|
readonly DateTimeFormat: DateTimeFormatData;
|
|
12
15
|
/** NodaTime pattern resources that differ from the neutral ones (src/noda-js/Globalization/PatternResources.generated.ts). */
|
|
13
16
|
readonly PatternResources?: Readonly<Record<string, string>>;
|
|
@@ -17,36 +20,64 @@ export interface CultureData {
|
|
|
17
20
|
export interface DateTimeFormatData {
|
|
18
21
|
/** The .NET calendar type name, e.g. "GregorianCalendar". */
|
|
19
22
|
readonly Calendar: string;
|
|
23
|
+
/** The designator for hours before noon, e.g. "AM" (the `tt` pattern specifier). */
|
|
20
24
|
readonly AMDesignator: string;
|
|
25
|
+
/** The designator for hours after noon, e.g. "PM" (the `tt` pattern specifier). */
|
|
21
26
|
readonly PMDesignator: string;
|
|
27
|
+
/** The separator between hours, minutes and seconds (the `:` pattern specifier), e.g. ":". */
|
|
22
28
|
readonly TimeSeparator: string;
|
|
29
|
+
/** The separator between year, month and day (the `/` pattern specifier), e.g. "/". */
|
|
23
30
|
readonly DateSeparator: string;
|
|
31
|
+
/** The short date pattern (standard pattern `d`), e.g. "dd/MM/yyyy". */
|
|
24
32
|
readonly ShortDatePattern: string;
|
|
33
|
+
/** The long date pattern (standard pattern `D`), e.g. "dddd, d MMMM yyyy". */
|
|
25
34
|
readonly LongDatePattern: string;
|
|
35
|
+
/** The short time pattern (standard pattern `t`), e.g. "HH:mm". */
|
|
26
36
|
readonly ShortTimePattern: string;
|
|
37
|
+
/** The long time pattern (standard pattern `T`), e.g. "HH:mm:ss". */
|
|
27
38
|
readonly LongTimePattern: string;
|
|
39
|
+
/** The long date and long time pattern (standard pattern `F`), e.g. "dddd, d MMMM yyyy HH:mm:ss". */
|
|
28
40
|
readonly FullDateTimePattern: string;
|
|
41
|
+
/** The month and day pattern (.NET's `M` format), e.g. "d MMMM". */
|
|
29
42
|
readonly MonthDayPattern: string;
|
|
43
|
+
/** The year and month pattern (.NET's `Y` format), e.g. "MMMM yyyy". */
|
|
30
44
|
readonly YearMonthPattern: string;
|
|
45
|
+
/** The sortable (ISO 8601) date and time pattern (.NET's `s` format): "yyyy'-'MM'-'dd'T'HH':'mm':'ss". */
|
|
31
46
|
readonly SortableDateTimePattern: string;
|
|
47
|
+
/** The universal sortable date and time pattern (.NET's `u` format): "yyyy'-'MM'-'dd HH':'mm':'ss'Z'". */
|
|
32
48
|
readonly UniversalSortableDateTimePattern: string;
|
|
49
|
+
/** The RFC 1123 date and time pattern (.NET's `R` format): "ddd, dd MMM yyyy HH':'mm':'ss 'GMT'". */
|
|
33
50
|
readonly RFC1123Pattern: string;
|
|
34
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* The full month names (the `MMMM` pattern specifier, standalone), January first: 13 entries, as in .NET (the last is
|
|
53
|
+
* for a 13th month, and usually empty).
|
|
54
|
+
*/
|
|
35
55
|
readonly MonthNames: readonly string[];
|
|
56
|
+
/** The abbreviated month names (the `MMM` pattern specifier, standalone): 13 entries, like {@link MonthNames}. */
|
|
36
57
|
readonly AbbreviatedMonthNames: readonly string[];
|
|
58
|
+
/**
|
|
59
|
+
* The full month names in the genitive case, used with a day (`d MMMM`) in languages that inflect them (e.g. Russian,
|
|
60
|
+
* Polish): 13 entries, like {@link MonthNames}. The same as MonthNames where the language doesn't distinguish them.
|
|
61
|
+
*/
|
|
37
62
|
readonly MonthGenitiveNames: readonly string[];
|
|
63
|
+
/** The abbreviated month names in the genitive case (`d MMM`): 13 entries, like {@link MonthGenitiveNames}. */
|
|
38
64
|
readonly AbbreviatedMonthGenitiveNames: readonly string[];
|
|
39
|
-
/** 7 entries, Sunday first, as in .NET. */
|
|
65
|
+
/** The full day names (the `dddd` pattern specifier): 7 entries, Sunday first, as in .NET. */
|
|
40
66
|
readonly DayNames: readonly string[];
|
|
67
|
+
/** The abbreviated day names (the `ddd` pattern specifier): 7 entries, Sunday first. */
|
|
41
68
|
readonly AbbreviatedDayNames: readonly string[];
|
|
69
|
+
/** The shortest day names (e.g. "Su"): 7 entries, Sunday first. */
|
|
42
70
|
readonly ShortestDayNames: readonly string[];
|
|
43
|
-
/** GetEraName(1..n) of the culture's calendar. */
|
|
71
|
+
/** The full era names (the `gg` pattern specifier): GetEraName(1..n) of the culture's calendar. */
|
|
44
72
|
readonly EraNames: readonly string[];
|
|
45
|
-
/** GetAbbreviatedEraName(1..n) of the culture's calendar. */
|
|
73
|
+
/** The abbreviated era names: GetAbbreviatedEraName(1..n) of the culture's calendar. */
|
|
46
74
|
readonly AbbreviatedEraNames: readonly string[];
|
|
47
|
-
/** System.DayOfWeek value (0 = Sunday). */
|
|
75
|
+
/** The first day of the week, as a System.DayOfWeek value (0 = Sunday). */
|
|
48
76
|
readonly FirstDayOfWeek: number;
|
|
49
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* How the first week of the year is chosen, as a System.Globalization.CalendarWeekRule value (0 = FirstDay,
|
|
79
|
+
* 1 = FirstFullWeek, 2 = FirstFourDayWeek).
|
|
80
|
+
*/
|
|
50
81
|
readonly CalendarWeekRule: number;
|
|
51
82
|
}
|
|
52
83
|
|
|
@@ -70,28 +101,47 @@ export enum CompareOptions {
|
|
|
70
101
|
export class DateTimeFormatInfo implements DateTimeFormatData {
|
|
71
102
|
/** @inheritDoc */
|
|
72
103
|
readonly Calendar!: string;
|
|
104
|
+
/** @inheritDoc */
|
|
73
105
|
readonly AMDesignator!: string;
|
|
106
|
+
/** @inheritDoc */
|
|
74
107
|
readonly PMDesignator!: string;
|
|
108
|
+
/** @inheritDoc */
|
|
75
109
|
readonly TimeSeparator!: string;
|
|
110
|
+
/** @inheritDoc */
|
|
76
111
|
readonly DateSeparator!: string;
|
|
112
|
+
/** @inheritDoc */
|
|
77
113
|
readonly ShortDatePattern!: string;
|
|
114
|
+
/** @inheritDoc */
|
|
78
115
|
readonly LongDatePattern!: string;
|
|
116
|
+
/** @inheritDoc */
|
|
79
117
|
readonly ShortTimePattern!: string;
|
|
118
|
+
/** @inheritDoc */
|
|
80
119
|
readonly LongTimePattern!: string;
|
|
120
|
+
/** @inheritDoc */
|
|
81
121
|
readonly FullDateTimePattern!: string;
|
|
122
|
+
/** @inheritDoc */
|
|
82
123
|
readonly MonthDayPattern!: string;
|
|
124
|
+
/** @inheritDoc */
|
|
83
125
|
readonly YearMonthPattern!: string;
|
|
126
|
+
/** @inheritDoc */
|
|
84
127
|
readonly SortableDateTimePattern!: string;
|
|
128
|
+
/** @inheritDoc */
|
|
85
129
|
readonly UniversalSortableDateTimePattern!: string;
|
|
130
|
+
/** @inheritDoc */
|
|
86
131
|
readonly RFC1123Pattern!: string;
|
|
87
132
|
/** @inheritDoc */
|
|
88
133
|
readonly MonthNames!: readonly string[];
|
|
134
|
+
/** @inheritDoc */
|
|
89
135
|
readonly AbbreviatedMonthNames!: readonly string[];
|
|
136
|
+
/** @inheritDoc */
|
|
90
137
|
readonly MonthGenitiveNames!: readonly string[];
|
|
138
|
+
/** @inheritDoc */
|
|
91
139
|
readonly AbbreviatedMonthGenitiveNames!: readonly string[];
|
|
92
140
|
/** @inheritDoc */
|
|
93
141
|
readonly DayNames!: readonly string[];
|
|
142
|
+
/** @inheritDoc */
|
|
94
143
|
readonly AbbreviatedDayNames!: readonly string[];
|
|
144
|
+
/** @inheritDoc */
|
|
95
145
|
readonly ShortestDayNames!: readonly string[];
|
|
96
146
|
/** @inheritDoc */
|
|
97
147
|
readonly EraNames!: readonly string[];
|
|
@@ -127,8 +177,9 @@ export class DateTimeFormatInfo implements DateTimeFormatData {
|
|
|
127
177
|
* parsers make. Backed by Intl.Collator; tested against .NET's results by test/golden/compare.
|
|
128
178
|
*/
|
|
129
179
|
export class CompareInfo {
|
|
130
|
-
|
|
131
|
-
private
|
|
180
|
+
// null: the host has no usable Intl.Collator.
|
|
181
|
+
private _ignoreCaseCollator: Intl.Collator | null | undefined;
|
|
182
|
+
private _collator: Intl.Collator | null | undefined;
|
|
132
183
|
|
|
133
184
|
constructor(readonly Name: string) {}
|
|
134
185
|
|
|
@@ -159,10 +210,23 @@ export class CompareInfo {
|
|
|
159
210
|
const ub = b.toUpperCase();
|
|
160
211
|
return ua < ub ? -1 : ua > ub ? 1 : 0;
|
|
161
212
|
}
|
|
162
|
-
case CompareOptions.IgnoreCase:
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
213
|
+
case CompareOptions.IgnoreCase: {
|
|
214
|
+
const collator = (this._ignoreCaseCollator ??= CreateCollator(this.Locale, "accent"));
|
|
215
|
+
if (collator !== null) {
|
|
216
|
+
return Math.sign(collator.compare(a, b));
|
|
217
|
+
}
|
|
218
|
+
// Intl not available: case-insensitive ordinal comparison instead of culture-aware.
|
|
219
|
+
const ua = a.toUpperCase();
|
|
220
|
+
const ub = b.toUpperCase();
|
|
221
|
+
return ua < ub ? -1 : ua > ub ? 1 : 0;
|
|
222
|
+
}
|
|
223
|
+
default: {
|
|
224
|
+
const collator = (this._collator ??= CreateCollator(this.Locale, "variant"));
|
|
225
|
+
if (collator !== null) {
|
|
226
|
+
return Math.sign(collator.compare(a, b));
|
|
227
|
+
}
|
|
228
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
229
|
+
}
|
|
166
230
|
}
|
|
167
231
|
}
|
|
168
232
|
|
|
@@ -199,19 +263,73 @@ export class NodaCultureInfo {
|
|
|
199
263
|
return new NodaCultureInfo(data);
|
|
200
264
|
}
|
|
201
265
|
|
|
266
|
+
/**
|
|
267
|
+
* Creates a culture from exported data and registers it for {@link CurrentCulture}: how the culture modules of
|
|
268
|
+
* noda-js/cultures create their cultures.
|
|
269
|
+
* @internal
|
|
270
|
+
*/
|
|
271
|
+
static FromDataRegistered(data: CultureData): NodaCultureInfo {
|
|
272
|
+
const culture = new NodaCultureInfo(data);
|
|
273
|
+
NodaCultureInfo.Register(culture);
|
|
274
|
+
return culture;
|
|
275
|
+
}
|
|
276
|
+
|
|
202
277
|
/** Equivalent of CultureInfo.InvariantCulture. */
|
|
203
278
|
static get InvariantCulture(): NodaCultureInfo {
|
|
204
279
|
return (invariantCulture ??= new NodaCultureInfo(invariantCultureData));
|
|
205
280
|
}
|
|
206
281
|
|
|
282
|
+
/**
|
|
283
|
+
* Makes cultures available to {@link CurrentCulture}. The cultures of noda-js/cultures register themselves when an
|
|
284
|
+
* app uses them, but a bundler drops a culture module the app imports and never otherwise uses: register such
|
|
285
|
+
* cultures here, or `import "noda-js/cultures/all"` to bundle and register every culture. A culture registered
|
|
286
|
+
* under a name already registered replaces it.
|
|
287
|
+
*/
|
|
288
|
+
static Register(...cultures: NodaCultureInfo[]): void {
|
|
289
|
+
for (const culture of cultures) {
|
|
290
|
+
if (!(culture instanceof NodaCultureInfo)) {
|
|
291
|
+
throw new ArgumentError("Only NodaCultureInfo values can be registered.", "cultures");
|
|
292
|
+
}
|
|
293
|
+
// The invariant culture isn't a host language's culture.
|
|
294
|
+
if (culture.Name !== "") {
|
|
295
|
+
registeredCultures.set(culture.Name.toLowerCase(), culture);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* noda-js: the culture of the host's preferred language (equivalent of CultureInfo.CurrentCulture). Takes the host's
|
|
302
|
+
* languages in order of preference (`navigator.languages` in browsers, `navigator.language`, or else the default
|
|
303
|
+
* locale of `Intl.DateTimeFormat`) and returns the first one that matches a registered culture (see {@link Register}):
|
|
304
|
+
* a culture with the same name ("es-AR"), else one named by the language alone ("es"), else the first registered
|
|
305
|
+
* culture of that language ("es-ES"). Evaluated on each access, so it follows changes to the host's languages.
|
|
306
|
+
* @throws {InvalidOperationError} None of the host's languages matches a registered culture.
|
|
307
|
+
*/
|
|
308
|
+
static get CurrentCulture(): NodaCultureInfo {
|
|
309
|
+
const languages = HostLanguages();
|
|
310
|
+
for (const language of languages) {
|
|
311
|
+
const culture = MatchRegisteredCulture(language);
|
|
312
|
+
if (culture !== undefined) {
|
|
313
|
+
return culture;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
const registered: string[] = [];
|
|
317
|
+
registeredCultures.forEach((culture) => registered.push(culture.Name));
|
|
318
|
+
throw new InvalidOperationError(
|
|
319
|
+
`${languages.length === 0 ? "The host reports no languages (no navigator or Intl)" : `None of the host's languages (${languages.join(", ")})`} matches a registered culture ` +
|
|
320
|
+
`(${registered.length === 0 ? "none are registered" : registered.join(", ")}). Import the cultures you support ` +
|
|
321
|
+
`from noda-js/cultures and register them with NodaCultureInfo.Register, or import "noda-js/cultures/all".`,
|
|
322
|
+
);
|
|
323
|
+
}
|
|
324
|
+
|
|
207
325
|
/** Cultures are always read-only in noda-js. */
|
|
208
326
|
get IsReadOnly(): boolean {
|
|
209
327
|
return true;
|
|
210
328
|
}
|
|
211
329
|
|
|
212
330
|
/**
|
|
213
|
-
* Equivalent of PatternResources.ResourceManager.GetString(name, culture):
|
|
214
|
-
* resources (offset patterns, era names).
|
|
331
|
+
* Equivalent of PatternResources.ResourceManager.GetString(name, culture):
|
|
332
|
+
* NodaTime's own localized resources (offset patterns, era names).
|
|
215
333
|
*/
|
|
216
334
|
GetPatternResource(name: string): string | null {
|
|
217
335
|
return this._patternResourceOverrides[name] ?? PatternResources[name] ?? null;
|
|
@@ -223,3 +341,60 @@ export class NodaCultureInfo {
|
|
|
223
341
|
}
|
|
224
342
|
|
|
225
343
|
let invariantCulture: NodaCultureInfo | undefined;
|
|
344
|
+
|
|
345
|
+
// noda-js: the cultures registered for NodaCultureInfo.CurrentCulture, by lower-case name, in registration order.
|
|
346
|
+
const registeredCultures = new Map<string, NodaCultureInfo>();
|
|
347
|
+
|
|
348
|
+
/** The host's languages, most preferred first (BCP 47 tags such as "es-AR"). */
|
|
349
|
+
function HostLanguages(): readonly string[] {
|
|
350
|
+
if (typeof navigator !== "undefined") {
|
|
351
|
+
if (navigator.languages !== undefined && Array.isArray(navigator.languages) && navigator.languages.length > 0) {
|
|
352
|
+
return navigator.languages;
|
|
353
|
+
}
|
|
354
|
+
if (typeof navigator.language === "string") {
|
|
355
|
+
return [navigator.language];
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
// No navigator (e.g. Node before 21): Intl's default locale, if Intl is available.
|
|
359
|
+
try {
|
|
360
|
+
if (typeof Intl !== "undefined" && typeof Intl.DateTimeFormat === "function") {
|
|
361
|
+
const locale = new Intl.DateTimeFormat().resolvedOptions().locale;
|
|
362
|
+
if (typeof locale === "string" && locale !== "") {
|
|
363
|
+
return [locale];
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
} catch {
|
|
367
|
+
// No usable Intl: no host languages.
|
|
368
|
+
}
|
|
369
|
+
return [];
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/** An Intl.Collator for the locale, or null if Intl is not available. */
|
|
373
|
+
function CreateCollator(locale: string, sensitivity: "accent" | "variant"): Intl.Collator | null {
|
|
374
|
+
try {
|
|
375
|
+
return typeof Intl !== "undefined" && typeof Intl.Collator === "function" ? new Intl.Collator(locale, { sensitivity }) : null;
|
|
376
|
+
} catch {
|
|
377
|
+
return null;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/** The registered culture for a language tag: same name, else the language alone, else that language's first. */
|
|
382
|
+
function MatchRegisteredCulture(tag: string): NodaCultureInfo | undefined {
|
|
383
|
+
const name = tag.toLowerCase();
|
|
384
|
+
const exact = registeredCultures.get(name);
|
|
385
|
+
if (exact !== undefined) {
|
|
386
|
+
return exact;
|
|
387
|
+
}
|
|
388
|
+
const language = name.split("-")[0]!;
|
|
389
|
+
const neutral = registeredCultures.get(language);
|
|
390
|
+
if (neutral !== undefined) {
|
|
391
|
+
return neutral;
|
|
392
|
+
}
|
|
393
|
+
let first: NodaCultureInfo | undefined;
|
|
394
|
+
registeredCultures.forEach((culture, key) => {
|
|
395
|
+
if (first === undefined && key.split("-")[0] === language) {
|
|
396
|
+
first = culture;
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
return first;
|
|
400
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (cultures) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Source: NodaTime/Globalization/PatternResources.resx
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|
package/IDateTimeZoneProvider.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// <auto-generated>
|
|
2
2
|
// This file was generated by tools/NodaJs.Tools (enums) from NodaTime 3.3.0, .NET 10.0.14, ICU 72.1.0.3.
|
|
3
|
-
// Do not edit it by hand: re-run tools/generate.ps1
|
|
3
|
+
// Do not edit it by hand: re-run tools/generate.ps1 instead.
|
|
4
4
|
// Source: NodaTime.IsoDayOfWeek (enum)
|
|
5
5
|
// </auto-generated>
|
|
6
6
|
|