+34
.github/workflows/release.yml
+34
.github/workflows/release.yml
···
1
+
name: release
2
+
3
+
on:
4
+
push:
5
+
tags: ['v*']
6
+
7
+
jobs:
8
+
publish:
9
+
runs-on: ubuntu-latest
10
+
11
+
steps:
12
+
- uses: actions/checkout@v4
13
+
- uses: erlef/setup-beam@v1
14
+
with:
15
+
otp-version: '26'
16
+
gleam-version: '1.0'
17
+
18
+
- run: |
19
+
version="v$(cat gleam.toml | grep -m 1 "version" | sed -r "s/version *= *\"([[:digit:].]+)\"/\1/")"
20
+
if [ "$version" != "${{ github.ref_name }}" ]; then
21
+
echo "tag '${{ github.ref_name }}' does not match the version in gleam.toml"
22
+
echo "expected a tag name 'v$version'"
23
+
exit 1
24
+
fi
25
+
name: check version
26
+
27
+
- run: gleam format --check
28
+
29
+
- run: gleam test
30
+
31
+
- run: gleam publish -y
32
+
env:
33
+
HEXPM_USER: ${{ secrets.HEXPM_USER }}
34
+
HEXPM_PASS: ${{ secrets.HEXPM_PASS }}
+2
-2
.github/workflows/test.yml
+2
-2
.github/workflows/test.yml
+2
-2
gleam.toml
+2
-2
gleam.toml
···
1
1
name = "birl"
2
-
version = "1.5.0"
2
+
version = "1.6.0"
3
3
4
4
description = "Date / Time handling for Gleam"
5
5
gleam = ">= 0.32.0"
···
10
10
11
11
[dependencies]
12
12
ranger = "~> 1.1"
13
-
gleam_stdlib = "~> 0.34 or ~> 1.0"
13
+
gleam_stdlib = "~> 0.36 or ~> 1.0"
14
14
15
15
[dev-dependencies]
16
16
gleeunit = "~> 1.0"
+2
-2
manifest.toml
+2
-2
manifest.toml
···
2
2
# You typically do not need to edit this file
3
3
4
4
packages = [
5
-
{ name = "gleam_stdlib", version = "0.34.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "1FB8454D2991E9B4C0C804544D8A9AD0F6184725E20D63C3155F0AEB4230B016" },
5
+
{ name = "gleam_stdlib", version = "0.36.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "C0D14D807FEC6F8A08A7C9EF8DFDE6AE5C10E40E21325B2B29365965D82EB3D4" },
6
6
{ name = "gleeunit", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "D364C87AFEB26BDB4FB8A5ABDE67D635DC9FA52D6AB68416044C35B096C6882D" },
7
7
{ name = "ranger", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "ranger", source = "hex", outer_checksum = "28E615AE7590ED922AF1510DDF606A2ECBBC2A9609AF36D412EDC925F06DFD20" },
8
8
]
9
9
10
10
[requirements]
11
-
gleam_stdlib = { version = "~> 0.34 or ~> 1.0" }
11
+
gleam_stdlib = { version = "~> 0.36 or ~> 1.0" }
12
12
gleeunit = { version = "~> 1.0" }
13
13
ranger = { version = "~> 1.1" }
+123
-135
src/birl.gleam
+123
-135
src/birl.gleam
···
68
68
now,
69
69
offset_in_minutes * 60_000_000,
70
70
option.map(timezone, fn(tz) {
71
-
case
72
-
zones.list
73
-
|> list.any(fn(item) { item.0 == tz })
74
-
{
75
-
True -> option.Some(tz)
76
-
False -> option.None
77
-
}
78
-
})
79
-
|> option.flatten,
71
+
case list.any(zones.list, fn(item) { item.0 == tz }) {
72
+
True -> option.Some(tz)
73
+
False -> option.None
74
+
}
75
+
})
76
+
|> option.flatten,
80
77
option.Some(monotonic_now),
81
78
)
82
79
}
···
102
99
}
103
100
104
101
pub fn now_with_timezone(timezone: String) -> Result(Time, Nil) {
105
-
case
106
-
zones.list
107
-
|> list.key_find(timezone)
108
-
{
102
+
case list.key_find(zones.list, timezone) {
109
103
Ok(offset) -> {
110
104
let now = ffi_now()
111
105
let monotonic_now = ffi_monotonic_now()
···
284
278
///
285
279
/// - `19051222T16:38-3` -> `1905-12-22T16:38:00.000-03:00`
286
280
///
281
+
/// - `2019-03-26 14:30:00.9Z` -> `2019-03-26T14:30:00.900Z`
282
+
///
287
283
/// - `2019-03-26T14:00:00.9Z` -> `2019-03-26T14:00:00.900Z`
284
+
///
285
+
/// - `1905-12-22 16:38:23-3` -> `1905-12-22T16:38:23.000-03:00`
288
286
///
289
287
/// - `2019-03-26T14:00:00,4999Z` -> `2019-03-26T14:00:00.499Z`
290
288
///
···
296
294
let value = string.trim(value)
297
295
298
296
use #(day_string, offsetted_time_string) <- result.then(case
299
-
[string.split(value, "T"), string.split(value, "t")]
297
+
string.split(value, "T"),
298
+
string.split(value, "t"),
299
+
string.split(value, " ")
300
300
{
301
-
[[day_string, time_string], _] | [_, [day_string, time_string]] ->
302
-
Ok(#(day_string, time_string))
303
-
[[_], [_]] -> Ok(#(value, "00"))
304
-
_ -> Error(Nil)
301
+
[day_string, time_string], _, _
302
+
| _, [day_string, time_string], _
303
+
| _, _, [day_string, time_string] -> Ok(#(day_string, time_string))
304
+
[_], [_], [_] -> Ok(#(value, "00"))
305
+
_, _, _ -> Error(Nil)
305
306
})
306
307
307
308
let day_string = string.trim(day_string)
···
332
333
333
334
let time_string = string.replace(time_string, ":", "")
334
335
use #(time_string, milli_seconds_result) <- result.then(case
335
-
[string.split(time_string, "."), string.split(time_string, ",")]
336
+
string.split(time_string, "."),
337
+
string.split(time_string, ",")
336
338
{
337
-
[[_], [_]] -> {
339
+
[_], [_] -> {
338
340
Ok(#(time_string, Ok(0)))
339
341
}
340
-
[[time_string, milli_seconds_string], [_]]
341
-
| [[_], [time_string, milli_seconds_string]] -> {
342
+
[time_string, milli_seconds_string], [_]
343
+
| [_], [time_string, milli_seconds_string] -> {
342
344
Ok(#(
343
345
time_string,
344
346
milli_seconds_string
345
-
|> string.slice(0, 3)
346
-
|> string.pad_right(3, "0")
347
-
|> int.parse,
347
+
|> string.slice(0, 3)
348
+
|> string.pad_right(3, "0")
349
+
|> int.parse,
348
350
))
349
351
}
350
352
351
-
_ -> Error(Nil)
353
+
_, _ -> Error(Nil)
352
354
})
353
355
354
356
case milli_seconds_result {
···
392
394
let assert Ok(offset_pattern) = regex.from_string("(.*)([+|\\-].*)")
393
395
394
396
let time_string = case
395
-
[string.starts_with(value, "T"), string.starts_with(value, "t")]
397
+
string.starts_with(value, "T"),
398
+
string.starts_with(value, "t")
396
399
{
397
-
[True, _] | [_, True] -> string.drop_left(value, 1)
398
-
_ -> value
400
+
True, _ | _, True -> string.drop_left(value, 1)
401
+
_, _ -> value
399
402
}
400
403
401
404
use #(time_string, offset_string) <- result.then(case
···
414
417
let time_string = string.replace(time_string, ":", "")
415
418
416
419
use #(time_string, milli_seconds_result) <- result.then(case
417
-
[string.split(time_string, "."), string.split(time_string, ",")]
420
+
string.split(time_string, "."),
421
+
string.split(time_string, ",")
418
422
{
419
-
[[_], [_]] -> {
423
+
[_], [_] -> {
420
424
Ok(#(time_string, Ok(0)))
421
425
}
422
-
[[time_string, milli_seconds_string], [_]]
423
-
| [[_], [time_string, milli_seconds_string]] -> {
426
+
[time_string, milli_seconds_string], [_]
427
+
| [_], [time_string, milli_seconds_string] -> {
424
428
Ok(#(
425
429
time_string,
426
430
milli_seconds_string
427
-
|> string.slice(0, 3)
428
-
|> string.pad_right(3, "0")
429
-
|> int.parse,
431
+
|> string.slice(0, 3)
432
+
|> string.pad_right(3, "0")
433
+
|> int.parse,
430
434
))
431
435
}
432
-
433
-
_ -> Error(Nil)
436
+
_, _ -> Error(Nil)
434
437
})
435
438
436
439
case milli_seconds_result {
···
452
455
value: String,
453
456
) -> Result(#(TimeOfDay, String), Nil) {
454
457
let time_string = case
455
-
[string.starts_with(value, "T"), string.starts_with(value, "t")]
458
+
string.starts_with(value, "T"),
459
+
string.starts_with(value, "t")
456
460
{
457
-
[True, _] | [_, True] -> string.drop_left(value, 1)
458
-
_ -> value
461
+
True, _ | _, True -> string.drop_left(value, 1)
462
+
_, _ -> value
459
463
}
460
464
461
465
let time_string = string.replace(time_string, ":", "")
462
466
463
467
use #(time_string, milli_seconds_result) <- result.then(case
464
-
[string.split(time_string, "."), string.split(time_string, ",")]
468
+
string.split(time_string, "."),
469
+
string.split(time_string, ",")
465
470
{
466
-
[[_], [_]] -> {
471
+
[_], [_] -> {
467
472
Ok(#(time_string, Ok(0)))
468
473
}
469
-
[[time_string, milli_seconds_string], [_]]
470
-
| [[_], [time_string, milli_seconds_string]] -> {
474
+
[time_string, milli_seconds_string], [_]
475
+
| [_], [time_string, milli_seconds_string] -> {
471
476
Ok(#(
472
477
time_string,
473
478
milli_seconds_string
474
-
|> string.slice(0, 3)
475
-
|> string.pad_right(3, "0")
476
-
|> int.parse,
479
+
|> string.slice(0, 3)
480
+
|> string.pad_right(3, "0")
481
+
|> int.parse,
477
482
))
478
483
}
479
-
480
-
_ -> Error(Nil)
484
+
_, _ -> Error(Nil)
481
485
})
482
486
483
487
case milli_seconds_result {
···
540
544
let value = string.trim(value)
541
545
542
546
use #(day_string, time_string) <- result.then(case
543
-
[string.split(value, "T"), string.split(value, "t")]
547
+
string.split(value, "T"),
548
+
string.split(value, "t"),
549
+
string.split(value, " ")
544
550
{
545
-
[[day_string, time_string], [_]] | [[_], [day_string, time_string]] ->
546
-
Ok(#(day_string, time_string))
547
-
[[_], [_]] -> Ok(#(value, "00"))
548
-
_ -> Error(Nil)
551
+
[day_string, time_string], _, _
552
+
| _, [day_string, time_string], _
553
+
| _, _, [day_string, time_string] -> Ok(#(day_string, time_string))
554
+
[_], [_], [_] -> Ok(#(value, "00"))
555
+
_, _, _ -> Error(Nil)
549
556
})
550
557
551
558
let day_string = string.trim(day_string)
···
561
568
Ok(#(
562
569
time_string,
563
570
milli_seconds_string
564
-
|> string.slice(0, 3)
565
-
|> string.pad_right(3, "0")
566
-
|> int.parse,
571
+
|> string.slice(0, 3)
572
+
|> string.pad_right(3, "0")
573
+
|> int.parse,
567
574
))
568
575
569
576
_ -> Error(Nil)
···
702
709
[day_string, month_string, year_string, time_string, offset_string] -> {
703
710
let time_string = string.replace(time_string, ":", "")
704
711
case
705
-
#(
706
-
int.parse(day_string),
707
-
month_strings
708
-
|> list.index_map(fn(month, index) {
709
-
let strings = month.1
710
-
#(index, strings.0, strings.1)
711
-
})
712
-
|> list.find(fn(month) {
713
-
month.1 == month_string || month.2 == month_string
714
-
}),
715
-
int.parse(year_string),
716
-
parse_time_section(time_string),
717
-
)
712
+
int.parse(day_string),
713
+
list.index_map(month_strings, fn(month, index) {
714
+
let strings = month.1
715
+
#(index, strings.0, strings.1)
716
+
})
717
+
|> list.find(fn(month) {
718
+
month.1 == month_string || month.2 == month_string
719
+
}),
720
+
int.parse(year_string),
721
+
parse_time_section(time_string)
718
722
{
719
-
#(
720
-
Ok(day),
721
-
Ok(#(month_index, _, _)),
722
-
Ok(year),
723
-
Ok([hour, minute, second]),
724
-
) ->
723
+
Ok(day), Ok(#(month_index, _, _)), Ok(year), Ok([hour, minute, second]) ->
725
724
case
726
725
from_parts(
727
726
#(year, month_index + 1, day),
···
745
744
}
746
745
Error(Nil) -> Error(Nil)
747
746
}
748
-
_ -> Error(Nil)
747
+
_, _, _, _ -> Error(Nil)
749
748
}
750
749
}
751
750
···
754
753
[day_string, month_string, year_string] -> {
755
754
let time_string = string.replace(time_string, ":", "")
756
755
case
757
-
#(
758
-
int.parse(day_string),
759
-
month_strings
760
-
|> list.index_map(fn(month, index) {
761
-
let strings = month.1
762
-
#(index, strings.0, strings.1)
763
-
})
764
-
|> list.find(fn(month) {
765
-
month.1 == month_string || month.2 == month_string
766
-
}),
767
-
int.parse(year_string),
768
-
parse_time_section(time_string),
769
-
)
756
+
int.parse(day_string),
757
+
list.index_map(month_strings, fn(month, index) {
758
+
let strings = month.1
759
+
#(index, strings.0, strings.1)
760
+
})
761
+
|> list.find(fn(month) {
762
+
month.1 == month_string || month.2 == month_string
763
+
}),
764
+
int.parse(year_string),
765
+
parse_time_section(time_string)
770
766
{
771
-
#(
772
-
Ok(day),
773
-
Ok(#(month_index, _, _)),
774
-
Ok(year),
775
-
Ok([hour, minute, second]),
776
-
) ->
767
+
Ok(day), Ok(#(month_index, _, _)), Ok(year), Ok([
768
+
hour,
769
+
minute,
770
+
second,
771
+
]) ->
777
772
case
778
773
from_parts(
779
774
#(year, month_index + 1, day),
···
800
795
}
801
796
Error(Nil) -> Error(Nil)
802
797
}
803
-
_ -> Error(Nil)
798
+
_, _, _, _ -> Error(Nil)
804
799
}
805
800
}
806
801
_ -> Error(Nil)
807
802
}
808
-
809
803
_ -> Error(Nil)
810
804
}
811
805
}
···
826
820
let Time(wall_time: wta, offset: _, timezone: _, monotonic_time: mta) = a
827
821
let Time(wall_time: wtb, offset: _, timezone: _, monotonic_time: mtb) = b
828
822
829
-
let #(ta, tb) = case #(mta, mtb) {
830
-
#(option.Some(ta), option.Some(tb)) -> #(ta, tb)
831
-
_ -> #(wta, wtb)
823
+
let #(ta, tb) = case mta, mtb {
824
+
option.Some(ta), option.Some(tb) -> #(ta, tb)
825
+
_, _ -> #(wta, wtb)
832
826
}
833
827
834
-
case #(ta == tb, ta < tb) {
835
-
#(True, _) -> order.Eq
836
-
#(_, True) -> order.Lt
837
-
#(_, False) -> order.Gt
828
+
case ta == tb, ta < tb {
829
+
True, _ -> order.Eq
830
+
_, True -> order.Lt
831
+
_, False -> order.Gt
838
832
}
839
833
}
840
834
···
842
836
let Time(wall_time: wta, offset: _, timezone: _, monotonic_time: mta) = a
843
837
let Time(wall_time: wtb, offset: _, timezone: _, monotonic_time: mtb) = b
844
838
845
-
let #(ta, tb) = case #(mta, mtb) {
846
-
#(option.Some(ta), option.Some(tb)) -> #(ta, tb)
847
-
_ -> #(wta, wtb)
839
+
let #(ta, tb) = case mta, mtb {
840
+
option.Some(ta), option.Some(tb) -> #(ta, tb)
841
+
_, _ -> #(wta, wtb)
848
842
}
849
843
850
844
duration.Duration(ta - tb)
···
1090
1084
}
1091
1085
1092
1086
pub fn set_timezone(value: Time, new_timezone: String) -> Result(Time, Nil) {
1093
-
case
1094
-
zones.list
1095
-
|> list.key_find(new_timezone)
1096
-
{
1087
+
case list.key_find(zones.list, new_timezone) {
1097
1088
Ok(new_offset_number) -> {
1098
1089
case value {
1099
1090
Time(wall_time: t, offset: _, timezone: _, monotonic_time: mt) ->
···
1192
1183
wall_time,
1193
1184
offset_in_minutes * 60_000_000,
1194
1185
option.map(timezone, fn(tz) {
1195
-
case
1196
-
zones.list
1197
-
|> list.any(fn(item) { item.0 == tz })
1198
-
{
1199
-
True -> option.Some(tz)
1200
-
False -> option.None
1201
-
}
1202
-
})
1203
-
|> option.flatten,
1186
+
case list.any(zones.list, fn(item) { item.0 == tz }) {
1187
+
True -> option.Some(tz)
1188
+
False -> option.None
1189
+
}
1190
+
})
1191
+
|> option.flatten,
1204
1192
option.None,
1205
1193
)
1206
1194
}
···
1305
1293
string.concat([
1306
1294
"+",
1307
1295
hour
1308
-
|> int.to_string
1309
-
|> string.pad_left(2, "0"),
1296
+
|> int.to_string
1297
+
|> string.pad_left(2, "0"),
1310
1298
])
1311
1299
False ->
1312
1300
string.concat([
1313
1301
"-",
1314
1302
hour
1315
-
|> int.absolute_value
1316
-
|> int.to_string
1317
-
|> string.pad_left(2, "0"),
1303
+
|> int.absolute_value
1304
+
|> int.to_string
1305
+
|> string.pad_left(2, "0"),
1318
1306
])
1319
1307
},
1320
1308
minute
1321
-
|> int.absolute_value
1322
-
|> int.to_string
1323
-
|> string.pad_left(2, "0"),
1309
+
|> int.absolute_value
1310
+
|> int.to_string
1311
+
|> string.pad_left(2, "0"),
1324
1312
]
1325
1313
|> string.join(":")
1326
1314
|> Ok
···
1332
1320
string.concat([
1333
1321
"+",
1334
1322
hour
1335
-
|> int.to_string
1336
-
|> string.pad_left(2, "0"),
1323
+
|> int.to_string
1324
+
|> string.pad_left(2, "0"),
1337
1325
])
1338
1326
False ->
1339
1327
string.concat([
1340
1328
"-",
1341
1329
hour
1342
-
|> int.absolute_value
1343
-
|> int.to_string
1344
-
|> string.pad_left(2, "0"),
1330
+
|> int.absolute_value
1331
+
|> int.to_string
1332
+
|> string.pad_left(2, "0"),
1345
1333
])
1346
1334
},
1347
1335
"00",
+14
-4
src/birl/duration.gleam
+14
-4
src/birl/duration.gleam
···
35
35
Duration(a - b)
36
36
}
37
37
38
+
pub fn scale_up(value: Duration, factor: Int) -> Duration {
39
+
let Duration(value) = value
40
+
Duration(value * factor)
41
+
}
42
+
43
+
pub fn scale_down(value: Duration, factor: Int) -> Duration {
44
+
let Duration(value) = value
45
+
Duration(value / factor)
46
+
}
47
+
38
48
pub fn micro_seconds(value: Int) -> Duration {
39
49
Duration(value)
40
50
}
···
75
85
let Duration(dta) = a
76
86
let Duration(dtb) = b
77
87
78
-
case #(dta == dtb, dta < dtb) {
79
-
#(True, _) -> order.Eq
80
-
#(_, True) -> order.Lt
81
-
#(_, False) -> order.Gt
88
+
case dta == dtb, dta < dtb {
89
+
True, _ -> order.Eq
90
+
_, True -> order.Lt
91
+
_, False -> order.Gt
82
92
}
83
93
}
84
94
+89
src/birl/interval.gleam
+89
src/birl/interval.gleam
···
1
+
import gleam/list
2
+
import gleam/order
3
+
import gleam/option
4
+
import birl
5
+
import birl/duration
6
+
7
+
pub opaque type Interval {
8
+
Interval(start: birl.Time, end: birl.Time)
9
+
}
10
+
11
+
pub fn from_start_and_end(start: birl.Time, end: birl.Time) {
12
+
case birl.compare(start, end) {
13
+
order.Eq -> Error(Nil)
14
+
order.Lt -> Ok(Interval(start, end))
15
+
order.Gt -> Ok(Interval(end, start))
16
+
}
17
+
}
18
+
19
+
pub fn from_start_and_duration(start: birl.Time, duration: duration.Duration) {
20
+
from_start_and_end(start, birl.add(start, duration))
21
+
}
22
+
23
+
pub fn shift(interval: Interval, duration: duration.Duration) {
24
+
case interval {
25
+
Interval(start, end) ->
26
+
Interval(birl.add(start, duration), birl.add(end, duration))
27
+
}
28
+
}
29
+
30
+
pub fn scale_up(interval: Interval, factor: Int) {
31
+
case interval {
32
+
Interval(start, end) -> {
33
+
let assert Ok(interval) =
34
+
birl.difference(end, start)
35
+
|> duration.scale_up(factor)
36
+
|> from_start_and_duration(start, _)
37
+
interval
38
+
}
39
+
}
40
+
}
41
+
42
+
pub fn scale_down(interval: Interval, factor: Int) {
43
+
case interval {
44
+
Interval(start, end) -> {
45
+
let assert Ok(interval) =
46
+
birl.difference(end, start)
47
+
|> duration.scale_down(factor)
48
+
|> from_start_and_duration(start, _)
49
+
interval
50
+
}
51
+
}
52
+
}
53
+
54
+
pub fn intersection(a: Interval, b: Interval) -> option.Option(Interval) {
55
+
case contains(a, b), contains(b, a) {
56
+
True, False -> option.Some(b)
57
+
False, True -> option.Some(a)
58
+
_, _ -> {
59
+
let Interval(a_start, a_end) = a
60
+
let Interval(b_start, b_end) = b
61
+
62
+
case includes(a, b_start), includes(b, a_start) {
63
+
True, False -> option.Some(Interval(b_start, a_end))
64
+
False, True -> option.Some(Interval(a_start, b_end))
65
+
_, _ -> option.None
66
+
}
67
+
}
68
+
}
69
+
}
70
+
71
+
pub fn includes(interval: Interval, time: birl.Time) {
72
+
case interval {
73
+
Interval(start, end) ->
74
+
list.contains([order.Eq, order.Lt], birl.compare(start, time))
75
+
&& list.contains([order.Eq, order.Gt], birl.compare(end, time))
76
+
}
77
+
}
78
+
79
+
pub fn contains(a: Interval, b: Interval) {
80
+
case b {
81
+
Interval(start, end) -> includes(a, start) && includes(a, end)
82
+
}
83
+
}
84
+
85
+
pub fn get_bounds(interval: Interval) -> #(birl.Time, birl.Time) {
86
+
case interval {
87
+
Interval(start, end) -> #(start, end)
88
+
}
89
+
}
+2
-2
src/birl/zones.gleam
+2
-2
src/birl/zones.gleam
···
148
148
#("Antarctica/Rothera", -10_800),
149
149
#("Antarctica/Troll", 0),
150
150
#("Antarctica/Vostok", 18_000),
151
-
#("Asia/Almaty", 21_600),
151
+
#("Asia/Almaty", 18_000),
152
152
#("Asia/Amman", 10_800),
153
153
#("Asia/Anadyr", 43_200),
154
154
#("Asia/Aqtau", 18_000),
···
199
199
#("Asia/Pontianak", 25_200),
200
200
#("Asia/Pyongyang", 32_400),
201
201
#("Asia/Qatar", 10_800),
202
-
#("Asia/Qostanay", 21_600),
202
+
#("Asia/Qostanay", 18_000),
203
203
#("Asia/Qyzylorda", 18_000),
204
204
#("Asia/Riyadh", 10_800),
205
205
#("Asia/Sakhalin", 39_600),
+13
-13
src/birl_ffi.erl
+13
-13
src/birl_ffi.erl
···
72
72
end
73
73
end.
74
74
75
-
local_timezone_from_etc() ->
76
-
case file:read_file("/etc/timezone") of
77
-
{ok, NewLinedTimezone} ->
78
-
{some, string:trim(NewLinedTimezone)};
79
-
{error, _} ->
80
-
case file:read_link("/etc/localtime") of
81
-
{ok, Path} ->
82
-
{some, timezone_from_path(Path)};
83
-
{error, _} ->
84
-
none
85
-
end
86
-
end.
87
-
88
75
monotonic_now() ->
89
76
StartTime = erlang:system_info(start_time),
90
77
CurrentTime = erlang:monotonic_time(),
···
118
105
weekday(Timestamp, Offset) ->
119
106
{Date, _} = to_parts(Timestamp, Offset),
120
107
calendar:day_of_the_week(Date) - 1.
108
+
109
+
local_timezone_from_etc() ->
110
+
case file:read_file("/etc/timezone") of
111
+
{ok, NewLinedTimezone} ->
112
+
{some, string:trim(NewLinedTimezone)};
113
+
{error, _} ->
114
+
case file:read_link("/etc/localtime") of
115
+
{ok, Path} ->
116
+
{some, timezone_from_path(Path)};
117
+
{error, _} ->
118
+
none
119
+
end
120
+
end.
121
121
122
122
timezone_from_path(Path) ->
123
123
Split = string:split(Path, "/", all),
+241
-152
zones-provider/Cargo.lock
+241
-152
zones-provider/Cargo.lock
···
19
19
20
20
[[package]]
21
21
name = "aho-corasick"
22
-
version = "1.1.2"
22
+
version = "1.1.3"
23
23
source = "registry+https://github.com/rust-lang/crates.io-index"
24
-
checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
24
+
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
25
25
dependencies = [
26
26
"memchr",
27
27
]
···
49
49
50
50
[[package]]
51
51
name = "base64"
52
-
version = "0.21.5"
52
+
version = "0.21.7"
53
53
source = "registry+https://github.com/rust-lang/crates.io-index"
54
-
checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
54
+
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
55
55
56
56
[[package]]
57
57
name = "bitflags"
···
61
61
62
62
[[package]]
63
63
name = "bitflags"
64
-
version = "2.4.1"
64
+
version = "2.5.0"
65
65
source = "registry+https://github.com/rust-lang/crates.io-index"
66
-
checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
66
+
checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
67
67
68
68
[[package]]
69
69
name = "bumpalo"
70
-
version = "3.14.0"
70
+
version = "3.15.4"
71
71
source = "registry+https://github.com/rust-lang/crates.io-index"
72
-
checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
72
+
checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
73
73
74
74
[[package]]
75
75
name = "bytes"
···
79
79
80
80
[[package]]
81
81
name = "cc"
82
-
version = "1.0.83"
82
+
version = "1.0.90"
83
83
source = "registry+https://github.com/rust-lang/crates.io-index"
84
-
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
85
-
dependencies = [
86
-
"libc",
87
-
]
84
+
checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
88
85
89
86
[[package]]
90
87
name = "cfg-if"
···
110
107
111
108
[[package]]
112
109
name = "crc32fast"
113
-
version = "1.3.2"
110
+
version = "1.4.0"
114
111
source = "registry+https://github.com/rust-lang/crates.io-index"
115
-
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
112
+
checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
116
113
dependencies = [
117
114
"cfg-if",
118
115
]
···
202
199
203
200
[[package]]
204
201
name = "futures-channel"
205
-
version = "0.3.29"
202
+
version = "0.3.30"
206
203
source = "registry+https://github.com/rust-lang/crates.io-index"
207
-
checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb"
204
+
checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
208
205
dependencies = [
209
206
"futures-core",
210
207
]
211
208
212
209
[[package]]
213
210
name = "futures-core"
214
-
version = "0.3.29"
211
+
version = "0.3.30"
215
212
source = "registry+https://github.com/rust-lang/crates.io-index"
216
-
checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c"
213
+
checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
217
214
218
215
[[package]]
219
216
name = "futures-sink"
220
-
version = "0.3.29"
217
+
version = "0.3.30"
221
218
source = "registry+https://github.com/rust-lang/crates.io-index"
222
-
checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817"
219
+
checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
223
220
224
221
[[package]]
225
222
name = "futures-task"
226
-
version = "0.3.29"
223
+
version = "0.3.30"
227
224
source = "registry+https://github.com/rust-lang/crates.io-index"
228
-
checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2"
225
+
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
229
226
230
227
[[package]]
231
228
name = "futures-util"
232
-
version = "0.3.29"
229
+
version = "0.3.30"
233
230
source = "registry+https://github.com/rust-lang/crates.io-index"
234
-
checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104"
231
+
checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
235
232
dependencies = [
236
233
"futures-core",
237
234
"futures-task",
···
247
244
248
245
[[package]]
249
246
name = "h2"
250
-
version = "0.3.22"
247
+
version = "0.4.3"
251
248
source = "registry+https://github.com/rust-lang/crates.io-index"
252
-
checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178"
249
+
checksum = "51ee2dd2e4f378392eeff5d51618cd9a63166a2513846bbc55f21cfacd9199d4"
253
250
dependencies = [
254
251
"bytes",
255
252
"fnv",
···
272
269
273
270
[[package]]
274
271
name = "hermit-abi"
275
-
version = "0.3.3"
272
+
version = "0.3.9"
276
273
source = "registry+https://github.com/rust-lang/crates.io-index"
277
-
checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
274
+
checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
278
275
279
276
[[package]]
280
277
name = "http"
281
-
version = "0.2.11"
278
+
version = "1.1.0"
282
279
source = "registry+https://github.com/rust-lang/crates.io-index"
283
-
checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
280
+
checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
284
281
dependencies = [
285
282
"bytes",
286
283
"fnv",
···
289
286
290
287
[[package]]
291
288
name = "http-body"
292
-
version = "0.4.6"
289
+
version = "1.0.0"
290
+
source = "registry+https://github.com/rust-lang/crates.io-index"
291
+
checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
292
+
dependencies = [
293
+
"bytes",
294
+
"http",
295
+
]
296
+
297
+
[[package]]
298
+
name = "http-body-util"
299
+
version = "0.1.1"
293
300
source = "registry+https://github.com/rust-lang/crates.io-index"
294
-
checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
301
+
checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d"
295
302
dependencies = [
296
303
"bytes",
304
+
"futures-core",
297
305
"http",
306
+
"http-body",
298
307
"pin-project-lite",
299
308
]
300
309
···
305
314
checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
306
315
307
316
[[package]]
308
-
name = "httpdate"
309
-
version = "1.0.3"
310
-
source = "registry+https://github.com/rust-lang/crates.io-index"
311
-
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
312
-
313
-
[[package]]
314
317
name = "hyper"
315
-
version = "0.14.28"
318
+
version = "1.2.0"
316
319
source = "registry+https://github.com/rust-lang/crates.io-index"
317
-
checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
320
+
checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a"
318
321
dependencies = [
319
322
"bytes",
320
323
"futures-channel",
321
-
"futures-core",
322
324
"futures-util",
323
325
"h2",
324
326
"http",
325
327
"http-body",
326
328
"httparse",
327
-
"httpdate",
328
329
"itoa",
329
330
"pin-project-lite",
330
-
"socket2",
331
+
"smallvec",
331
332
"tokio",
332
-
"tower-service",
333
-
"tracing",
334
333
"want",
335
334
]
336
335
337
336
[[package]]
338
337
name = "hyper-tls"
339
-
version = "0.5.0"
338
+
version = "0.6.0"
340
339
source = "registry+https://github.com/rust-lang/crates.io-index"
341
-
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
340
+
checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
342
341
dependencies = [
343
342
"bytes",
343
+
"http-body-util",
344
344
"hyper",
345
+
"hyper-util",
345
346
"native-tls",
346
347
"tokio",
347
348
"tokio-native-tls",
349
+
"tower-service",
350
+
]
351
+
352
+
[[package]]
353
+
name = "hyper-util"
354
+
version = "0.1.3"
355
+
source = "registry+https://github.com/rust-lang/crates.io-index"
356
+
checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa"
357
+
dependencies = [
358
+
"bytes",
359
+
"futures-channel",
360
+
"futures-util",
361
+
"http",
362
+
"http-body",
363
+
"hyper",
364
+
"pin-project-lite",
365
+
"socket2",
366
+
"tokio",
367
+
"tower",
368
+
"tower-service",
369
+
"tracing",
348
370
]
349
371
350
372
[[package]]
···
359
381
360
382
[[package]]
361
383
name = "indexmap"
362
-
version = "2.1.0"
384
+
version = "2.2.5"
363
385
source = "registry+https://github.com/rust-lang/crates.io-index"
364
-
checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
386
+
checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
365
387
dependencies = [
366
388
"equivalent",
367
389
"hashbrown",
···
381
403
382
404
[[package]]
383
405
name = "js-sys"
384
-
version = "0.3.66"
406
+
version = "0.3.69"
385
407
source = "registry+https://github.com/rust-lang/crates.io-index"
386
-
checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca"
408
+
checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
387
409
dependencies = [
388
410
"wasm-bindgen",
389
411
]
···
396
418
397
419
[[package]]
398
420
name = "libc"
399
-
version = "0.2.151"
421
+
version = "0.2.153"
400
422
source = "registry+https://github.com/rust-lang/crates.io-index"
401
-
checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
423
+
checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
402
424
403
425
[[package]]
404
426
name = "linux-raw-sys"
405
-
version = "0.4.12"
427
+
version = "0.4.13"
406
428
source = "registry+https://github.com/rust-lang/crates.io-index"
407
-
checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
429
+
checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
408
430
409
431
[[package]]
410
432
name = "log"
411
-
version = "0.4.20"
433
+
version = "0.4.21"
412
434
source = "registry+https://github.com/rust-lang/crates.io-index"
413
-
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
435
+
checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
414
436
415
437
[[package]]
416
438
name = "memchr"
417
-
version = "2.6.4"
439
+
version = "2.7.1"
418
440
source = "registry+https://github.com/rust-lang/crates.io-index"
419
-
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
441
+
checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
420
442
421
443
[[package]]
422
444
name = "mime"
···
426
448
427
449
[[package]]
428
450
name = "miniz_oxide"
429
-
version = "0.7.1"
451
+
version = "0.7.2"
430
452
source = "registry+https://github.com/rust-lang/crates.io-index"
431
-
checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
453
+
checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
432
454
dependencies = [
433
455
"adler",
434
456
]
435
457
436
458
[[package]]
437
459
name = "mio"
438
-
version = "0.8.10"
460
+
version = "0.8.11"
439
461
source = "registry+https://github.com/rust-lang/crates.io-index"
440
-
checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
462
+
checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
441
463
dependencies = [
442
464
"libc",
443
465
"wasi",
···
474
496
475
497
[[package]]
476
498
name = "object"
477
-
version = "0.32.1"
499
+
version = "0.32.2"
478
500
source = "registry+https://github.com/rust-lang/crates.io-index"
479
-
checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
501
+
checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
480
502
dependencies = [
481
503
"memchr",
482
504
]
···
489
511
490
512
[[package]]
491
513
name = "openssl"
492
-
version = "0.10.61"
514
+
version = "0.10.64"
493
515
source = "registry+https://github.com/rust-lang/crates.io-index"
494
-
checksum = "6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45"
516
+
checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
495
517
dependencies = [
496
-
"bitflags 2.4.1",
518
+
"bitflags 2.5.0",
497
519
"cfg-if",
498
520
"foreign-types",
499
521
"libc",
···
521
543
522
544
[[package]]
523
545
name = "openssl-sys"
524
-
version = "0.9.97"
546
+
version = "0.9.101"
525
547
source = "registry+https://github.com/rust-lang/crates.io-index"
526
-
checksum = "c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b"
548
+
checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff"
527
549
dependencies = [
528
550
"cc",
529
551
"libc",
···
547
569
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
548
570
549
571
[[package]]
572
+
name = "pin-project"
573
+
version = "1.1.5"
574
+
source = "registry+https://github.com/rust-lang/crates.io-index"
575
+
checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
576
+
dependencies = [
577
+
"pin-project-internal",
578
+
]
579
+
580
+
[[package]]
581
+
name = "pin-project-internal"
582
+
version = "1.1.5"
583
+
source = "registry+https://github.com/rust-lang/crates.io-index"
584
+
checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
585
+
dependencies = [
586
+
"proc-macro2",
587
+
"quote",
588
+
"syn",
589
+
]
590
+
591
+
[[package]]
550
592
name = "pin-project-lite"
551
593
version = "0.2.13"
552
594
source = "registry+https://github.com/rust-lang/crates.io-index"
···
560
602
561
603
[[package]]
562
604
name = "pkg-config"
563
-
version = "0.3.28"
605
+
version = "0.3.30"
564
606
source = "registry+https://github.com/rust-lang/crates.io-index"
565
-
checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a"
607
+
checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
566
608
567
609
[[package]]
568
610
name = "proc-macro2"
569
-
version = "1.0.71"
611
+
version = "1.0.79"
570
612
source = "registry+https://github.com/rust-lang/crates.io-index"
571
-
checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8"
613
+
checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
572
614
dependencies = [
573
615
"unicode-ident",
574
616
]
575
617
576
618
[[package]]
577
619
name = "quote"
578
-
version = "1.0.33"
620
+
version = "1.0.35"
579
621
source = "registry+https://github.com/rust-lang/crates.io-index"
580
-
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
622
+
checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
581
623
dependencies = [
582
624
"proc-macro2",
583
625
]
···
593
635
594
636
[[package]]
595
637
name = "regex"
596
-
version = "1.10.2"
638
+
version = "1.10.3"
597
639
source = "registry+https://github.com/rust-lang/crates.io-index"
598
-
checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
640
+
checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
599
641
dependencies = [
600
642
"aho-corasick",
601
643
"memchr",
···
605
647
606
648
[[package]]
607
649
name = "regex-automata"
608
-
version = "0.4.3"
650
+
version = "0.4.6"
609
651
source = "registry+https://github.com/rust-lang/crates.io-index"
610
-
checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
652
+
checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
611
653
dependencies = [
612
654
"aho-corasick",
613
655
"memchr",
···
622
664
623
665
[[package]]
624
666
name = "reqwest"
625
-
version = "0.11.23"
667
+
version = "0.12.0"
626
668
source = "registry+https://github.com/rust-lang/crates.io-index"
627
-
checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41"
669
+
checksum = "58b48d98d932f4ee75e541614d32a7f44c889b72bd9c2e04d95edd135989df88"
628
670
dependencies = [
629
671
"base64",
630
672
"bytes",
···
634
676
"h2",
635
677
"http",
636
678
"http-body",
679
+
"http-body-util",
637
680
"hyper",
638
681
"hyper-tls",
682
+
"hyper-util",
639
683
"ipnet",
640
684
"js-sys",
641
685
"log",
···
644
688
"once_cell",
645
689
"percent-encoding",
646
690
"pin-project-lite",
691
+
"rustls-pemfile",
647
692
"serde",
648
693
"serde_json",
649
694
"serde_urlencoded",
695
+
"sync_wrapper",
650
696
"system-configuration",
651
697
"tokio",
652
698
"tokio-native-tls",
···
666
712
667
713
[[package]]
668
714
name = "rustix"
669
-
version = "0.38.28"
715
+
version = "0.38.32"
670
716
source = "registry+https://github.com/rust-lang/crates.io-index"
671
-
checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316"
717
+
checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
672
718
dependencies = [
673
-
"bitflags 2.4.1",
719
+
"bitflags 2.5.0",
674
720
"errno",
675
721
"libc",
676
722
"linux-raw-sys",
···
678
724
]
679
725
680
726
[[package]]
727
+
name = "rustls-pemfile"
728
+
version = "1.0.4"
729
+
source = "registry+https://github.com/rust-lang/crates.io-index"
730
+
checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
731
+
dependencies = [
732
+
"base64",
733
+
]
734
+
735
+
[[package]]
681
736
name = "ryu"
682
-
version = "1.0.16"
737
+
version = "1.0.17"
683
738
source = "registry+https://github.com/rust-lang/crates.io-index"
684
-
checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
739
+
checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
685
740
686
741
[[package]]
687
742
name = "schannel"
688
-
version = "0.1.22"
743
+
version = "0.1.23"
689
744
source = "registry+https://github.com/rust-lang/crates.io-index"
690
-
checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
745
+
checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
691
746
dependencies = [
692
-
"windows-sys 0.48.0",
747
+
"windows-sys 0.52.0",
693
748
]
694
749
695
750
[[package]]
···
717
772
718
773
[[package]]
719
774
name = "serde"
720
-
version = "1.0.193"
775
+
version = "1.0.197"
721
776
source = "registry+https://github.com/rust-lang/crates.io-index"
722
-
checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
777
+
checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
723
778
dependencies = [
724
779
"serde_derive",
725
780
]
726
781
727
782
[[package]]
728
783
name = "serde_derive"
729
-
version = "1.0.193"
784
+
version = "1.0.197"
730
785
source = "registry+https://github.com/rust-lang/crates.io-index"
731
-
checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
786
+
checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
732
787
dependencies = [
733
788
"proc-macro2",
734
789
"quote",
···
737
792
738
793
[[package]]
739
794
name = "serde_json"
740
-
version = "1.0.108"
795
+
version = "1.0.114"
741
796
source = "registry+https://github.com/rust-lang/crates.io-index"
742
-
checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
797
+
checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
743
798
dependencies = [
744
799
"itoa",
745
800
"ryu",
···
768
823
]
769
824
770
825
[[package]]
826
+
name = "smallvec"
827
+
version = "1.13.2"
828
+
source = "registry+https://github.com/rust-lang/crates.io-index"
829
+
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
830
+
831
+
[[package]]
771
832
name = "socket2"
772
-
version = "0.5.5"
833
+
version = "0.5.6"
773
834
source = "registry+https://github.com/rust-lang/crates.io-index"
774
-
checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
835
+
checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
775
836
dependencies = [
776
837
"libc",
777
-
"windows-sys 0.48.0",
838
+
"windows-sys 0.52.0",
778
839
]
779
840
780
841
[[package]]
781
842
name = "syn"
782
-
version = "2.0.42"
843
+
version = "2.0.53"
783
844
source = "registry+https://github.com/rust-lang/crates.io-index"
784
-
checksum = "5b7d0a2c048d661a1a59fcd7355baa232f7ed34e0ee4df2eef3c1c1c0d3852d8"
845
+
checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
785
846
dependencies = [
786
847
"proc-macro2",
787
848
"quote",
788
849
"unicode-ident",
789
850
]
851
+
852
+
[[package]]
853
+
name = "sync_wrapper"
854
+
version = "0.1.2"
855
+
source = "registry+https://github.com/rust-lang/crates.io-index"
856
+
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
790
857
791
858
[[package]]
792
859
name = "system-configuration"
···
822
889
823
890
[[package]]
824
891
name = "tempfile"
825
-
version = "3.8.1"
892
+
version = "3.10.1"
826
893
source = "registry+https://github.com/rust-lang/crates.io-index"
827
-
checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
894
+
checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
828
895
dependencies = [
829
896
"cfg-if",
830
897
"fastrand",
831
-
"redox_syscall",
832
898
"rustix",
833
-
"windows-sys 0.48.0",
899
+
"windows-sys 0.52.0",
834
900
]
835
901
836
902
[[package]]
···
850
916
851
917
[[package]]
852
918
name = "tokio"
853
-
version = "1.35.1"
919
+
version = "1.36.0"
854
920
source = "registry+https://github.com/rust-lang/crates.io-index"
855
-
checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104"
921
+
checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
856
922
dependencies = [
857
923
"backtrace",
858
924
"bytes",
···
901
967
]
902
968
903
969
[[package]]
970
+
name = "tower"
971
+
version = "0.4.13"
972
+
source = "registry+https://github.com/rust-lang/crates.io-index"
973
+
checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
974
+
dependencies = [
975
+
"futures-core",
976
+
"futures-util",
977
+
"pin-project",
978
+
"pin-project-lite",
979
+
"tokio",
980
+
"tower-layer",
981
+
"tower-service",
982
+
"tracing",
983
+
]
984
+
985
+
[[package]]
986
+
name = "tower-layer"
987
+
version = "0.3.2"
988
+
source = "registry+https://github.com/rust-lang/crates.io-index"
989
+
checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
990
+
991
+
[[package]]
904
992
name = "tower-service"
905
993
version = "0.3.2"
906
994
source = "registry+https://github.com/rust-lang/crates.io-index"
···
912
1000
source = "registry+https://github.com/rust-lang/crates.io-index"
913
1001
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
914
1002
dependencies = [
1003
+
"log",
915
1004
"pin-project-lite",
916
1005
"tracing-core",
917
1006
]
···
933
1022
934
1023
[[package]]
935
1024
name = "unicode-bidi"
936
-
version = "0.3.14"
1025
+
version = "0.3.15"
937
1026
source = "registry+https://github.com/rust-lang/crates.io-index"
938
-
checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416"
1027
+
checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
939
1028
940
1029
[[package]]
941
1030
name = "unicode-ident"
···
945
1034
946
1035
[[package]]
947
1036
name = "unicode-normalization"
948
-
version = "0.1.22"
1037
+
version = "0.1.23"
949
1038
source = "registry+https://github.com/rust-lang/crates.io-index"
950
-
checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
1039
+
checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
951
1040
dependencies = [
952
1041
"tinyvec",
953
1042
]
···
986
1075
987
1076
[[package]]
988
1077
name = "wasm-bindgen"
989
-
version = "0.2.89"
1078
+
version = "0.2.92"
990
1079
source = "registry+https://github.com/rust-lang/crates.io-index"
991
-
checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
1080
+
checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
992
1081
dependencies = [
993
1082
"cfg-if",
994
1083
"wasm-bindgen-macro",
···
996
1085
997
1086
[[package]]
998
1087
name = "wasm-bindgen-backend"
999
-
version = "0.2.89"
1088
+
version = "0.2.92"
1000
1089
source = "registry+https://github.com/rust-lang/crates.io-index"
1001
-
checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826"
1090
+
checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
1002
1091
dependencies = [
1003
1092
"bumpalo",
1004
1093
"log",
···
1011
1100
1012
1101
[[package]]
1013
1102
name = "wasm-bindgen-futures"
1014
-
version = "0.4.39"
1103
+
version = "0.4.42"
1015
1104
source = "registry+https://github.com/rust-lang/crates.io-index"
1016
-
checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12"
1105
+
checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
1017
1106
dependencies = [
1018
1107
"cfg-if",
1019
1108
"js-sys",
···
1023
1112
1024
1113
[[package]]
1025
1114
name = "wasm-bindgen-macro"
1026
-
version = "0.2.89"
1115
+
version = "0.2.92"
1027
1116
source = "registry+https://github.com/rust-lang/crates.io-index"
1028
-
checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2"
1117
+
checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
1029
1118
dependencies = [
1030
1119
"quote",
1031
1120
"wasm-bindgen-macro-support",
···
1033
1122
1034
1123
[[package]]
1035
1124
name = "wasm-bindgen-macro-support"
1036
-
version = "0.2.89"
1125
+
version = "0.2.92"
1037
1126
source = "registry+https://github.com/rust-lang/crates.io-index"
1038
-
checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
1127
+
checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
1039
1128
dependencies = [
1040
1129
"proc-macro2",
1041
1130
"quote",
···
1046
1135
1047
1136
[[package]]
1048
1137
name = "wasm-bindgen-shared"
1049
-
version = "0.2.89"
1138
+
version = "0.2.92"
1050
1139
source = "registry+https://github.com/rust-lang/crates.io-index"
1051
-
checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f"
1140
+
checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
1052
1141
1053
1142
[[package]]
1054
1143
name = "web-sys"
1055
-
version = "0.3.66"
1144
+
version = "0.3.69"
1056
1145
source = "registry+https://github.com/rust-lang/crates.io-index"
1057
-
checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f"
1146
+
checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
1058
1147
dependencies = [
1059
1148
"js-sys",
1060
1149
"wasm-bindgen",
···
1075
1164
source = "registry+https://github.com/rust-lang/crates.io-index"
1076
1165
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
1077
1166
dependencies = [
1078
-
"windows-targets 0.52.0",
1167
+
"windows-targets 0.52.4",
1079
1168
]
1080
1169
1081
1170
[[package]]
···
1095
1184
1096
1185
[[package]]
1097
1186
name = "windows-targets"
1098
-
version = "0.52.0"
1187
+
version = "0.52.4"
1099
1188
source = "registry+https://github.com/rust-lang/crates.io-index"
1100
-
checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
1189
+
checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
1101
1190
dependencies = [
1102
-
"windows_aarch64_gnullvm 0.52.0",
1103
-
"windows_aarch64_msvc 0.52.0",
1104
-
"windows_i686_gnu 0.52.0",
1105
-
"windows_i686_msvc 0.52.0",
1106
-
"windows_x86_64_gnu 0.52.0",
1107
-
"windows_x86_64_gnullvm 0.52.0",
1108
-
"windows_x86_64_msvc 0.52.0",
1191
+
"windows_aarch64_gnullvm 0.52.4",
1192
+
"windows_aarch64_msvc 0.52.4",
1193
+
"windows_i686_gnu 0.52.4",
1194
+
"windows_i686_msvc 0.52.4",
1195
+
"windows_x86_64_gnu 0.52.4",
1196
+
"windows_x86_64_gnullvm 0.52.4",
1197
+
"windows_x86_64_msvc 0.52.4",
1109
1198
]
1110
1199
1111
1200
[[package]]
···
1116
1205
1117
1206
[[package]]
1118
1207
name = "windows_aarch64_gnullvm"
1119
-
version = "0.52.0"
1208
+
version = "0.52.4"
1120
1209
source = "registry+https://github.com/rust-lang/crates.io-index"
1121
-
checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
1210
+
checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
1122
1211
1123
1212
[[package]]
1124
1213
name = "windows_aarch64_msvc"
···
1128
1217
1129
1218
[[package]]
1130
1219
name = "windows_aarch64_msvc"
1131
-
version = "0.52.0"
1220
+
version = "0.52.4"
1132
1221
source = "registry+https://github.com/rust-lang/crates.io-index"
1133
-
checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
1222
+
checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
1134
1223
1135
1224
[[package]]
1136
1225
name = "windows_i686_gnu"
···
1140
1229
1141
1230
[[package]]
1142
1231
name = "windows_i686_gnu"
1143
-
version = "0.52.0"
1232
+
version = "0.52.4"
1144
1233
source = "registry+https://github.com/rust-lang/crates.io-index"
1145
-
checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
1234
+
checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
1146
1235
1147
1236
[[package]]
1148
1237
name = "windows_i686_msvc"
···
1152
1241
1153
1242
[[package]]
1154
1243
name = "windows_i686_msvc"
1155
-
version = "0.52.0"
1244
+
version = "0.52.4"
1156
1245
source = "registry+https://github.com/rust-lang/crates.io-index"
1157
-
checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
1246
+
checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
1158
1247
1159
1248
[[package]]
1160
1249
name = "windows_x86_64_gnu"
···
1164
1253
1165
1254
[[package]]
1166
1255
name = "windows_x86_64_gnu"
1167
-
version = "0.52.0"
1256
+
version = "0.52.4"
1168
1257
source = "registry+https://github.com/rust-lang/crates.io-index"
1169
-
checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
1258
+
checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
1170
1259
1171
1260
[[package]]
1172
1261
name = "windows_x86_64_gnullvm"
···
1176
1265
1177
1266
[[package]]
1178
1267
name = "windows_x86_64_gnullvm"
1179
-
version = "0.52.0"
1268
+
version = "0.52.4"
1180
1269
source = "registry+https://github.com/rust-lang/crates.io-index"
1181
-
checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
1270
+
checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
1182
1271
1183
1272
[[package]]
1184
1273
name = "windows_x86_64_msvc"
···
1188
1277
1189
1278
[[package]]
1190
1279
name = "windows_x86_64_msvc"
1191
-
version = "0.52.0"
1280
+
version = "0.52.4"
1192
1281
source = "registry+https://github.com/rust-lang/crates.io-index"
1193
-
checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
1282
+
checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
1194
1283
1195
1284
[[package]]
1196
1285
name = "winreg"
···
1204
1293
1205
1294
[[package]]
1206
1295
name = "xattr"
1207
-
version = "1.1.3"
1296
+
version = "1.3.1"
1208
1297
source = "registry+https://github.com/rust-lang/crates.io-index"
1209
-
checksum = "a7dae5072fe1f8db8f8d29059189ac175196e410e40ba42d5d4684ae2f750995"
1298
+
checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f"
1210
1299
dependencies = [
1211
1300
"libc",
1212
1301
"linux-raw-sys",
+2
-2
zones-provider/Cargo.toml
+2
-2
zones-provider/Cargo.toml