Skip to content

Commit b95c329

Browse files
committed
fix: resolve all build warnings
- Remove open Belt in TinyColor.res; Option.map and Option.flatMap are available in the stdlib with the same interface - Replace deprecated @obj externals (randomConfig, wcagOption, mostReadableConfig) with record types using optional fields - Remove open Belt in Tinycolor_tests.res; qualify Belt.Array calls explicitly since stdlib Array lacks map/length/getExn - Replace deprecated Option.getWithDefault with getOr, Option.getExn with getOrThrow, and Option.eq with Option.equal
1 parent 652124b commit b95c329

2 files changed

Lines changed: 38 additions & 51 deletions

File tree

__tests__/Tinycolor_tests.res

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ open Jest
22
open Expect
33
open! Expect.Operators
44

5-
open Belt
6-
75
describe("making tinycolor", () => {
86
test("fromString() returns valid from string", () => {
97
let black = TinyColor.makeFromString("black")
@@ -439,22 +437,22 @@ describe("color modification tests", () => {
439437

440438
describe("color combinations", () => {
441439
let mapAndReturnHexArray = (color, fn) =>
442-
Option.map(color, fn)->Option.getWithDefault([])->Array.map(TinyColor.toHexString)
440+
Option.map(color, fn)->Option.getOr([])->Belt.Array.map(TinyColor.toHexString)
443441

444442
test("analogous()", () =>
445443
TinyColor.makeFromString("#f00")
446-
->Option.getExn
444+
->Option.getOrThrow
447445
->TinyColor.analogous()
448-
->Array.map(TinyColor.toHexString)
446+
->Belt.Array.map(TinyColor.toHexString)
449447
->expect
450448
->toEqual(["#ff0000", "#ff0066", "#ff0033", "#ff0000", "#ff3300", "#ff6600"])
451449
)
452450

453451
test("monochromatic()", () =>
454452
TinyColor.makeFromString("#f00")
455-
->Option.getExn
453+
->Option.getOrThrow
456454
->TinyColor.monochromatic()
457-
->Array.map(TinyColor.toHexString)
455+
->Belt.Array.map(TinyColor.toHexString)
458456
->expect
459457
->toEqual(["#ff0000", "#2a0000", "#550000", "#800000", "#aa0000", "#d40000"])
460458
)
@@ -479,9 +477,9 @@ describe("color combinations", () => {
479477

480478
test("polyad()", () =>
481479
TinyColor.makeFromString("#f00")
482-
->Option.getExn
480+
->Option.getOrThrow
483481
->TinyColor.polyad(~n=4, ())
484-
->Array.map(TinyColor.toHexString)
482+
->Belt.Array.map(TinyColor.toHexString)
485483
->expect
486484
->toEqual(["#ff0000", "#80ff00", "#00ffff", "#7f00ff"])
487485
)
@@ -500,14 +498,14 @@ describe("color utils", () => {
500498
let a = TinyColor.makeFromString("red")
501499
let b = TinyColor.makeFromRgb({r: 255, g: 0, b: 0})
502500

503-
expect(Option.eq(a, b, TinyColor.equals)) === true
501+
expect(Option.equal(a, b, TinyColor.equals)) === true
504502
})
505503

506504
test("equals() returns false for unequal colors", () => {
507505
let a = TinyColor.makeFromString("red")
508506
let b = TinyColor.makeFromString("blue")
509507

510-
expect(Option.eq(a, b, TinyColor.equals)) === false
508+
expect(Option.equal(a, b, TinyColor.equals)) === false
511509
})
512510

513511
test("random()", () => {
@@ -525,31 +523,31 @@ describe("color utils", () => {
525523

526524
test("randomMultiple() returns empty array for count=0", () => {
527525
let a = TinyColor.randomMultiple(~count=0, ())
528-
expect(Array.length(a))->toBe(0)
526+
expect(Belt.Array.length(a))->toBe(0)
529527
})
530528

531529
test("randomMultiple() returns single element in array", () => {
532530
let a = TinyColor.randomMultiple(~count=1, ())
533531

534-
expect(Array.length(a))->toBe(1)
532+
expect(Belt.Array.length(a))->toBe(1)
535533
})
536534

537535
test("randomMultiple() returns many elements", () => {
538536
let a = TinyColor.randomMultiple(~count=15, ())
539537

540-
expect(Array.length(a))->toBe(15)
538+
expect(Belt.Array.length(a))->toBe(15)
541539
})
542540

543541
test("randomMultiple() returns all different colors", () => {
544542
let a = TinyColor.randomMultiple(~count=4, ())
545543

546544
expect(
547-
!TinyColor.equals(Array.getExn(a, 0), Array.getExn(a, 1)) &&
548-
(!TinyColor.equals(Array.getExn(a, 0), Array.getExn(a, 2)) &&
549-
(!TinyColor.equals(Array.getExn(a, 0), Array.getExn(a, 3)) &&
550-
(!TinyColor.equals(Array.getExn(a, 1), Array.getExn(a, 2)) &&
551-
(!TinyColor.equals(Array.getExn(a, 1), Array.getExn(a, 3)) &&
552-
!TinyColor.equals(Array.getExn(a, 2), Array.getExn(a, 3)))))),
545+
!TinyColor.equals(Belt.Array.getExn(a, 0), Belt.Array.getExn(a, 1)) &&
546+
(!TinyColor.equals(Belt.Array.getExn(a, 0), Belt.Array.getExn(a, 2)) &&
547+
(!TinyColor.equals(Belt.Array.getExn(a, 0), Belt.Array.getExn(a, 3)) &&
548+
(!TinyColor.equals(Belt.Array.getExn(a, 1), Belt.Array.getExn(a, 2)) &&
549+
(!TinyColor.equals(Belt.Array.getExn(a, 1), Belt.Array.getExn(a, 3)) &&
550+
!TinyColor.equals(Belt.Array.getExn(a, 2), Belt.Array.getExn(a, 3)))))),
553551
) === true
554552
})
555553

src/TinyColor.res

Lines changed: 20 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
open Belt
21
type t
32

43
@deriving(jsConverter)
@@ -322,24 +321,13 @@ external monochromatic: (t, ~results: int=?, unit) => array<t> = "monochromatic"
322321
@module("@ctrl/tinycolor")
323322
external randomMultiple: 'config => array<t> = "random"
324323

325-
@obj
326-
external randomConfig: (
327-
~hue: [
328-
| #red
329-
| #orange
330-
| #yellow
331-
| #green
332-
| #blue
333-
| #purple
334-
| #pink
335-
| #monochrome
336-
]=?,
337-
~luminosity: [#bright | #light | #dark]=?,
338-
~seed: int=?,
339-
~alpha: float=?,
340-
~count: int=?,
341-
unit,
342-
) => _ = ""
324+
type randomConfigType = {
325+
hue?: [#red | #orange | #yellow | #green | #blue | #purple | #pink | #monochrome],
326+
luminosity?: [#bright | #light | #dark],
327+
seed?: int,
328+
alpha?: float,
329+
count?: int,
330+
}
343331

344332
let random = (
345333
~hue: option<
@@ -358,7 +346,7 @@ let random = (
358346
~seed: option<int>=?,
359347
~alpha: option<float>=?,
360348
(),
361-
) => random(randomConfig(~hue?, ~luminosity?, ~seed?, ~alpha?, ()))
349+
) => random({hue: ?hue, luminosity: ?luminosity, seed: ?seed, alpha: ?alpha})
362350

363351
let randomMultiple = (
364352
~hue: option<
@@ -378,13 +366,15 @@ let randomMultiple = (
378366
~alpha: option<float>=?,
379367
~count: int,
380368
(),
381-
) => randomMultiple(randomConfig(~hue?, ~luminosity?, ~seed?, ~alpha?, ~count, ()))
369+
) => randomMultiple({hue: ?hue, luminosity: ?luminosity, seed: ?seed, alpha: ?alpha, count: count})
382370

383371
@module("@ctrl/tinycolor")
384372
external readability: (t, t) => float = "readability"
385373

386-
@obj
387-
external wcagOption: (~level: [#AA | #AAA]=?, ~size: [#small | #large]=?) => _ = ""
374+
type wcagOptionType = {
375+
level?: [#AA | #AAA],
376+
size?: [#small | #large],
377+
}
388378

389379
@module("@ctrl/tinycolor")
390380
external isReadable: (t, t, 'wcagObject) => bool = "isReadable"
@@ -393,14 +383,13 @@ let isReadable = (
393383
~size: option<[#small | #large]>=?,
394384
color1: t,
395385
color2: t,
396-
) => isReadable(color1, color2, wcagOption(~level?, ~size?))
386+
) => isReadable(color1, color2, {level: ?level, size: ?size})
397387

398-
@obj
399-
external mostReadableConfig: (
400-
~includeFallbackColors: bool=?,
401-
~level: [#AA | #AAA]=?,
402-
~size: [#small | #large]=?,
403-
) => _ = ""
388+
type mostReadableConfigType = {
389+
includeFallbackColors?: bool,
390+
level?: [#AA | #AAA],
391+
size?: [#small | #large],
392+
}
404393

405394
@module("@ctrl/tinycolor")
406395
external mostReadable: (t, array<t>, 'config) => t = "mostReadable"
@@ -411,4 +400,4 @@ let mostReadable = (
411400
compareColors: array<t>,
412401
color: t,
413402
) =>
414-
mostReadable(color, compareColors, mostReadableConfig(~includeFallbackColors?, ~level?, ~size?))
403+
mostReadable(color, compareColors, {includeFallbackColors: ?includeFallbackColors, level: ?level, size: ?size})

0 commit comments

Comments
 (0)