diff --git a/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.2+win_opam_override/files/ocamlbuild-0.14.2.patch b/.ocamlformat
similarity index 100%
rename from esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.2+win_opam_override/files/ocamlbuild-0.14.2.patch
rename to .ocamlformat
diff --git a/bin/Color.ml b/bin/Color.ml
new file mode 100644
index 00000000..b2ea7775
--- /dev/null
+++ b/bin/Color.ml
@@ -0,0 +1,21 @@
+let ofHexString s =
+ if String.length s = 4 || String.length s = 7 then
+ let short = String.length s = 4 in
+ let r' =
+ match short with true -> String.sub s 1 1 | false -> String.sub s 1 2
+ in
+ let g' =
+ match short with true -> String.sub s 2 1 | false -> String.sub s 3 2
+ in
+ let b' =
+ match short with true -> String.sub s 3 1 | false -> String.sub s 5 2
+ in
+ let r = int_of_string_opt ("0x" ^ r') in
+ let g = int_of_string_opt ("0x" ^ g') in
+ let b = int_of_string_opt ("0x" ^ b') in
+ match (r, g, b) with
+ | Some r, Some g, Some b when short ->
+ Some ((16 * r) + r, (16 * g) + g, (16 * b) + b)
+ | Some r, Some g, Some b -> Some (r, g, b)
+ | _ -> None
+ else None
diff --git a/bin/Color.re b/bin/Color.re
deleted file mode 100644
index abe35c89..00000000
--- a/bin/Color.re
+++ /dev/null
@@ -1,19 +0,0 @@
-let ofHexString = s =>
- if (String.length(s) == 4 || String.length(s) == 7) {
- let short = String.length(s) == 4;
- let r' = short ? String.sub(s, 1, 1) : String.sub(s, 1, 2);
- let g' = short ? String.sub(s, 2, 1) : String.sub(s, 3, 2);
- let b' = short ? String.sub(s, 3, 1) : String.sub(s, 5, 2);
-
- let r = int_of_string_opt("0x" ++ r');
- let g = int_of_string_opt("0x" ++ g');
- let b = int_of_string_opt("0x" ++ b');
-
- switch (r, g, b) {
- | (Some(r), Some(g), Some(b)) when short => Some((16 * r + r, 16 * g + g, 16 * b + b))
- | (Some(r), Some(g), Some(b)) => Some((r, g, b))
- | _ => None
- };
- } else {
- None;
- };
diff --git a/bin/Main.ml b/bin/Main.ml
new file mode 100644
index 00000000..e7232cda
--- /dev/null
+++ b/bin/Main.ml
@@ -0,0 +1,45 @@
+open Odiff.ImageIO
+open Odiff.Diff
+
+let getIOModule filename =
+ Filename.extension filename |> function
+ | ".png" -> (module ODiffIO.Png.IO : ImageIO)
+ | ".jpg" | ".jpeg" -> (module ODiffIO.Jpg.IO : ImageIO)
+ | ".bmp" -> (module ODiffIO.Bmp.IO : ImageIO)
+ | ".tiff" -> (module ODiffIO.Tiff.IO : ImageIO)
+ | f -> failwith ("This format is not supported: " ^ f)
+
+type 'output diffResult = { exitCode : int; diff : 'output option }
+
+let main img1Path img2Path diffPath threshold outputDiffMask failOnLayoutChange
+ diffColorHex stdoutParsableString antialiasing ignoreRegions diffLines =
+ let module IO1 = (val getIOModule img1Path) in
+ let module IO2 = (val getIOModule img2Path) in
+ let module Diff = MakeDiff (IO1) (IO2) in
+ let img1 = IO1.loadImage img1Path in
+ let img2 = IO2.loadImage img2Path in
+ let { diff; exitCode } =
+ Diff.diff img1 img2 ~outputDiffMask ~threshold ~failOnLayoutChange
+ ~antialiasing ~ignoreRegions ~diffLines
+ ~diffPixel:
+ (Color.ofHexString diffColorHex |> function
+ | Some col -> col
+ | None -> (255, 0, 0))
+ ()
+ |> Print.printDiffResult stdoutParsableString
+ |> function
+ | Layout -> { diff = None; exitCode = 21 }
+ | Pixel (diffOutput, diffCount, stdoutParsableString, _) when diffCount = 0
+ ->
+ { exitCode = 0; diff = Some diffOutput }
+ | Pixel (diffOutput, diffCount, diffPercentage, _) ->
+ IO1.saveImage diffOutput diffPath;
+ { exitCode = 22; diff = Some diffOutput }
+ in
+ IO1.freeImage img1;
+ IO2.freeImage img2;
+ (match diff with
+ | ((Some output) [@explicit_arity]) when outputDiffMask ->
+ IO1.freeImage output
+ | _ -> ());
+ exit exitCode
diff --git a/bin/Main.re b/bin/Main.re
deleted file mode 100644
index 255b8d5b..00000000
--- a/bin/Main.re
+++ /dev/null
@@ -1,86 +0,0 @@
-open Odiff.ImageIO;
-open Odiff.Diff;
-
-let getIOModule = filename =>
- Filename.extension(filename)
- |> (
- fun
- | ".png" => ((module ODiffIO.Png.IO): (module ImageIO))
- | ".jpg"
- | ".jpeg" => ((module ODiffIO.Jpg.IO): (module ImageIO))
- | ".bmp" => ((module ODiffIO.Bmp.IO): (module ImageIO))
- | ".tiff" => ((module ODiffIO.Tiff.IO): (module ImageIO))
- | f => failwith("This format is not supported: " ++ f)
- );
-
-type diffResult('output) = {
- exitCode: int,
- diff: option('output),
-};
-
-let main =
- (
- img1Path,
- img2Path,
- diffPath,
- threshold,
- outputDiffMask,
- failOnLayoutChange,
- diffColorHex,
- stdoutParsableString,
- antialiasing,
- ignoreRegions,
- diffLines,
- ) => {
- module IO1 = (val getIOModule(img1Path));
- module IO2 = (val getIOModule(img2Path));
-
- module Diff = MakeDiff(IO1, IO2);
-
- let img1 = IO1.loadImage(img1Path);
- let img2 = IO2.loadImage(img2Path);
-
- let {diff, exitCode} =
- Diff.diff(
- img1,
- img2,
- ~outputDiffMask,
- ~threshold,
- ~failOnLayoutChange,
- ~antialiasing,
- ~ignoreRegions,
- ~diffLines,
- ~diffPixel=
- Color.ofHexString(diffColorHex)
- |> (
- fun
- | Some(col) => col
- | None => (255, 0, 0) // red
- ),
- (),
- )
- |> Print.printDiffResult(stdoutParsableString)
- |> (
- fun
- | Layout => {diff: None, exitCode: 21}
- | Pixel((diffOutput, diffCount, stdoutParsableString, _))
- when diffCount == 0 => {
- exitCode: 0,
- diff: Some(diffOutput),
- }
- | Pixel((diffOutput, diffCount, diffPercentage, _)) => {
- IO1.saveImage(diffOutput, diffPath);
- {exitCode: 22, diff: Some(diffOutput)};
- }
- );
-
- IO1.freeImage(img1);
- IO2.freeImage(img2);
-
- switch (diff) {
- | Some(output) when outputDiffMask => IO1.freeImage(output)
- | _ => ()
- };
-
- exit(exitCode);
-};
diff --git a/bin/ODiffBin.ml b/bin/ODiffBin.ml
new file mode 100644
index 00000000..03e65964
--- /dev/null
+++ b/bin/ODiffBin.ml
@@ -0,0 +1,98 @@
+open Cmdliner
+
+let diffPath =
+ let open Arg in
+ value & pos 2 string ""
+ & info [] ~docv:"DIFF" ~doc:"Diff output path (.png only)"
+
+let base =
+ let open Arg in
+ value & pos 0 file "" & info [] ~docv:"BASE" ~doc:"Path to base image"
+
+let comp =
+ let open Arg in
+ value & pos 1 file ""
+ & info [] ~docv:"COMPARING" ~doc:"Path to comparing image"
+
+let threshold =
+ let open Arg in
+ value & opt float 0.1
+ & info [ "t"; "threshold" ] ~docv:"THRESHOLD"
+ ~doc:"Color difference threshold (from 0 to 1). Less more precise."
+
+let diffMask =
+ let open Arg in
+ value & flag
+ & info [ "dm"; "diff-mask" ] ~docv:"DIFF_IMAGE"
+ ~doc:"Output only changed pixel over transparent background."
+
+let failOnLayout =
+ let open Arg in
+ value & flag
+ & info [ "fail-on-layout" ] ~docv:"FAIL_ON_LAYOUT"
+ ~doc:
+ "Do not compare images and produce output if images layout is \
+ different."
+
+let parsableOutput =
+ let open Arg in
+ value & flag
+ & info [ "parsable-stdout" ] ~docv:"PARSABLE_OUTPUT"
+ ~doc:"Stdout parsable output"
+
+let diffColor =
+ let open Arg in
+ value & opt string ""
+ & info [ "diff-color" ]
+ ~doc:
+ "Color used to highlight different pixels in the output (in hex format \
+ e.g. #cd2cc9)."
+
+let antialiasing =
+ let open Arg in
+ value & flag
+ & info [ "aa"; "antialiasing" ]
+ ~doc:
+ "With this flag enabled, antialiased pixels are not counted to the \
+ diff of an image"
+
+let diffLines =
+ let open Arg in
+ value & flag
+ & info [ "output-diff-lines" ]
+ ~doc:
+ "With this flag enabled, output result in case of different images \
+ will output lines for all the different pixels"
+
+let ignoreRegions =
+ let open Arg in
+ value
+ & opt
+ (list ~sep:',' (t2 ~sep:'-' (t2 ~sep:':' int int) (t2 ~sep:':' int int)))
+ []
+ & info [ "i"; "ignore" ]
+ ~doc:
+ "An array of regions to ignore in the diff. One region looks like \
+ \"x1:y1-x2:y2\". Multiple regions are separated with a ','."
+
+let cmd =
+ let man =
+ [
+ `S Manpage.s_description;
+ `P "$(tname) is the fastest pixel-by-pixel image comparison tool.";
+ `P "Supported image types: .png, .jpg, .jpeg, .bitmap";
+ ]
+ in
+ ( (let open Term in
+ const Main.main $ base $ comp $ diffPath $ threshold $ diffMask
+ $ failOnLayout $ diffColor $ parsableOutput $ antialiasing $ ignoreRegions
+ $ diffLines),
+ Term.info "odiff" ~version:"2.6.1" ~doc:"Find difference between 2 images."
+ ~exits:
+ (Term.exit_info 0 ~doc:"on image match"
+ :: Term.exit_info 21 ~doc:"on layout diff when --fail-on-layout"
+ :: Term.exit_info 22 ~doc:"on image pixel difference"
+ :: Term.default_error_exits)
+ ~man )
+
+let () = Term.eval cmd |> Term.exit
diff --git a/bin/ODiffBin.re b/bin/ODiffBin.re
deleted file mode 100644
index d64e23b9..00000000
--- a/bin/ODiffBin.re
+++ /dev/null
@@ -1,161 +0,0 @@
-open Cmdliner;
-
-let diffPath =
- Arg.(
- value
- & pos(2, string, "")
- & info([], ~docv="DIFF", ~doc="Diff output path (.png only)")
- );
-
-let base =
- Arg.(
- value
- & pos(0, file, "")
- & info([], ~docv="BASE", ~doc="Path to base image")
- );
-
-let comp =
- Arg.(
- value
- & pos(1, file, "")
- & info([], ~docv="COMPARING", ~doc="Path to comparing image")
- );
-
-let threshold = {
- Arg.(
- value
- & opt(float, 0.1)
- & info(
- ["t", "threshold"],
- ~docv="THRESHOLD",
- ~doc="Color difference threshold (from 0 to 1). Less more precise.",
- )
- );
-};
-
-let diffMask = {
- Arg.(
- value
- & flag
- & info(
- ["dm", "diff-mask"],
- ~docv="DIFF_IMAGE",
- ~doc="Output only changed pixel over transparent background.",
- )
- );
-};
-
-let failOnLayout =
- Arg.(
- value
- & flag
- & info(
- ["fail-on-layout"],
- ~docv="FAIL_ON_LAYOUT",
- ~doc=
- "Do not compare images and produce output if images layout is different.",
- )
- );
-
-let parsableOutput =
- Arg.(
- value
- & flag
- & info(
- ["parsable-stdout"],
- ~docv="PARSABLE_OUTPUT",
- ~doc="Stdout parsable output",
- )
- );
-
-let diffColor =
- Arg.(
- value
- & opt(string, "")
- & info(
- ["diff-color"],
- ~doc=
- "Color used to highlight different pixels in the output (in hex format e.g. #cd2cc9).",
- )
- );
-
-let antialiasing = {
- Arg.(
- value
- & flag
- & info(
- ["aa", "antialiasing"],
- ~doc=
- "With this flag enabled, antialiased pixels are not counted to the diff of an image",
- )
- );
-};
-
-let diffLines = {
- Arg.(
- value
- & flag
- & info(
- ["output-diff-lines"],
- ~doc=
- "With this flag enabled, output result in case of different images will output lines for all the different pixels",
- )
- );
-};
-
-let ignoreRegions = {
- Arg.(
- value
- & opt(
- list(
- ~sep=',',
- t2(~sep='-', t2(~sep=':', int, int), t2(~sep=':', int, int)),
- ),
- [],
- )
- & info(
- ["i", "ignore"],
- ~doc=
- "An array of regions to ignore in the diff. One region looks like \"x1:y1-x2:y2\". Multiple regions are separated with a ','.",
- )
- );
-};
-
-let cmd = {
- let man = [
- `S(Manpage.s_description),
- `P("$(tname) is the fastest pixel-by-pixel image comparison tool."),
- `P("Supported image types: .png, .jpg, .jpeg, .bitmap"),
- ];
-
- (
- Term.(
- const(Main.main)
- $ base
- $ comp
- $ diffPath
- $ threshold
- $ diffMask
- $ failOnLayout
- $ diffColor
- $ parsableOutput
- $ antialiasing
- $ ignoreRegions
- $ diffLines
- ),
- Term.info(
- "odiff",
- ~version="2.6.1",
- ~doc="Find difference between 2 images.",
- ~exits=[
- Term.exit_info(0, ~doc="on image match"),
- Term.exit_info(21, ~doc="on layout diff when --fail-on-layout"),
- Term.exit_info(22, ~doc="on image pixel difference"),
- ...Term.default_error_exits,
- ],
- ~man,
- ),
- );
-};
-
-let () = Term.eval(cmd) |> Term.exit;
diff --git a/bin/Print.ml b/bin/Print.ml
new file mode 100644
index 00000000..239c37c9
--- /dev/null
+++ b/bin/Print.ml
@@ -0,0 +1,53 @@
+open Odiff.Diff
+
+let printDiffResult makeParsableOutput result =
+ (match (result, makeParsableOutput) with
+ | Layout, true -> ""
+ | Layout, false ->
+ Pastel.createElement
+ ~children:
+ [
+ (Pastel.createElement ~color:Red ~bold:true ~children:[ "Failure!" ]
+ () [@JSX]);
+ " Images have different layout.\n";
+ ]
+ () [@JSX]
+ | Pixel (_output, diffCount, _percentage, _lines), true when diffCount == 0 ->
+ ""
+ | Pixel (_output, diffCount, _percentage, _lines), false when diffCount == 0
+ ->
+ Pastel.createElement
+ ~children:
+ [
+ (Pastel.createElement ~color:Green ~bold:true
+ ~children:[ "Success!" ] () [@JSX]);
+ " Images are equal.\n";
+ (Pastel.createElement ~dim:true
+ ~children:[ "No diff output created." ]
+ () [@JSX]);
+ ]
+ () [@JSX]
+ | Pixel (_output, diffCount, diffPercentage, stack), true
+ when not (Stack.is_empty stack) ->
+ Int.to_string diffCount ^ ";"
+ ^ Float.to_string diffPercentage
+ ^ ";"
+ ^ (stack
+ |> Stack.fold (fun acc line -> (line |> Int.to_string) ^ "," ^ acc) "")
+ | Pixel (_output, diffCount, diffPercentage, _), true ->
+ Int.to_string diffCount ^ ";" ^ Float.to_string diffPercentage
+ | Pixel (_output, diffCount, diffPercentage, _lines), false ->
+ Pastel.createElement
+ ~children:
+ [
+ (Pastel.createElement ~color:Red ~bold:true ~children:[ "Failure!" ]
+ () [@JSX]);
+ " Images are different.\n";
+ "Different pixels: ";
+ (Pastel.createElement ~color:Red ~bold:true
+ ~children:[ Printf.sprintf "%i (%f%%)" diffCount diffPercentage ]
+ () [@JSX]);
+ ]
+ () [@JSX])
+ |> Console.log;
+ result
diff --git a/bin/Print.re b/bin/Print.re
deleted file mode 100644
index 996e70b9..00000000
--- a/bin/Print.re
+++ /dev/null
@@ -1,55 +0,0 @@
-open Odiff.Diff;
-
-let printDiffResult = (makeParsableOutput, result) => {
- (
- switch (result, makeParsableOutput) {
- | (Layout, true) => ""
- | (Layout, false) =>
-
- "Failure! "
- "Images have different layout.\n"
-
-
- // SUCCESS
- | (Pixel((_output, diffCount, _percentage, _lines)), true)
- when diffCount === 0 => ""
- | (Pixel((_output, diffCount, _percentage, _lines)), false)
- when diffCount === 0 =>
-
- "Success! "
- "Images are equal.\n"
- "No diff output created."
-
-
- // FAILURE
- | (Pixel((_output, diffCount, diffPercentage, stack)), true) when !Stack.is_empty(stack) =>
- Int.to_string(diffCount)
- ++ ";"
- ++ Float.to_string(diffPercentage)
- ++ ";"
- ++ (
- stack
- |> Stack.fold(
- (acc, line) => (line |> Int.to_string) ++ "," ++ acc,
- "",
- )
- )
-
- | (Pixel((_output, diffCount, diffPercentage, _)), true) =>
- Int.to_string(diffCount) ++ ";" ++ Float.to_string(diffPercentage)
-
- | (Pixel((_output, diffCount, diffPercentage, _lines)), false) =>
-
- "Failure! "
- "Images are different.\n"
- "Different pixels: "
-
- {Printf.sprintf("%i (%f%%)", diffCount, diffPercentage)}
-
-
- }
- )
- |> Console.log;
-
- result;
-};
diff --git a/bin/dune b/bin/dune
index 74d00c59..78ee6dc9 100644
--- a/bin/dune
+++ b/bin/dune
@@ -2,5 +2,6 @@
(name ODiffBin)
(public_name ODiffBin)
(package odiff)
- (flags (:standard -w -27))
- (libraries console.lib pastel.lib odiff-core odiff-io cmdliner))
\ No newline at end of file
+ (flags
+ (:standard -w -27))
+ (libraries console.lib pastel.lib odiff-core odiff-io cmdliner))
diff --git a/esy.lock/index.json b/esy.lock/index.json
index c6ed0da2..f3c71cfa 100644
--- a/esy.lock/index.json
+++ b/esy.lock/index.json
@@ -30,7 +30,7 @@
"dependencies": [
"yargs-parser@20.2.9@d41d8cd9", "y18n@5.0.8@d41d8cd9",
"string-width@4.2.3@d41d8cd9", "require-directory@2.1.1@d41d8cd9",
- "get-caller-file@2.0.5@d41d8cd9", "escalade@3.1.1@d41d8cd9",
+ "get-caller-file@2.0.5@d41d8cd9", "escalade@3.1.2@d41d8cd9",
"cliui@7.0.4@d41d8cd9"
],
"devDependencies": []
@@ -224,7 +224,7 @@
"overrides": [],
"dependencies": [
"xdg-basedir@4.0.0@d41d8cd9", "semver-diff@3.1.1@d41d8cd9",
- "semver@7.5.4@d41d8cd9", "pupa@2.1.1@d41d8cd9",
+ "semver@7.6.0@d41d8cd9", "pupa@2.1.1@d41d8cd9",
"latest-version@5.1.0@d41d8cd9", "is-yarn-global@0.3.0@d41d8cd9",
"is-npm@5.0.0@d41d8cd9", "is-installed-globally@0.4.0@d41d8cd9",
"is-ci@2.0.0@d41d8cd9", "import-lazy@2.1.0@d41d8cd9",
@@ -563,14 +563,14 @@
"dependencies": [],
"devDependencies": []
},
- "spdx-license-ids@3.0.13@d41d8cd9": {
- "id": "spdx-license-ids@3.0.13@d41d8cd9",
+ "spdx-license-ids@3.0.17@d41d8cd9": {
+ "id": "spdx-license-ids@3.0.17@d41d8cd9",
"name": "spdx-license-ids",
- "version": "3.0.13",
+ "version": "3.0.17",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#sha1:7189a474c46f8d47c7b0da4b987bb45e908bd2d5"
+ "archive:https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#sha1:887da8aa73218e51a1d917502d79863161a93f9c"
]
},
"overrides": [],
@@ -589,18 +589,18 @@
},
"overrides": [],
"dependencies": [
- "spdx-license-ids@3.0.13@d41d8cd9", "spdx-exceptions@2.3.0@d41d8cd9"
+ "spdx-license-ids@3.0.17@d41d8cd9", "spdx-exceptions@2.5.0@d41d8cd9"
],
"devDependencies": []
},
- "spdx-exceptions@2.3.0@d41d8cd9": {
- "id": "spdx-exceptions@2.3.0@d41d8cd9",
+ "spdx-exceptions@2.5.0@d41d8cd9": {
+ "id": "spdx-exceptions@2.5.0@d41d8cd9",
"name": "spdx-exceptions",
- "version": "2.3.0",
+ "version": "2.5.0",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#sha1:3f28ce1a77a00372683eade4a433183527a2163d"
+ "archive:https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#sha1:5d607d27fc806f66d7b64a766650fa890f04ed66"
]
},
"overrides": [],
@@ -619,7 +619,7 @@
},
"overrides": [],
"dependencies": [
- "spdx-license-ids@3.0.13@d41d8cd9",
+ "spdx-license-ids@3.0.17@d41d8cd9",
"spdx-expression-parse@3.0.1@d41d8cd9"
],
"devDependencies": []
@@ -741,14 +741,14 @@
"dependencies": [ "semver@6.3.1@d41d8cd9" ],
"devDependencies": []
},
- "semver@7.5.4@d41d8cd9": {
- "id": "semver@7.5.4@d41d8cd9",
+ "semver@7.6.0@d41d8cd9": {
+ "id": "semver@7.6.0@d41d8cd9",
"name": "semver",
- "version": "7.5.4",
+ "version": "7.6.0",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/semver/-/semver-7.5.4.tgz#sha1:483986ec4ed38e1c6c48c34894a9182dbff68a6e"
+ "archive:https://registry.npmjs.org/semver/-/semver-7.6.0.tgz#sha1:1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
]
},
"overrides": [],
@@ -897,20 +897,20 @@
"dependencies": [ "resolve-from@5.0.0@d41d8cd9" ],
"devDependencies": []
},
- "resolve@1.22.4@d41d8cd9": {
- "id": "resolve@1.22.4@d41d8cd9",
+ "resolve@1.22.8@d41d8cd9": {
+ "id": "resolve@1.22.8@d41d8cd9",
"name": "resolve",
- "version": "1.22.4",
+ "version": "1.22.8",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz#sha1:1dc40df46554cdaf8948a486a10f6ba1e2026c34"
+ "archive:https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz#sha1:b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
]
},
"overrides": [],
"dependencies": [
"supports-preserve-symlinks-flag@1.0.0@d41d8cd9",
- "path-parse@1.0.7@d41d8cd9", "is-core-module@2.13.0@d41d8cd9"
+ "path-parse@1.0.7@d41d8cd9", "is-core-module@2.13.1@d41d8cd9"
],
"devDependencies": []
},
@@ -971,9 +971,9 @@
"ocaml@4.14.1000@d41d8cd9",
"@reason-native/pastel@github:reasonml/reason-native:pastel.json#a0ddab6ab25237961e32d8732b0a222ec2372d4a@d41d8cd9",
"@reason-native/console@github:reasonml/reason-native:console.json#a0ddab6ab25237961e32d8732b0a222ec2372d4a@d41d8cd9",
- "@opam/reason@opam:3.9.0@2a7c0e6f", "@opam/re@opam:1.10.4@c4910ba6",
- "@opam/dune@opam:3.10.0@d5991a42",
- "@opam/atdgen@opam:2.12.0@bc126d9d"
+ "@opam/reason@opam:3.9.0@2a7c0e6f", "@opam/re@opam:1.11.0@87deb463",
+ "@opam/dune@opam:3.14.0@bfa03801",
+ "@opam/atdgen@opam:2.12.0@205ff7f3"
],
"devDependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f"
@@ -1024,7 +1024,7 @@
"dependencies": [
"type-fest@0.6.0@d41d8cd9", "parse-json@5.2.0@d41d8cd9",
"normalize-package-data@2.5.0@d41d8cd9",
- "@types/normalize-package-data@2.4.1@d41d8cd9"
+ "@types/normalize-package-data@2.4.4@d41d8cd9"
],
"devDependencies": []
},
@@ -1287,7 +1287,7 @@
"dependencies": [
"lines-and-columns@1.2.4@d41d8cd9",
"json-parse-even-better-errors@2.3.1@d41d8cd9",
- "error-ex@1.3.2@d41d8cd9", "@babel/code-frame@7.22.10@d41d8cd9"
+ "error-ex@1.3.2@d41d8cd9", "@babel/code-frame@7.23.5@d41d8cd9"
],
"devDependencies": []
},
@@ -1478,7 +1478,7 @@
"dependencies": [
"wcwidth@1.0.1@d41d8cd9", "strip-ansi@6.0.1@d41d8cd9",
"log-symbols@4.1.0@d41d8cd9", "is-unicode-supported@0.1.0@d41d8cd9",
- "is-interactive@1.0.0@d41d8cd9", "cli-spinners@2.9.0@d41d8cd9",
+ "is-interactive@1.0.0@d41d8cd9", "cli-spinners@2.9.2@d41d8cd9",
"cli-cursor@3.1.0@d41d8cd9", "chalk@4.1.2@d41d8cd9",
"bl@4.1.0@d41d8cd9"
],
@@ -1532,16 +1532,17 @@
"@reason-native/pastel@github:reasonml/reason-native:pastel.json#a0ddab6ab25237961e32d8732b0a222ec2372d4a@d41d8cd9",
"@reason-native/console@github:reasonml/reason-native:console.json#a0ddab6ab25237961e32d8732b0a222ec2372d4a@d41d8cd9",
"@opam/reason@opam:3.9.0@2a7c0e6f",
- "@opam/dune-configurator@opam:3.10.0@f2df97f2",
- "@opam/dune@opam:3.10.0@d5991a42",
+ "@opam/ocaml-lsp-server@opam:1.17.0@12f65153",
+ "@opam/dune-configurator@opam:3.14.0@aa6780d6",
+ "@opam/dune@opam:3.14.0@bfa03801",
"@opam/cmdliner@opam:1.0.4@93208aac"
],
"devDependencies": [
"typescript@4.9.5@d41d8cd9", "simple-git-hooks@2.9.0@d41d8cd9",
"refmterr@github:reasonml/reason-native:refmterr.json#a0ddab6ab25237961e32d8732b0a222ec2372d4a@d41d8cd9",
- "ava@3.15.0@d41d8cd9", "@opam/odoc@opam:2.2.1@3e6e45b8",
- "@opam/ocaml-lsp-server@opam:1.16.2@1425cb09",
- "@opam/merlin@opam:4.9-414@e1587db3"
+ "ava@3.15.0@d41d8cd9", "@opam/odoc@opam:2.4.1@58f09945",
+ "@opam/ocaml-lsp-server@opam:1.17.0@12f65153",
+ "@opam/merlin@opam:4.13-414@3f34cd37"
]
},
"ocaml@4.14.1000@d41d8cd9": {
@@ -1599,7 +1600,7 @@
"overrides": [],
"dependencies": [
"validate-npm-package-license@3.0.4@d41d8cd9",
- "semver@5.7.2@d41d8cd9", "resolve@1.22.4@d41d8cd9",
+ "semver@5.7.2@d41d8cd9", "resolve@1.22.8@d41d8cd9",
"hosted-git-info@2.8.9@d41d8cd9"
],
"devDependencies": []
@@ -2276,18 +2277,18 @@
"dependencies": [],
"devDependencies": []
},
- "is-core-module@2.13.0@d41d8cd9": {
- "id": "is-core-module@2.13.0@d41d8cd9",
+ "is-core-module@2.13.1@d41d8cd9": {
+ "id": "is-core-module@2.13.1@d41d8cd9",
"name": "is-core-module",
- "version": "2.13.0",
+ "version": "2.13.1",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz#sha1:bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db"
+ "archive:https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz#sha1:ad0d7532c6fea9da1ebdc82742d74525c6273384"
]
},
"overrides": [],
- "dependencies": [ "has@1.0.3@d41d8cd9" ],
+ "dependencies": [ "hasown@2.0.1@d41d8cd9" ],
"devDependencies": []
},
"is-ci@2.0.0@d41d8cd9": {
@@ -2474,14 +2475,14 @@
"dependencies": [],
"devDependencies": []
},
- "ignore@5.2.4@d41d8cd9": {
- "id": "ignore@5.2.4@d41d8cd9",
+ "ignore@5.3.1@d41d8cd9": {
+ "id": "ignore@5.3.1@d41d8cd9",
"name": "ignore",
- "version": "5.2.4",
+ "version": "5.3.1",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz#sha1:a291c0c6178ff1b960befe47fcdec301674a6324"
+ "archive:https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz#sha1:5073e554cd42c5b33b394375f538b8593e34d4ef"
]
},
"overrides": [],
@@ -2530,6 +2531,20 @@
"dependencies": [],
"devDependencies": []
},
+ "hasown@2.0.1@d41d8cd9": {
+ "id": "hasown@2.0.1@d41d8cd9",
+ "name": "hasown",
+ "version": "2.0.1",
+ "source": {
+ "type": "install",
+ "source": [
+ "archive:https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz#sha1:26f48f039de2c0f8d3356c223fb8d50253519faa"
+ ]
+ },
+ "overrides": [],
+ "dependencies": [ "function-bind@1.1.2@d41d8cd9" ],
+ "devDependencies": []
+ },
"has-yarn@2.1.0@d41d8cd9": {
"id": "has-yarn@2.1.0@d41d8cd9",
"name": "has-yarn",
@@ -2572,20 +2587,6 @@
"dependencies": [],
"devDependencies": []
},
- "has@1.0.3@d41d8cd9": {
- "id": "has@1.0.3@d41d8cd9",
- "name": "has",
- "version": "1.0.3",
- "source": {
- "type": "install",
- "source": [
- "archive:https://registry.npmjs.org/has/-/has-1.0.3.tgz#sha1:722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- ]
- },
- "overrides": [],
- "dependencies": [ "function-bind@1.1.1@d41d8cd9" ],
- "devDependencies": []
- },
"graceful-fs@4.2.11@d41d8cd9": {
"id": "graceful-fs@4.2.11@d41d8cd9",
"name": "graceful-fs",
@@ -2635,7 +2636,7 @@
"overrides": [],
"dependencies": [
"slash@3.0.0@d41d8cd9", "merge2@1.4.1@d41d8cd9",
- "ignore@5.2.4@d41d8cd9", "fast-glob@3.3.1@d41d8cd9",
+ "ignore@5.3.1@d41d8cd9", "fast-glob@3.3.2@d41d8cd9",
"dir-glob@3.0.1@d41d8cd9", "array-union@2.1.0@d41d8cd9"
],
"devDependencies": []
@@ -2728,28 +2729,14 @@
"dependencies": [],
"devDependencies": []
},
- "function-bind@1.1.1@d41d8cd9": {
- "id": "function-bind@1.1.1@d41d8cd9",
+ "function-bind@1.1.2@d41d8cd9": {
+ "id": "function-bind@1.1.2@d41d8cd9",
"name": "function-bind",
- "version": "1.1.1",
- "source": {
- "type": "install",
- "source": [
- "archive:https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#sha1:a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- ]
- },
- "overrides": [],
- "dependencies": [],
- "devDependencies": []
- },
- "fsevents@2.3.2@d41d8cd9": {
- "id": "fsevents@2.3.2@d41d8cd9",
- "name": "fsevents",
- "version": "2.3.2",
+ "version": "1.1.2",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#sha1:8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ "archive:https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#sha1:2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
]
},
"overrides": [],
@@ -2828,28 +2815,28 @@
"dependencies": [ "escape-string-regexp@1.0.5@d41d8cd9" ],
"devDependencies": []
},
- "fastq@1.15.0@d41d8cd9": {
- "id": "fastq@1.15.0@d41d8cd9",
+ "fastq@1.17.1@d41d8cd9": {
+ "id": "fastq@1.17.1@d41d8cd9",
"name": "fastq",
- "version": "1.15.0",
+ "version": "1.17.1",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz#sha1:d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
+ "archive:https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz#sha1:2a523f07a4e7b1e81a42b91b8bf2254107753b47"
]
},
"overrides": [],
"dependencies": [ "reusify@1.0.4@d41d8cd9" ],
"devDependencies": []
},
- "fast-glob@3.3.1@d41d8cd9": {
- "id": "fast-glob@3.3.1@d41d8cd9",
+ "fast-glob@3.3.2@d41d8cd9": {
+ "id": "fast-glob@3.3.2@d41d8cd9",
"name": "fast-glob",
- "version": "3.3.1",
+ "version": "3.3.2",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz#sha1:784b4e897340f3dbbef17413b3f11acf03c874c4"
+ "archive:https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz#sha1:a904501e57cfdd2ffcded45e99a54fef55e46129"
]
},
"overrides": [],
@@ -3037,14 +3024,14 @@
"dependencies": [],
"devDependencies": []
},
- "escalade@3.1.1@d41d8cd9": {
- "id": "escalade@3.1.1@d41d8cd9",
+ "escalade@3.1.2@d41d8cd9": {
+ "id": "escalade@3.1.2@d41d8cd9",
"name": "escalade",
- "version": "3.1.1",
+ "version": "3.1.2",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#sha1:d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ "archive:https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz#sha1:54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
]
},
"overrides": [],
@@ -3352,7 +3339,7 @@
},
"overrides": [],
"dependencies": [
- "well-known-symbols@2.0.0@d41d8cd9", "semver@7.5.4@d41d8cd9",
+ "well-known-symbols@2.0.0@d41d8cd9", "semver@7.6.0@d41d8cd9",
"md5-hex@3.0.1@d41d8cd9", "lodash@4.17.21@d41d8cd9",
"js-string-escape@1.0.1@d41d8cd9", "fast-diff@1.3.0@d41d8cd9",
"esutils@2.0.3@d41d8cd9", "date-time@3.1.0@d41d8cd9"
@@ -3518,14 +3505,14 @@
],
"devDependencies": []
},
- "cli-spinners@2.9.0@d41d8cd9": {
- "id": "cli-spinners@2.9.0@d41d8cd9",
+ "cli-spinners@2.9.2@d41d8cd9": {
+ "id": "cli-spinners@2.9.2@d41d8cd9",
"name": "cli-spinners",
- "version": "2.9.0",
+ "version": "2.9.2",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz#sha1:5881d0ad96381e117bbe07ad91f2008fe6ffd8db"
+ "archive:https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz#sha1:1773a8f4b9c4d6ac31563df53b3fc1d79462fe41"
]
},
"overrides": [],
@@ -3630,22 +3617,22 @@
"dependencies": [],
"devDependencies": []
},
- "chokidar@3.5.3@d41d8cd9": {
- "id": "chokidar@3.5.3@d41d8cd9",
+ "chokidar@3.6.0@d41d8cd9": {
+ "id": "chokidar@3.6.0@d41d8cd9",
"name": "chokidar",
- "version": "3.5.3",
+ "version": "3.6.0",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz#sha1:1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ "archive:https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz#sha1:197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
]
},
"overrides": [],
"dependencies": [
"readdirp@3.6.0@d41d8cd9", "normalize-path@3.0.0@d41d8cd9",
"is-glob@4.0.3@d41d8cd9", "is-binary-path@2.1.0@d41d8cd9",
- "glob-parent@5.1.2@d41d8cd9", "fsevents@2.3.2@d41d8cd9",
- "braces@3.0.2@d41d8cd9", "anymatch@3.1.3@d41d8cd9"
+ "glob-parent@5.1.2@d41d8cd9", "braces@3.0.2@d41d8cd9",
+ "anymatch@3.1.3@d41d8cd9"
],
"devDependencies": []
},
@@ -3916,11 +3903,11 @@
"cli-truncate@2.1.0@d41d8cd9", "cli-cursor@3.1.0@d41d8cd9",
"clean-yaml-object@0.1.0@d41d8cd9",
"ci-parallel-vars@1.0.1@d41d8cd9", "ci-info@2.0.0@d41d8cd9",
- "chunkd@2.0.1@d41d8cd9", "chokidar@3.5.3@d41d8cd9",
+ "chunkd@2.0.1@d41d8cd9", "chokidar@3.6.0@d41d8cd9",
"chalk@4.1.2@d41d8cd9", "callsites@3.1.0@d41d8cd9",
"arrify@2.0.1@d41d8cd9", "arrgv@1.0.2@d41d8cd9",
- "ansi-styles@5.2.0@d41d8cd9", "acorn-walk@8.2.0@d41d8cd9",
- "acorn@8.10.0@d41d8cd9", "@concordance/react@2.0.0@d41d8cd9"
+ "ansi-styles@5.2.0@d41d8cd9", "acorn-walk@8.3.2@d41d8cd9",
+ "acorn@8.11.3@d41d8cd9", "@concordance/react@2.0.0@d41d8cd9"
],
"devDependencies": []
},
@@ -4124,42 +4111,42 @@
],
"devDependencies": []
},
- "acorn-walk@8.2.0@d41d8cd9": {
- "id": "acorn-walk@8.2.0@d41d8cd9",
+ "acorn-walk@8.3.2@d41d8cd9": {
+ "id": "acorn-walk@8.3.2@d41d8cd9",
"name": "acorn-walk",
- "version": "8.2.0",
+ "version": "8.3.2",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz#sha1:741210f2e2426454508853a2f44d0ab83b7f69c1"
+ "archive:https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz#sha1:7703af9415f1b6db9315d6895503862e231d34aa"
]
},
"overrides": [],
"dependencies": [],
"devDependencies": []
},
- "acorn@8.10.0@d41d8cd9": {
- "id": "acorn@8.10.0@d41d8cd9",
+ "acorn@8.11.3@d41d8cd9": {
+ "id": "acorn@8.11.3@d41d8cd9",
"name": "acorn",
- "version": "8.10.0",
+ "version": "8.11.3",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz#sha1:8be5b3907a67221a81ab23c7889c4c5526b62ec5"
+ "archive:https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz#sha1:71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
]
},
"overrides": [],
"dependencies": [],
"devDependencies": []
},
- "@types/normalize-package-data@2.4.1@d41d8cd9": {
- "id": "@types/normalize-package-data@2.4.1@d41d8cd9",
+ "@types/normalize-package-data@2.4.4@d41d8cd9": {
+ "id": "@types/normalize-package-data@2.4.4@d41d8cd9",
"name": "@types/normalize-package-data",
- "version": "2.4.1",
+ "version": "2.4.4",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#sha1:d3357479a0fdfdd5907fe67e17e0a85c906e1301"
+ "archive:https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#sha1:56e2cc26c397c038fab0e3a917a12d5c5909e901"
]
},
"overrides": [],
@@ -4211,8 +4198,8 @@
"@reason-native/file-context-printer@github:reasonml/reason-native:file-context-printer.json#a0ddab6ab25237961e32d8732b0a222ec2372d4a@d41d8cd9",
"@reason-native/cli@github:reasonml/reason-native:cli.json#a0ddab6ab25237961e32d8732b0a222ec2372d4a@d41d8cd9",
"@opam/stdlib-shims@opam:0.3.0@72c7bc98",
- "@opam/reason@opam:3.9.0@2a7c0e6f", "@opam/re@opam:1.10.4@c4910ba6",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "@opam/reason@opam:3.9.0@2a7c0e6f", "@opam/re@opam:1.11.0@87deb463",
+ "@opam/dune@opam:3.14.0@bfa03801"
],
"devDependencies": []
},
@@ -4229,7 +4216,7 @@
"overrides": [],
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f",
- "@opam/re@opam:1.10.4@c4910ba6", "@opam/dune@opam:3.10.0@d5991a42"
+ "@opam/re@opam:1.11.0@87deb463", "@opam/dune@opam:3.14.0@bfa03801"
],
"devDependencies": []
},
@@ -4247,8 +4234,8 @@
"dependencies": [
"ocaml@4.14.1000@d41d8cd9",
"@reason-native/pastel@github:reasonml/reason-native:pastel.json#a0ddab6ab25237961e32d8732b0a222ec2372d4a@d41d8cd9",
- "@opam/reason@opam:3.9.0@2a7c0e6f", "@opam/re@opam:1.10.4@c4910ba6",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "@opam/reason@opam:3.9.0@2a7c0e6f", "@opam/re@opam:1.11.0@87deb463",
+ "@opam/dune@opam:3.14.0@bfa03801"
],
"devDependencies": []
},
@@ -4265,7 +4252,7 @@
"overrides": [],
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/reason@opam:3.9.0@2a7c0e6f",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "@opam/dune@opam:3.14.0@bfa03801"
],
"devDependencies": [ "ocaml@4.14.1000@d41d8cd9" ]
},
@@ -4283,61 +4270,61 @@
"dependencies": [
"ocaml@4.14.1000@d41d8cd9",
"@reason-native/pastel@github:reasonml/reason-native:pastel.json#a0ddab6ab25237961e32d8732b0a222ec2372d4a@d41d8cd9",
- "@opam/reason@opam:3.9.0@2a7c0e6f", "@opam/re@opam:1.10.4@c4910ba6",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "@opam/reason@opam:3.9.0@2a7c0e6f", "@opam/re@opam:1.11.0@87deb463",
+ "@opam/dune@opam:3.14.0@bfa03801"
],
"devDependencies": []
},
- "@opam/yojson@opam:2.1.0@157478b0": {
- "id": "@opam/yojson@opam:2.1.0@157478b0",
+ "@opam/yojson@opam:2.1.2@9fd14300": {
+ "id": "@opam/yojson@opam:2.1.2@9fd14300",
"name": "@opam/yojson",
- "version": "opam:2.1.0",
+ "version": "opam:2.1.2",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/9f/9fcb1ff2db58ab259f9228796b0ada4794eae97177b1833371380c4e4f90b15d#sha256:9fcb1ff2db58ab259f9228796b0ada4794eae97177b1833371380c4e4f90b15d",
- "archive:https://github.com/ocaml-community/yojson/releases/download/2.1.0/yojson-2.1.0.tbz#sha256:9fcb1ff2db58ab259f9228796b0ada4794eae97177b1833371380c4e4f90b15d"
+ "archive:https://opam.ocaml.org/cache/sha256/59/59f2f1abbfc8a7ccbdbf608894e5c75e8a76006e34899254446f83e200dfb4f9#sha256:59f2f1abbfc8a7ccbdbf608894e5c75e8a76006e34899254446f83e200dfb4f9",
+ "archive:https://github.com/ocaml-community/yojson/releases/download/2.1.2/yojson-2.1.2.tbz#sha256:59f2f1abbfc8a7ccbdbf608894e5c75e8a76006e34899254446f83e200dfb4f9"
],
"opam": {
"name": "yojson",
- "version": "2.1.0",
- "path": "esy.lock/opam/yojson.2.1.0"
+ "version": "2.1.2",
+ "path": "esy.lock/opam/yojson.2.1.2"
}
},
"overrides": [],
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d",
- "@opam/dune@opam:3.10.0@d5991a42", "@opam/cppo@opam:1.6.9@db929a12",
+ "@opam/dune@opam:3.14.0@bfa03801", "@opam/cppo@opam:1.6.9@db929a12",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/xdg@opam:3.10.0@620c5589": {
- "id": "@opam/xdg@opam:3.10.0@620c5589",
+ "@opam/xdg@opam:3.14.0@c69773d6": {
+ "id": "@opam/xdg@opam:3.14.0@c69773d6",
"name": "@opam/xdg",
- "version": "opam:3.10.0",
+ "version": "opam:3.14.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/9f/9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355",
- "archive:https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
+ "archive:https://opam.ocaml.org/cache/sha256/f4/f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc",
+ "archive:https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
],
"opam": {
"name": "xdg",
- "version": "3.10.0",
- "path": "esy.lock/opam/xdg.3.10.0"
+ "version": "3.14.0",
+ "path": "esy.lock/opam/xdg.3.14.0"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/uutf@opam:1.0.3@47c95a18": {
@@ -4360,38 +4347,38 @@
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/topkg@opam:1.0.7@7ee47d76",
"@opam/ocamlfind@opam:1.9.6@da5169c7",
- "@opam/ocamlbuild@opam:0.14.2+win@39b9f56d",
+ "@opam/ocamlbuild@opam:0.14.3@6ab20ab3",
"@opam/cmdliner@opam:1.0.4@93208aac",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [ "ocaml@4.14.1000@d41d8cd9" ]
},
- "@opam/tyxml@opam:4.5.0@0a609297": {
- "id": "@opam/tyxml@opam:4.5.0@0a609297",
+ "@opam/tyxml@opam:4.6.0@5ced2c2c": {
+ "id": "@opam/tyxml@opam:4.6.0@5ced2c2c",
"name": "@opam/tyxml",
- "version": "opam:4.5.0",
+ "version": "opam:4.6.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/c6/c69accef5df4dd89d38f6aa0baad01e8fda4e9e98bb7dad61bec1452c5716068#sha256:c69accef5df4dd89d38f6aa0baad01e8fda4e9e98bb7dad61bec1452c5716068",
- "archive:https://github.com/ocsigen/tyxml/releases/download/4.5.0/tyxml-4.5.0.tbz#sha256:c69accef5df4dd89d38f6aa0baad01e8fda4e9e98bb7dad61bec1452c5716068"
+ "archive:https://opam.ocaml.org/cache/sha256/bf/bfeb673c6b4e120a4eca4c48448add47dc3f8d02c2b40f63ffdccc4e91c902dd#sha256:bfeb673c6b4e120a4eca4c48448add47dc3f8d02c2b40f63ffdccc4e91c902dd",
+ "archive:https://github.com/ocsigen/tyxml/releases/download/4.6.0/tyxml-4.6.0.tbz#sha256:bfeb673c6b4e120a4eca4c48448add47dc3f8d02c2b40f63ffdccc4e91c902dd"
],
"opam": {
"name": "tyxml",
- "version": "4.5.0",
- "path": "esy.lock/opam/tyxml.4.5.0"
+ "version": "4.6.0",
+ "path": "esy.lock/opam/tyxml.4.6.0"
}
},
"overrides": [],
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/uutf@opam:1.0.3@47c95a18",
- "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.10.4@c4910ba6",
- "@opam/dune@opam:3.10.0@d5991a42", "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.11.0@87deb463",
+ "@opam/dune@opam:3.14.0@bfa03801", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/uutf@opam:1.0.3@47c95a18",
- "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.10.4@c4910ba6",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.11.0@87deb463",
+ "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/topkg@opam:1.0.7@7ee47d76": {
@@ -4413,43 +4400,42 @@
"overrides": [],
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/ocamlfind@opam:1.9.6@da5169c7",
- "@opam/ocamlbuild@opam:0.14.2+win@39b9f56d",
+ "@opam/ocamlbuild@opam:0.14.3@6ab20ab3",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9",
- "@opam/ocamlbuild@opam:0.14.2+win@39b9f56d"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.3@6ab20ab3"
]
},
- "@opam/stdune@opam:3.10.0@7e2a8959": {
- "id": "@opam/stdune@opam:3.10.0@7e2a8959",
+ "@opam/stdune@opam:3.14.0@45da491f": {
+ "id": "@opam/stdune@opam:3.14.0@45da491f",
"name": "@opam/stdune",
- "version": "opam:3.10.0",
+ "version": "opam:3.14.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/9f/9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355",
- "archive:https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
+ "archive:https://opam.ocaml.org/cache/sha256/f4/f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc",
+ "archive:https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
],
"opam": {
"name": "stdune",
- "version": "3.10.0",
- "path": "esy.lock/opam/stdune.3.10.0"
+ "version": "3.14.0",
+ "path": "esy.lock/opam/stdune.3.14.0"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/pp@opam:1.1.2@89ad03b5",
- "@opam/ordering@opam:3.10.0@eade5884",
- "@opam/dyn@opam:3.10.0@0fc13d1c", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/pp@opam:1.2.0@16430027",
+ "@opam/ordering@opam:3.14.0@5506a75a",
+ "@opam/dyn@opam:3.14.0@fdb13680", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/csexp@opam:1.5.2@46614bf4",
"@opam/base-unix@opam:base@87d0b2eb",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/pp@opam:1.1.2@89ad03b5",
- "@opam/ordering@opam:3.10.0@eade5884",
- "@opam/dyn@opam:3.10.0@0fc13d1c", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/pp@opam:1.2.0@16430027",
+ "@opam/ordering@opam:3.14.0@5506a75a",
+ "@opam/dyn@opam:3.14.0@fdb13680", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/csexp@opam:1.5.2@46614bf4",
"@opam/base-unix@opam:base@87d0b2eb"
]
@@ -4472,11 +4458,11 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/spawn@opam:v0.15.1@85e9d6f1": {
@@ -4497,11 +4483,11 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/sexplib0@opam:v0.16.0@c0ffad0c": {
@@ -4522,11 +4508,11 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/seq@opam:base@d8d7de1d": {
@@ -4566,11 +4552,11 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/reason@opam:3.9.0@2a7c0e6f": {
@@ -4595,65 +4581,96 @@
}
],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/ppxlib@opam:0.29.1@a8bb9506",
+ "ocaml@4.14.1000@d41d8cd9",
+ "@opam/ppxlib@opam:0.32.1~5.2preview@4c456794",
"@opam/ppx_derivers@opam:1.2.1@e2cbad12",
"@opam/ocamlfind@opam:1.9.6@da5169c7",
"@opam/merlin-extend@opam:0.6.1@7d979feb",
- "@opam/menhir@opam:20230608@c0081728",
+ "@opam/menhir@opam:20231231@f35eae6a",
"@opam/fix@opam:20230505@941a65ff",
- "@opam/dune-build-info@opam:3.10.0@457c29c8",
- "@opam/dune@opam:3.10.0@d5991a42", "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ "@opam/dune-build-info@opam:3.14.0@4ff7c5a2",
+ "@opam/dune@opam:3.14.0@bfa03801", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/ppxlib@opam:0.29.1@a8bb9506",
+ "ocaml@4.14.1000@d41d8cd9",
+ "@opam/ppxlib@opam:0.32.1~5.2preview@4c456794",
"@opam/ppx_derivers@opam:1.2.1@e2cbad12",
"@opam/merlin-extend@opam:0.6.1@7d979feb",
- "@opam/menhir@opam:20230608@c0081728",
+ "@opam/menhir@opam:20231231@f35eae6a",
"@opam/fix@opam:20230505@941a65ff",
- "@opam/dune-build-info@opam:3.10.0@457c29c8",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "@opam/dune-build-info@opam:3.14.0@4ff7c5a2",
+ "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/re@opam:1.10.4@c4910ba6": {
- "id": "@opam/re@opam:1.10.4@c4910ba6",
+ "@opam/re@opam:1.11.0@87deb463": {
+ "id": "@opam/re@opam:1.11.0@87deb463",
"name": "@opam/re",
- "version": "opam:1.10.4",
+ "version": "opam:1.11.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/83/83eb3e4300aa9b1dc7820749010f4362ea83524742130524d78c20ce99ca747c#sha256:83eb3e4300aa9b1dc7820749010f4362ea83524742130524d78c20ce99ca747c",
- "archive:https://github.com/ocaml/ocaml-re/releases/download/1.10.4/re-1.10.4.tbz#sha256:83eb3e4300aa9b1dc7820749010f4362ea83524742130524d78c20ce99ca747c"
+ "archive:https://opam.ocaml.org/cache/sha256/01/01fc244780c0f6be72ae796b1fb750f367de18624fd75d07ee79782ed6df8d4f#sha256:01fc244780c0f6be72ae796b1fb750f367de18624fd75d07ee79782ed6df8d4f",
+ "archive:https://github.com/ocaml/ocaml-re/releases/download/1.11.0/re-1.11.0.tbz#sha256:01fc244780c0f6be72ae796b1fb750f367de18624fd75d07ee79782ed6df8d4f"
],
"opam": {
"name": "re",
- "version": "1.10.4",
- "path": "esy.lock/opam/re.1.10.4"
+ "version": "1.11.0",
+ "path": "esy.lock/opam/re.1.11.0"
}
},
"overrides": [],
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d",
- "@opam/dune@opam:3.10.0@d5991a42", "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ "@opam/dune@opam:3.14.0@bfa03801", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/ppxlib@opam:0.29.1@a8bb9506": {
- "id": "@opam/ppxlib@opam:0.29.1@a8bb9506",
+ "@opam/ptime@opam:1.1.0@d6f12219": {
+ "id": "@opam/ptime@opam:1.1.0@d6f12219",
+ "name": "@opam/ptime",
+ "version": "opam:1.1.0",
+ "source": {
+ "type": "install",
+ "source": [
+ "archive:https://opam.ocaml.org/cache/sha512/30/309b8383f61b58840e58a82802ec8fbc61b7cc95a4590d38ad427e484cbaaf66f03fa8e6484b5b6855468a87e745aed103bf6f1041ec05062230a9fa5fb86cc6#sha512:309b8383f61b58840e58a82802ec8fbc61b7cc95a4590d38ad427e484cbaaf66f03fa8e6484b5b6855468a87e745aed103bf6f1041ec05062230a9fa5fb86cc6",
+ "archive:https://erratique.ch/software/ptime/releases/ptime-1.1.0.tbz#sha512:309b8383f61b58840e58a82802ec8fbc61b7cc95a4590d38ad427e484cbaaf66f03fa8e6484b5b6855468a87e745aed103bf6f1041ec05062230a9fa5fb86cc6"
+ ],
+ "opam": {
+ "name": "ptime",
+ "version": "1.1.0",
+ "path": "esy.lock/opam/ptime.1.1.0"
+ }
+ },
+ "overrides": [
+ {
+ "opamoverride": "esy.lock/overrides/opam__s__ptime_opam__c__1.1.0_opam_override"
+ }
+ ],
+ "dependencies": [
+ "ocaml@4.14.1000@d41d8cd9", "@opam/topkg@opam:1.0.7@7ee47d76",
+ "@opam/ocamlfind@opam:1.9.6@da5169c7",
+ "@opam/ocamlbuild@opam:0.14.3@6ab20ab3",
+ "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ ],
+ "devDependencies": [ "ocaml@4.14.1000@d41d8cd9" ]
+ },
+ "@opam/ppxlib@opam:0.32.1~5.2preview@4c456794": {
+ "id": "@opam/ppxlib@opam:0.32.1~5.2preview@4c456794",
"name": "@opam/ppxlib",
- "version": "opam:0.29.1",
+ "version": "opam:0.32.1~5.2preview",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/c8/c8ea8c8770414fdba6612e7f2d814b21a493daa974ea862a90c8e6c766e5dd79#sha256:c8ea8c8770414fdba6612e7f2d814b21a493daa974ea862a90c8e6c766e5dd79",
- "archive:https://github.com/ocaml-ppx/ppxlib/releases/download/0.29.1/ppxlib-0.29.1.tbz#sha256:c8ea8c8770414fdba6612e7f2d814b21a493daa974ea862a90c8e6c766e5dd79"
+ "archive:https://opam.ocaml.org/cache/sha256/71/71c606dc9214769e5ea767b65559ae1d8296f5096dac30bd9ef91f645f1f60a3#sha256:71c606dc9214769e5ea767b65559ae1d8296f5096dac30bd9ef91f645f1f60a3",
+ "archive:https://github.com/ocaml-ppx/ppxlib/archive/51851b4f9b18fe75a0bc24c383d5843855de87e3.tar.gz#sha256:71c606dc9214769e5ea767b65559ae1d8296f5096dac30bd9ef91f645f1f60a3"
],
"opam": {
"name": "ppxlib",
- "version": "0.29.1",
- "path": "esy.lock/opam/ppxlib.0.29.1"
+ "version": "0.32.1~5.2preview",
+ "path": "esy.lock/opam/ppxlib.0.32.1~5.2preview"
}
},
"overrides": [],
@@ -4661,15 +4678,15 @@
"ocaml@4.14.1000@d41d8cd9", "@opam/stdlib-shims@opam:0.3.0@72c7bc98",
"@opam/sexplib0@opam:v0.16.0@c0ffad0c",
"@opam/ppx_derivers@opam:1.2.1@e2cbad12",
- "@opam/ocaml-compiler-libs@opam:v0.12.4@41979882",
- "@opam/dune@opam:3.10.0@d5991a42", "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ "@opam/ocaml-compiler-libs@opam:v0.12.4@57a85ad1",
+ "@opam/dune@opam:3.14.0@bfa03801", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/stdlib-shims@opam:0.3.0@72c7bc98",
"@opam/sexplib0@opam:v0.16.0@c0ffad0c",
"@opam/ppx_derivers@opam:1.2.1@e2cbad12",
- "@opam/ocaml-compiler-libs@opam:v0.12.4@41979882",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "@opam/ocaml-compiler-libs@opam:v0.12.4@57a85ad1",
+ "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/ppx_yojson_conv_lib@opam:v0.16.0@33740c3c": {
@@ -4690,12 +4707,12 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.0@157478b0",
- "@opam/dune@opam:3.10.0@d5991a42", "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300",
+ "@opam/dune@opam:3.14.0@bfa03801", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.0@157478b0",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300",
+ "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/ppx_derivers@opam:1.2.1@e2cbad12": {
@@ -4716,154 +4733,156 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/pp@opam:1.1.2@89ad03b5": {
- "id": "@opam/pp@opam:1.1.2@89ad03b5",
+ "@opam/pp@opam:1.2.0@16430027": {
+ "id": "@opam/pp@opam:1.2.0@16430027",
"name": "@opam/pp",
- "version": "opam:1.1.2",
+ "version": "opam:1.2.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/e4/e4a4e98d96b1bb76950fcd6da4e938c86d989df4d7e48f02f7a44595f5af1d56#sha256:e4a4e98d96b1bb76950fcd6da4e938c86d989df4d7e48f02f7a44595f5af1d56",
- "archive:https://github.com/ocaml-dune/pp/releases/download/1.1.2/pp-1.1.2.tbz#sha256:e4a4e98d96b1bb76950fcd6da4e938c86d989df4d7e48f02f7a44595f5af1d56"
+ "archive:https://opam.ocaml.org/cache/sha256/a5/a5e822573c55afb42db29ec56eacd1f2acd8f65cf2df2878e291de374ce6909c#sha256:a5e822573c55afb42db29ec56eacd1f2acd8f65cf2df2878e291de374ce6909c",
+ "archive:https://github.com/ocaml-dune/pp/releases/download/1.2.0/pp-1.2.0.tbz#sha256:a5e822573c55afb42db29ec56eacd1f2acd8f65cf2df2878e291de374ce6909c"
],
"opam": {
"name": "pp",
- "version": "1.1.2",
- "path": "esy.lock/opam/pp.1.1.2"
+ "version": "1.2.0",
+ "path": "esy.lock/opam/pp.1.2.0"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/ordering@opam:3.10.0@eade5884": {
- "id": "@opam/ordering@opam:3.10.0@eade5884",
+ "@opam/ordering@opam:3.14.0@5506a75a": {
+ "id": "@opam/ordering@opam:3.14.0@5506a75a",
"name": "@opam/ordering",
- "version": "opam:3.10.0",
+ "version": "opam:3.14.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/9f/9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355",
- "archive:https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
+ "archive:https://opam.ocaml.org/cache/sha256/f4/f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc",
+ "archive:https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
],
"opam": {
"name": "ordering",
- "version": "3.10.0",
- "path": "esy.lock/opam/ordering.3.10.0"
+ "version": "3.14.0",
+ "path": "esy.lock/opam/ordering.3.14.0"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/odoc-parser@opam:2.0.0@a08011a0": {
- "id": "@opam/odoc-parser@opam:2.0.0@a08011a0",
+ "@opam/odoc-parser@opam:2.4.1@38222354": {
+ "id": "@opam/odoc-parser@opam:2.4.1@38222354",
"name": "@opam/odoc-parser",
- "version": "opam:2.0.0",
+ "version": "opam:2.4.1",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/40/407919fbb0eb95761d6fc6ec6777628d94aa1907343bdca678b1880bafb33922#sha256:407919fbb0eb95761d6fc6ec6777628d94aa1907343bdca678b1880bafb33922",
- "archive:https://github.com/ocaml-doc/odoc-parser/releases/download/2.0.0/odoc-parser-2.0.0.tbz#sha256:407919fbb0eb95761d6fc6ec6777628d94aa1907343bdca678b1880bafb33922"
+ "archive:https://opam.ocaml.org/cache/sha256/b8/b814a0b9020b503eb67f17d1d9a969d052b63d8cdc7cdfa5fb793b137558cedb#sha256:b814a0b9020b503eb67f17d1d9a969d052b63d8cdc7cdfa5fb793b137558cedb",
+ "archive:https://github.com/ocaml/odoc/releases/download/2.4.1/odoc-2.4.1.tbz#sha256:b814a0b9020b503eb67f17d1d9a969d052b63d8cdc7cdfa5fb793b137558cedb"
],
"opam": {
"name": "odoc-parser",
- "version": "2.0.0",
- "path": "esy.lock/opam/odoc-parser.2.0.0"
+ "version": "2.4.1",
+ "path": "esy.lock/opam/odoc-parser.2.4.1"
}
},
"overrides": [],
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/result@opam:1.5@1c6a6533",
- "@opam/dune@opam:3.10.0@d5991a42",
+ "@opam/dune@opam:3.14.0@bfa03801",
"@opam/camlp-streams@opam:5.0.1@daaa0f94",
"@opam/astring@opam:0.8.5@1300cee8",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/result@opam:1.5@1c6a6533",
- "@opam/dune@opam:3.10.0@d5991a42",
+ "@opam/dune@opam:3.14.0@bfa03801",
"@opam/camlp-streams@opam:5.0.1@daaa0f94",
"@opam/astring@opam:0.8.5@1300cee8"
]
},
- "@opam/odoc@opam:2.2.1@3e6e45b8": {
- "id": "@opam/odoc@opam:2.2.1@3e6e45b8",
+ "@opam/odoc@opam:2.4.1@58f09945": {
+ "id": "@opam/odoc@opam:2.4.1@58f09945",
"name": "@opam/odoc",
- "version": "opam:2.2.1",
+ "version": "opam:2.4.1",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/17/1786e53bf0824fe1c7c7b81d2a7d846846a5d11677969e6396361f77a3816803#sha256:1786e53bf0824fe1c7c7b81d2a7d846846a5d11677969e6396361f77a3816803",
- "archive:https://github.com/ocaml/odoc/releases/download/2.2.1/odoc-2.2.1.tbz#sha256:1786e53bf0824fe1c7c7b81d2a7d846846a5d11677969e6396361f77a3816803"
+ "archive:https://opam.ocaml.org/cache/sha256/b8/b814a0b9020b503eb67f17d1d9a969d052b63d8cdc7cdfa5fb793b137558cedb#sha256:b814a0b9020b503eb67f17d1d9a969d052b63d8cdc7cdfa5fb793b137558cedb",
+ "archive:https://github.com/ocaml/odoc/releases/download/2.4.1/odoc-2.4.1.tbz#sha256:b814a0b9020b503eb67f17d1d9a969d052b63d8cdc7cdfa5fb793b137558cedb"
],
"opam": {
"name": "odoc",
- "version": "2.2.1",
- "path": "esy.lock/opam/odoc.2.2.1"
+ "version": "2.4.1",
+ "path": "esy.lock/opam/odoc.2.4.1"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/tyxml@opam:4.5.0@0a609297",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/tyxml@opam:4.6.0@5ced2c2c",
"@opam/result@opam:1.5@1c6a6533",
- "@opam/odoc-parser@opam:2.0.0@a08011a0",
+ "@opam/odoc-parser@opam:2.4.1@38222354",
"@opam/fpath@opam:0.7.3@674d8125", "@opam/fmt@opam:0.9.0@87213963",
- "@opam/dune@opam:3.10.0@d5991a42", "@opam/cppo@opam:1.6.9@db929a12",
+ "@opam/dune@opam:3.14.0@bfa03801",
+ "@opam/crunch@opam:3.2.0@832f19f8", "@opam/cppo@opam:1.6.9@db929a12",
"@opam/cmdliner@opam:1.0.4@93208aac",
"@opam/astring@opam:0.8.5@1300cee8",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/tyxml@opam:4.5.0@0a609297",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/tyxml@opam:4.6.0@5ced2c2c",
"@opam/result@opam:1.5@1c6a6533",
- "@opam/odoc-parser@opam:2.0.0@a08011a0",
+ "@opam/odoc-parser@opam:2.4.1@38222354",
"@opam/fpath@opam:0.7.3@674d8125", "@opam/fmt@opam:0.9.0@87213963",
- "@opam/dune@opam:3.10.0@d5991a42",
+ "@opam/dune@opam:3.14.0@bfa03801",
+ "@opam/crunch@opam:3.2.0@832f19f8",
"@opam/cmdliner@opam:1.0.4@93208aac",
"@opam/astring@opam:0.8.5@1300cee8"
]
},
- "@opam/ocamlformat-rpc-lib@opam:0.26.0@ba3de905": {
- "id": "@opam/ocamlformat-rpc-lib@opam:0.26.0@ba3de905",
+ "@opam/ocamlformat-rpc-lib@opam:0.26.1@1f552fda": {
+ "id": "@opam/ocamlformat-rpc-lib@opam:0.26.1@1f552fda",
"name": "@opam/ocamlformat-rpc-lib",
- "version": "opam:0.26.0",
+ "version": "opam:0.26.1",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/03/031494ab770cef10a8f6aa1cbeb5660e46c3aa6c0cd457b110fec859a75e877d#sha256:031494ab770cef10a8f6aa1cbeb5660e46c3aa6c0cd457b110fec859a75e877d",
- "archive:https://github.com/ocaml-ppx/ocamlformat/releases/download/0.26.0/ocamlformat-0.26.0.tbz#sha256:031494ab770cef10a8f6aa1cbeb5660e46c3aa6c0cd457b110fec859a75e877d"
+ "archive:https://opam.ocaml.org/cache/sha256/da/da006e427f15b9ec612fb808d446599bd9b7c3ee25abeb3d555747a70d74c6d7#sha256:da006e427f15b9ec612fb808d446599bd9b7c3ee25abeb3d555747a70d74c6d7",
+ "archive:https://github.com/ocaml-ppx/ocamlformat/releases/download/0.26.1/ocamlformat-0.26.1.tbz#sha256:da006e427f15b9ec612fb808d446599bd9b7c3ee25abeb3d555747a70d74c6d7"
],
"opam": {
"name": "ocamlformat-rpc-lib",
- "version": "0.26.0",
- "path": "esy.lock/opam/ocamlformat-rpc-lib.0.26.0"
+ "version": "0.26.1",
+ "path": "esy.lock/opam/ocamlformat-rpc-lib.0.26.1"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/csexp@opam:1.5.2@46614bf4", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/csexp@opam:1.5.2@46614bf4"
]
},
@@ -4893,122 +4912,117 @@
],
"devDependencies": [ "ocaml@4.14.1000@d41d8cd9" ]
},
- "@opam/ocamlc-loc@opam:3.10.0@10088627": {
- "id": "@opam/ocamlc-loc@opam:3.10.0@10088627",
+ "@opam/ocamlc-loc@opam:3.14.0@ed3b75f7": {
+ "id": "@opam/ocamlc-loc@opam:3.14.0@ed3b75f7",
"name": "@opam/ocamlc-loc",
- "version": "opam:3.10.0",
+ "version": "opam:3.14.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/9f/9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355",
- "archive:https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
+ "archive:https://opam.ocaml.org/cache/sha256/f4/f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc",
+ "archive:https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
],
"opam": {
"name": "ocamlc-loc",
- "version": "3.10.0",
- "path": "esy.lock/opam/ocamlc-loc.3.10.0"
+ "version": "3.14.0",
+ "path": "esy.lock/opam/ocamlc-loc.3.14.0"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dyn@opam:3.10.0@0fc13d1c",
- "@opam/dune@opam:3.10.0@d5991a42", "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dyn@opam:3.14.0@fdb13680",
+ "@opam/dune@opam:3.14.0@bfa03801", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dyn@opam:3.10.0@0fc13d1c",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dyn@opam:3.14.0@fdb13680",
+ "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/ocamlbuild@opam:0.14.2+win@39b9f56d": {
- "id": "@opam/ocamlbuild@opam:0.14.2+win@39b9f56d",
+ "@opam/ocamlbuild@opam:0.14.3@6ab20ab3": {
+ "id": "@opam/ocamlbuild@opam:0.14.3@6ab20ab3",
"name": "@opam/ocamlbuild",
- "version": "opam:0.14.2+win",
+ "version": "opam:0.14.3",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/md5/2f/2f407fadd57b073155a6aead887d9676#md5:2f407fadd57b073155a6aead887d9676",
- "archive:https://github.com/ocaml/ocamlbuild/archive/refs/tags/0.14.2.tar.gz#md5:2f407fadd57b073155a6aead887d9676"
+ "archive:https://opam.ocaml.org/cache/md5/22/220df59060c916e8aac2eb471c870485#md5:220df59060c916e8aac2eb471c870485",
+ "archive:https://github.com/ocaml/ocamlbuild/archive/refs/tags/0.14.3.tar.gz#md5:220df59060c916e8aac2eb471c870485"
],
"opam": {
"name": "ocamlbuild",
- "version": "0.14.2+win",
- "path": "esy.lock/opam/ocamlbuild.0.14.2+win"
+ "version": "0.14.3",
+ "path": "esy.lock/opam/ocamlbuild.0.14.3"
}
},
"overrides": [
{
- "opamoverride": "esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.2+win_opam_override"
+ "opamoverride": "esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override"
}
],
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
- "devDependencies": [ "ocaml@4.14.1000@d41d8cd9" ],
- "extraSources": [
- {
- "checksum": "sha256:a9b7e1829a3304e5a073d8ddea29d3d8272698e93b7e1ee659ae5e31e5cfb6b9",
- "url": "https://raw.githubusercontent.com/ocaml-opam/opam-repository-mingw/354a87b397856f2a70024c5c83fc5001074935b6/packages/ocamlbuild/ocamlbuild.0.14.2/files/ocamlbuild-0.14.2.patch",
- "relativePath": "ocamlbuild-0.14.2.patch"
- }
- ]
+ "devDependencies": [ "ocaml@4.14.1000@d41d8cd9" ]
},
- "@opam/ocaml-lsp-server@opam:1.16.2@1425cb09": {
- "id": "@opam/ocaml-lsp-server@opam:1.16.2@1425cb09",
+ "@opam/ocaml-lsp-server@opam:1.17.0@12f65153": {
+ "id": "@opam/ocaml-lsp-server@opam:1.17.0@12f65153",
"name": "@opam/ocaml-lsp-server",
- "version": "opam:1.16.2",
+ "version": "opam:1.17.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/14/1487d5a4e2f2d4f023341058551bdb8ba86c23367b7c5b4fdda3aa7dc02aaec4#sha256:1487d5a4e2f2d4f023341058551bdb8ba86c23367b7c5b4fdda3aa7dc02aaec4",
- "archive:https://github.com/ocaml/ocaml-lsp/releases/download/1.16.2/lsp-1.16.2.tbz#sha256:1487d5a4e2f2d4f023341058551bdb8ba86c23367b7c5b4fdda3aa7dc02aaec4"
+ "archive:https://opam.ocaml.org/cache/sha256/8f/8fb8bbd717eefd2608b4d83458105b660e0de3a1134dc8fc216ae659d4d19600#sha256:8fb8bbd717eefd2608b4d83458105b660e0de3a1134dc8fc216ae659d4d19600",
+ "archive:https://github.com/ocaml/ocaml-lsp/releases/download/1.17.0/lsp-1.17.0.tbz#sha256:8fb8bbd717eefd2608b4d83458105b660e0de3a1134dc8fc216ae659d4d19600"
],
"opam": {
"name": "ocaml-lsp-server",
- "version": "1.16.2",
- "path": "esy.lock/opam/ocaml-lsp-server.1.16.2"
+ "version": "1.17.0",
+ "path": "esy.lock/opam/ocaml-lsp-server.1.17.0"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.0@157478b0",
- "@opam/xdg@opam:3.10.0@620c5589", "@opam/uutf@opam:1.0.3@47c95a18",
- "@opam/stdune@opam:3.10.0@7e2a8959",
- "@opam/spawn@opam:v0.15.1@85e9d6f1", "@opam/re@opam:1.10.4@c4910ba6",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300",
+ "@opam/xdg@opam:3.14.0@c69773d6", "@opam/uutf@opam:1.0.3@47c95a18",
+ "@opam/stdune@opam:3.14.0@45da491f",
+ "@opam/spawn@opam:v0.15.1@85e9d6f1", "@opam/re@opam:1.11.0@87deb463",
"@opam/ppx_yojson_conv_lib@opam:v0.16.0@33740c3c",
- "@opam/pp@opam:1.1.2@89ad03b5",
- "@opam/ordering@opam:3.10.0@eade5884",
- "@opam/odoc-parser@opam:2.0.0@a08011a0",
- "@opam/ocamlformat-rpc-lib@opam:0.26.0@ba3de905",
- "@opam/ocamlc-loc@opam:3.10.0@10088627",
- "@opam/merlin-lib@opam:4.9-414@16618f99",
- "@opam/fiber@opam:3.7.0@d70e2471", "@opam/dyn@opam:3.10.0@0fc13d1c",
- "@opam/dune-rpc@opam:3.10.0@c0378e53",
- "@opam/dune-build-info@opam:3.10.0@457c29c8",
- "@opam/dune@opam:3.10.0@d5991a42", "@opam/csexp@opam:1.5.2@46614bf4",
- "@opam/chrome-trace@opam:3.10.0@62089f3e",
+ "@opam/pp@opam:1.2.0@16430027",
+ "@opam/ordering@opam:3.14.0@5506a75a",
+ "@opam/ocamlformat-rpc-lib@opam:0.26.1@1f552fda",
+ "@opam/ocamlc-loc@opam:3.14.0@ed3b75f7",
+ "@opam/merlin-lib@opam:4.13-414@05ab671e",
+ "@opam/fiber@opam:3.7.0@d70e2471", "@opam/dyn@opam:3.14.0@fdb13680",
+ "@opam/dune-rpc@opam:3.14.0@32a56211",
+ "@opam/dune-build-info@opam:3.14.0@4ff7c5a2",
+ "@opam/dune@opam:3.14.0@bfa03801", "@opam/csexp@opam:1.5.2@46614bf4",
+ "@opam/chrome-trace@opam:3.14.0@dcad8740",
+ "@opam/camlp-streams@opam:5.0.1@daaa0f94",
+ "@opam/astring@opam:0.8.5@1300cee8",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.0@157478b0",
- "@opam/xdg@opam:3.10.0@620c5589", "@opam/uutf@opam:1.0.3@47c95a18",
- "@opam/stdune@opam:3.10.0@7e2a8959",
- "@opam/spawn@opam:v0.15.1@85e9d6f1", "@opam/re@opam:1.10.4@c4910ba6",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300",
+ "@opam/xdg@opam:3.14.0@c69773d6", "@opam/uutf@opam:1.0.3@47c95a18",
+ "@opam/stdune@opam:3.14.0@45da491f",
+ "@opam/spawn@opam:v0.15.1@85e9d6f1", "@opam/re@opam:1.11.0@87deb463",
"@opam/ppx_yojson_conv_lib@opam:v0.16.0@33740c3c",
- "@opam/pp@opam:1.1.2@89ad03b5",
- "@opam/ordering@opam:3.10.0@eade5884",
- "@opam/odoc-parser@opam:2.0.0@a08011a0",
- "@opam/ocamlformat-rpc-lib@opam:0.26.0@ba3de905",
- "@opam/ocamlc-loc@opam:3.10.0@10088627",
- "@opam/merlin-lib@opam:4.9-414@16618f99",
- "@opam/fiber@opam:3.7.0@d70e2471", "@opam/dyn@opam:3.10.0@0fc13d1c",
- "@opam/dune-rpc@opam:3.10.0@c0378e53",
- "@opam/dune-build-info@opam:3.10.0@457c29c8",
- "@opam/dune@opam:3.10.0@d5991a42", "@opam/csexp@opam:1.5.2@46614bf4",
- "@opam/chrome-trace@opam:3.10.0@62089f3e"
+ "@opam/pp@opam:1.2.0@16430027",
+ "@opam/ordering@opam:3.14.0@5506a75a",
+ "@opam/ocamlformat-rpc-lib@opam:0.26.1@1f552fda",
+ "@opam/ocamlc-loc@opam:3.14.0@ed3b75f7",
+ "@opam/merlin-lib@opam:4.13-414@05ab671e",
+ "@opam/fiber@opam:3.7.0@d70e2471", "@opam/dyn@opam:3.14.0@fdb13680",
+ "@opam/dune-rpc@opam:3.14.0@32a56211",
+ "@opam/dune-build-info@opam:3.14.0@4ff7c5a2",
+ "@opam/dune@opam:3.14.0@bfa03801", "@opam/csexp@opam:1.5.2@46614bf4",
+ "@opam/chrome-trace@opam:3.14.0@dcad8740",
+ "@opam/camlp-streams@opam:5.0.1@daaa0f94",
+ "@opam/astring@opam:0.8.5@1300cee8"
]
},
- "@opam/ocaml-compiler-libs@opam:v0.12.4@41979882": {
- "id": "@opam/ocaml-compiler-libs@opam:v0.12.4@41979882",
+ "@opam/ocaml-compiler-libs@opam:v0.12.4@57a85ad1": {
+ "id": "@opam/ocaml-compiler-libs@opam:v0.12.4@57a85ad1",
"name": "@opam/ocaml-compiler-libs",
"version": "opam:v0.12.4",
"source": {
@@ -5025,36 +5039,36 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/merlin-lib@opam:4.9-414@16618f99": {
- "id": "@opam/merlin-lib@opam:4.9-414@16618f99",
+ "@opam/merlin-lib@opam:4.13-414@05ab671e": {
+ "id": "@opam/merlin-lib@opam:4.13-414@05ab671e",
"name": "@opam/merlin-lib",
- "version": "opam:4.9-414",
+ "version": "opam:4.13-414",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/e2/e23fc47813591269ff9d27c820988e520a662c89dd0af7ea652b21517499cbfd#sha256:e23fc47813591269ff9d27c820988e520a662c89dd0af7ea652b21517499cbfd",
- "archive:https://github.com/ocaml/merlin/releases/download/v4.9-414/merlin-4.9-414.tbz#sha256:e23fc47813591269ff9d27c820988e520a662c89dd0af7ea652b21517499cbfd"
+ "archive:https://opam.ocaml.org/cache/sha256/02/025cf1a93ba1e40916f5d9cf22fe7569bbfbaf403f54e4b724e4f92078b1db03#sha256:025cf1a93ba1e40916f5d9cf22fe7569bbfbaf403f54e4b724e4f92078b1db03",
+ "archive:https://github.com/ocaml/merlin/releases/download/v4.13-414/merlin-4.13-414.tbz#sha256:025cf1a93ba1e40916f5d9cf22fe7569bbfbaf403f54e4b724e4f92078b1db03"
],
"opam": {
"name": "merlin-lib",
- "version": "4.9-414",
- "path": "esy.lock/opam/merlin-lib.4.9-414"
+ "version": "4.13-414",
+ "path": "esy.lock/opam/merlin-lib.4.13-414"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/csexp@opam:1.5.2@46614bf4", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/csexp@opam:1.5.2@46614bf4"
]
},
@@ -5076,120 +5090,147 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/cppo@opam:1.6.9@db929a12", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/merlin@opam:4.9-414@e1587db3": {
- "id": "@opam/merlin@opam:4.9-414@e1587db3",
+ "@opam/merlin@opam:4.13-414@3f34cd37": {
+ "id": "@opam/merlin@opam:4.13-414@3f34cd37",
"name": "@opam/merlin",
- "version": "opam:4.9-414",
+ "version": "opam:4.13-414",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/e2/e23fc47813591269ff9d27c820988e520a662c89dd0af7ea652b21517499cbfd#sha256:e23fc47813591269ff9d27c820988e520a662c89dd0af7ea652b21517499cbfd",
- "archive:https://github.com/ocaml/merlin/releases/download/v4.9-414/merlin-4.9-414.tbz#sha256:e23fc47813591269ff9d27c820988e520a662c89dd0af7ea652b21517499cbfd"
+ "archive:https://opam.ocaml.org/cache/sha256/02/025cf1a93ba1e40916f5d9cf22fe7569bbfbaf403f54e4b724e4f92078b1db03#sha256:025cf1a93ba1e40916f5d9cf22fe7569bbfbaf403f54e4b724e4f92078b1db03",
+ "archive:https://github.com/ocaml/merlin/releases/download/v4.13-414/merlin-4.13-414.tbz#sha256:025cf1a93ba1e40916f5d9cf22fe7569bbfbaf403f54e4b724e4f92078b1db03"
],
"opam": {
"name": "merlin",
- "version": "4.9-414",
- "path": "esy.lock/opam/merlin.4.9-414"
+ "version": "4.13-414",
+ "path": "esy.lock/opam/merlin.4.13-414"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.0@157478b0",
- "@opam/merlin-lib@opam:4.9-414@16618f99",
- "@opam/dune@opam:3.10.0@d5991a42",
- "@opam/dot-merlin-reader@opam:4.9@5d77f68f",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300",
+ "@opam/merlin-lib@opam:4.13-414@05ab671e",
+ "@opam/dune@opam:3.14.0@bfa03801",
+ "@opam/dot-merlin-reader@opam:4.9@6b69f4a0",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.0@157478b0",
- "@opam/merlin-lib@opam:4.9-414@16618f99",
- "@opam/dune@opam:3.10.0@d5991a42",
- "@opam/dot-merlin-reader@opam:4.9@5d77f68f"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300",
+ "@opam/merlin-lib@opam:4.13-414@05ab671e",
+ "@opam/dune@opam:3.14.0@bfa03801",
+ "@opam/dot-merlin-reader@opam:4.9@6b69f4a0"
]
},
- "@opam/menhirSdk@opam:20230608@36f21a74": {
- "id": "@opam/menhirSdk@opam:20230608@36f21a74",
+ "@opam/menhirSdk@opam:20231231@b20b8a51": {
+ "id": "@opam/menhirSdk@opam:20231231@b20b8a51",
"name": "@opam/menhirSdk",
- "version": "opam:20230608",
+ "version": "opam:20231231",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/md5/8f/8ff26b1e3685c472b7b3aba2fe938a43#md5:8ff26b1e3685c472b7b3aba2fe938a43",
- "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20230608/archive.tar.gz#md5:8ff26b1e3685c472b7b3aba2fe938a43"
+ "archive:https://opam.ocaml.org/cache/md5/79/799748bc3b7a542798a85956c7863865#md5:799748bc3b7a542798a85956c7863865",
+ "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz#md5:799748bc3b7a542798a85956c7863865"
],
"opam": {
"name": "menhirSdk",
- "version": "20230608",
- "path": "esy.lock/opam/menhirSdk.20230608"
+ "version": "20231231",
+ "path": "esy.lock/opam/menhirSdk.20231231"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/menhirLib@opam:20230608@cf13bc0d": {
- "id": "@opam/menhirLib@opam:20230608@cf13bc0d",
+ "@opam/menhirLib@opam:20231231@14d79986": {
+ "id": "@opam/menhirLib@opam:20231231@14d79986",
"name": "@opam/menhirLib",
- "version": "opam:20230608",
+ "version": "opam:20231231",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/md5/8f/8ff26b1e3685c472b7b3aba2fe938a43#md5:8ff26b1e3685c472b7b3aba2fe938a43",
- "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20230608/archive.tar.gz#md5:8ff26b1e3685c472b7b3aba2fe938a43"
+ "archive:https://opam.ocaml.org/cache/md5/79/799748bc3b7a542798a85956c7863865#md5:799748bc3b7a542798a85956c7863865",
+ "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz#md5:799748bc3b7a542798a85956c7863865"
],
"opam": {
"name": "menhirLib",
- "version": "20230608",
- "path": "esy.lock/opam/menhirLib.20230608"
+ "version": "20231231",
+ "path": "esy.lock/opam/menhirLib.20231231"
+ }
+ },
+ "overrides": [],
+ "dependencies": [
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
+ "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ ],
+ "devDependencies": [
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
+ ]
+ },
+ "@opam/menhirCST@opam:20231231@0f42b5d1": {
+ "id": "@opam/menhirCST@opam:20231231@0f42b5d1",
+ "name": "@opam/menhirCST",
+ "version": "opam:20231231",
+ "source": {
+ "type": "install",
+ "source": [
+ "archive:https://opam.ocaml.org/cache/md5/79/799748bc3b7a542798a85956c7863865#md5:799748bc3b7a542798a85956c7863865",
+ "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz#md5:799748bc3b7a542798a85956c7863865"
+ ],
+ "opam": {
+ "name": "menhirCST",
+ "version": "20231231",
+ "path": "esy.lock/opam/menhirCST.20231231"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/menhir@opam:20230608@c0081728": {
- "id": "@opam/menhir@opam:20230608@c0081728",
+ "@opam/menhir@opam:20231231@f35eae6a": {
+ "id": "@opam/menhir@opam:20231231@f35eae6a",
"name": "@opam/menhir",
- "version": "opam:20230608",
+ "version": "opam:20231231",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/md5/8f/8ff26b1e3685c472b7b3aba2fe938a43#md5:8ff26b1e3685c472b7b3aba2fe938a43",
- "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20230608/archive.tar.gz#md5:8ff26b1e3685c472b7b3aba2fe938a43"
+ "archive:https://opam.ocaml.org/cache/md5/79/799748bc3b7a542798a85956c7863865#md5:799748bc3b7a542798a85956c7863865",
+ "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz#md5:799748bc3b7a542798a85956c7863865"
],
"opam": {
"name": "menhir",
- "version": "20230608",
- "path": "esy.lock/opam/menhir.20230608"
+ "version": "20231231",
+ "path": "esy.lock/opam/menhir.20231231"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/menhirSdk@opam:20230608@36f21a74",
- "@opam/menhirLib@opam:20230608@cf13bc0d",
- "@opam/dune@opam:3.10.0@d5991a42", "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/menhirSdk@opam:20231231@b20b8a51",
+ "@opam/menhirLib@opam:20231231@14d79986",
+ "@opam/menhirCST@opam:20231231@0f42b5d1",
+ "@opam/dune@opam:3.14.0@bfa03801", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/menhirSdk@opam:20230608@36f21a74",
- "@opam/menhirLib@opam:20230608@cf13bc0d",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/menhirSdk@opam:20231231@b20b8a51",
+ "@opam/menhirLib@opam:20231231@14d79986",
+ "@opam/menhirCST@opam:20231231@0f42b5d1",
+ "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/fpath@opam:0.7.3@674d8125": {
@@ -5212,7 +5253,7 @@
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/topkg@opam:1.0.7@7ee47d76",
"@opam/ocamlfind@opam:1.9.6@da5169c7",
- "@opam/ocamlbuild@opam:0.14.2+win@39b9f56d",
+ "@opam/ocamlbuild@opam:0.14.3@6ab20ab3",
"@opam/astring@opam:0.8.5@1300cee8",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
@@ -5240,7 +5281,7 @@
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/topkg@opam:1.0.7@7ee47d76",
"@opam/ocamlfind@opam:1.9.6@da5169c7",
- "@opam/ocamlbuild@opam:0.14.2+win@39b9f56d",
+ "@opam/ocamlbuild@opam:0.14.3@6ab20ab3",
"@opam/cmdliner@opam:1.0.4@93208aac",
"@opam/base-unix@opam:base@87d0b2eb",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
@@ -5265,11 +5306,11 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/fiber@opam:3.7.0@d70e2471": {
@@ -5290,17 +5331,17 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/stdune@opam:3.10.0@7e2a8959",
- "@opam/dyn@opam:3.10.0@0fc13d1c", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/stdune@opam:3.14.0@45da491f",
+ "@opam/dyn@opam:3.14.0@fdb13680", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/stdune@opam:3.10.0@7e2a8959",
- "@opam/dyn@opam:3.10.0@0fc13d1c", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/stdune@opam:3.14.0@45da491f",
+ "@opam/dyn@opam:3.14.0@fdb13680", "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/easy-format@opam:1.3.4@b358e98e": {
- "id": "@opam/easy-format@opam:1.3.4@b358e98e",
+ "@opam/easy-format@opam:1.3.4@21f6fe23": {
+ "id": "@opam/easy-format@opam:1.3.4@21f6fe23",
"name": "@opam/easy-format",
"version": "opam:1.3.4",
"source": {
@@ -5317,141 +5358,141 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/dyn@opam:3.10.0@0fc13d1c": {
- "id": "@opam/dyn@opam:3.10.0@0fc13d1c",
+ "@opam/dyn@opam:3.14.0@fdb13680": {
+ "id": "@opam/dyn@opam:3.14.0@fdb13680",
"name": "@opam/dyn",
- "version": "opam:3.10.0",
+ "version": "opam:3.14.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/9f/9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355",
- "archive:https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
+ "archive:https://opam.ocaml.org/cache/sha256/f4/f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc",
+ "archive:https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
],
"opam": {
"name": "dyn",
- "version": "3.10.0",
- "path": "esy.lock/opam/dyn.3.10.0"
+ "version": "3.14.0",
+ "path": "esy.lock/opam/dyn.3.14.0"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/pp@opam:1.1.2@89ad03b5",
- "@opam/ordering@opam:3.10.0@eade5884",
- "@opam/dune@opam:3.10.0@d5991a42", "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/pp@opam:1.2.0@16430027",
+ "@opam/ordering@opam:3.14.0@5506a75a",
+ "@opam/dune@opam:3.14.0@bfa03801", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/pp@opam:1.1.2@89ad03b5",
- "@opam/ordering@opam:3.10.0@eade5884",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/pp@opam:1.2.0@16430027",
+ "@opam/ordering@opam:3.14.0@5506a75a",
+ "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/dune-rpc@opam:3.10.0@c0378e53": {
- "id": "@opam/dune-rpc@opam:3.10.0@c0378e53",
+ "@opam/dune-rpc@opam:3.14.0@32a56211": {
+ "id": "@opam/dune-rpc@opam:3.14.0@32a56211",
"name": "@opam/dune-rpc",
- "version": "opam:3.10.0",
+ "version": "opam:3.14.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/9f/9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355",
- "archive:https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
+ "archive:https://opam.ocaml.org/cache/sha256/f4/f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc",
+ "archive:https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
],
"opam": {
"name": "dune-rpc",
- "version": "3.10.0",
- "path": "esy.lock/opam/dune-rpc.3.10.0"
+ "version": "3.14.0",
+ "path": "esy.lock/opam/dune-rpc.3.14.0"
}
},
"overrides": [],
"dependencies": [
- "@opam/xdg@opam:3.10.0@620c5589",
- "@opam/stdune@opam:3.10.0@7e2a8959", "@opam/pp@opam:1.1.2@89ad03b5",
- "@opam/ordering@opam:3.10.0@eade5884",
- "@opam/dyn@opam:3.10.0@0fc13d1c", "@opam/dune@opam:3.10.0@d5991a42",
+ "@opam/xdg@opam:3.14.0@c69773d6",
+ "@opam/stdune@opam:3.14.0@45da491f", "@opam/pp@opam:1.2.0@16430027",
+ "@opam/ordering@opam:3.14.0@5506a75a",
+ "@opam/dyn@opam:3.14.0@fdb13680", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/csexp@opam:1.5.2@46614bf4", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "@opam/xdg@opam:3.10.0@620c5589",
- "@opam/stdune@opam:3.10.0@7e2a8959", "@opam/pp@opam:1.1.2@89ad03b5",
- "@opam/ordering@opam:3.10.0@eade5884",
- "@opam/dyn@opam:3.10.0@0fc13d1c", "@opam/dune@opam:3.10.0@d5991a42",
+ "@opam/xdg@opam:3.14.0@c69773d6",
+ "@opam/stdune@opam:3.14.0@45da491f", "@opam/pp@opam:1.2.0@16430027",
+ "@opam/ordering@opam:3.14.0@5506a75a",
+ "@opam/dyn@opam:3.14.0@fdb13680", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/csexp@opam:1.5.2@46614bf4"
]
},
- "@opam/dune-configurator@opam:3.10.0@f2df97f2": {
- "id": "@opam/dune-configurator@opam:3.10.0@f2df97f2",
+ "@opam/dune-configurator@opam:3.14.0@aa6780d6": {
+ "id": "@opam/dune-configurator@opam:3.14.0@aa6780d6",
"name": "@opam/dune-configurator",
- "version": "opam:3.10.0",
+ "version": "opam:3.14.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/9f/9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355",
- "archive:https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
+ "archive:https://opam.ocaml.org/cache/sha256/f4/f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc",
+ "archive:https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
],
"opam": {
"name": "dune-configurator",
- "version": "3.10.0",
- "path": "esy.lock/opam/dune-configurator.3.10.0"
+ "version": "3.14.0",
+ "path": "esy.lock/opam/dune-configurator.3.14.0"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/csexp@opam:1.5.2@46614bf4",
"@opam/base-unix@opam:base@87d0b2eb",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/csexp@opam:1.5.2@46614bf4",
"@opam/base-unix@opam:base@87d0b2eb"
]
},
- "@opam/dune-build-info@opam:3.10.0@457c29c8": {
- "id": "@opam/dune-build-info@opam:3.10.0@457c29c8",
+ "@opam/dune-build-info@opam:3.14.0@4ff7c5a2": {
+ "id": "@opam/dune-build-info@opam:3.14.0@4ff7c5a2",
"name": "@opam/dune-build-info",
- "version": "opam:3.10.0",
+ "version": "opam:3.14.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/9f/9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355",
- "archive:https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
+ "archive:https://opam.ocaml.org/cache/sha256/f4/f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc",
+ "archive:https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
],
"opam": {
"name": "dune-build-info",
- "version": "3.10.0",
- "path": "esy.lock/opam/dune-build-info.3.10.0"
+ "version": "3.14.0",
+ "path": "esy.lock/opam/dune-build-info.3.14.0"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
- "@opam/dune@opam:3.10.0@d5991a42": {
- "id": "@opam/dune@opam:3.10.0@d5991a42",
+ "@opam/dune@opam:3.14.0@bfa03801": {
+ "id": "@opam/dune@opam:3.14.0@bfa03801",
"name": "@opam/dune",
- "version": "opam:3.10.0",
+ "version": "opam:3.14.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/9f/9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355",
- "archive:https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
+ "archive:https://opam.ocaml.org/cache/sha256/f4/f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc",
+ "archive:https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
],
"opam": {
"name": "dune",
- "version": "3.10.0",
- "path": "esy.lock/opam/dune.3.10.0"
+ "version": "3.14.0",
+ "path": "esy.lock/opam/dune.3.14.0"
}
},
"overrides": [],
@@ -5465,8 +5506,8 @@
"@opam/base-threads@opam:base@36803084"
]
},
- "@opam/dot-merlin-reader@opam:4.9@5d77f68f": {
- "id": "@opam/dot-merlin-reader@opam:4.9@5d77f68f",
+ "@opam/dot-merlin-reader@opam:4.9@6b69f4a0": {
+ "id": "@opam/dot-merlin-reader@opam:4.9@6b69f4a0",
"name": "@opam/dot-merlin-reader",
"version": "opam:4.9",
"source": {
@@ -5484,13 +5525,13 @@
"overrides": [],
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/ocamlfind@opam:1.9.6@da5169c7",
- "@opam/merlin-lib@opam:4.9-414@16618f99",
- "@opam/dune@opam:3.10.0@d5991a42", "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ "@opam/merlin-lib@opam:4.13-414@05ab671e",
+ "@opam/dune@opam:3.14.0@bfa03801", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/ocamlfind@opam:1.9.6@da5169c7",
- "@opam/merlin-lib@opam:4.9-414@16618f99",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "@opam/merlin-lib@opam:4.13-414@05ab671e",
+ "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/csexp@opam:1.5.2@46614bf4": {
@@ -5511,11 +5552,40 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
+ ]
+ },
+ "@opam/crunch@opam:3.2.0@832f19f8": {
+ "id": "@opam/crunch@opam:3.2.0@832f19f8",
+ "name": "@opam/crunch",
+ "version": "opam:3.2.0",
+ "source": {
+ "type": "install",
+ "source": [
+ "archive:https://opam.ocaml.org/cache/sha256/0a/0a1a4ebb86ab643dd193b5c0046e4d168c6e1cb41e6e5e5b6fbd3b7492e8c6de#sha256:0a1a4ebb86ab643dd193b5c0046e4d168c6e1cb41e6e5e5b6fbd3b7492e8c6de",
+ "archive:https://github.com/mirage/ocaml-crunch/releases/download/v3.2.0/crunch-v3.2.0.tbz#sha256:0a1a4ebb86ab643dd193b5c0046e4d168c6e1cb41e6e5e5b6fbd3b7492e8c6de"
+ ],
+ "opam": {
+ "name": "crunch",
+ "version": "3.2.0",
+ "path": "esy.lock/opam/crunch.3.2.0"
+ }
+ },
+ "overrides": [],
+ "dependencies": [
+ "ocaml@4.14.1000@d41d8cd9", "@opam/ptime@opam:1.1.0@d6f12219",
+ "@opam/dune@opam:3.14.0@bfa03801",
+ "@opam/cmdliner@opam:1.0.4@93208aac",
+ "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ ],
+ "devDependencies": [
+ "ocaml@4.14.1000@d41d8cd9", "@opam/ptime@opam:1.1.0@d6f12219",
+ "@opam/dune@opam:3.14.0@bfa03801",
+ "@opam/cmdliner@opam:1.0.4@93208aac"
]
},
"@opam/cppo@opam:1.6.9@db929a12": {
@@ -5536,12 +5606,12 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/base-unix@opam:base@87d0b2eb",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/base-unix@opam:base@87d0b2eb"
]
},
@@ -5567,29 +5637,29 @@
],
"devDependencies": [ "ocaml@4.14.1000@d41d8cd9" ]
},
- "@opam/chrome-trace@opam:3.10.0@62089f3e": {
- "id": "@opam/chrome-trace@opam:3.10.0@62089f3e",
+ "@opam/chrome-trace@opam:3.14.0@dcad8740": {
+ "id": "@opam/chrome-trace@opam:3.14.0@dcad8740",
"name": "@opam/chrome-trace",
- "version": "opam:3.10.0",
+ "version": "opam:3.14.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/9f/9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355",
- "archive:https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz#sha256:9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
+ "archive:https://opam.ocaml.org/cache/sha256/f4/f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc",
+ "archive:https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz#sha256:f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
],
"opam": {
"name": "chrome-trace",
- "version": "3.10.0",
- "path": "esy.lock/opam/chrome-trace.3.10.0"
+ "version": "3.14.0",
+ "path": "esy.lock/opam/chrome-trace.3.14.0"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/camlp-streams@opam:5.0.1@daaa0f94": {
@@ -5610,11 +5680,11 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/biniou@opam:1.2.2@c7862a8d": {
@@ -5635,14 +5705,14 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/easy-format@opam:1.3.4@b358e98e",
- "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/easy-format@opam:1.3.4@21f6fe23",
+ "@opam/dune@opam:3.14.0@bfa03801",
"@opam/camlp-streams@opam:5.0.1@daaa0f94",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/easy-format@opam:1.3.4@b358e98e",
- "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/easy-format@opam:1.3.4@21f6fe23",
+ "@opam/dune@opam:3.14.0@bfa03801",
"@opam/camlp-streams@opam:5.0.1@daaa0f94"
]
},
@@ -5680,36 +5750,36 @@
"dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ],
"devDependencies": []
},
- "@opam/atdgen-runtime@opam:2.12.0@84f686a9": {
- "id": "@opam/atdgen-runtime@opam:2.12.0@84f686a9",
+ "@opam/atdgen-runtime@opam:2.15.0@05de7755": {
+ "id": "@opam/atdgen-runtime@opam:2.15.0@05de7755",
"name": "@opam/atdgen-runtime",
- "version": "opam:2.12.0",
+ "version": "opam:2.15.0",
"source": {
"type": "install",
"source": [
- "archive:https://opam.ocaml.org/cache/sha256/02/02530cbc92ddb1cb6021951af4f62f95c2f39abf091a996c5e44ecadb20a4fc0#sha256:02530cbc92ddb1cb6021951af4f62f95c2f39abf091a996c5e44ecadb20a4fc0",
- "archive:https://github.com/ahrefs/atd/releases/download/2.12.0/atdts-2.12.0.tbz#sha256:02530cbc92ddb1cb6021951af4f62f95c2f39abf091a996c5e44ecadb20a4fc0"
+ "archive:https://opam.ocaml.org/cache/sha256/ba/ba4279bed54d13dcf3f6703a4b31744db815df22c0502d9965d6c674ce083933#sha256:ba4279bed54d13dcf3f6703a4b31744db815df22c0502d9965d6c674ce083933",
+ "archive:https://github.com/ahrefs/atd/releases/download/2.15.0/atd-2.15.0.tbz#sha256:ba4279bed54d13dcf3f6703a4b31744db815df22c0502d9965d6c674ce083933"
],
"opam": {
"name": "atdgen-runtime",
- "version": "2.12.0",
- "path": "esy.lock/opam/atdgen-runtime.2.12.0"
+ "version": "2.15.0",
+ "path": "esy.lock/opam/atdgen-runtime.2.15.0"
}
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.0@157478b0",
- "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300",
+ "@opam/dune@opam:3.14.0@bfa03801",
"@opam/biniou@opam:1.2.2@c7862a8d",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.0@157478b0",
- "@opam/dune@opam:3.10.0@d5991a42", "@opam/biniou@opam:1.2.2@c7862a8d"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300",
+ "@opam/dune@opam:3.14.0@bfa03801", "@opam/biniou@opam:1.2.2@c7862a8d"
]
},
- "@opam/atdgen@opam:2.12.0@bc126d9d": {
- "id": "@opam/atdgen@opam:2.12.0@bc126d9d",
+ "@opam/atdgen@opam:2.12.0@205ff7f3": {
+ "id": "@opam/atdgen@opam:2.12.0@205ff7f3",
"name": "@opam/atdgen",
"version": "opam:2.12.0",
"source": {
@@ -5726,17 +5796,17 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.0@157478b0",
- "@opam/re@opam:1.10.4@c4910ba6", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300",
+ "@opam/re@opam:1.11.0@87deb463", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/biniou@opam:1.2.2@c7862a8d",
- "@opam/atdgen-runtime@opam:2.12.0@84f686a9",
+ "@opam/atdgen-runtime@opam:2.15.0@05de7755",
"@opam/atd@opam:2.12.0@d1e656e5", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.0@157478b0",
- "@opam/re@opam:1.10.4@c4910ba6", "@opam/dune@opam:3.10.0@d5991a42",
+ "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300",
+ "@opam/re@opam:1.11.0@87deb463", "@opam/dune@opam:3.14.0@bfa03801",
"@opam/biniou@opam:1.2.2@c7862a8d",
- "@opam/atdgen-runtime@opam:2.12.0@84f686a9",
+ "@opam/atdgen-runtime@opam:2.15.0@05de7755",
"@opam/atd@opam:2.12.0@d1e656e5"
]
},
@@ -5758,18 +5828,18 @@
},
"overrides": [],
"dependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.0@157478b0",
- "@opam/re@opam:1.10.4@c4910ba6",
- "@opam/menhir@opam:20230608@c0081728",
- "@opam/easy-format@opam:1.3.4@b358e98e",
- "@opam/dune@opam:3.10.0@d5991a42", "@esy-ocaml/substs@0.0.1@d41d8cd9"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300",
+ "@opam/re@opam:1.11.0@87deb463",
+ "@opam/menhir@opam:20231231@f35eae6a",
+ "@opam/easy-format@opam:1.3.4@21f6fe23",
+ "@opam/dune@opam:3.14.0@bfa03801", "@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [
- "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.0@157478b0",
- "@opam/re@opam:1.10.4@c4910ba6",
- "@opam/menhir@opam:20230608@c0081728",
- "@opam/easy-format@opam:1.3.4@b358e98e",
- "@opam/dune@opam:3.10.0@d5991a42"
+ "ocaml@4.14.1000@d41d8cd9", "@opam/yojson@opam:2.1.2@9fd14300",
+ "@opam/re@opam:1.11.0@87deb463",
+ "@opam/menhir@opam:20231231@f35eae6a",
+ "@opam/easy-format@opam:1.3.4@21f6fe23",
+ "@opam/dune@opam:3.14.0@bfa03801"
]
},
"@opam/astring@opam:0.8.5@1300cee8": {
@@ -5792,7 +5862,7 @@
"dependencies": [
"ocaml@4.14.1000@d41d8cd9", "@opam/topkg@opam:1.0.7@7ee47d76",
"@opam/ocamlfind@opam:1.9.6@da5169c7",
- "@opam/ocamlbuild@opam:0.14.2+win@39b9f56d",
+ "@opam/ocamlbuild@opam:0.14.3@6ab20ab3",
"@esy-ocaml/substs@0.0.1@d41d8cd9"
],
"devDependencies": [ "ocaml@4.14.1000@d41d8cd9" ]
@@ -5809,7 +5879,7 @@
},
"overrides": [],
"dependencies": [
- "fastq@1.15.0@d41d8cd9", "@nodelib/fs.scandir@2.1.5@d41d8cd9"
+ "fastq@1.17.1@d41d8cd9", "@nodelib/fs.scandir@2.1.5@d41d8cd9"
],
"devDependencies": []
},
@@ -5871,50 +5941,50 @@
"dependencies": [ "arrify@1.0.1@d41d8cd9" ],
"devDependencies": []
},
- "@babel/highlight@7.22.10@d41d8cd9": {
- "id": "@babel/highlight@7.22.10@d41d8cd9",
+ "@babel/highlight@7.23.4@d41d8cd9": {
+ "id": "@babel/highlight@7.23.4@d41d8cd9",
"name": "@babel/highlight",
- "version": "7.22.10",
+ "version": "7.23.4",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz#sha1:02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7"
+ "archive:https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz#sha1:edaadf4d8232e1a961432db785091207ead0621b"
]
},
"overrides": [],
"dependencies": [
"js-tokens@4.0.0@d41d8cd9", "chalk@2.4.2@d41d8cd9",
- "@babel/helper-validator-identifier@7.22.5@d41d8cd9"
+ "@babel/helper-validator-identifier@7.22.20@d41d8cd9"
],
"devDependencies": []
},
- "@babel/helper-validator-identifier@7.22.5@d41d8cd9": {
- "id": "@babel/helper-validator-identifier@7.22.5@d41d8cd9",
+ "@babel/helper-validator-identifier@7.22.20@d41d8cd9": {
+ "id": "@babel/helper-validator-identifier@7.22.20@d41d8cd9",
"name": "@babel/helper-validator-identifier",
- "version": "7.22.5",
+ "version": "7.22.20",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#sha1:9544ef6a33999343c8740fa51350f30eeaaaf193"
+ "archive:https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#sha1:c4ae002c61d2879e724581d96665583dbc1dc0e0"
]
},
"overrides": [],
"dependencies": [],
"devDependencies": []
},
- "@babel/code-frame@7.22.10@d41d8cd9": {
- "id": "@babel/code-frame@7.22.10@d41d8cd9",
+ "@babel/code-frame@7.23.5@d41d8cd9": {
+ "id": "@babel/code-frame@7.23.5@d41d8cd9",
"name": "@babel/code-frame",
- "version": "7.22.10",
+ "version": "7.23.5",
"source": {
"type": "install",
"source": [
- "archive:https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz#sha1:1c20e612b768fefa75f6e90d6ecb86329247f0a3"
+ "archive:https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz#sha1:9009b69a8c602293476ad598ff53e4562e15c244"
]
},
"overrides": [],
"dependencies": [
- "chalk@2.4.2@d41d8cd9", "@babel/highlight@7.22.10@d41d8cd9"
+ "chalk@2.4.2@d41d8cd9", "@babel/highlight@7.23.4@d41d8cd9"
],
"devDependencies": []
}
diff --git a/esy.lock/opam/atdgen-runtime.2.12.0/opam b/esy.lock/opam/atdgen-runtime.2.15.0/opam
similarity index 88%
rename from esy.lock/opam/atdgen-runtime.2.12.0/opam
rename to esy.lock/opam/atdgen-runtime.2.15.0/opam
index d6394780..979437c3 100644
--- a/esy.lock/opam/atdgen-runtime.2.12.0/opam
+++ b/esy.lock/opam/atdgen-runtime.2.15.0/opam
@@ -84,10 +84,10 @@ build: [
]
url {
src:
- "https://github.com/ahrefs/atd/releases/download/2.12.0/atdts-2.12.0.tbz"
+ "https://github.com/ahrefs/atd/releases/download/2.15.0/atd-2.15.0.tbz"
checksum: [
- "sha256=02530cbc92ddb1cb6021951af4f62f95c2f39abf091a996c5e44ecadb20a4fc0"
- "sha512=43cbbc4fd9491fcc0e543a488940f17468f5b31e263c7322bad1cc497fb4662a2d7e6aa219377a7105bd31ba80ec69b214247b63406a335ce2fdee886195bae9"
+ "sha256=ba4279bed54d13dcf3f6703a4b31744db815df22c0502d9965d6c674ce083933"
+ "sha512=33b7943ae6afd14e5a0709d9131d288e663d3f2b962caa065f1b11db8f6adfe081becba7968c8596b3ff2420577295ac248d521858cb0748e95971390eb29829"
]
}
-x-commit-hash: "652a65aa7635cd44afd0669ebec7af87bf894a45"
+x-commit-hash: "91a5e6165d4741e19451c41189328f52d33e5c7d"
diff --git a/esy.lock/opam/atdgen.2.12.0/opam b/esy.lock/opam/atdgen.2.12.0/opam
index 4b070a66..8aed89e1 100644
--- a/esy.lock/opam/atdgen.2.12.0/opam
+++ b/esy.lock/opam/atdgen.2.12.0/opam
@@ -73,7 +73,7 @@ depends: [
"dune" {>= "2.8"}
"ocaml" {>= "4.08"}
"alcotest" {with-test}
- "atd" {>= "2.12.0"}
+ "atd" {>= "2.12.0" & < "2.14.0"}
"atdgen-runtime" {>= "2.1.0"}
"atdgen-codec-runtime" {with-test}
"biniou" {>= "1.0.6"}
diff --git a/esy.lock/opam/chrome-trace.3.10.0/opam b/esy.lock/opam/chrome-trace.3.14.0/opam
similarity index 67%
rename from esy.lock/opam/chrome-trace.3.10.0/opam
rename to esy.lock/opam/chrome-trace.3.14.0/opam
index 583f59b3..6ec37f0f 100644
--- a/esy.lock/opam/chrome-trace.3.10.0/opam
+++ b/esy.lock/opam/chrome-trace.3.14.0/opam
@@ -9,7 +9,7 @@ homepage: "https://github.com/ocaml/dune"
doc: "https://dune.readthedocs.io/"
bug-reports: "https://github.com/ocaml/dune/issues"
depends: [
- "dune" {>= "3.5"}
+ "dune" {>= "3.12"}
"ocaml" {>= "4.08.0"}
"odoc" {with-doc}
]
@@ -31,10 +31,10 @@ build: [
]
url {
src:
- "https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz"
+ "https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz"
checksum: [
- "sha256=9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
- "sha512=8133cdcc5499a6bf21cd65b4fc8b12445ae39366731006773fcd3b348c553a8d89d004db161c655aa167a2a3653b7919d32b27f29217106ef762bd01b43afc76"
+ "sha256=f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
+ "sha512=f5ead1a9a0cc26e00a762e83e107b47c3c3fe9b44d9e505547c385c7938208d4fdcc91a8099512e76ea4a426f3543445b4d75ef0b621dc7dbfdcbb615bc0b999"
]
}
-x-commit-hash: "fc382520272012638088848d7f3dd1ef6687a284"
+x-commit-hash: "73250f00372d3f28a25963ded6138728f4202663"
diff --git a/esy.lock/opam/crunch.3.2.0/opam b/esy.lock/opam/crunch.3.2.0/opam
new file mode 100644
index 00000000..5e2c41c0
--- /dev/null
+++ b/esy.lock/opam/crunch.3.2.0/opam
@@ -0,0 +1,42 @@
+opam-version: "2.0"
+maintainer: "MirageOS team"
+authors: ["Anil Madhavapeddy" "Thomas Gazagnaire" "Stefanie Schirmer" "Hannes Mehnert"]
+homepage: "https://github.com/mirage/ocaml-crunch"
+bug-reports: "https://github.com/mirage/ocaml-crunch/issues"
+doc: "https://mirage.github.io/ocaml-crunch/"
+license: "ISC"
+dev-repo: "git+https://github.com/mirage/ocaml-crunch.git"
+tags: ["org:mirage" "org:xapi-project"]
+
+depends: [
+ "ocaml" {>= "4.05.0"}
+ "cmdliner"
+ "ptime"
+ "dune" {>= "1.0"}
+ "lwt" {with-test}
+ "mirage-kv" {with-test & >= "3.0.0"}
+ "mirage-kv-mem" {with-test & >= "3.0.0"}
+]
+conflicts: [
+ "mirage-kv" {< "3.0.0"}
+]
+build: [
+ ["dune" "subst"] {dev}
+ ["dune" "build" "-p" name "-j" jobs]
+ ["dune" "runtest" "-p" name "-j" jobs] {with-test}
+]
+synopsis: "Convert a filesystem into a static OCaml module"
+description: """
+`ocaml-crunch` takes a directory of files and compiles them into a standalone
+OCaml module which serves the contents directly from memory. This can be
+convenient for libraries that need a few embedded files (such as a web server)
+and do not want to deal with all the trouble of file configuration.
+"""
+url {
+ src:
+ "https://github.com/mirage/ocaml-crunch/releases/download/v3.2.0/crunch-v3.2.0.tbz"
+ checksum: [
+ "sha256=0a1a4ebb86ab643dd193b5c0046e4d168c6e1cb41e6e5e5b6fbd3b7492e8c6de"
+ "sha512=8666e4081c96b7e0820c621197cb02de2238ddc911e4e95f439c69a685a5791dd4f874ba1084f56c9b44d3d579b877b1ed1f7b0421cd56d3f36ad39c669ee4eb"
+ ]
+}
diff --git a/esy.lock/opam/dot-merlin-reader.4.9/opam b/esy.lock/opam/dot-merlin-reader.4.9/opam
index e2a8ce56..208b904f 100644
--- a/esy.lock/opam/dot-merlin-reader.4.9/opam
+++ b/esy.lock/opam/dot-merlin-reader.4.9/opam
@@ -13,7 +13,7 @@ build: [
depends: [
"ocaml" {>= "4.08" & < "6.0"}
"dune" {>= "2.9.0"}
- "merlin-lib" {>= "4.9"}
+ "merlin-lib" {>= "4.9" & < "4.14"}
"ocamlfind" {>= "1.6.0"}
]
description:
diff --git a/esy.lock/opam/dune-build-info.3.10.0/opam b/esy.lock/opam/dune-build-info.3.14.0/opam
similarity index 73%
rename from esy.lock/opam/dune-build-info.3.10.0/opam
rename to esy.lock/opam/dune-build-info.3.14.0/opam
index 0f7e9ed7..26ed132a 100644
--- a/esy.lock/opam/dune-build-info.3.10.0/opam
+++ b/esy.lock/opam/dune-build-info.3.14.0/opam
@@ -15,7 +15,7 @@ homepage: "https://github.com/ocaml/dune"
doc: "https://dune.readthedocs.io/"
bug-reports: "https://github.com/ocaml/dune/issues"
depends: [
- "dune" {>= "3.5"}
+ "dune" {>= "3.12"}
"ocaml" {>= "4.08"}
"odoc" {with-doc}
]
@@ -37,10 +37,10 @@ build: [
]
url {
src:
- "https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz"
+ "https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz"
checksum: [
- "sha256=9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
- "sha512=8133cdcc5499a6bf21cd65b4fc8b12445ae39366731006773fcd3b348c553a8d89d004db161c655aa167a2a3653b7919d32b27f29217106ef762bd01b43afc76"
+ "sha256=f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
+ "sha512=f5ead1a9a0cc26e00a762e83e107b47c3c3fe9b44d9e505547c385c7938208d4fdcc91a8099512e76ea4a426f3543445b4d75ef0b621dc7dbfdcbb615bc0b999"
]
}
-x-commit-hash: "fc382520272012638088848d7f3dd1ef6687a284"
+x-commit-hash: "73250f00372d3f28a25963ded6138728f4202663"
diff --git a/esy.lock/opam/dune-configurator.3.10.0/opam b/esy.lock/opam/dune-configurator.3.14.0/opam
similarity index 74%
rename from esy.lock/opam/dune-configurator.3.10.0/opam
rename to esy.lock/opam/dune-configurator.3.14.0/opam
index 5572ff66..b24f7b0a 100644
--- a/esy.lock/opam/dune-configurator.3.10.0/opam
+++ b/esy.lock/opam/dune-configurator.3.14.0/opam
@@ -17,7 +17,7 @@ homepage: "https://github.com/ocaml/dune"
doc: "https://dune.readthedocs.io/"
bug-reports: "https://github.com/ocaml/dune/issues"
depends: [
- "dune" {>= "3.5"}
+ "dune" {>= "3.12"}
"ocaml" {>= "4.04.0"}
"base-unix"
"csexp" {>= "1.5.0"}
@@ -41,10 +41,10 @@ build: [
]
url {
src:
- "https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz"
+ "https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz"
checksum: [
- "sha256=9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
- "sha512=8133cdcc5499a6bf21cd65b4fc8b12445ae39366731006773fcd3b348c553a8d89d004db161c655aa167a2a3653b7919d32b27f29217106ef762bd01b43afc76"
+ "sha256=f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
+ "sha512=f5ead1a9a0cc26e00a762e83e107b47c3c3fe9b44d9e505547c385c7938208d4fdcc91a8099512e76ea4a426f3543445b4d75ef0b621dc7dbfdcbb615bc0b999"
]
}
-x-commit-hash: "fc382520272012638088848d7f3dd1ef6687a284"
+x-commit-hash: "73250f00372d3f28a25963ded6138728f4202663"
diff --git a/esy.lock/opam/dune-rpc.3.10.0/opam b/esy.lock/opam/dune-rpc.3.14.0/opam
similarity index 68%
rename from esy.lock/opam/dune-rpc.3.10.0/opam
rename to esy.lock/opam/dune-rpc.3.14.0/opam
index 6f175c2d..bae0059d 100644
--- a/esy.lock/opam/dune-rpc.3.10.0/opam
+++ b/esy.lock/opam/dune-rpc.3.14.0/opam
@@ -8,7 +8,7 @@ homepage: "https://github.com/ocaml/dune"
doc: "https://dune.readthedocs.io/"
bug-reports: "https://github.com/ocaml/dune/issues"
depends: [
- "dune" {>= "3.5"}
+ "dune" {>= "3.12"}
"csexp"
"ordering"
"dyn"
@@ -35,10 +35,10 @@ build: [
]
url {
src:
- "https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz"
+ "https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz"
checksum: [
- "sha256=9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
- "sha512=8133cdcc5499a6bf21cd65b4fc8b12445ae39366731006773fcd3b348c553a8d89d004db161c655aa167a2a3653b7919d32b27f29217106ef762bd01b43afc76"
+ "sha256=f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
+ "sha512=f5ead1a9a0cc26e00a762e83e107b47c3c3fe9b44d9e505547c385c7938208d4fdcc91a8099512e76ea4a426f3543445b4d75ef0b621dc7dbfdcbb615bc0b999"
]
}
-x-commit-hash: "fc382520272012638088848d7f3dd1ef6687a284"
+x-commit-hash: "73250f00372d3f28a25963ded6138728f4202663"
diff --git a/esy.lock/opam/dune.3.10.0/opam b/esy.lock/opam/dune.3.14.0/opam
similarity index 69%
rename from esy.lock/opam/dune.3.10.0/opam
rename to esy.lock/opam/dune.3.14.0/opam
index 79fe0a12..b390e871 100644
--- a/esy.lock/opam/dune.3.10.0/opam
+++ b/esy.lock/opam/dune.3.14.0/opam
@@ -2,19 +2,19 @@ opam-version: "2.0"
synopsis: "Fast, portable, and opinionated build system"
description: """
-dune is a build system that was designed to simplify the release of
+Dune is a build system that was designed to simplify the release of
Jane Street packages. It reads metadata from "dune" files following a
very simple s-expression syntax.
-dune is fast, has very low-overhead, and supports parallel builds on
+Dune is fast, has very low-overhead, and supports parallel builds on
all platforms. It has no system dependencies; all you need to build
dune or packages using dune is OCaml. You don't need make or bash
as long as the packages themselves don't use bash explicitly.
-dune supports multi-package development by simply dropping multiple
-repositories into the same directory.
+Dune is composable; supporting multi-package development by simply
+dropping multiple repositories into the same directory.
-It also supports multi-context builds, such as building against
+Dune also supports multi-context builds, such as building against
several opam roots/switches simultaneously. This helps maintaining
packages across several versions of OCaml and gives cross-compilation
for free.
@@ -48,10 +48,10 @@ depends: [
]
url {
src:
- "https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz"
+ "https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz"
checksum: [
- "sha256=9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
- "sha512=8133cdcc5499a6bf21cd65b4fc8b12445ae39366731006773fcd3b348c553a8d89d004db161c655aa167a2a3653b7919d32b27f29217106ef762bd01b43afc76"
+ "sha256=f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
+ "sha512=f5ead1a9a0cc26e00a762e83e107b47c3c3fe9b44d9e505547c385c7938208d4fdcc91a8099512e76ea4a426f3543445b4d75ef0b621dc7dbfdcbb615bc0b999"
]
}
-x-commit-hash: "fc382520272012638088848d7f3dd1ef6687a284"
+x-commit-hash: "73250f00372d3f28a25963ded6138728f4202663"
diff --git a/esy.lock/opam/dyn.3.10.0/opam b/esy.lock/opam/dyn.3.14.0/opam
similarity index 66%
rename from esy.lock/opam/dyn.3.10.0/opam
rename to esy.lock/opam/dyn.3.14.0/opam
index ae6bdb0d..d835562e 100644
--- a/esy.lock/opam/dyn.3.10.0/opam
+++ b/esy.lock/opam/dyn.3.14.0/opam
@@ -8,7 +8,7 @@ homepage: "https://github.com/ocaml/dune"
doc: "https://dune.readthedocs.io/"
bug-reports: "https://github.com/ocaml/dune/issues"
depends: [
- "dune" {>= "3.5"}
+ "dune" {>= "3.12"}
"ocaml" {>= "4.08.0"}
"ordering" {= version}
"pp" {>= "1.1.0"}
@@ -32,10 +32,10 @@ build: [
]
url {
src:
- "https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz"
+ "https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz"
checksum: [
- "sha256=9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
- "sha512=8133cdcc5499a6bf21cd65b4fc8b12445ae39366731006773fcd3b348c553a8d89d004db161c655aa167a2a3653b7919d32b27f29217106ef762bd01b43afc76"
+ "sha256=f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
+ "sha512=f5ead1a9a0cc26e00a762e83e107b47c3c3fe9b44d9e505547c385c7938208d4fdcc91a8099512e76ea4a426f3543445b4d75ef0b621dc7dbfdcbb615bc0b999"
]
}
-x-commit-hash: "fc382520272012638088848d7f3dd1ef6687a284"
+x-commit-hash: "73250f00372d3f28a25963ded6138728f4202663"
diff --git a/esy.lock/opam/easy-format.1.3.4/opam b/esy.lock/opam/easy-format.1.3.4/opam
index 39b3d63e..5d5f62ee 100644
--- a/esy.lock/opam/easy-format.1.3.4/opam
+++ b/esy.lock/opam/easy-format.1.3.4/opam
@@ -23,7 +23,7 @@ maintainer: ["martin@mjambon.com" "rudi.grinberg@gmail.com"]
authors: ["Martin Jambon"]
license: "BSD-3-Clause"
homepage: "https://github.com/ocaml-community/easy-format"
-doc: "https://mjambon.github.io/easy-format/"
+doc: "https://mjambon.github.io/mjambon2016/easy-format.html"
bug-reports: "https://github.com/ocaml-community/easy-format/issues"
depends: [
"dune" {>= "3.2" & >= "1.10"}
diff --git a/esy.lock/opam/menhir.20230608/opam b/esy.lock/opam/menhir.20231231/opam
similarity index 69%
rename from esy.lock/opam/menhir.20230608/opam
rename to esy.lock/opam/menhir.20231231/opam
index 994e202c..adf52bf1 100644
--- a/esy.lock/opam/menhir.20230608/opam
+++ b/esy.lock/opam/menhir.20231231/opam
@@ -17,13 +17,14 @@ depends: [
"dune" {>= "2.8.0"}
"menhirLib" {= version}
"menhirSdk" {= version}
+ "menhirCST" {= version}
]
synopsis: "An LR(1) parser generator"
url {
src:
- "https://gitlab.inria.fr/fpottier/menhir/-/archive/20230608/archive.tar.gz"
+ "https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz"
checksum: [
- "md5=8ff26b1e3685c472b7b3aba2fe938a43"
- "sha512=334b9dcb1283a28b8547082a89536b1d439ff588290b8eaecdf4802c5f74dbc8d16ad6fc6c0820036183518d83e2cc273a75787a8b41137424c8e7ee82e2b50a"
+ "md5=799748bc3b7a542798a85956c7863865"
+ "sha512=620ff3443143535e03ac98c5e8ee2ddf9ba48f8cfe441302118def1da3e03ffac7f48d4d4cb129766b625ecad0fb341da1baa0169dee8b6d07a5b0bbb735cf2f"
]
}
diff --git a/esy.lock/opam/menhirCST.20231231/opam b/esy.lock/opam/menhirCST.20231231/opam
new file mode 100644
index 00000000..9a49a859
--- /dev/null
+++ b/esy.lock/opam/menhirCST.20231231/opam
@@ -0,0 +1,29 @@
+
+opam-version: "2.0"
+maintainer: "francois.pottier@inria.fr"
+authors: [
+ "François Pottier "
+]
+homepage: "http://gitlab.inria.fr/fpottier/menhir"
+dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git"
+bug-reports: "https://gitlab.inria.fr/fpottier/menhir/-/issues"
+license: "LGPL-2.0-only with OCaml-LGPL-linking-exception"
+build: [
+ ["dune" "build" "-p" name "-j" jobs]
+]
+depends: [
+ "ocaml" { >= "4.08" }
+ "dune" { >= "2.8.0" }
+]
+conflicts: [
+ "menhir" { != version }
+]
+synopsis: "Runtime support library for parsers generated by Menhir"
+url {
+ src:
+ "https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz"
+ checksum: [
+ "md5=799748bc3b7a542798a85956c7863865"
+ "sha512=620ff3443143535e03ac98c5e8ee2ddf9ba48f8cfe441302118def1da3e03ffac7f48d4d4cb129766b625ecad0fb341da1baa0169dee8b6d07a5b0bbb735cf2f"
+ ]
+}
diff --git a/esy.lock/opam/menhirLib.20230608/opam b/esy.lock/opam/menhirLib.20231231/opam
similarity index 73%
rename from esy.lock/opam/menhirLib.20230608/opam
rename to esy.lock/opam/menhirLib.20231231/opam
index a83c2db7..1f321b18 100644
--- a/esy.lock/opam/menhirLib.20230608/opam
+++ b/esy.lock/opam/menhirLib.20231231/opam
@@ -22,9 +22,9 @@ conflicts: [
synopsis: "Runtime support library for parsers generated by Menhir"
url {
src:
- "https://gitlab.inria.fr/fpottier/menhir/-/archive/20230608/archive.tar.gz"
+ "https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz"
checksum: [
- "md5=8ff26b1e3685c472b7b3aba2fe938a43"
- "sha512=334b9dcb1283a28b8547082a89536b1d439ff588290b8eaecdf4802c5f74dbc8d16ad6fc6c0820036183518d83e2cc273a75787a8b41137424c8e7ee82e2b50a"
+ "md5=799748bc3b7a542798a85956c7863865"
+ "sha512=620ff3443143535e03ac98c5e8ee2ddf9ba48f8cfe441302118def1da3e03ffac7f48d4d4cb129766b625ecad0fb341da1baa0169dee8b6d07a5b0bbb735cf2f"
]
}
diff --git a/esy.lock/opam/menhirSdk.20230608/opam b/esy.lock/opam/menhirSdk.20231231/opam
similarity index 73%
rename from esy.lock/opam/menhirSdk.20230608/opam
rename to esy.lock/opam/menhirSdk.20231231/opam
index 892f0922..0e2649fc 100644
--- a/esy.lock/opam/menhirSdk.20230608/opam
+++ b/esy.lock/opam/menhirSdk.20231231/opam
@@ -22,9 +22,9 @@ conflicts: [
synopsis: "Compile-time library for auxiliary tools related to Menhir"
url {
src:
- "https://gitlab.inria.fr/fpottier/menhir/-/archive/20230608/archive.tar.gz"
+ "https://gitlab.inria.fr/fpottier/menhir/-/archive/20231231/archive.tar.gz"
checksum: [
- "md5=8ff26b1e3685c472b7b3aba2fe938a43"
- "sha512=334b9dcb1283a28b8547082a89536b1d439ff588290b8eaecdf4802c5f74dbc8d16ad6fc6c0820036183518d83e2cc273a75787a8b41137424c8e7ee82e2b50a"
+ "md5=799748bc3b7a542798a85956c7863865"
+ "sha512=620ff3443143535e03ac98c5e8ee2ddf9ba48f8cfe441302118def1da3e03ffac7f48d4d4cb129766b625ecad0fb341da1baa0169dee8b6d07a5b0bbb735cf2f"
]
}
diff --git a/esy.lock/opam/merlin-lib.4.9-414/opam b/esy.lock/opam/merlin-lib.4.13-414/opam
similarity index 70%
rename from esy.lock/opam/merlin-lib.4.9-414/opam
rename to esy.lock/opam/merlin-lib.4.13-414/opam
index c3d8af20..858c6898 100644
--- a/esy.lock/opam/merlin-lib.4.9-414/opam
+++ b/esy.lock/opam/merlin-lib.4.13-414/opam
@@ -25,10 +25,10 @@ description:
thoroughly documented, and its public API might break with any new release."
url {
src:
- "https://github.com/ocaml/merlin/releases/download/v4.9-414/merlin-4.9-414.tbz"
+ "https://github.com/ocaml/merlin/releases/download/v4.13-414/merlin-4.13-414.tbz"
checksum: [
- "sha256=e23fc47813591269ff9d27c820988e520a662c89dd0af7ea652b21517499cbfd"
- "sha512=2199f963368597d10cc197e41ebb883f6a166018c9da3fe259c354550df41b713781003598a2fe5956b0a4ae96f8c07ba33831d3cf6f9d494b731944f87e491e"
+ "sha256=025cf1a93ba1e40916f5d9cf22fe7569bbfbaf403f54e4b724e4f92078b1db03"
+ "sha512=cf7e292a515122756bd614eedbf11cc09108e6afab77cd5805428207b3ca5a98494ee43ad59fcfb667b48fe0874f0a8359882b3c14ee270769f99c41e176d455"
]
}
-x-commit-hash: "df75a4550704c113ac29505fd68ef9b7893d4bf5"
+x-commit-hash: "b06a4e4f976100c23173d715f1b35cd91f8131f0"
diff --git a/esy.lock/opam/merlin.4.9-414/opam b/esy.lock/opam/merlin.4.13-414/opam
similarity index 79%
rename from esy.lock/opam/merlin.4.9-414/opam
rename to esy.lock/opam/merlin.4.13-414/opam
index 23c0bae6..1d542263 100644
--- a/esy.lock/opam/merlin.4.9-414/opam
+++ b/esy.lock/opam/merlin.4.13-414/opam
@@ -51,8 +51,11 @@ Add opam emacs directory to your load-path by appending this to your .emacs:
(add-hook 'tuareg-mode-hook 'merlin-mode t)
(add-hook 'caml-mode-hook 'merlin-mode t)
;; Use opam switch to lookup ocamlmerlin binary
- (setq merlin-command 'opam)))
-
+ (setq merlin-command 'opam)
+ ;; To easily change opam switches within a given Emacs session, you can
+ ;; install the minor mode https://github.com/ProofGeneral/opam-switch-mode
+ ;; and use one of its \"OPSW\" menus.
+ ))
Take a look at https://github.com/ocaml/merlin for more information
Quick setup with opam-user-setup
@@ -69,10 +72,10 @@ See https://github.com/OCamlPro/opam-user-setup
]
url {
src:
- "https://github.com/ocaml/merlin/releases/download/v4.9-414/merlin-4.9-414.tbz"
+ "https://github.com/ocaml/merlin/releases/download/v4.13-414/merlin-4.13-414.tbz"
checksum: [
- "sha256=e23fc47813591269ff9d27c820988e520a662c89dd0af7ea652b21517499cbfd"
- "sha512=2199f963368597d10cc197e41ebb883f6a166018c9da3fe259c354550df41b713781003598a2fe5956b0a4ae96f8c07ba33831d3cf6f9d494b731944f87e491e"
+ "sha256=025cf1a93ba1e40916f5d9cf22fe7569bbfbaf403f54e4b724e4f92078b1db03"
+ "sha512=cf7e292a515122756bd614eedbf11cc09108e6afab77cd5805428207b3ca5a98494ee43ad59fcfb667b48fe0874f0a8359882b3c14ee270769f99c41e176d455"
]
}
-x-commit-hash: "df75a4550704c113ac29505fd68ef9b7893d4bf5"
+x-commit-hash: "b06a4e4f976100c23173d715f1b35cd91f8131f0"
diff --git a/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam b/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam
index 14c9f753..a2df8c61 100644
--- a/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam
+++ b/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam
@@ -10,7 +10,7 @@ homepage: "https://github.com/janestreet/ocaml-compiler-libs"
bug-reports: "https://github.com/janestreet/ocaml-compiler-libs/issues"
depends: [
"dune" {>= "2.8"}
- "ocaml" {>= "4.04.1"}
+ "ocaml" {>= "4.04.1" & < "5.2.0"}
"odoc" {with-doc}
]
build: [
diff --git a/esy.lock/opam/ocaml-lsp-server.1.16.2/opam b/esy.lock/opam/ocaml-lsp-server.1.17.0/opam
similarity index 78%
rename from esy.lock/opam/ocaml-lsp-server.1.16.2/opam
rename to esy.lock/opam/ocaml-lsp-server.1.17.0/opam
index 4db194f3..e3a53b04 100644
--- a/esy.lock/opam/ocaml-lsp-server.1.16.2/opam
+++ b/esy.lock/opam/ocaml-lsp-server.1.17.0/opam
@@ -31,7 +31,8 @@ depends: [
"ordering"
"dune-build-info"
"spawn"
- "odoc-parser" {>= "2.0.0"}
+ "astring"
+ "camlp-streams"
"ppx_expect" {>= "v0.15.0" & with-test}
"ocamlformat" {with-test & = "0.24.1"}
"ocamlc-loc" {>= "3.7.0"}
@@ -57,10 +58,10 @@ build: [
]
url {
src:
- "https://github.com/ocaml/ocaml-lsp/releases/download/1.16.2/lsp-1.16.2.tbz"
+ "https://github.com/ocaml/ocaml-lsp/releases/download/1.17.0/lsp-1.17.0.tbz"
checksum: [
- "sha256=1487d5a4e2f2d4f023341058551bdb8ba86c23367b7c5b4fdda3aa7dc02aaec4"
- "sha512=4a392f6d3deafc6dd37f9603250e736c8d8195ea42c782252386616e8c1562d744e02beee54ec45254cba23efd343ebb33789babb093b0e70122ba86d7e67717"
+ "sha256=8fb8bbd717eefd2608b4d83458105b660e0de3a1134dc8fc216ae659d4d19600"
+ "sha512=6876df760dbcb51f85e7fd9d08cc8498c69ede38a52f4e12407187da3fbd9657c71f3223f9490ad97edd5259cfdeb2819d943db65bb9ce3c2a18dace3b65ffa8"
]
}
-x-commit-hash: "22cefd841bb0b6b9a6fd4fe5befe5eb68d213ce3"
+x-commit-hash: "d3d8de5a4213c2a16e43ac4f87cbbe88a894d05f"
diff --git a/esy.lock/opam/ocamlbuild.0.14.2+win/opam b/esy.lock/opam/ocamlbuild.0.14.3/opam
similarity index 50%
rename from esy.lock/opam/ocamlbuild.0.14.2+win/opam
rename to esy.lock/opam/ocamlbuild.0.14.3/opam
index 19651dfb..d1c725b3 100644
--- a/esy.lock/opam/ocamlbuild.0.14.2+win/opam
+++ b/esy.lock/opam/ocamlbuild.0.14.3/opam
@@ -15,24 +15,26 @@ conflicts: [
"ocamlfind" {< "1.6.2"}
]
build: [
- [make "all"]
-]
-install: [
- [make "install"]
- ["mkdir" "-p" "%{lib}%/ocamlbuild"]
- ["install" "-m" "0644" "META" "%{lib}%/ocamlbuild"]
+ [
+ make
+ "-f"
+ "configure.make"
+ "all"
+ "OCAMLBUILD_PREFIX=%{prefix}%"
+ "OCAMLBUILD_BINDIR=%{bin}%"
+ "OCAMLBUILD_LIBDIR=%{lib}%"
+ "OCAMLBUILD_MANDIR=%{man}%"
+ "OCAML_NATIVE=%{ocaml:native}%"
+ "OCAML_NATIVE_TOOLS=%{ocaml:native}%"
+ ]
+ [make "check-if-preinstalled" "all" "opam-install"]
]
dev-repo: "git+https://github.com/ocaml/ocamlbuild.git"
+available: os != "win32"
url {
- src: "https://github.com/ocaml/ocamlbuild/archive/refs/tags/0.14.2.tar.gz"
+ src: "https://github.com/ocaml/ocamlbuild/archive/refs/tags/0.14.3.tar.gz"
checksum: [
- "md5=2f407fadd57b073155a6aead887d9676"
- "sha512=f568bf10431a1f701e8bd7554dc662400a0d978411038bbad93d44dceab02874490a8a5886a9b44e017347e7949997f13f5c3752f74e1eb5e273d2beb19a75fd"
+ "md5=220df59060c916e8aac2eb471c870485"
+ "sha512=def8fa1d5488905fda31f72b7f6f0ebdccefa55a8e984a6ea4a7c1e0856e8ea1f7814410202e0f7f7d5e72aca7e8ae0d6623f7f2bade78b0dd82155de76ec4e5"
]
-}
-extra-source "ocamlbuild-0.14.2.patch" {
- src: "https://raw.githubusercontent.com/ocaml-opam/opam-repository-mingw/354a87b397856f2a70024c5c83fc5001074935b6/packages/ocamlbuild/ocamlbuild.0.14.2/files/ocamlbuild-0.14.2.patch"
- checksum: "sha256=a9b7e1829a3304e5a073d8ddea29d3d8272698e93b7e1ee659ae5e31e5cfb6b9"
-}
-patches: "ocamlbuild-0.14.2.patch"
-available: os = "win32"
+}
\ No newline at end of file
diff --git a/esy.lock/opam/ocamlc-loc.3.10.0/opam b/esy.lock/opam/ocamlc-loc.3.14.0/opam
similarity index 69%
rename from esy.lock/opam/ocamlc-loc.3.10.0/opam
rename to esy.lock/opam/ocamlc-loc.3.14.0/opam
index 8cc1ab14..9b034c14 100644
--- a/esy.lock/opam/ocamlc-loc.3.10.0/opam
+++ b/esy.lock/opam/ocamlc-loc.3.14.0/opam
@@ -9,7 +9,7 @@ homepage: "https://github.com/ocaml/dune"
doc: "https://dune.readthedocs.io/"
bug-reports: "https://github.com/ocaml/dune/issues"
depends: [
- "dune" {>= "3.5"}
+ "dune" {>= "3.12"}
"ocaml" {>= "4.08.0"}
"dyn" {= version}
"odoc" {with-doc}
@@ -35,10 +35,10 @@ build: [
]
url {
src:
- "https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz"
+ "https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz"
checksum: [
- "sha256=9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
- "sha512=8133cdcc5499a6bf21cd65b4fc8b12445ae39366731006773fcd3b348c553a8d89d004db161c655aa167a2a3653b7919d32b27f29217106ef762bd01b43afc76"
+ "sha256=f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
+ "sha512=f5ead1a9a0cc26e00a762e83e107b47c3c3fe9b44d9e505547c385c7938208d4fdcc91a8099512e76ea4a426f3543445b4d75ef0b621dc7dbfdcbb615bc0b999"
]
}
-x-commit-hash: "fc382520272012638088848d7f3dd1ef6687a284"
+x-commit-hash: "73250f00372d3f28a25963ded6138728f4202663"
diff --git a/esy.lock/opam/ocamlformat-rpc-lib.0.26.0/opam b/esy.lock/opam/ocamlformat-rpc-lib.0.26.1/opam
similarity index 54%
rename from esy.lock/opam/ocamlformat-rpc-lib.0.26.0/opam
rename to esy.lock/opam/ocamlformat-rpc-lib.0.26.1/opam
index 710d152d..e685d68a 100644
--- a/esy.lock/opam/ocamlformat-rpc-lib.0.26.0/opam
+++ b/esy.lock/opam/ocamlformat-rpc-lib.0.26.1/opam
@@ -2,8 +2,18 @@ opam-version: "2.0"
synopsis: "Auto-formatter for OCaml code (RPC mode)"
description:
"OCamlFormat is a tool to automatically format OCaml code in a uniform style. This package defines a RPC interface to OCamlFormat"
-maintainer: ["OCamlFormat Team "]
-authors: ["Josh Berdine "]
+maintainer: [
+ "Guillaume Petiot "
+ "Jules Aguillon "
+ "Emile Trotignon "
+]
+authors: [
+ "Josh Berdine "
+ "Hugo Heuzard "
+ "Etienne Millon "
+ "Guillaume Petiot "
+ "Jules Aguillon "
+]
license: "MIT"
homepage: "https://github.com/ocaml-ppx/ocamlformat"
bug-reports: "https://github.com/ocaml-ppx/ocamlformat/issues"
@@ -30,10 +40,10 @@ build: [
dev-repo: "git+https://github.com/ocaml-ppx/ocamlformat.git"
url {
src:
- "https://github.com/ocaml-ppx/ocamlformat/releases/download/0.26.0/ocamlformat-0.26.0.tbz"
+ "https://github.com/ocaml-ppx/ocamlformat/releases/download/0.26.1/ocamlformat-0.26.1.tbz"
checksum: [
- "sha256=031494ab770cef10a8f6aa1cbeb5660e46c3aa6c0cd457b110fec859a75e877d"
- "sha512=35c0131f04c2c8ceb94f0f400e4b56690405ddebb482aec0c9962163001d9fd5b593455df08b508394949f2740ba28f1714dff9e1f17b618bdec62fd26fae281"
+ "sha256=da006e427f15b9ec612fb808d446599bd9b7c3ee25abeb3d555747a70d74c6d7"
+ "sha512=b7413f8dc47ba3a2372e89d59cae54f9a602ab81e31cd14ed986a831111080b79a5a3cc45dac04d8ffae5054c35bf29fe9559f145c76c87a30e191ed5400942a"
]
}
-x-commit-hash: "fe70498a8982bef951311b37aa8568218ce8801a"
+x-commit-hash: "6734dfc1992eb782f0a936ce3cd7c78b7c1d39d3"
diff --git a/esy.lock/opam/odoc-parser.2.0.0/opam b/esy.lock/opam/odoc-parser.2.0.0/opam
deleted file mode 100644
index 602b2bdf..00000000
--- a/esy.lock/opam/odoc-parser.2.0.0/opam
+++ /dev/null
@@ -1,47 +0,0 @@
-opam-version: "2.0"
-synopsis: "Parser for ocaml documentation comments"
-description: """
-Odoc_parser is a library for parsing the contents of OCaml documentation
-comments, formatted using 'odoc' syntax, an extension of the language
-understood by ocamldoc."""
-maintainer: ["Jon Ludlam "]
-authors: ["Anton Bachin "]
-license: "ISC"
-homepage: "https://github.com/ocaml-doc/odoc-parser"
-bug-reports: "https://github.com/ocaml-doc/odoc-parser/issues"
-dev-repo: "git+https://github.com/ocaml-doc/odoc-parser.git"
-# This template exists because without it dune pop is dependencies and build rules
-# involving odoc. Since odoc depends on this package, this doesn't work.
-doc: "https://ocaml-doc.github.io/odoc-parser/"
-depends: [
- "dune" {>= "2.8"}
- "ocaml" {>= "4.02.0"}
- "astring"
- "result"
- "camlp-streams"
- "ppx_expect" {with-test}
- ("ocaml" {< "4.04.1" & with-test} | "sexplib0" {with-test})
-]
-build: [
- ["dune" "subst"] {dev}
- [
- "dune"
- "build"
- "-p"
- name
- "-j"
- jobs
- "@install"
- "@runtest" {with-test}
- ]
-]
-url {
- src:
- "https://github.com/ocaml-doc/odoc-parser/releases/download/2.0.0/odoc-parser-2.0.0.tbz"
- checksum: [
- "sha256=407919fbb0eb95761d6fc6ec6777628d94aa1907343bdca678b1880bafb33922"
- "sha512=d2bffa3e9f30471045682e390dcee7a2c1caf3831bca4bd57c16939e782c2e23434e6f1c9887580a1804800b3629ef4c4311a9d418fca5a939f324650d54006e"
- ]
-}
-x-commit-hash: "ebfd3b9489e44187da2c67d79a32b6fc1e92bda4"
-
diff --git a/esy.lock/opam/odoc-parser.2.4.1/opam b/esy.lock/opam/odoc-parser.2.4.1/opam
new file mode 100644
index 00000000..3fb74ed8
--- /dev/null
+++ b/esy.lock/opam/odoc-parser.2.4.1/opam
@@ -0,0 +1,45 @@
+opam-version: "2.0"
+synopsis: "Parser for ocaml documentation comments"
+description: """
+Odoc_parser is a library for parsing the contents of OCaml documentation
+comments, formatted using 'odoc' syntax, an extension of the language
+understood by ocamldoc."""
+maintainer: ["Jon Ludlam "]
+authors: ["Anton Bachin "]
+license: "ISC"
+homepage: "https://github.com/ocaml/odoc"
+bug-reports: "https://github.com/ocaml/odoc/issues"
+dev-repo: "git+https://github.com/ocaml/odoc.git"
+doc: "https://ocaml.github.io/odoc/odoc_parser"
+depends: [
+ "dune" {>= "3.7"}
+ "ocaml" {>= "4.02.0"}
+ "astring"
+ "result"
+ "camlp-streams"
+ "ppx_expect" {with-test}
+ ("ocaml" {< "4.04.1" & with-test} | "sexplib0" {with-test})
+]
+build: [
+ ["dune" "subst"] {dev}
+ [
+ "dune"
+ "build"
+ "-p"
+ name
+ "-j"
+ jobs
+ "@install"
+ # Tests are not all associated with a package and would be run if using the
+ # default '@runtest'.
+ "@src/parser/runtest" {with-test}
+ ]
+]
+url {
+ src: "https://github.com/ocaml/odoc/releases/download/2.4.1/odoc-2.4.1.tbz"
+ checksum: [
+ "sha256=b814a0b9020b503eb67f17d1d9a969d052b63d8cdc7cdfa5fb793b137558cedb"
+ "sha512=8ed2ed6ef705c00a2c90b7c57e7e5c747247e3406f1b7415a46db7cbd19d02678db40be761984d627f4fa2d9b38f696c77d8b5d40108e12563e101d07949821c"
+ ]
+}
+x-commit-hash: "0e671097a35ef938ea390a6bb894f25d8dc847a8"
diff --git a/esy.lock/opam/odoc.2.2.1/opam b/esy.lock/opam/odoc.2.2.1/opam
deleted file mode 100644
index f10e20dd..00000000
--- a/esy.lock/opam/odoc.2.2.1/opam
+++ /dev/null
@@ -1,61 +0,0 @@
-opam-version: "2.0"
-homepage: "http://github.com/ocaml/odoc"
-doc: "https://ocaml.github.io/odoc/"
-bug-reports: "https://github.com/ocaml/odoc/issues"
-license: "ISC"
-
-authors: [
- "Thomas Refis "
- "David Sheets "
- "Leo White "
- "Anton Bachin "
- "Jon Ludlam "
- "Jules Aguillon "
- "Lubega Simon "
-]
-maintainer: "Jon Ludlam "
-dev-repo: "git+https://github.com/ocaml/odoc.git"
-
-synopsis: "OCaml documentation generator"
-description: """
-Odoc is a documentation generator for OCaml. It reads doc comments,
-delimited with `(** ... *)`, and outputs HTML.
-"""
-
-depends: [
- "odoc-parser" {>= "2.0.0"}
- "astring"
- "cmdliner" {>= "1.0.0"}
- "cppo" {build & >= "1.1.0"}
- "dune" {>= "3.0.2"}
- "fpath"
- "ocaml" {>= "4.02.0"}
- "result"
- "tyxml" {>= "4.3.0"}
- "fmt"
-
- "ocamlfind" {with-test}
- "yojson" {< "2.0.0" & with-test}
- ("ocaml" {< "4.04.1" & with-test} | "sexplib0" {with-test})
- "conf-jq" {with-test}
-
- "ppx_expect" {with-test}
- "bos" {with-test}
- "crunch" {with-test}
-
- ("ocaml" {< "4.07.0" & with-test} | "bisect_ppx" {with-test & > "2.5.0"})
- ("ocaml" {< "4.03.0" & with-test} | "mdx" {with-test})
-]
-
-build: [
- ["dune" "subst"] {dev}
- ["dune" "build" "-p" name "-j" jobs]
-]
-url {
- src: "https://github.com/ocaml/odoc/releases/download/2.2.1/odoc-2.2.1.tbz"
- checksum: [
- "sha256=1786e53bf0824fe1c7c7b81d2a7d846846a5d11677969e6396361f77a3816803"
- "sha512=044e37eb3dcc77d9cc8124be558cce77a438723b90225273fb3401d3315c57c8c2f395a48ebd1b6aacc01b00cbfa4bd0be1923d2bd9bd3cc92d0604eadaabc4f"
- ]
-}
-x-commit-hash: "2d8a6776c19ffa995ae285cd1dfc27f2fea3820a"
diff --git a/esy.lock/opam/odoc.2.4.1/opam b/esy.lock/opam/odoc.2.4.1/opam
new file mode 100644
index 00000000..c5867e7f
--- /dev/null
+++ b/esy.lock/opam/odoc.2.4.1/opam
@@ -0,0 +1,84 @@
+opam-version: "2.0"
+homepage: "https://github.com/ocaml/odoc"
+doc: "https://ocaml.github.io/odoc/"
+bug-reports: "https://github.com/ocaml/odoc/issues"
+license: "ISC"
+
+maintainer: [
+ "Daniel Bünzli "
+ "Jon Ludlam "
+ "Jules Aguillon "
+ "Paul-Elliot Anglès d'Auriac "
+]
+authors: [
+ "Anton Bachin "
+ "Daniel Bünzli "
+ "David Sheets "
+ "Jon Ludlam "
+ "Jules Aguillon "
+ "Leo White "
+ "Lubega Simon "
+ "Paul-Elliot Anglès d'Auriac "
+ "Thomas Refis "
+]
+dev-repo: "git+https://github.com/ocaml/odoc.git"
+
+synopsis: "OCaml Documentation Generator"
+description: """
+**odoc** is a powerful and flexible documentation generator for OCaml. It reads *doc comments*, demarcated by `(** ... *)`, and transforms them into a variety of output formats, including HTML, LaTeX, and man pages.
+
+- **Output Formats:** Odoc generates HTML for web browsing, LaTeX for PDF generation, and man pages for use on Unix-like systems.
+- **Cross-References:** odoc uses the `ocamldoc` markup, which allows to create links for functions, types, modules, and documentation pages.
+- **Link to Source Code:** Documentation generated includes links to the source code of functions, providing an easy way to navigate from the docs to the actual implementation.
+- **Code Highlighting:** odoc automatically highlights syntax in code snippets for different languages.
+
+odoc is part of the [OCaml Platform](https://ocaml.org/docs/platform), the recommended set of tools for OCaml.
+"""
+
+
+depends: [
+ "odoc-parser" {= version}
+ "astring"
+ "cmdliner" {>= "1.0.0"}
+ "cppo" {build & >= "1.1.0"}
+ "dune" {>= "3.7.0"}
+ "fpath"
+ "ocaml" {>= "4.02.0" & < "5.2"}
+ "result"
+ "tyxml" {>= "4.4.0"}
+ "fmt"
+
+ "ocamlfind" {with-test}
+ "yojson" {>= "1.6.0" & with-test}
+ ("ocaml" {< "4.04.1" & with-test} | "sexplib0" {with-test})
+ "conf-jq" {with-test}
+
+ "ppx_expect" {with-test}
+ "bos" {with-test}
+ "crunch" {> "1.1.0"}
+
+ ("ocaml" {< "4.07.0" & with-test} | "bisect_ppx" {with-test & > "2.5.0"})
+]
+
+build: [
+ ["dune" "subst"] {dev}
+ [
+ "dune"
+ "build"
+ "-p"
+ name
+ "-j"
+ jobs
+ "@install"
+ "@runtest" {with-test}
+ "@doc" {with-doc}
+ ]
+]
+url {
+ src: "https://github.com/ocaml/odoc/releases/download/2.4.1/odoc-2.4.1.tbz"
+ checksum: [
+ "sha256=b814a0b9020b503eb67f17d1d9a969d052b63d8cdc7cdfa5fb793b137558cedb"
+ "sha512=8ed2ed6ef705c00a2c90b7c57e7e5c747247e3406f1b7415a46db7cbd19d02678db40be761984d627f4fa2d9b38f696c77d8b5d40108e12563e101d07949821c"
+ ]
+}
+x-commit-hash: "0e671097a35ef938ea390a6bb894f25d8dc847a8"
diff --git a/esy.lock/opam/ordering.3.10.0/opam b/esy.lock/opam/ordering.3.14.0/opam
similarity index 64%
rename from esy.lock/opam/ordering.3.10.0/opam
rename to esy.lock/opam/ordering.3.14.0/opam
index 13c515fc..d3778d6f 100644
--- a/esy.lock/opam/ordering.3.10.0/opam
+++ b/esy.lock/opam/ordering.3.14.0/opam
@@ -8,7 +8,7 @@ homepage: "https://github.com/ocaml/dune"
doc: "https://dune.readthedocs.io/"
bug-reports: "https://github.com/ocaml/dune/issues"
depends: [
- "dune" {>= "3.5"}
+ "dune" {>= "3.12"}
"ocaml" {>= "4.08.0"}
"odoc" {with-doc}
]
@@ -30,10 +30,10 @@ build: [
]
url {
src:
- "https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz"
+ "https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz"
checksum: [
- "sha256=9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
- "sha512=8133cdcc5499a6bf21cd65b4fc8b12445ae39366731006773fcd3b348c553a8d89d004db161c655aa167a2a3653b7919d32b27f29217106ef762bd01b43afc76"
+ "sha256=f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
+ "sha512=f5ead1a9a0cc26e00a762e83e107b47c3c3fe9b44d9e505547c385c7938208d4fdcc91a8099512e76ea4a426f3543445b4d75ef0b621dc7dbfdcbb615bc0b999"
]
}
-x-commit-hash: "fc382520272012638088848d7f3dd1ef6687a284"
+x-commit-hash: "73250f00372d3f28a25963ded6138728f4202663"
diff --git a/esy.lock/opam/pp.1.1.2/opam b/esy.lock/opam/pp.1.2.0/opam
similarity index 76%
rename from esy.lock/opam/pp.1.1.2/opam
rename to esy.lock/opam/pp.1.2.0/opam
index e09edbfd..9f4fad20 100644
--- a/esy.lock/opam/pp.1.1.2/opam
+++ b/esy.lock/opam/pp.1.2.0/opam
@@ -20,7 +20,7 @@ one [2] should be applicable to Pp as well.
"""
maintainer: ["Jeremie Dimino "]
authors: [
- "Jane Street Group, LLC"
+ "Jane Street Group, LLC "
"Jeremie Dimino "
]
license: "MIT"
@@ -28,9 +28,10 @@ homepage: "https://github.com/ocaml-dune/pp"
doc: "https://ocaml-dune.github.io/pp/"
bug-reports: "https://github.com/ocaml-dune/pp/issues"
depends: [
- "dune" {>= "2.0"}
+ "dune" {>= "2.8"}
"ocaml" {>= "4.08.0"}
"ppx_expect" {with-test}
+ "odoc" {with-doc}
]
build: [
["dune" "subst"] {dev}
@@ -47,12 +48,12 @@ build: [
]
]
dev-repo: "git+https://github.com/ocaml-dune/pp.git"
-x-commit-hash: "395b95c89cfe2c6d538dad9d56721b6a7278d46c"
url {
src:
- "https://github.com/ocaml-dune/pp/releases/download/1.1.2/pp-1.1.2.tbz"
+ "https://github.com/ocaml-dune/pp/releases/download/1.2.0/pp-1.2.0.tbz"
checksum: [
- "sha256=e4a4e98d96b1bb76950fcd6da4e938c86d989df4d7e48f02f7a44595f5af1d56"
- "sha512=58f78b083483006b40814be9aac33c895349eb1c6427d2762b4d760192613401262478bd5deff909763517560b06af7bf013c6a6f87d549aafa77b26345303f2"
+ "sha256=a5e822573c55afb42db29ec56eacd1f2acd8f65cf2df2878e291de374ce6909c"
+ "sha512=912164c2aa7241d73f735dadfbefe8ed0138d241579d2e885440e068fac78eb9f0b3d782c2420e757e313168c1725daff6ab91800dd315b1e05288456998b40a"
]
}
+x-commit-hash: "83b68c740f21acdcfe54436355ab328372871357"
diff --git a/esy.lock/opam/ppxlib.0.29.1/opam b/esy.lock/opam/ppxlib.0.32.1~5.2preview/opam
similarity index 65%
rename from esy.lock/opam/ppxlib.0.29.1/opam
rename to esy.lock/opam/ppxlib.0.32.1~5.2preview/opam
index 0a04c32e..b7353cae 100644
--- a/esy.lock/opam/ppxlib.0.29.1/opam
+++ b/esy.lock/opam/ppxlib.0.32.1~5.2preview/opam
@@ -1,9 +1,9 @@
opam-version: "2.0"
-synopsis: "Standard library for ppx rewriters"
+synopsis: "Standard infrastructure for ppx rewriters"
description: """
-Ppxlib is the standard library for ppx rewriters and other programs
-that manipulate the in-memory representation of OCaml programs, a.k.a
-the "Parsetree".
+Ppxlib is the standard infrastructure for ppx rewriters
+and other programs that manipulate the in-memory representation of
+OCaml programs, a.k.a the "Parsetree".
It also comes bundled with two ppx rewriters that are commonly used to
write tools that manipulate and/or generate Parsetree values;
@@ -20,7 +20,7 @@ doc: "https://ocaml-ppx.github.io/ppxlib/"
bug-reports: "https://github.com/ocaml-ppx/ppxlib/issues"
depends: [
"dune" {>= "2.7"}
- "ocaml" {>= "4.04.1" & < "5.1.0"}
+ "ocaml" {>= "4.04.1" & < "5.3.0"}
"ocaml-compiler-libs" {>= "v0.11.0"}
"ppx_derivers" {>= "1.0"}
"sexplib0" {>= "v0.12"}
@@ -29,13 +29,13 @@ depends: [
"ocamlfind" {with-test}
"re" {with-test & >= "1.9.0"}
"cinaps" {with-test & >= "v0.12.1"}
- "base" {with-test & < "v0.16.0" }
- "stdio" {with-test}
"odoc" {with-doc}
]
conflicts: [
"ocaml-migrate-parsetree" {< "2.0.0"}
"base-effects"
+ "ocaml-base-compiler" {= "5.1.0~alpha1"}
+ "ocaml-variants" {= "5.1.0~alpha1+options"}
]
build: [
["dune" "subst"] {dev}
@@ -52,12 +52,12 @@ build: [
]
]
dev-repo: "git+https://github.com/ocaml-ppx/ppxlib.git"
+flags: avoid-version
+available: opam-version >= "2.1.0"
url {
- src:
- "https://github.com/ocaml-ppx/ppxlib/releases/download/0.29.1/ppxlib-0.29.1.tbz"
+ src: "https://github.com/ocaml-ppx/ppxlib/archive/51851b4f9b18fe75a0bc24c383d5843855de87e3.tar.gz"
checksum: [
- "sha256=c8ea8c8770414fdba6612e7f2d814b21a493daa974ea862a90c8e6c766e5dd79"
- "sha512=edc468e9111cc26e31825e475fd72f55123a22fe86548e07e7d111796fecb8d60359b1b53c7eac383e5e2114cbae74dfd9c166f330e84cbeab4ddfd5797e322f"
+ "sha256=71c606dc9214769e5ea767b65559ae1d8296f5096dac30bd9ef91f645f1f60a3"
+ "sha512=dd7e6524789d99bd7394e1e7b1177ec3e36f2f7ef90e614ec908525255ad190378533501d88489d9677aabcce9e3a880d88947faec0718a2164a96772e7678f9"
]
}
-x-commit-hash: "36fcba0408b78963a730e0be92abdbab00b0ea26"
diff --git a/esy.lock/opam/ptime.1.1.0/opam b/esy.lock/opam/ptime.1.1.0/opam
new file mode 100644
index 00000000..39796c2a
--- /dev/null
+++ b/esy.lock/opam/ptime.1.1.0/opam
@@ -0,0 +1,41 @@
+opam-version: "2.0"
+synopsis: "POSIX time for OCaml"
+description: """\
+Ptime has platform independent POSIX time support in pure OCaml. It
+provides a type to represent a well-defined range of POSIX timestamps
+with picosecond precision, conversion with date-time values,
+conversion with [RFC 3339 timestamps][rfc3339] and pretty printing to
+a human-readable, locale-independent representation.
+
+The additional Ptime_clock library provides access to a system POSIX
+clock and to the system's current time zone offset.
+
+Ptime is not a calendar library.
+
+Ptime has no dependency. Ptime_clock depends on your system library or
+JavaScript runtime system. Ptime and its libraries are distributed
+under the ISC license.
+
+[rfc3339]: http://tools.ietf.org/html/rfc3339
+
+Home page: """
+maintainer: "Daniel Bünzli "
+authors: "The ptime programmers"
+license: "ISC"
+tags: ["time" "posix" "system" "org:erratique"]
+homepage: "https://erratique.ch/software/ptime"
+doc: "https://erratique.ch/software/ptime/doc/"
+bug-reports: "https://github.com/dbuenzli/ptime/issues"
+depends: [
+ "ocaml" {>= "4.08.0"}
+ "ocamlfind" {build}
+ "ocamlbuild" {build & != "0.9.0"}
+ "topkg" {build & >= "1.0.3"}
+]
+build: ["ocaml" "pkg/pkg.ml" "build" "--dev-pkg" "%{dev}%"]
+dev-repo: "git+https://erratique.ch/repos/ptime.git"
+url {
+ src: "https://erratique.ch/software/ptime/releases/ptime-1.1.0.tbz"
+ checksum:
+ "sha512=309b8383f61b58840e58a82802ec8fbc61b7cc95a4590d38ad427e484cbaaf66f03fa8e6484b5b6855468a87e745aed103bf6f1041ec05062230a9fa5fb86cc6"
+}
\ No newline at end of file
diff --git a/esy.lock/opam/re.1.10.4/opam b/esy.lock/opam/re.1.11.0/opam
similarity index 69%
rename from esy.lock/opam/re.1.10.4/opam
rename to esy.lock/opam/re.1.11.0/opam
index 9dad6613..303af008 100644
--- a/esy.lock/opam/re.1.10.4/opam
+++ b/esy.lock/opam/re.1.11.0/opam
@@ -8,7 +8,7 @@ authors: [
"Rudi Grinberg"
"Gabriel Radanne"
]
-license: "LGPL-2.0-or-later WITH OCaml-LGPL-linking-exception"
+license: "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception"
homepage: "https://github.com/ocaml/ocaml-re"
bug-reports: "https://github.com/ocaml/ocaml-re/issues"
dev-repo: "git+https://github.com/ocaml/ocaml-re.git"
@@ -37,10 +37,10 @@ Pure OCaml regular expressions with:
"""
url {
src:
- "https://github.com/ocaml/ocaml-re/releases/download/1.10.4/re-1.10.4.tbz"
+ "https://github.com/ocaml/ocaml-re/releases/download/1.11.0/re-1.11.0.tbz"
checksum: [
- "sha256=83eb3e4300aa9b1dc7820749010f4362ea83524742130524d78c20ce99ca747c"
- "sha512=92b05cf92c389fa8c753f2acca837b15dd05a4a2e8e2bec7a269d2e14c35b1a786d394258376648f80b4b99250ba1900cfe68230b8385aeac153149d9ce56099"
+ "sha256=01fc244780c0f6be72ae796b1fb750f367de18624fd75d07ee79782ed6df8d4f"
+ "sha512=3e3712cc1266ec1f27620f3508ea2ebba338f4083b07d8a69dccee1facfdc1971a6c39f9deea664d2a62fd7f2cfd2eae816ca4c274acfadaee992a3befc4b757"
]
}
-x-commit-hash: "e9a4cecb8294c1839db18b1d0c30e755ec85ed5e"
+x-commit-hash: "2dd38515c76c40299596d39f18d9b9a20f00d788"
diff --git a/esy.lock/opam/stdune.3.10.0/opam b/esy.lock/opam/stdune.3.14.0/opam
similarity index 68%
rename from esy.lock/opam/stdune.3.10.0/opam
rename to esy.lock/opam/stdune.3.14.0/opam
index 7b84cc64..a1c0372f 100644
--- a/esy.lock/opam/stdune.3.10.0/opam
+++ b/esy.lock/opam/stdune.3.14.0/opam
@@ -9,12 +9,12 @@ homepage: "https://github.com/ocaml/dune"
doc: "https://dune.readthedocs.io/"
bug-reports: "https://github.com/ocaml/dune/issues"
depends: [
- "dune" {>= "3.5"}
+ "dune" {>= "3.12"}
"ocaml" {>= "4.08.0"}
"base-unix"
"dyn" {= version}
"ordering" {= version}
- "pp" {>= "1.1.0"}
+ "pp" {>= "1.2.0"}
"csexp" {>= "1.5.0"}
"odoc" {with-doc}
]
@@ -36,10 +36,10 @@ build: [
]
url {
src:
- "https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz"
+ "https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz"
checksum: [
- "sha256=9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
- "sha512=8133cdcc5499a6bf21cd65b4fc8b12445ae39366731006773fcd3b348c553a8d89d004db161c655aa167a2a3653b7919d32b27f29217106ef762bd01b43afc76"
+ "sha256=f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
+ "sha512=f5ead1a9a0cc26e00a762e83e107b47c3c3fe9b44d9e505547c385c7938208d4fdcc91a8099512e76ea4a426f3543445b4d75ef0b621dc7dbfdcbb615bc0b999"
]
}
-x-commit-hash: "fc382520272012638088848d7f3dd1ef6687a284"
+x-commit-hash: "73250f00372d3f28a25963ded6138728f4202663"
diff --git a/esy.lock/opam/tyxml.4.5.0/opam b/esy.lock/opam/tyxml.4.6.0/opam
similarity index 72%
rename from esy.lock/opam/tyxml.4.5.0/opam
rename to esy.lock/opam/tyxml.4.6.0/opam
index 22c77607..a0e62e11 100644
--- a/esy.lock/opam/tyxml.4.5.0/opam
+++ b/esy.lock/opam/tyxml.4.6.0/opam
@@ -9,12 +9,13 @@ homepage: "https://github.com/ocsigen/tyxml"
doc: "https://ocsigen.org/tyxml/latest/manual/intro"
bug-reports: "https://github.com/ocsigen/tyxml/issues"
depends: [
- "dune" {>= "2.0"}
- "ocaml" {>= "4.02"}
+ "dune" {>= "2.7"}
+ "ocaml" {>= "4.04"}
"alcotest" {with-test}
- "re" {>= "1.5.0"}
+ "re" {>= "1.7.2"}
"seq"
"uutf" {>= "1.0.0"}
+ "odoc" {with-doc}
]
build: [
["dune" "subst"] {dev}
@@ -31,12 +32,12 @@ build: [
]
]
dev-repo: "git+https://github.com/ocsigen/tyxml.git"
-x-commit-hash: "ef431a4bceaefb2d9248e79092e6c1a1a9420095"
url {
src:
- "https://github.com/ocsigen/tyxml/releases/download/4.5.0/tyxml-4.5.0.tbz"
+ "https://github.com/ocsigen/tyxml/releases/download/4.6.0/tyxml-4.6.0.tbz"
checksum: [
- "sha256=c69accef5df4dd89d38f6aa0baad01e8fda4e9e98bb7dad61bec1452c5716068"
- "sha512=772535441b09c393d53c27152e65f404a0a541aa0cea1bda899a8d751ab64d1729237e583618c3ff33d75e3865d53503d1ea413c6bbc8c68c413347efd1709b3"
+ "sha256=bfeb673c6b4e120a4eca4c48448add47dc3f8d02c2b40f63ffdccc4e91c902dd"
+ "sha512=69750eeaf467014282087bf9628f3278f3e5f00f4c7400358750d208664cfc3f79a5cba16767d2935e53477d1a6862fe08c5b801b69052ec12e09d1a93a5e9b4"
]
}
+x-commit-hash: "d2916535536f2134bad7793a598ba5b7327cae41"
diff --git a/esy.lock/opam/xdg.3.10.0/opam b/esy.lock/opam/xdg.3.14.0/opam
similarity index 67%
rename from esy.lock/opam/xdg.3.10.0/opam
rename to esy.lock/opam/xdg.3.14.0/opam
index fa7d65c3..55d99b69 100644
--- a/esy.lock/opam/xdg.3.10.0/opam
+++ b/esy.lock/opam/xdg.3.14.0/opam
@@ -9,7 +9,7 @@ homepage: "https://github.com/ocaml/dune"
doc: "https://dune.readthedocs.io/"
bug-reports: "https://github.com/ocaml/dune/issues"
depends: [
- "dune" {>= "3.5"}
+ "dune" {>= "3.12"}
"ocaml" {>= "4.08"}
"odoc" {with-doc}
]
@@ -31,10 +31,10 @@ build: [
]
url {
src:
- "https://github.com/ocaml/dune/releases/download/3.10.0/dune-3.10.0.tbz"
+ "https://github.com/ocaml/dune/releases/download/3.14.0/dune-3.14.0.tbz"
checksum: [
- "sha256=9ff03384a98a8df79852cc674f0b4738ba8aec17029b6e2eeb514f895e710355"
- "sha512=8133cdcc5499a6bf21cd65b4fc8b12445ae39366731006773fcd3b348c553a8d89d004db161c655aa167a2a3653b7919d32b27f29217106ef762bd01b43afc76"
+ "sha256=f4d09d89162621fdff424c253fa50c4920d2179fb5b3d1debab7bbe97c68b2fc"
+ "sha512=f5ead1a9a0cc26e00a762e83e107b47c3c3fe9b44d9e505547c385c7938208d4fdcc91a8099512e76ea4a426f3543445b4d75ef0b621dc7dbfdcbb615bc0b999"
]
}
-x-commit-hash: "fc382520272012638088848d7f3dd1ef6687a284"
+x-commit-hash: "73250f00372d3f28a25963ded6138728f4202663"
diff --git a/esy.lock/opam/yojson.2.1.0/opam b/esy.lock/opam/yojson.2.1.2/opam
similarity index 77%
rename from esy.lock/opam/yojson.2.1.0/opam
rename to esy.lock/opam/yojson.2.1.2/opam
index 4e90c158..df37a739 100644
--- a/esy.lock/opam/yojson.2.1.0/opam
+++ b/esy.lock/opam/yojson.2.1.2/opam
@@ -39,10 +39,10 @@ build: [
dev-repo: "git+https://github.com/ocaml-community/yojson.git"
url {
src:
- "https://github.com/ocaml-community/yojson/releases/download/2.1.0/yojson-2.1.0.tbz"
+ "https://github.com/ocaml-community/yojson/releases/download/2.1.2/yojson-2.1.2.tbz"
checksum: [
- "sha256=9fcb1ff2db58ab259f9228796b0ada4794eae97177b1833371380c4e4f90b15d"
- "sha512=31ab8580e0e4e8a05459fbec2fb9424a3df4cf5aef6df21fc577dbe3d32e81103a632c6a511c4dcf1f51819e88b38d2ce7d6888545bc3f359e69e070f8d2e69c"
+ "sha256=59f2f1abbfc8a7ccbdbf608894e5c75e8a76006e34899254446f83e200dfb4f9"
+ "sha512=309cba7568dec51de20c7ab8df033258c275b8d58b0a36a66b26e673a3bc050cbd7e39ff8fe4796e89263e125bcc21e04dc36a394f3cc201956887eee1fb281a"
]
}
-x-commit-hash: "42fa0887cb870bdbd1751d98cd23f99d6b29751d"
+x-commit-hash: "e51163ee04ad79408975545ec5fc3b7dc41f68eb"
diff --git a/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/files/ocamlbuild-0.14.2.patch b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/files/ocamlbuild-0.14.2.patch
new file mode 100644
index 00000000..e69de29b
diff --git a/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.2+win_opam_override/files/winpatch.patch b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/files/winpatch.patch
similarity index 100%
rename from esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.2+win_opam_override/files/winpatch.patch
rename to esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/files/winpatch.patch
diff --git a/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.2+win_opam_override/package.json b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/package.json
similarity index 100%
rename from esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.2+win_opam_override/package.json
rename to esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.3_opam_override/package.json
diff --git a/esy.lock/overrides/opam__s__ptime_opam__c__1.1.0_opam_override/package.json b/esy.lock/overrides/opam__s__ptime_opam__c__1.1.0_opam_override/package.json
new file mode 100644
index 00000000..59515d3d
--- /dev/null
+++ b/esy.lock/overrides/opam__s__ptime_opam__c__1.1.0_opam_override/package.json
@@ -0,0 +1,3 @@
+{
+ "build": "bash -c 'ocaml pkg/pkg.ml build --dev-pkg false || (./_build/sanitize.sh; ocaml pkg/pkg.ml build --dev-pkg false)'"
+}
diff --git a/io/ODiffIO.ml b/io/ODiffIO.ml
new file mode 100644
index 00000000..c8c70786
--- /dev/null
+++ b/io/ODiffIO.ml
@@ -0,0 +1,4 @@
+module Bmp = Bmp
+module Png = Png
+module Jpg = Jpg
+module Tiff = Tiff
diff --git a/io/ODiffIO.re b/io/ODiffIO.re
deleted file mode 100644
index 0b231c16..00000000
--- a/io/ODiffIO.re
+++ /dev/null
@@ -1,4 +0,0 @@
-module Bmp = Bmp;
-module Png = Png;
-module Jpg = Jpg;
-module Tiff = Tiff;
diff --git a/io/bmp/Bmp.ml b/io/bmp/Bmp.ml
new file mode 100644
index 00000000..7612ddc1
--- /dev/null
+++ b/io/bmp/Bmp.ml
@@ -0,0 +1,30 @@
+open Bigarray
+
+type data = (int32, int32_elt, c_layout) Array1.t
+
+module IO : Odiff.ImageIO.ImageIO = struct
+ type t = data
+
+ let loadImage filename : t Odiff.ImageIO.img =
+ let width, height, data = ReadBmp.load filename in
+ { width; height; image = data }
+
+ let readDirectPixel ~(x : int) ~(y : int) (img : t Odiff.ImageIO.img) =
+ let image : data = img.image in
+ Array1.unsafe_get image ((y * img.width) + x)
+ [@@inline]
+
+ let setImgColor ~x ~y color (img : t Odiff.ImageIO.img) =
+ let image : data = img.image in
+ Array1.unsafe_set image ((y * img.width) + x) color
+ [@@inline]
+
+ let saveImage (img : t Odiff.ImageIO.img) filename =
+ WritePng.write_png_bigarray filename img.image img.width img.height
+
+ let freeImage (img : t Odiff.ImageIO.img) = ()
+
+ let makeSameAsLayout (img : t Odiff.ImageIO.img) =
+ let image = Array1.create int32 c_layout (Array1.dim img.image) in
+ { img with image }
+end
diff --git a/io/bmp/Bmp.mli b/io/bmp/Bmp.mli
new file mode 100644
index 00000000..913c029c
--- /dev/null
+++ b/io/bmp/Bmp.mli
@@ -0,0 +1,3 @@
+type data = (int32, Bigarray.int32_elt, Bigarray.c_layout) Bigarray.Array1.t
+
+module IO : Odiff.ImageIO.ImageIO
diff --git a/io/bmp/Bmp.re b/io/bmp/Bmp.re
deleted file mode 100644
index ff5371da..00000000
--- a/io/bmp/Bmp.re
+++ /dev/null
@@ -1,38 +0,0 @@
-open Bigarray;
-
-type data = Array1.t(int32, int32_elt, c_layout);
-
-module IO: Odiff.ImageIO.ImageIO = {
- type t = data;
-
- let loadImage = (filename): Odiff.ImageIO.img(t) => {
- let (width, height, data) = ReadBmp.load(filename);
-
- {width, height, image: data};
- };
-
- [@inline]
- let readDirectPixel = (~x: int, ~y: int, img: Odiff.ImageIO.img(t)) => {
- let image: data = img.image;
- Array1.unsafe_get(image, y * img.width + x);
- };
-
- [@inline]
- let setImgColor = (~x, ~y, color, img: Odiff.ImageIO.img(t)) => {
- let image: data = img.image;
- Array1.unsafe_set(image, y * img.width + x, color);
- };
-
- let saveImage = (img: Odiff.ImageIO.img(t), filename) => {
- WritePng.write_png_bigarray(filename, img.image, img.width, img.height);
- };
-
- let freeImage = (img: Odiff.ImageIO.img(t)) => {
- ();
- };
-
- let makeSameAsLayout = (img: Odiff.ImageIO.img(t)) => {
- let image = Array1.create(int32, c_layout, Array1.dim(img.image));
- {...img, image};
- };
-};
diff --git a/io/bmp/Bmp.rei b/io/bmp/Bmp.rei
deleted file mode 100644
index 256a8d3f..00000000
--- a/io/bmp/Bmp.rei
+++ /dev/null
@@ -1,3 +0,0 @@
-type data = Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout);
-
-module IO: Odiff.ImageIO.ImageIO;
diff --git a/io/bmp/ReadBmp.ml b/io/bmp/ReadBmp.ml
new file mode 100644
index 00000000..c203e98f
--- /dev/null
+++ b/io/bmp/ReadBmp.ml
@@ -0,0 +1,169 @@
+open Bigarray
+
+type bicompression = BI_RGB | BI_RLE8 | BI_RLE4 | BI_BITFIELDS
+type bibitcount = Monochrome | Color16 | Color256 | ColorRGB | ColorRGBA
+
+type bitmapfileheader = {
+ bfType : int;
+ bfSize : int;
+ bfReserved1 : int;
+ bfReserved2 : int;
+ bfOffBits : int;
+}
+
+type bitmapinfoheader = {
+ biSize : int;
+ biWidth : int;
+ biHeight : int;
+ biPlanes : int;
+ biBitCount : bibitcount;
+ biCompression : bicompression;
+ biSizeImage : int;
+ biXPelsPerMeter : int;
+ biYPelsPerMeter : int;
+ biClrUsed : int;
+ biClrImportant : int;
+}
+
+type bmp = {
+ bmpFileHeader : bitmapfileheader;
+ bmpInfoHeader : bitmapinfoheader;
+ bmpBytes : (int32, Bigarray.int32_elt, Bigarray.c_layout) Bigarray.Array1.t;
+}
+
+let bytes_read = ref 0
+
+let read_byte ic =
+ incr bytes_read;
+ input_byte ic
+
+let skip_byte ic =
+ incr bytes_read;
+ ignore (input_byte ic)
+
+let read_16bit ic =
+ let b0 = read_byte ic in
+ let b1 = read_byte ic in
+ (b1 lsl 8) + b0
+
+let read_32bit ic =
+ let b0 = read_byte ic in
+ let b1 = read_byte ic in
+ let b2 = read_byte ic in
+ let b3 = read_byte ic in
+ (b3 lsl 24) + (b2 lsl 16) + (b1 lsl 8) + b0
+
+let read_bit_count ic =
+ match read_16bit ic with
+ | 1 -> Monochrome
+ | 4 -> Color16
+ | 8 -> Color256
+ | 24 -> ColorRGB
+ | 32 -> ColorRGBA
+ | n -> failwith ("invalid number of colors in bitmap: " ^ string_of_int n)
+
+let read_compression ic =
+ match read_32bit ic with
+ | 0 -> BI_RGB
+ | 1 -> BI_RLE8
+ | 2 -> BI_RLE4
+ | 3 -> BI_BITFIELDS
+ | n -> failwith ("invalid compression: " ^ string_of_int n)
+
+let load_bitmapfileheader ic =
+ let bfType = read_16bit ic in
+ if bfType <> 19778 then failwith "Invalid bitmap file";
+ let bfSize = read_32bit ic in
+ let bfReserved1 = read_16bit ic in
+ let bfReserved2 = read_16bit ic in
+ let bfOffBits = read_32bit ic in
+ { bfType; bfSize; bfReserved1; bfReserved2; bfOffBits }
+
+let load_bitmapinfoheader ic =
+ try
+ let biSize = read_32bit ic in
+ let biWidth = read_32bit ic in
+ let biHeight = read_32bit ic in
+ let biPlanes = read_16bit ic in
+ let biBitCount = read_bit_count ic in
+ let biCompression = read_compression ic in
+ let biSizeImage = read_32bit ic in
+ let biXPelsPerMeter = read_32bit ic in
+ let biYPelsPerMeter = read_32bit ic in
+ let biClrUsed = read_32bit ic in
+ let biClrImportant = read_32bit ic in
+ {
+ biSize;
+ biWidth;
+ biHeight;
+ biPlanes;
+ biBitCount;
+ biCompression;
+ biSizeImage;
+ biXPelsPerMeter;
+ biYPelsPerMeter;
+ biClrUsed;
+ biClrImportant;
+ }
+ with ((Failure s) [@explicit_arity]) as e ->
+ prerr_endline s;
+ raise e
+
+let load_image24data bih ic =
+ let data = Array1.create int32 c_layout (bih.biWidth * bih.biHeight) in
+ let pad = (4 - (bih.biWidth * 3 mod 4)) land 3 in
+ for y = bih.biHeight - 1 downto 0 do
+ for x = 0 to bih.biWidth - 1 do
+ let b = (read_byte ic land 255) lsl 16 in
+ let g = (read_byte ic land 255) lsl 8 in
+ let r = (read_byte ic land 255) lsl 0 in
+ let a = 255 lsl 24 in
+ Array1.set data
+ ((y * bih.biWidth) + x)
+ (Int32.of_int (a lor b lor g lor r))
+ done;
+ for _j = 0 to pad - 1 do
+ skip_byte ic
+ done
+ done;
+ data
+
+let load_image32data bih ic =
+ let data = Array1.create int32 c_layout (bih.biWidth * bih.biHeight) in
+ for y = bih.biHeight - 1 downto 0 do
+ for x = 0 to bih.biWidth - 1 do
+ let b = (read_byte ic land 255) lsl 16 in
+ let g = (read_byte ic land 255) lsl 8 in
+ let r = (read_byte ic land 255) lsl 0 in
+ let a = (read_byte ic land 255) lsl 24 in
+ Array1.set data
+ ((y * bih.biWidth) + x)
+ (Int32.of_int (a lor b lor g lor r))
+ done
+ done;
+ data
+
+let load_imagedata bih ic =
+ match bih.biBitCount with
+ | ColorRGBA -> load_image32data bih ic
+ | ColorRGB -> load_image24data bih ic
+ | _ -> failwith "BMP has to be 32 or 24 bit"
+
+let skip_to ic n =
+ while !bytes_read <> n do
+ skip_byte ic
+ done
+
+let read_bmp ic =
+ bytes_read := 0;
+ let bmpFileHeader = load_bitmapfileheader ic in
+ let bmpInfoHeader = load_bitmapinfoheader ic in
+ skip_to ic bmpFileHeader.bfOffBits;
+ let bmpBytes = load_imagedata bmpInfoHeader ic in
+ { bmpFileHeader; bmpInfoHeader; bmpBytes }
+
+let load filename =
+ let ic = open_in_bin filename in
+ let bmp = read_bmp ic in
+ close_in ic;
+ (bmp.bmpInfoHeader.biWidth, bmp.bmpInfoHeader.biHeight, bmp.bmpBytes)
diff --git a/io/bmp/ReadBmp.mli b/io/bmp/ReadBmp.mli
new file mode 100644
index 00000000..da354d47
--- /dev/null
+++ b/io/bmp/ReadBmp.mli
@@ -0,0 +1,3 @@
+val load :
+ string ->
+ int * int * (int32, Bigarray.int32_elt, Bigarray.c_layout) Bigarray.Array1.t
diff --git a/io/bmp/ReadBmp.re b/io/bmp/ReadBmp.re
deleted file mode 100644
index ee7583d0..00000000
--- a/io/bmp/ReadBmp.re
+++ /dev/null
@@ -1,208 +0,0 @@
-open Bigarray;
-
-type bicompression =
- | BI_RGB
- | BI_RLE8
- | BI_RLE4
- | BI_BITFIELDS;
-
-type bibitcount =
- | Monochrome
- | Color16
- | Color256
- | ColorRGB
- | ColorRGBA;
-
-type bitmapfileheader = {
- bfType: int,
- bfSize: int,
- bfReserved1: int,
- bfReserved2: int,
- bfOffBits: int,
-};
-
-type bitmapinfoheader = {
- biSize: int,
- biWidth: int,
- biHeight: int,
- biPlanes: int,
- biBitCount: bibitcount,
- biCompression: bicompression,
- biSizeImage: int,
- biXPelsPerMeter: int,
- biYPelsPerMeter: int,
- biClrUsed: int,
- biClrImportant: int,
-};
-
-type bmp = {
- bmpFileHeader: bitmapfileheader,
- bmpInfoHeader: bitmapinfoheader,
- bmpBytes: Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout),
-};
-
-let bytes_read = ref(0);
-
-let read_byte = ic => {
- incr(bytes_read);
- input_byte(ic);
-};
-let skip_byte = ic => {
- incr(bytes_read);
- ignore(input_byte(ic));
-};
-
-let read_16bit = ic => {
- let b0 = read_byte(ic);
- let b1 = read_byte(ic);
-
- b1 lsl 8 + b0;
-};
-
-let read_32bit = ic => {
- let b0 = read_byte(ic);
- let b1 = read_byte(ic);
- let b2 = read_byte(ic);
- let b3 = read_byte(ic);
-
- b3 lsl 24 + b2 lsl 16 + b1 lsl 8 + b0;
-};
-
-let read_bit_count = ic =>
- switch (read_16bit(ic)) {
- | 1 => Monochrome
- | 4 => Color16
- | 8 => Color256
- | 24 => ColorRGB
- | 32 => ColorRGBA
- | n => failwith("invalid number of colors in bitmap: " ++ string_of_int(n))
- };
-
-let read_compression = ic =>
- switch (read_32bit(ic)) {
- | 0 => BI_RGB
- | 1 => BI_RLE8
- | 2 => BI_RLE4
- | 3 => BI_BITFIELDS
- | n => failwith("invalid compression: " ++ string_of_int(n))
- };
-
-let load_bitmapfileheader = ic => {
- let bfType = read_16bit(ic);
- if (bfType != 19778) {
- failwith("Invalid bitmap file");
- };
- let bfSize = read_32bit(ic);
- let bfReserved1 = read_16bit(ic);
- let bfReserved2 = read_16bit(ic);
- let bfOffBits = read_32bit(ic);
- {bfType, bfSize, bfReserved1, bfReserved2, bfOffBits};
-};
-
-let load_bitmapinfoheader = ic =>
- try({
- let biSize = read_32bit(ic);
- let biWidth = read_32bit(ic);
- let biHeight = read_32bit(ic);
- let biPlanes = read_16bit(ic);
- let biBitCount = read_bit_count(ic);
- let biCompression = read_compression(ic);
- let biSizeImage = read_32bit(ic);
- let biXPelsPerMeter = read_32bit(ic);
- let biYPelsPerMeter = read_32bit(ic);
- let biClrUsed = read_32bit(ic);
- let biClrImportant = read_32bit(ic);
- {
- biSize,
- biWidth,
- biHeight,
- biPlanes,
- biBitCount,
- biCompression,
- biSizeImage,
- biXPelsPerMeter,
- biYPelsPerMeter,
- biClrUsed,
- biClrImportant,
- };
- }) {
- | Failure(s) as e =>
- prerr_endline(s);
- raise(e);
- };
-
-let load_image24data = (bih, ic) => {
- let data = Array1.create(int32, c_layout, bih.biWidth * bih.biHeight);
- let pad = (4 - bih.biWidth * 3 mod 4) land 3;
-
- for (y in bih.biHeight - 1 downto 0) {
- for (x in 0 to bih.biWidth - 1) {
- let b = (read_byte(ic) land 0xFF) lsl 16;
- let g = (read_byte(ic) land 0xFF) lsl 8;
- let r = (read_byte(ic) land 0xFF) lsl 0;
- let a = 0xFF lsl 24;
- Array1.set(
- data,
- y * bih.biWidth + x,
- Int32.of_int(a lor b lor g lor r),
- );
- };
- for (_j in 0 to pad - 1) {
- skip_byte(ic);
- };
- };
- data;
-};
-
-let load_image32data = (bih, ic) => {
- let data = Array1.create(int32, c_layout, bih.biWidth * bih.biHeight);
-
- for (y in bih.biHeight - 1 downto 0) {
- for (x in 0 to bih.biWidth - 1) {
- let b = (read_byte(ic) land 0xFF) lsl 16;
- let g = (read_byte(ic) land 0xFF) lsl 8;
- let r = (read_byte(ic) land 0xFF) lsl 0;
- let a = (read_byte(ic) land 0xFF) lsl 24;
- Array1.set(
- data,
- y * bih.biWidth + x,
- Int32.of_int(a lor b lor g lor r),
- );
- };
- };
- data;
-};
-
-let load_imagedata = (bih, ic) => {
- switch (bih.biBitCount) {
- | ColorRGBA => load_image32data(bih, ic)
- | ColorRGB => load_image24data(bih, ic)
- | _ => failwith("BMP has to be 32 or 24 bit")
- };
-};
-
-let skip_to = (ic, n) => {
- while (bytes_read^ != n) {
- skip_byte(ic);
- };
-};
-
-let read_bmp = ic => {
- bytes_read := 0;
-
- let bmpFileHeader = load_bitmapfileheader(ic);
- let bmpInfoHeader = load_bitmapinfoheader(ic);
-
- skip_to(ic, bmpFileHeader.bfOffBits);
- let bmpBytes = load_imagedata(bmpInfoHeader, ic);
-
- {bmpFileHeader, bmpInfoHeader, bmpBytes};
-};
-
-let load = filename => {
- let ic = open_in_bin(filename);
- let bmp = read_bmp(ic);
- close_in(ic);
-
- (bmp.bmpInfoHeader.biWidth, bmp.bmpInfoHeader.biHeight, bmp.bmpBytes);
-};
diff --git a/io/bmp/ReadBmp.rei b/io/bmp/ReadBmp.rei
deleted file mode 100644
index 4738f862..00000000
--- a/io/bmp/ReadBmp.rei
+++ /dev/null
@@ -1,3 +0,0 @@
-let load:
- string =>
- (int, int, Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout));
diff --git a/io/config/discover.ml b/io/config/discover.ml
new file mode 100644
index 00000000..da8da519
--- /dev/null
+++ b/io/config/discover.ml
@@ -0,0 +1,27 @@
+module C = Configurator.V1
+
+let _ =
+ C.main ~name:"odiff-c-lib-package-resolver" (fun _c ->
+ let spng_include_path = Sys.getenv "SPNG_INCLUDE_PATH" |> String.trim in
+ let spng_lib_path = Sys.getenv "SPNG_LIB_PATH" |> String.trim in
+ let libspng = spng_lib_path ^ "/libspng_static.a" in
+ let jpeg_include_path = Sys.getenv "JPEG_INCLUDE_PATH" |> String.trim in
+ let jpeg_lib_path = Sys.getenv "JPEG_LIB_PATH" |> String.trim in
+ let libjpeg = jpeg_lib_path ^ "/libjpeg.a" in
+ let tiff_include_path = Sys.getenv "TIFF_INCLUDE_PATH" |> String.trim in
+ let tiff_lib_path = Sys.getenv "TIFF_LIB_PATH" |> String.trim in
+ let libtiff = tiff_lib_path ^ "/libtiff.a" in
+ let z_lib_path = Sys.getenv "Z_LIB_PATH" |> String.trim in
+ let zlib = z_lib_path ^ "/libz.a" in
+ C.Flags.write_sexp "png_write_c_flags.sexp" [ "-I" ^ spng_include_path ];
+ C.Flags.write_sexp "png_write_c_library_flags.sexp" [ libspng; zlib ];
+ C.Flags.write_sexp "png_write_flags.sexp" [ "-cclib"; libspng ];
+ C.Flags.write_sexp "png_c_flags.sexp" [ "-I" ^ spng_include_path ];
+ C.Flags.write_sexp "png_c_library_flags.sexp" [ libspng; zlib ];
+ C.Flags.write_sexp "png_flags.sexp" [ "-cclib"; libspng ];
+ C.Flags.write_sexp "jpg_c_flags.sexp" [ "-I" ^ jpeg_include_path ];
+ C.Flags.write_sexp "jpg_c_library_flags.sexp" [ libjpeg ];
+ C.Flags.write_sexp "jpg_flags.sexp" [ "-cclib"; libjpeg ];
+ C.Flags.write_sexp "tiff_c_flags.sexp" [ "-I" ^ tiff_include_path ];
+ C.Flags.write_sexp "tiff_c_library_flags.sexp" [ libtiff; zlib ];
+ C.Flags.write_sexp "tiff_flags.sexp" [ "-cclib"; libtiff ])
diff --git a/io/config/discover.re b/io/config/discover.re
deleted file mode 100644
index c2814f92..00000000
--- a/io/config/discover.re
+++ /dev/null
@@ -1,34 +0,0 @@
-module C = Configurator.V1;
-
-C.main(~name="odiff-c-lib-package-resolver", _c => {
- let spng_include_path = Sys.getenv("SPNG_INCLUDE_PATH") |> String.trim;
- let spng_lib_path = Sys.getenv("SPNG_LIB_PATH") |> String.trim;
- let libspng = spng_lib_path ++ "/libspng_static.a";
-
- let jpeg_include_path = Sys.getenv("JPEG_INCLUDE_PATH") |> String.trim;
- let jpeg_lib_path = Sys.getenv("JPEG_LIB_PATH") |> String.trim;
- let libjpeg = jpeg_lib_path ++ "/libjpeg.a";
-
- let tiff_include_path = Sys.getenv("TIFF_INCLUDE_PATH") |> String.trim;
- let tiff_lib_path = Sys.getenv("TIFF_LIB_PATH") |> String.trim;
- let libtiff = tiff_lib_path ++ "/libtiff.a";
-
- let z_lib_path = Sys.getenv("Z_LIB_PATH") |> String.trim;
- let zlib = z_lib_path ++ "/libz.a";
-
- C.Flags.write_sexp("png_write_c_flags.sexp", ["-I" ++ spng_include_path]);
- C.Flags.write_sexp("png_write_c_library_flags.sexp", [libspng, zlib]);
- C.Flags.write_sexp("png_write_flags.sexp", ["-cclib", libspng]);
-
- C.Flags.write_sexp("png_c_flags.sexp", ["-I" ++ spng_include_path]);
- C.Flags.write_sexp("png_c_library_flags.sexp", [libspng, zlib]);
- C.Flags.write_sexp("png_flags.sexp", ["-cclib", libspng]);
-
- C.Flags.write_sexp("jpg_c_flags.sexp", ["-I" ++ jpeg_include_path]);
- C.Flags.write_sexp("jpg_c_library_flags.sexp", [libjpeg]);
- C.Flags.write_sexp("jpg_flags.sexp", ["-cclib", libjpeg]);
-
- C.Flags.write_sexp("tiff_c_flags.sexp", ["-I" ++ tiff_include_path]);
- C.Flags.write_sexp("tiff_c_library_flags.sexp", [libtiff, zlib]);
- C.Flags.write_sexp("tiff_flags.sexp", ["-cclib", libtiff]);
-});
diff --git a/io/config/dune b/io/config/dune
index d07fdf0f..bc2970ff 100644
--- a/io/config/dune
+++ b/io/config/dune
@@ -2,4 +2,4 @@
(name discover)
(ocamlc_flags str.cma)
(ocamlopt_flags str.cmxa)
- (libraries dune-configurator))
\ No newline at end of file
+ (libraries dune-configurator))
diff --git a/io/jpg/Jpg.ml b/io/jpg/Jpg.ml
new file mode 100644
index 00000000..73fc3439
--- /dev/null
+++ b/io/jpg/Jpg.ml
@@ -0,0 +1,28 @@
+open Bigarray
+
+type data = (int32, int32_elt, c_layout) Array1.t
+
+module IO = struct
+ type buffer
+ type t = { data : data; buffer : buffer }
+
+ let loadImage filename : t Odiff.ImageIO.img =
+ let width, height, data, buffer = ReadJpg.read_jpeg_image filename in
+ { width; height; image = { data; buffer } }
+
+ let readDirectPixel ~x ~y (img : t Odiff.ImageIO.img) =
+ Array1.unsafe_get img.image.data ((y * img.width) + x)
+
+ let setImgColor ~x ~y color (img : t Odiff.ImageIO.img) =
+ Array1.unsafe_set img.image.data ((y * img.width) + x) color
+
+ let saveImage (img : t Odiff.ImageIO.img) filename =
+ WritePng.write_png_bigarray filename img.image.data img.width img.height
+
+ let freeImage (img : t Odiff.ImageIO.img) =
+ ReadJpg.cleanup_jpg img.image.buffer
+
+ let makeSameAsLayout (img : t Odiff.ImageIO.img) =
+ let data = Array1.create int32 c_layout (Array1.dim img.image.data) in
+ { img with image = { data; buffer = img.image.buffer } }
+end
diff --git a/io/jpg/Jpg.mli b/io/jpg/Jpg.mli
new file mode 100644
index 00000000..913c029c
--- /dev/null
+++ b/io/jpg/Jpg.mli
@@ -0,0 +1,3 @@
+type data = (int32, Bigarray.int32_elt, Bigarray.c_layout) Bigarray.Array1.t
+
+module IO : Odiff.ImageIO.ImageIO
diff --git a/io/jpg/Jpg.re b/io/jpg/Jpg.re
deleted file mode 100644
index 126f53a8..00000000
--- a/io/jpg/Jpg.re
+++ /dev/null
@@ -1,56 +0,0 @@
-open Bigarray;
-
-type data = Array1.t(int32, int32_elt, c_layout);
-
-module IO = {
- type buffer;
- type t = {
- data,
- buffer,
- };
-
- let loadImage = (filename): Odiff.ImageIO.img(t) => {
- let (width, height, data, buffer) = ReadJpg.read_jpeg_image(filename);
-
- {
- width,
- height,
- image: {
- data,
- buffer,
- },
- };
- };
-
- let readDirectPixel = (~x, ~y, img: Odiff.ImageIO.img(t)) => {
- Array1.unsafe_get(img.image.data, y * img.width + x);
- };
-
- let setImgColor = (~x, ~y, color, img: Odiff.ImageIO.img(t)) => {
- Array1.unsafe_set(img.image.data, y * img.width + x, color);
- };
-
- let saveImage = (img: Odiff.ImageIO.img(t), filename) => {
- WritePng.write_png_bigarray(
- filename,
- img.image.data,
- img.width,
- img.height,
- );
- };
-
- let freeImage = (img: Odiff.ImageIO.img(t)) => {
- ReadJpg.cleanup_jpg(img.image.buffer);
- };
-
- let makeSameAsLayout = (img: Odiff.ImageIO.img(t)) => {
- let data = Array1.create(int32, c_layout, Array1.dim(img.image.data));
- {
- ...img,
- image: {
- data,
- buffer: img.image.buffer,
- },
- };
- };
-};
diff --git a/io/jpg/Jpg.rei b/io/jpg/Jpg.rei
deleted file mode 100644
index 256a8d3f..00000000
--- a/io/jpg/Jpg.rei
+++ /dev/null
@@ -1,3 +0,0 @@
-type data = Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout);
-
-module IO: Odiff.ImageIO.ImageIO;
diff --git a/io/jpg/ReadJpg.ml b/io/jpg/ReadJpg.ml
new file mode 100644
index 00000000..43d7433f
--- /dev/null
+++ b/io/jpg/ReadJpg.ml
@@ -0,0 +1,8 @@
+external read_jpeg_image :
+ string ->
+ int
+ * int
+ * (int32, Bigarray.int32_elt, Bigarray.c_layout) Bigarray.Array1.t
+ * 'a = "read_jpeg_file_to_tuple"
+
+external cleanup_jpg : 'a -> unit = "cleanup_jpg" [@@noalloc]
diff --git a/io/jpg/ReadJpg.re b/io/jpg/ReadJpg.re
deleted file mode 100644
index 70a645b3..00000000
--- a/io/jpg/ReadJpg.re
+++ /dev/null
@@ -1,11 +0,0 @@
-external read_jpeg_image:
- string =>
- (
- int,
- int,
- Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout),
- 'a,
- ) =
- "read_jpeg_file_to_tuple";
-
-[@noalloc] external cleanup_jpg: 'a => unit = "cleanup_jpg";
diff --git a/io/png/Png.ml b/io/png/Png.ml
new file mode 100644
index 00000000..b05b9bac
--- /dev/null
+++ b/io/png/Png.ml
@@ -0,0 +1,29 @@
+open Bigarray
+open Odiff.ImageIO
+
+type data = (int32, int32_elt, c_layout) Array1.t
+
+module IO : Odiff.ImageIO.ImageIO = struct
+ type t = data
+
+ let readDirectPixel ~(x : int) ~(y : int) (img : t Odiff.ImageIO.img) =
+ let image : data = img.image in
+ Array1.unsafe_get image ((y * img.width) + x)
+
+ let setImgColor ~x ~y color (img : t Odiff.ImageIO.img) =
+ let image : data = img.image in
+ Array1.unsafe_set image ((y * img.width) + x) color
+
+ let loadImage filename : t Odiff.ImageIO.img =
+ let width, height, data, _buffer = ReadPng.read_png_image filename in
+ { width; height; image = data }
+
+ let saveImage (img : t Odiff.ImageIO.img) filename =
+ WritePng.write_png_bigarray filename img.image img.width img.height
+
+ let freeImage (img : t Odiff.ImageIO.img) = ()
+
+ let makeSameAsLayout (img : t Odiff.ImageIO.img) =
+ let image = Array1.create int32 c_layout (Array1.dim img.image) in
+ { img with image }
+end
diff --git a/io/png/Png.re b/io/png/Png.re
deleted file mode 100644
index 52395b97..00000000
--- a/io/png/Png.re
+++ /dev/null
@@ -1,37 +0,0 @@
-open Bigarray;
-open Odiff.ImageIO;
-
-type data = Array1.t(int32, int32_elt, c_layout);
-
-module IO: Odiff.ImageIO.ImageIO = {
- type t = data;
-
- let readDirectPixel = (~x: int, ~y: int, img: Odiff.ImageIO.img(t)) => {
- let image: data = img.image;
- Array1.unsafe_get(image, y * img.width + x);
- };
-
- let setImgColor = (~x, ~y, color, img: Odiff.ImageIO.img(t)) => {
- let image: data = img.image;
- Array1.unsafe_set(image, y * img.width + x, color);
- };
-
- let loadImage = (filename): Odiff.ImageIO.img(t) => {
- let (width, height, data, _buffer) = ReadPng.read_png_image(filename);
-
- {width, height, image: data};
- };
-
- let saveImage = (img: Odiff.ImageIO.img(t), filename) => {
- WritePng.write_png_bigarray(filename, img.image, img.width, img.height);
- };
-
- let freeImage = (img: Odiff.ImageIO.img(t)) => {
- ();
- };
-
- let makeSameAsLayout = (img: Odiff.ImageIO.img(t)) => {
- let image = Array1.create(int32, c_layout, Array1.dim(img.image));
- {...img, image};
- };
-};
diff --git a/io/png/ReadPng.c b/io/png/ReadPng.c
index fc509338..661e2922 100644
--- a/io/png/ReadPng.c
+++ b/io/png/ReadPng.c
@@ -2,15 +2,13 @@
#include
-#include
#include
-#include
-#include
#include
+#include
+#include
+#include
-CAMLprim value
-read_png_file(value file)
-{
+CAMLprim value read_png_file(value file) {
CAMLparam1(file);
CAMLlocal2(res, ba);
@@ -21,15 +19,13 @@ read_png_file(value file)
const char *filename = String_val(file);
png = fopen(filename, "rb");
- if (png == NULL)
- {
+ if (png == NULL) {
caml_failwith("error opening input file");
}
ctx = spng_ctx_new(0);
- if (ctx == NULL)
- {
+ if (ctx == NULL) {
caml_failwith("spng_ctx_new() failed");
spng_ctx_free(ctx);
free(out);
@@ -49,8 +45,7 @@ read_png_file(value file)
struct spng_ihdr ihdr;
result = spng_get_ihdr(ctx, &ihdr);
- if (result)
- {
+ if (result) {
caml_failwith("spng_get_ihdr() error!");
spng_ctx_free(ctx);
free(out);
@@ -58,21 +53,18 @@ read_png_file(value file)
size_t out_size;
result = spng_decoded_image_size(ctx, SPNG_FMT_RGBA8, &out_size);
- if (result)
- {
+ if (result) {
spng_ctx_free(ctx);
};
out = malloc(out_size);
- if (out == NULL)
- {
+ if (out == NULL) {
spng_ctx_free(ctx);
free(out);
};
result = spng_decode_image(ctx, out, out_size, SPNG_FMT_RGBA8, 0);
- if (result)
- {
+ if (result) {
spng_ctx_free(ctx);
free(out);
caml_failwith(spng_strerror(result));
diff --git a/io/png/ReadPng.ml b/io/png/ReadPng.ml
new file mode 100644
index 00000000..fc894c3c
--- /dev/null
+++ b/io/png/ReadPng.ml
@@ -0,0 +1,6 @@
+external read_png_image :
+ string ->
+ int
+ * int
+ * (int32, Bigarray.int32_elt, Bigarray.c_layout) Bigarray.Array1.t
+ * 'a = "read_png_file"
diff --git a/io/png/ReadPng.re b/io/png/ReadPng.re
deleted file mode 100644
index 43a979a7..00000000
--- a/io/png/ReadPng.re
+++ /dev/null
@@ -1,9 +0,0 @@
-external read_png_image:
- string =>
- (
- int,
- int,
- Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout),
- 'a,
- ) =
- "read_png_file";
diff --git a/io/png_write/WritePng.ml b/io/png_write/WritePng.ml
new file mode 100644
index 00000000..84a811b8
--- /dev/null
+++ b/io/png_write/WritePng.ml
@@ -0,0 +1,6 @@
+open Bigarray
+
+external write_png_bigarray :
+ string -> (int32, int32_elt, c_layout) Array1.t -> int -> int -> unit
+ = "write_png_bigarray"
+[@@noalloc]
diff --git a/io/png_write/WritePng.re b/io/png_write/WritePng.re
deleted file mode 100644
index 277c112e..00000000
--- a/io/png_write/WritePng.re
+++ /dev/null
@@ -1,6 +0,0 @@
-open Bigarray;
-
-[@noalloc]
-external write_png_bigarray:
- (string, Array1.t(int32, int32_elt, c_layout), int, int) => unit =
- "write_png_bigarray";
diff --git a/io/tiff/ReadTiff.c b/io/tiff/ReadTiff.c
index a09577dc..876c5320 100644
--- a/io/tiff/ReadTiff.c
+++ b/io/tiff/ReadTiff.c
@@ -2,17 +2,15 @@
#include
-#include
#include
-#include
-#include
#include
+#include
+#include
+#include
#include
-CAMLprim value
-read_tiff_file_to_tuple(value file)
-{
+CAMLprim value read_tiff_file_to_tuple(value file) {
CAMLparam1(file);
CAMLlocal2(res, ba);
@@ -23,8 +21,7 @@ read_tiff_file_to_tuple(value file)
TIFF *image;
- if (!(image = TIFFOpen(filename, "r")))
- {
+ if (!(image = TIFFOpen(filename, "r"))) {
caml_failwith("opening input file failed!");
}
@@ -34,20 +31,20 @@ read_tiff_file_to_tuple(value file)
int buffer_size = width * height;
buffer = (uint32_t *)malloc(buffer_size * 4);
- if (!buffer)
- {
+ if (!buffer) {
TIFFClose(image);
caml_failwith("allocating TIFF buffer failed");
}
- if (!(TIFFReadRGBAImageOriented(image, width, height, buffer, ORIENTATION_TOPLEFT, 0)))
- {
+ if (!(TIFFReadRGBAImageOriented(image, width, height, buffer,
+ ORIENTATION_TOPLEFT, 0))) {
TIFFClose(image);
caml_failwith("reading input file failed");
}
res = caml_alloc(4, 0);
- ba = caml_ba_alloc_dims(CAML_BA_INT32 | CAML_BA_C_LAYOUT, 1, buffer, buffer_size);
+ ba = caml_ba_alloc_dims(CAML_BA_INT32 | CAML_BA_C_LAYOUT, 1, buffer,
+ buffer_size);
Store_field(res, 0, Val_int(width));
Store_field(res, 1, Val_int(height));
@@ -59,9 +56,7 @@ read_tiff_file_to_tuple(value file)
CAMLreturn(res);
}
-CAMLprim value
-cleanup_tiff(value buffer)
-{
+CAMLprim value cleanup_tiff(value buffer) {
CAMLparam1(buffer);
free(Bp_val(buffer));
CAMLreturn(Val_unit);
diff --git a/io/tiff/ReadTiff.ml b/io/tiff/ReadTiff.ml
new file mode 100644
index 00000000..cf2a8fa4
--- /dev/null
+++ b/io/tiff/ReadTiff.ml
@@ -0,0 +1,8 @@
+external load :
+ string ->
+ int
+ * int
+ * (int32, Bigarray.int32_elt, Bigarray.c_layout) Bigarray.Array1.t
+ * 'a = "read_tiff_file_to_tuple"
+
+external cleanup_tiff : 'a -> unit = "cleanup_tiff" [@@noalloc]
diff --git a/io/tiff/ReadTiff.re b/io/tiff/ReadTiff.re
deleted file mode 100644
index 02a8650d..00000000
--- a/io/tiff/ReadTiff.re
+++ /dev/null
@@ -1,11 +0,0 @@
-external load:
- string =>
- (
- int,
- int,
- Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout),
- 'a,
- ) =
- "read_tiff_file_to_tuple";
-
-[@noalloc] external cleanup_tiff: 'a => unit = "cleanup_tiff";
diff --git a/io/tiff/Tiff.ml b/io/tiff/Tiff.ml
new file mode 100644
index 00000000..1a6cb962
--- /dev/null
+++ b/io/tiff/Tiff.ml
@@ -0,0 +1,28 @@
+open Bigarray
+
+type data = (int32, int32_elt, c_layout) Array1.t
+
+module IO : Odiff.ImageIO.ImageIO = struct
+ type buffer
+ type t = { data : data; buffer : buffer }
+
+ let loadImage filename : t Odiff.ImageIO.img =
+ let width, height, data, buffer = ReadTiff.load filename in
+ { width; height; image = { data; buffer } }
+
+ let readDirectPixel ~(x : int) ~(y : int) (img : t Odiff.ImageIO.img) =
+ Array1.unsafe_get img.image.data ((y * img.width) + x)
+
+ let setImgColor ~x ~y color (img : t Odiff.ImageIO.img) =
+ Array1.unsafe_set img.image.data ((y * img.width) + x) color
+
+ let saveImage (img : t Odiff.ImageIO.img) filename =
+ WritePng.write_png_bigarray filename img.image.data img.width img.height
+
+ let freeImage (img : t Odiff.ImageIO.img) =
+ ReadTiff.cleanup_tiff img.image.buffer
+
+ let makeSameAsLayout (img : t Odiff.ImageIO.img) =
+ let data = Array1.create int32 c_layout (Array1.dim img.image.data) in
+ { img with image = { data; buffer = img.image.buffer } }
+end
diff --git a/io/tiff/Tiff.mli b/io/tiff/Tiff.mli
new file mode 100644
index 00000000..913c029c
--- /dev/null
+++ b/io/tiff/Tiff.mli
@@ -0,0 +1,3 @@
+type data = (int32, Bigarray.int32_elt, Bigarray.c_layout) Bigarray.Array1.t
+
+module IO : Odiff.ImageIO.ImageIO
diff --git a/io/tiff/Tiff.re b/io/tiff/Tiff.re
deleted file mode 100644
index d4f29dbe..00000000
--- a/io/tiff/Tiff.re
+++ /dev/null
@@ -1,56 +0,0 @@
-open Bigarray;
-
-type data = Array1.t(int32, int32_elt, c_layout);
-
-module IO: Odiff.ImageIO.ImageIO = {
- type buffer;
- type t = {
- data,
- buffer,
- };
-
- let loadImage = (filename): Odiff.ImageIO.img(t) => {
- let (width, height, data, buffer) = ReadTiff.load(filename);
-
- {
- width,
- height,
- image: {
- data,
- buffer,
- },
- };
- };
-
- let readDirectPixel = (~x: int, ~y: int, img: Odiff.ImageIO.img(t)) => {
- Array1.unsafe_get(img.image.data, y * img.width + x);
- };
-
- let setImgColor = (~x, ~y, color, img: Odiff.ImageIO.img(t)) => {
- Array1.unsafe_set(img.image.data, y * img.width + x, color);
- };
-
- let saveImage = (img: Odiff.ImageIO.img(t), filename) => {
- WritePng.write_png_bigarray(
- filename,
- img.image.data,
- img.width,
- img.height,
- );
- };
-
- let freeImage = (img: Odiff.ImageIO.img(t)) => {
- ReadTiff.cleanup_tiff(img.image.buffer);
- };
-
- let makeSameAsLayout = (img: Odiff.ImageIO.img(t)) => {
- let data = Array1.create(int32, c_layout, Array1.dim(img.image.data));
- {
- ...img,
- image: {
- data,
- buffer: img.image.buffer,
- },
- };
- };
-};
diff --git a/io/tiff/Tiff.rei b/io/tiff/Tiff.rei
deleted file mode 100644
index 256a8d3f..00000000
--- a/io/tiff/Tiff.rei
+++ /dev/null
@@ -1,3 +0,0 @@
-type data = Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout);
-
-module IO: Odiff.ImageIO.ImageIO;
diff --git a/package.json b/package.json
index d6f18bb0..057aeb93 100644
--- a/package.json
+++ b/package.json
@@ -29,16 +29,16 @@
"process:readme": "esy node scripts/process-readme.js"
},
"dependencies": {
- "@opam/reason": "3.9.0",
"@opam/cmdliner": "1.0.4",
"@opam/dune": "< 4.0.0",
"@opam/dune-configurator": "< 4.0.0",
+ "@opam/reason": "3.9.0",
"@reason-native/console": "*",
"@reason-native/pastel": "*",
"@reason-native/rely": "*",
- "esy-libtiff": "*",
- "esy-libspng": "*",
"esy-libjpeg": "*",
+ "esy-libspng": "*",
+ "esy-libtiff": "*",
"esy-zlib": "*",
"ocaml": "4.14.x"
},
@@ -75,3 +75,4 @@
"url": "https://dmtrkovalenko.dev"
}
}
+
diff --git a/src/Antialiasing.ml b/src/Antialiasing.ml
new file mode 100644
index 00000000..241cf505
--- /dev/null
+++ b/src/Antialiasing.ml
@@ -0,0 +1,89 @@
+open ImageIO
+
+module MakeAntialiasing (IO1 : ImageIO.ImageIO) (IO2 : ImageIO.ImageIO) = struct
+ let hasManySiblingsWithSameColor ~x ~y ~width ~height ~readColor =
+ if x <= width - 1 && y <= height - 1 then (
+ let x0 = max (x - 1) 0 in
+ let y0 = max (y - 1) 0 in
+ let x1 = min (x + 1) (width - 1) in
+ let y1 = min (y + 1) (height - 1) in
+ let zeroes =
+ match x = x0 || x = x1 || y = y0 || y = y1 with
+ | true -> ref 1
+ | false -> ref 0
+ in
+ let baseColor = readColor ~x ~y in
+ for adj_y = y0 to y1 do
+ for adj_x = x0 to x1 do
+ if !zeroes < 3 && (x <> adj_x || y <> adj_y) then
+ let adjacentColor = readColor ~x:adj_x ~y:adj_y in
+ if baseColor = adjacentColor then incr zeroes
+ done
+ done;
+ !zeroes >= 3)
+ else false
+
+ let detect ~x ~y ~baseImg ~compImg =
+ let x0 = max (x - 1) 0 in
+ let y0 = max (y - 1) 0 in
+ let x1 = min (x + 1) (baseImg.width - 1) in
+ let y1 = min (y + 1) (baseImg.height - 1) in
+ let minSiblingDelta = ref 0.0 in
+ let maxSiblingDelta = ref 0.0 in
+ let minSiblingDeltaCoord = ref (0, 0) in
+ let maxSiblingDeltaCoord = ref (0, 0) in
+ let zeroes =
+ ref
+ (match x = x0 || x = x1 || y = y0 || y = y1 with
+ | true -> 1
+ | false -> 0)
+ in
+
+ let baseColor = baseImg |> IO1.readDirectPixel ~x ~y in
+ for adj_y = y0 to y1 do
+ for adj_x = x0 to x1 do
+ if !zeroes < 3 && (x <> adj_x || y <> adj_y) then
+ let adjacentColor =
+ baseImg |> IO1.readDirectPixel ~x:adj_x ~y:adj_y
+ in
+ if baseColor = adjacentColor then incr zeroes
+ else
+ let delta =
+ ColorDelta.calculatePixelBrightnessDelta baseColor adjacentColor
+ in
+ if delta < !minSiblingDelta then (
+ minSiblingDelta := delta;
+ minSiblingDeltaCoord := (adj_x, adj_y))
+ else if delta > !maxSiblingDelta then (
+ maxSiblingDelta := delta;
+ maxSiblingDeltaCoord := (adj_x, adj_y))
+ done
+ done;
+
+ if !zeroes >= 3 || !minSiblingDelta = 0.0 || !maxSiblingDelta = 0.0 then
+ (*
+ If we found more than 2 equal siblings or there are
+ no darker pixels among other siblings or
+ there are not brighter pixels among the siblings
+ *)
+ false
+ else
+ (*
+ If either the darkest or the brightest pixel has 3+ equal siblings in both images
+ (definitely not anti-aliased), this pixel is anti-aliased
+ *)
+ let minX, minY = !minSiblingDeltaCoord in
+ let maxX, maxY = !maxSiblingDeltaCoord in
+ (hasManySiblingsWithSameColor ~x:minX ~y:minY ~width:baseImg.width
+ ~height:baseImg.height
+ ~readColor:(IO1.readDirectPixel baseImg)
+ || hasManySiblingsWithSameColor ~x:maxX ~y:maxY ~width:baseImg.width
+ ~height:baseImg.height
+ ~readColor:(IO1.readDirectPixel baseImg))
+ && (hasManySiblingsWithSameColor ~x:minX ~y:minY ~width:compImg.width
+ ~height:compImg.height
+ ~readColor:(IO2.readDirectPixel compImg)
+ || hasManySiblingsWithSameColor ~x:maxX ~y:maxY ~width:compImg.width
+ ~height:compImg.height
+ ~readColor:(IO2.readDirectPixel compImg))
+end
diff --git a/src/Antialiasing.re b/src/Antialiasing.re
deleted file mode 100644
index 432be68a..00000000
--- a/src/Antialiasing.re
+++ /dev/null
@@ -1,124 +0,0 @@
-open ImageIO;
-
-module MakeAntialiasing = (IO1: ImageIO.ImageIO, IO2: ImageIO.ImageIO) => {
- let hasManySiblingsWithSameColor = (~x, ~y, ~width, ~height, ~readColor) =>
- if (x <= width - 1 && y <= height - 1) {
- let x0 = max(x - 1, 0);
- let y0 = max(y - 1, 0);
-
- let x1 = min(x + 1, width - 1);
- let y1 = min(y + 1, height - 1);
-
- let zeroes =
- x == x0 || x == x1 || y == y0 || y == y1 ? ref(1) : ref(0);
-
- let baseColor = readColor(~x, ~y);
-
- // go through 8 adjacent pixels
- for (adj_y in y0 to y1) {
- for (adj_x in x0 to x1) {
- /* This is not the current pixel and we don't have our result */
- if (zeroes^ < 3 && (x != adj_x || y != adj_y)) {
- let adjacentColor = readColor(~x=adj_x, ~y=adj_y);
- if (baseColor == adjacentColor) {
- incr(zeroes);
- };
- };
- };
- };
-
- zeroes^ >= 3;
- } else {
- false;
- };
-
- let detect = (~x, ~y, ~baseImg, ~compImg) => {
- let x0 = max(x - 1, 0);
- let y0 = max(y - 1, 0);
-
- let x1 = min(x + 1, baseImg.width - 1);
- let y1 = min(y + 1, baseImg.height - 1);
-
- let minSiblingDelta = ref(0.0);
- let maxSiblingDelta = ref(0.0);
-
- let minSiblingDeltaCoord = ref((0, 0));
- let maxSiblingDeltaCoord = ref((0, 0));
-
- let zeroes = ref(x == x0 || x == x1 || y == y0 || y == y1 ? 1 : 0);
-
- let baseColor = baseImg |> IO1.readDirectPixel(~x, ~y);
-
- for (adj_y in y0 to y1) {
- for (adj_x in x0 to x1) {
- /* This is not the current pixel and we don't have our result */
- if (zeroes^ < 3 && (x != adj_x || y != adj_y)) {
- let adjacentColor =
- baseImg |> IO1.readDirectPixel(~x=adj_x, ~y=adj_y);
-
- if (baseColor == adjacentColor) {
- incr(zeroes);
- } else {
- let delta =
- ColorDelta.calculatePixelBrightnessDelta(
- baseColor,
- adjacentColor,
- );
-
- if (delta < minSiblingDelta^) {
- minSiblingDelta := delta;
- minSiblingDeltaCoord := (adj_x, adj_y);
- } else if (delta > maxSiblingDelta^) {
- maxSiblingDelta := delta;
- maxSiblingDeltaCoord := (adj_x, adj_y);
- };
- };
- };
- };
- };
-
- // if we found more than 2 equal siblings or
- // there are no darker pixels among the siblings or
- // there are no brighter pixels among the siblings it's not anti-aliasing
- if (zeroes^ >= 3 || minSiblingDelta^ == 0.0 || maxSiblingDelta^ == 0.0) {
- false;
- } else {
- // if either the darkest or the brightest pixel has 3+ equal siblings in both images
- // (definitely not anti-aliased), this pixel is anti-aliased
- let (minX, minY) = minSiblingDeltaCoord^;
- let (maxX, maxY) = maxSiblingDeltaCoord^;
- (
- hasManySiblingsWithSameColor(
- ~x=minX,
- ~y=minY,
- ~width=baseImg.width,
- ~height=baseImg.height,
- ~readColor=IO1.readDirectPixel(baseImg),
- )
- || hasManySiblingsWithSameColor(
- ~x=maxX,
- ~y=maxY,
- ~width=baseImg.width,
- ~height=baseImg.height,
- ~readColor=IO1.readDirectPixel(baseImg),
- )
- )
- && (
- hasManySiblingsWithSameColor(
- ~x=minX,
- ~y=minY,
- ~width=compImg.width,
- ~height=compImg.height,
- ~readColor=IO2.readDirectPixel(compImg),
- )
- || hasManySiblingsWithSameColor(
- ~x=maxX,
- ~y=maxY,
- ~width=compImg.width,
- ~height=compImg.height,
- ~readColor=IO2.readDirectPixel(compImg),
- )
- );
- };
- };
-};
diff --git a/src/ColorDelta.ml b/src/ColorDelta.ml
new file mode 100644
index 00000000..3482982c
--- /dev/null
+++ b/src/ColorDelta.ml
@@ -0,0 +1,36 @@
+let blend color alpha = 255. +. ((color -. 255.) *. alpha)
+
+let blendSemiTransparentColor = function
+ | r, g, b, alpha when alpha < 255. ->
+ (blend r alpha, blend g alpha, blend b alpha, alpha /. 255.)
+ | colors -> colors
+
+let convertPixelToFloat pixel =
+ let pixel = pixel |> Int32.to_int in
+ let a = (pixel lsr 24) land 255 in
+ let b = (pixel lsr 16) land 255 in
+ let g = (pixel lsr 8) land 255 in
+ let r = pixel land 255 in
+ (Float.of_int r, Float.of_int g, Float.of_int b, Float.of_int a)
+
+let rgb2y (r, g, b, a) =
+ (r *. 0.29889531) +. (g *. 0.58662247) +. (b *. 0.11448223)
+
+let rgb2i (r, g, b, a) =
+ (r *. 0.59597799) -. (g *. 0.27417610) -. (b *. 0.32180189)
+
+let rgb2q (r, g, b, a) =
+ (r *. 0.21147017) -. (g *. 0.52261711) +. (b *. 0.31114694)
+
+let calculatePixelColorDelta _pixelA _pixelB =
+ let pixelA = _pixelA |> convertPixelToFloat |> blendSemiTransparentColor in
+ let pixelB = _pixelB |> convertPixelToFloat |> blendSemiTransparentColor in
+ let y = rgb2y pixelA -. rgb2y pixelB in
+ let i = rgb2i pixelA -. rgb2i pixelB in
+ let q = rgb2q pixelA -. rgb2q pixelB in
+ (0.5053 *. y *. y) +. (0.299 *. i *. i) +. (0.1957 *. q *. q)
+
+let calculatePixelBrightnessDelta pixelA pixelB =
+ let pixelA = pixelA |> convertPixelToFloat |> blendSemiTransparentColor in
+ let pixelB = pixelB |> convertPixelToFloat |> blendSemiTransparentColor in
+ rgb2y pixelA -. rgb2y pixelB
diff --git a/src/ColorDelta.re b/src/ColorDelta.re
deleted file mode 100644
index 9a8b94f5..00000000
--- a/src/ColorDelta.re
+++ /dev/null
@@ -1,48 +0,0 @@
-let blend = (color, alpha) => 255. +. (color -. 255.) *. alpha;
-
-let blendSemiTransparentColor =
- fun
- | (r, g, b, alpha) when alpha < 255. => (
- blend(r, alpha),
- blend(g, alpha),
- blend(b, alpha),
- alpha /. 255.,
- )
- | colors => colors;
-
-let convertPixelToFloat = pixel => {
- let pixel = pixel |> Int32.to_int;
- let a = pixel lsr 24 land 0xFF;
- let b = pixel lsr 16 land 0xFF;
- let g = pixel lsr 8 land 0xFF;
- let r = pixel land 0xFF;
-
- (Float.of_int(r), Float.of_int(g), Float.of_int(b), Float.of_int(a));
-};
-
-let rgb2y = ((r, g, b, a)) =>
- r *. 0.29889531 +. g *. 0.58662247 +. b *. 0.11448223;
-
-let rgb2i = ((r, g, b, a)) =>
- r *. 0.59597799 -. g *. 0.27417610 -. b *. 0.32180189;
-
-let rgb2q = ((r, g, b, a)) =>
- r *. 0.21147017 -. g *. 0.52261711 +. b *. 0.31114694;
-
-let calculatePixelColorDelta = (_pixelA, _pixelB) => {
- let pixelA = _pixelA |> convertPixelToFloat |> blendSemiTransparentColor;
- let pixelB = _pixelB |> convertPixelToFloat |> blendSemiTransparentColor;
-
- let y = rgb2y(pixelA) -. rgb2y(pixelB);
- let i = rgb2i(pixelA) -. rgb2i(pixelB);
- let q = rgb2q(pixelA) -. rgb2q(pixelB);
-
- 0.5053 *. y *. y +. 0.299 *. i *. i +. 0.1957 *. q *. q;
-};
-
-let calculatePixelBrightnessDelta = (pixelA, pixelB) => {
- let pixelA = pixelA |> convertPixelToFloat |> blendSemiTransparentColor;
- let pixelB = pixelB |> convertPixelToFloat |> blendSemiTransparentColor;
-
- rgb2y(pixelA) -. rgb2y(pixelB);
-};
diff --git a/src/Diff.ml b/src/Diff.ml
new file mode 100644
index 00000000..b450deb3
--- /dev/null
+++ b/src/Diff.ml
@@ -0,0 +1,107 @@
+let redPixel = (255, 0, 0)
+let maxYIQPossibleDelta = 35215.
+
+type 'a diffVariant = Layout | Pixel of ('a * int * float * int Stack.t)
+
+let computeIgnoreRegionOffsets width =
+ List.map (fun ((x1, y1), (x2, y2)) ->
+ let p1 = (y1 * width) + x1 in
+ let p2 = (y2 * width) + x2 in
+ (p1, p2))
+
+let isInIgnoreRegion offset =
+ List.exists (fun ((p1 : int), (p2 : int)) -> offset >= p1 && offset <= p2)
+
+module MakeDiff (IO1 : ImageIO.ImageIO) (IO2 : ImageIO.ImageIO) = struct
+ module BaseAA = Antialiasing.MakeAntialiasing (IO1) (IO2)
+ module CompAA = Antialiasing.MakeAntialiasing (IO2) (IO1)
+
+ let compare (base : IO1.t ImageIO.img) (comp : IO2.t ImageIO.img)
+ ?(antialiasing = false) ?(outputDiffMask = false) ?(diffLines = false)
+ ?(diffPixel : int * int * int = redPixel) ?(threshold = 0.1)
+ ?(ignoreRegions = []) () =
+ let maxDelta = maxYIQPossibleDelta *. (threshold ** 2.) in
+ let diffOutput =
+ match outputDiffMask with
+ | true -> IO1.makeSameAsLayout base
+ | false -> base
+ in
+ let diffPixelQueue = Queue.create () in
+ let diffLinesStack = Stack.create () in
+ let countDifference x y =
+ diffPixelQueue |> Queue.push (x, y);
+ if
+ diffLines
+ && (diffLinesStack |> Stack.is_empty || diffLinesStack |> Stack.top < y)
+ then diffLinesStack |> Stack.push y
+ in
+
+ let ignoreRegions =
+ ignoreRegions |> computeIgnoreRegionOffsets base.width
+ in
+
+ let size = (base.height * base.width) - 1 in
+ let x = ref 0 in
+ let y = ref 0 in
+
+ for offset = 0 to size do
+ (if !x >= comp.width || !y >= comp.height then (
+ let alpha =
+ (Int32.to_int (IO1.readDirectPixel ~x:!x ~y:!y base) lsr 24) land 255
+ in
+ if alpha <> 0 then countDifference !x !y)
+ else
+ let baseColor = IO1.readDirectPixel ~x:!x ~y:!y base in
+ let compColor = IO2.readDirectPixel ~x:!x ~y:!y comp in
+ if baseColor <> compColor then
+ let delta =
+ ColorDelta.calculatePixelColorDelta baseColor compColor
+ in
+ if delta > maxDelta then
+ let isIgnored = isInIgnoreRegion offset ignoreRegions in
+ if not isIgnored then
+ let isAntialiased =
+ if not antialiasing then false
+ else
+ BaseAA.detect ~x:!x ~y:!y ~baseImg:base ~compImg:comp
+ || CompAA.detect ~x:!x ~y:!y ~baseImg:comp ~compImg:base
+ in
+ if not isAntialiased then countDifference !x !y);
+ if !x = base.width - 1 then (
+ x := 0;
+ incr y)
+ else incr x
+ done;
+
+ let diffCount = diffPixelQueue |> Queue.length in
+ (if diffCount > 0 then
+ let r, g, b = diffPixel in
+ let a = (255 land 255) lsl 24 in
+ let b = (b land 255) lsl 16 in
+ let g = (g land 255) lsl 8 in
+ let r = (r land 255) lsl 0 in
+ let diffPixel = Int32.of_int (a lor b lor g lor r) in
+ diffPixelQueue
+ |> Queue.iter (fun (x, y) ->
+ diffOutput |> IO1.setImgColor ~x ~y diffPixel));
+
+ let diffPercentage =
+ 100.0 *. Float.of_int diffCount
+ /. (Float.of_int base.width *. Float.of_int base.height)
+ in
+ (diffOutput, diffCount, diffPercentage, diffLinesStack)
+
+ let diff (base : IO1.t ImageIO.img) (comp : IO2.t ImageIO.img) ~outputDiffMask
+ ?(threshold = 0.1) ?(diffPixel = redPixel) ?(failOnLayoutChange = true)
+ ?(antialiasing = false) ?(diffLines = false) ?(ignoreRegions = []) () =
+ if
+ failOnLayoutChange = true
+ && (base.width <> comp.width || base.height <> comp.height)
+ then Layout
+ else
+ let diffResult =
+ compare base comp ~threshold ~diffPixel ~outputDiffMask ~antialiasing
+ ~diffLines ~ignoreRegions ()
+ in
+ (Pixel diffResult [@explicit_arity])
+end
diff --git a/src/Diff.re b/src/Diff.re
deleted file mode 100644
index c8ec74a7..00000000
--- a/src/Diff.re
+++ /dev/null
@@ -1,159 +0,0 @@
-let redPixel = (255, 0, 0);
-let maxYIQPossibleDelta = 35215.;
-
-type diffVariant('a) =
- | Layout
- | Pixel(('a, int, float, Stack.t(int)));
-
-let computeIngoreRegionOffsets = width => {
- List.map((((x1, y1), (x2, y2))) => {
- let p1 = y1 * width + x1;
- let p2 = y2 * width + x2;
- (p1, p2);
- });
-};
-
-let isInIgnoreRegion = offset => {
- List.exists(((p1: int, p2: int)) => offset >= p1 && offset <= p2);
-};
-
-module MakeDiff = (IO1: ImageIO.ImageIO, IO2: ImageIO.ImageIO) => {
- module BaseAA = Antialiasing.MakeAntialiasing(IO1, IO2);
- module CompAA = Antialiasing.MakeAntialiasing(IO2, IO1);
-
- let compare =
- (
- base: ImageIO.img(IO1.t),
- comp: ImageIO.img(IO2.t),
- ~antialiasing=false,
- ~outputDiffMask=false,
- ~diffLines=false,
- ~diffPixel: (int, int, int)=redPixel,
- ~threshold=0.1,
- ~ignoreRegions=[],
- (),
- ) => {
- let maxDelta = maxYIQPossibleDelta *. threshold ** 2.;
- let diffOutput = outputDiffMask ? IO1.makeSameAsLayout(base) : base;
-
- let diffPixelQueue = Queue.create();
- let diffLinesStack = Stack.create();
-
- let countDifference = (x, y) => {
- diffPixelQueue |> Queue.push((x, y));
-
- if (diffLines && (diffLinesStack |> Stack.is_empty || diffLinesStack |> Stack.top < y)) {
- diffLinesStack |> Stack.push(y);
- }
- };
-
- let ignoreRegions =
- ignoreRegions |> computeIngoreRegionOffsets(base.width);
-
- let size = base.height * base.width - 1;
-
- let x = ref(0);
- let y = ref(0);
-
- for (offset in 0 to size) {
- if (x^ >= comp.width || y^ >= comp.height) {
- let alpha =
- Int32.to_int(IO1.readDirectPixel(~x=x^, ~y=y^, base))
- lsr 24
- land 0xFF;
-
- if (alpha != 0) {
- countDifference(x^, y^);
- };
- } else {
- let baseColor = IO1.readDirectPixel(~x=x^, ~y=y^, base);
- let compColor = IO2.readDirectPixel(~x=x^, ~y=y^, comp);
-
- if (baseColor != compColor) {
- let delta =
- ColorDelta.calculatePixelColorDelta(baseColor, compColor);
-
- if (delta > maxDelta) {
- let isIgnored = isInIgnoreRegion(offset, ignoreRegions);
-
- if (!isIgnored) {
- let isAntialiased =
- if (!antialiasing) {
- false;
- } else {
- BaseAA.detect(~x=x^, ~y=y^, ~baseImg=base, ~compImg=comp)
- || CompAA.detect(~x=x^, ~y=y^, ~baseImg=comp, ~compImg=base);
- };
-
- if (!isAntialiased) {
- countDifference(x^, y^);
- };
- };
- };
- };
- };
- if (x^ == base.width - 1) {
- x := 0;
- incr(y);
- } else {
- incr(x);
- };
- };
-
- let diffCount = diffPixelQueue |> Queue.length;
-
- if (diffCount > 0) {
- let (r, g, b) = diffPixel;
- let a = (255 land 0xFF) lsl 24;
- let b = (b land 0xFF) lsl 16;
- let g = (g land 0xFF) lsl 8;
- let r = (r land 0xFF) lsl 0;
- let diffPixel = Int32.of_int(a lor b lor g lor r);
-
- diffPixelQueue
- |> Queue.iter(((x, y)) => {
- diffOutput |> IO1.setImgColor(~x, ~y, diffPixel)
- });
- };
-
- let diffPercentage =
- 100.0
- *. Float.of_int(diffCount)
- /. (Float.of_int(base.width) *. Float.of_int(base.height));
-
- (diffOutput, diffCount, diffPercentage, diffLinesStack);
- };
-
- let diff =
- (
- base: ImageIO.img(IO1.t),
- comp: ImageIO.img(IO2.t),
- ~outputDiffMask,
- ~threshold=0.1,
- ~diffPixel=redPixel,
- ~failOnLayoutChange=true,
- ~antialiasing=false,
- ~diffLines=false,
- ~ignoreRegions=[],
- (),
- ) =>
- if (failOnLayoutChange == true
- && (base.width != comp.width || base.height != comp.height)) {
- Layout;
- } else {
- let diffResult =
- compare(
- base,
- comp,
- ~threshold,
- ~diffPixel,
- ~outputDiffMask,
- ~antialiasing,
- ~diffLines,
- ~ignoreRegions,
- (),
- );
-
- Pixel(diffResult);
- };
-};
diff --git a/src/ImageIO.ml b/src/ImageIO.ml
new file mode 100644
index 00000000..38b52a33
--- /dev/null
+++ b/src/ImageIO.ml
@@ -0,0 +1,14 @@
+type 'a img = { width : int; height : int; image : 'a }
+
+exception ImageNotLoaded
+
+module type ImageIO = sig
+ type t
+
+ val loadImage : string -> t img
+ val makeSameAsLayout : t img -> t img
+ val readDirectPixel : x:int -> y:int -> t img -> Int32.t
+ val setImgColor : x:int -> y:int -> Int32.t -> t img -> unit
+ val saveImage : t img -> string -> unit
+ val freeImage : t img -> unit
+end
diff --git a/src/ImageIO.re b/src/ImageIO.re
deleted file mode 100644
index 62ae1aa6..00000000
--- a/src/ImageIO.re
+++ /dev/null
@@ -1,18 +0,0 @@
-type img('a) = {
- width: int,
- height: int,
- image: 'a,
-};
-
-exception ImageNotLoaded;
-
-module type ImageIO = {
- type t;
-
- let loadImage: string => img(t);
- let makeSameAsLayout: img(t) => img(t);
- let readDirectPixel: (~x: int, ~y: int, img(t)) => Int32.t;
- let setImgColor: (~x: int, ~y: int, Int32.t, img(t)) => unit;
- let saveImage: (img(t), string) => unit;
- let freeImage: img(t) => unit;
-};
diff --git a/src/PerfTest.ml b/src/PerfTest.ml
new file mode 100644
index 00000000..581931c5
--- /dev/null
+++ b/src/PerfTest.ml
@@ -0,0 +1,11 @@
+let now (name : string) = (name, ref (Sys.time ()))
+
+let cycle (name, timepoint) ?(cycleName = "") () =
+ Printf.printf "'%s %s' executed for: %f ms \n" name cycleName
+ ((Sys.time () -. !timepoint) *. 1000.);
+ timepoint := Sys.time ()
+
+let ifTimeMore amount (name, timepoint) =
+ (Sys.time () -. timepoint) *. 1000. > amount
+
+let cycleIf point predicate = if predicate point then cycle point ()
diff --git a/src/PerfTest.re b/src/PerfTest.re
deleted file mode 100644
index 06fbd3d7..00000000
--- a/src/PerfTest.re
+++ /dev/null
@@ -1,21 +0,0 @@
-let now = (name: string) => (name, ref(Unix.gettimeofday()));
-
-let cycle = ((name, timepoint), ~cycleName="", ()) => {
- Printf.printf(
- "'%s %s' executed for: %f ms \n",
- name,
- cycleName,
- (Unix.gettimeofday() -. timepoint^) *. 1000.,
- );
-
- timepoint := Unix.gettimeofday()
-};
-
-let ifTimeMore = (amount, (name, timepoint)) => {
- (Unix.gettimeofday() -. timepoint) *. 1000. > amount;
-};
-
-let cycleIf = (point, predicate) =>
- if (predicate(point)) {
- cycle(point, ());
- };
\ No newline at end of file
diff --git a/src/dune b/src/dune
index a6336b7a..190fb24b 100644
--- a/src/dune
+++ b/src/dune
@@ -2,5 +2,4 @@
(name odiff)
(public_name odiff-core)
(flags
- (-w -40 -w +26))
- )
+ (-w -40 -w +26)))
diff --git a/test/RunTests.ml b/test/RunTests.ml
new file mode 100644
index 00000000..70c218cc
--- /dev/null
+++ b/test/RunTests.ml
@@ -0,0 +1 @@
+OdiffTests.TestFramework.cli ()
diff --git a/test/RunTests.re b/test/RunTests.re
deleted file mode 100644
index f10dc787..00000000
--- a/test/RunTests.re
+++ /dev/null
@@ -1 +0,0 @@
-OdiffTests.TestFramework.cli()
\ No newline at end of file
diff --git a/test/TestFramework.ml b/test/TestFramework.ml
new file mode 100644
index 00000000..42715b50
--- /dev/null
+++ b/test/TestFramework.ml
@@ -0,0 +1,5 @@
+include Rely.Make (struct
+ let config =
+ Rely.TestFrameworkConfig.initialize
+ { snapshotDir = "test/__snapshots__"; projectDir = "." }
+end)
diff --git a/test/TestFramework.re b/test/TestFramework.re
deleted file mode 100644
index e046fa79..00000000
--- a/test/TestFramework.re
+++ /dev/null
@@ -1,7 +0,0 @@
-include Rely.Make({
- let config =
- Rely.TestFrameworkConfig.initialize({
- snapshotDir: "test/__snapshots__",
- projectDir: "."
- });
-});
\ No newline at end of file
diff --git a/test/Test_Core.ml b/test/Test_Core.ml
new file mode 100644
index 00000000..f58fca21
--- /dev/null
+++ b/test/Test_Core.ml
@@ -0,0 +1,82 @@
+open TestFramework
+open ODiffIO
+module PNG_Diff = Odiff.Diff.MakeDiff (Png.IO) (Png.IO)
+
+let _ =
+ describe "CORE: Antialiasing" (fun { test; _ } ->
+ let open Png.IO in
+ test "does not count anti-aliased pixels as different"
+ (fun { expect; _ } ->
+ let img1 = loadImage "test/test-images/aa/antialiasing-on.png" in
+ let img2 = loadImage "test/test-images/aa/antialiasing-off.png" in
+ let _, diffPixels, diffPercentage, _ =
+ PNG_Diff.compare img1 img2 ~outputDiffMask:false ~antialiasing:true
+ ()
+ in
+ (expect.int diffPixels).toBe 38;
+ (expect.float diffPercentage).toBeCloseTo 0.095);
+ test "tests different sized AA images" (fun { expect; _ } ->
+ let img1 = loadImage "test/test-images/aa/antialiasing-on.png" in
+ let img2 =
+ loadImage "test/test-images/aa/antialiasing-off-small.png"
+ in
+ let _, diffPixels, diffPercentage, _ =
+ PNG_Diff.compare img1 img2 ~outputDiffMask:true ~antialiasing:true
+ ()
+ in
+ (expect.int diffPixels).toBe 417;
+ (expect.float diffPercentage).toBeCloseTo 1.04))
+
+let _ =
+ describe "CORE: Threshold" (fun { test; _ } ->
+ test "uses provided threshold" (fun { expect; _ } ->
+ let img1 = Png.IO.loadImage "test/test-images/png/orange.png" in
+ let img2 =
+ Png.IO.loadImage "test/test-images/png/orange_changed.png"
+ in
+ let _, diffPixels, diffPercentage, _ =
+ PNG_Diff.compare img1 img2 ~threshold:0.5 ()
+ in
+ (expect.int diffPixels).toBe 222;
+ (expect.float diffPercentage).toBeCloseTo 0.19))
+
+let _ =
+ describe "CORE: Ignore Regions" (fun { test; _ } ->
+ test "uses provided irgnore regions" (fun { expect; _ } ->
+ let img1 = Png.IO.loadImage "test/test-images/png/orange.png" in
+ let img2 =
+ Png.IO.loadImage "test/test-images/png/orange_changed.png"
+ in
+ let _diffOutput, diffPixels, diffPercentage, _ =
+ PNG_Diff.compare img1 img2
+ ~ignoreRegions:
+ [ ((150, 30), (310, 105)); ((20, 175), (105, 200)) ]
+ ()
+ in
+ (expect.int diffPixels).toBe 0;
+ (expect.float diffPercentage).toBeCloseTo 0.0))
+
+let _ =
+ describe "CORE: Diff Color" (fun { test; _ } ->
+ test "creates diff output image with custom diff color"
+ (fun { expect; _ } ->
+ let img1 = Png.IO.loadImage "test/test-images/png/orange.png" in
+ let img2 =
+ Png.IO.loadImage "test/test-images/png/orange_changed.png"
+ in
+ let diffOutput, _, _, _ =
+ PNG_Diff.compare img1 img2 ~diffPixel:(0, 255, 0) ()
+ in
+ let originalDiff =
+ Png.IO.loadImage "test/test-images/png/orange_diff_green.png"
+ in
+ let diffMaskOfDiff, diffOfDiffPixels, diffOfDiffPercentage, _ =
+ PNG_Diff.compare originalDiff diffOutput ()
+ in
+ if diffOfDiffPixels > 0 then (
+ Png.IO.saveImage diffOutput
+ "test/test-images/png/diff-output-green.png";
+ Png.IO.saveImage diffMaskOfDiff
+ "test/test-images/png/diff-of-diff-green.png");
+ (expect.int diffOfDiffPixels).toBe 0;
+ (expect.float diffOfDiffPercentage).toBeCloseTo 0.0))
diff --git a/test/Test_Core.re b/test/Test_Core.re
deleted file mode 100644
index 538dfdab..00000000
--- a/test/Test_Core.re
+++ /dev/null
@@ -1,104 +0,0 @@
-open TestFramework;
-open ODiffIO;
-
-module PNG_Diff = Odiff.Diff.MakeDiff(Png.IO, Png.IO);
-
-describe("CORE: Antialiasing", ({test, _}) => {
- open Png.IO;
-
- test("does not count anti-aliased pixels as different", ({expect, _}) => {
- let img1 = loadImage("test/test-images/aa/antialiasing-on.png");
- let img2 = loadImage("test/test-images/aa/antialiasing-off.png");
-
- let (_, diffPixels, diffPercentage, _) =
- PNG_Diff.compare(
- img1,
- img2,
- ~outputDiffMask=false,
- ~antialiasing=true,
- (),
- );
-
- expect.int(diffPixels).toBe(38);
- expect.float(diffPercentage).toBeCloseTo(0.095);
- });
-
- test("tests diffrent sized AA images", ({expect, _}) => {
- let img1 = loadImage("test/test-images/aa/antialiasing-on.png");
- let img2 = loadImage("test/test-images/aa/antialiasing-off-small.png");
-
- let (_, diffPixels, diffPercentage, _) =
- PNG_Diff.compare(
- img1,
- img2,
- ~outputDiffMask=true,
- ~antialiasing=true,
- (),
- );
-
- expect.int(diffPixels).toBe(417);
- expect.float(diffPercentage).toBeCloseTo(1.04);
- });
-});
-
-describe("CORE: Threshold", ({test, _}) => {
- test("uses provided threshold", ({expect, _}) => {
- let img1 = Png.IO.loadImage("test/test-images/png/orange.png");
- let img2 = Png.IO.loadImage("test/test-images/png/orange_changed.png");
-
- let (_, diffPixels, diffPercentage, _) =
- PNG_Diff.compare(img1, img2, ~threshold=0.5, ());
- expect.int(diffPixels).toBe(222);
- expect.float(diffPercentage).toBeCloseTo(0.19);
- })
-});
-
-describe("CORE: Ignore Regions", ({test, _}) => {
- test("uses provided irgnore regions", ({expect, _}) => {
- let img1 = Png.IO.loadImage("test/test-images/png/orange.png");
- let img2 = Png.IO.loadImage("test/test-images/png/orange_changed.png");
-
- let (_diffOutput, diffPixels, diffPercentage, _) =
- PNG_Diff.compare(
- img1,
- img2,
- ~ignoreRegions=[
- ((150, 30), (310, 105)),
- ((20, 175), (105, 200)),
- ],
- (),
- );
-
- expect.int(diffPixels).toBe(0);
- expect.float(diffPercentage).toBeCloseTo(0.0);
- })
-});
-
-describe("CORE: Diff Color", ({test, _}) => {
- test("creates diff output image with custom diff color", ({expect, _}) => {
- let img1 = Png.IO.loadImage("test/test-images/png/orange.png");
- let img2 = Png.IO.loadImage("test/test-images/png/orange_changed.png");
-
- let (diffOutput, _, _, _) =
- PNG_Diff.compare(img1, img2, ~diffPixel=(0, 255, 0), ());
-
- let originalDiff =
- Png.IO.loadImage("test/test-images/png/orange_diff_green.png");
- let (diffMaskOfDiff, diffOfDiffPixels, diffOfDiffPercentage, _) =
- PNG_Diff.compare(originalDiff, diffOutput, ());
-
- if (diffOfDiffPixels > 0) {
- Png.IO.saveImage(
- diffOutput,
- "test/test-images/png/diff-output-green.png",
- );
- Png.IO.saveImage(
- diffMaskOfDiff,
- "test/test-images/png/diff-of-diff-green.png",
- );
- };
-
- expect.int(diffOfDiffPixels).toBe(0);
- expect.float(diffOfDiffPercentage).toBeCloseTo(0.0);
- })
-});
diff --git a/test/Test_IO_BMP.ml b/test/Test_IO_BMP.ml
new file mode 100644
index 00000000..ce2bb67f
--- /dev/null
+++ b/test/Test_IO_BMP.ml
@@ -0,0 +1,42 @@
+open TestFramework
+open ODiffIO
+module Diff = Odiff.Diff.MakeDiff (Bmp.IO) (Bmp.IO)
+module Output_Diff = Odiff.Diff.MakeDiff (Png.IO) (Bmp.IO)
+
+let _ =
+ describe "IO: BMP" (fun { test; _ } ->
+ test "finds difference between 2 images" (fun { expect; _ } ->
+ let img1 = Bmp.IO.loadImage "test/test-images/bmp/clouds.bmp" in
+ let img2 = Bmp.IO.loadImage "test/test-images/bmp/clouds-2.bmp" in
+ let _, diffPixels, diffPercentage, _ = Diff.compare img1 img2 () in
+ (expect.int diffPixels).toBe 191;
+ (expect.float diffPercentage).toBeCloseTo 0.076);
+ test "Diff of mask and no mask are equal" (fun { expect; _ } ->
+ let img1 = Bmp.IO.loadImage "test/test-images/bmp/clouds.bmp" in
+ let img2 = Bmp.IO.loadImage "test/test-images/bmp/clouds-2.bmp" in
+ let _, diffPixels, diffPercentage, _ =
+ Diff.compare img1 img2 ~outputDiffMask:false ()
+ in
+ let img1 = Bmp.IO.loadImage "test/test-images/bmp/clouds.bmp" in
+ let img2 = Bmp.IO.loadImage "test/test-images/bmp/clouds-2.bmp" in
+ let _, diffPixelsMask, diffPercentageMask, _ =
+ Diff.compare img1 img2 ~outputDiffMask:true ()
+ in
+ (expect.int diffPixels).toBe diffPixelsMask;
+ (expect.float diffPercentage).toBeCloseTo diffPercentageMask);
+ test "Creates correct diff output image" (fun { expect; _ } ->
+ let img1 = Bmp.IO.loadImage "test/test-images/bmp/clouds.bmp" in
+ let img2 = Bmp.IO.loadImage "test/test-images/bmp/clouds-2.bmp" in
+ let diffOutput, _, _, _ = Diff.compare img1 img2 () in
+ let originalDiff =
+ Png.IO.loadImage "test/test-images/bmp/clouds-diff.png"
+ in
+ let diffMaskOfDiff, diffOfDiffPixels, diffOfDiffPercentage, _ =
+ Output_Diff.compare originalDiff diffOutput ()
+ in
+ if diffOfDiffPixels > 0 then (
+ Bmp.IO.saveImage diffOutput "test/test-images/bmp/_diff-output.png";
+ Png.IO.saveImage diffMaskOfDiff
+ "test/test-images/bmp/_diff-of-diff.png");
+ (expect.int diffOfDiffPixels).toBe 0;
+ (expect.float diffOfDiffPercentage).toBeCloseTo 0.0))
diff --git a/test/Test_IO_BMP.re b/test/Test_IO_BMP.re
deleted file mode 100644
index f2fec7a6..00000000
--- a/test/Test_IO_BMP.re
+++ /dev/null
@@ -1,57 +0,0 @@
-open TestFramework;
-open ODiffIO;
-
-module Diff = Odiff.Diff.MakeDiff(Bmp.IO, Bmp.IO);
-module Output_Diff = Odiff.Diff.MakeDiff(Png.IO, Bmp.IO);
-
-describe("IO: BMP", ({test, _}) => {
- test("finds difference between 2 images", ({expect, _}) => {
- let img1 = Bmp.IO.loadImage("test/test-images/bmp/clouds.bmp");
- let img2 = Bmp.IO.loadImage("test/test-images/bmp/clouds-2.bmp");
-
- let (_, diffPixels, diffPercentage, _) = Diff.compare(img1, img2, ());
-
- expect.int(diffPixels).toBe(191);
- expect.float(diffPercentage).toBeCloseTo(0.076);
- });
-
- test("Diff of mask and no mask are equal", ({expect, _}) => {
- let img1 = Bmp.IO.loadImage("test/test-images/bmp/clouds.bmp");
- let img2 = Bmp.IO.loadImage("test/test-images/bmp/clouds-2.bmp");
-
- let (_, diffPixels, diffPercentage, _) =
- Diff.compare(img1, img2, ~outputDiffMask=false, ());
-
- let img1 = Bmp.IO.loadImage("test/test-images/bmp/clouds.bmp");
- let img2 = Bmp.IO.loadImage("test/test-images/bmp/clouds-2.bmp");
-
- let (_, diffPixelsMask, diffPercentageMask, _) =
- Diff.compare(img1, img2, ~outputDiffMask=true, ());
-
- expect.int(diffPixels).toBe(diffPixelsMask);
- expect.float(diffPercentage).toBeCloseTo(diffPercentageMask);
- });
-
- test("Creates correct diff output image", ({expect, _}) => {
- let img1 = Bmp.IO.loadImage("test/test-images/bmp/clouds.bmp");
- let img2 = Bmp.IO.loadImage("test/test-images/bmp/clouds-2.bmp");
-
- let (diffOutput, _, _, _) = Diff.compare(img1, img2, ());
-
- let originalDiff =
- Png.IO.loadImage("test/test-images/bmp/clouds-diff.png");
- let (diffMaskOfDiff, diffOfDiffPixels, diffOfDiffPercentage, _) =
- Output_Diff.compare(originalDiff, diffOutput, ());
-
- if (diffOfDiffPixels > 0) {
- Bmp.IO.saveImage(diffOutput, "test/test-images/bmp/_diff-output.png");
- Png.IO.saveImage(
- diffMaskOfDiff,
- "test/test-images/bmp/_diff-of-diff.png",
- );
- };
-
- expect.int(diffOfDiffPixels).toBe(0);
- expect.float(diffOfDiffPercentage).toBeCloseTo(0.0);
- });
-});
diff --git a/test/Test_IO_JPG.ml b/test/Test_IO_JPG.ml
new file mode 100644
index 00000000..a052a60c
--- /dev/null
+++ b/test/Test_IO_JPG.ml
@@ -0,0 +1,42 @@
+open TestFramework
+open ODiffIO
+module Diff = Odiff.Diff.MakeDiff (Jpg.IO) (Jpg.IO)
+module Output_Diff = Odiff.Diff.MakeDiff (Png.IO) (Jpg.IO)
+
+let _ =
+ describe "IO: JPG / JPEG" (fun { test; _ } ->
+ test "finds difference between 2 images" (fun { expect; _ } ->
+ let img1 = Jpg.IO.loadImage "test/test-images/jpg/tiger.jpg" in
+ let img2 = Jpg.IO.loadImage "test/test-images/jpg/tiger-2.jpg" in
+ let _, diffPixels, diffPercentage, _ = Diff.compare img1 img2 () in
+ (expect.int diffPixels).toBe 7586;
+ (expect.float diffPercentage).toBeCloseTo 1.14);
+ test "Diff of mask and no mask are equal" (fun { expect; _ } ->
+ let img1 = Jpg.IO.loadImage "test/test-images/jpg/tiger.jpg" in
+ let img2 = Jpg.IO.loadImage "test/test-images/jpg/tiger-2.jpg" in
+ let _, diffPixels, diffPercentage, _ =
+ Diff.compare img1 img2 ~outputDiffMask:false ()
+ in
+ let img1 = Jpg.IO.loadImage "test/test-images/jpg/tiger.jpg" in
+ let img2 = Jpg.IO.loadImage "test/test-images/jpg/tiger-2.jpg" in
+ let _, diffPixelsMask, diffPercentageMask, _ =
+ Diff.compare img1 img2 ~outputDiffMask:true ()
+ in
+ (expect.int diffPixels).toBe diffPixelsMask;
+ (expect.float diffPercentage).toBeCloseTo diffPercentageMask);
+ test "Creates correct diff output image" (fun { expect; _ } ->
+ let img1 = Jpg.IO.loadImage "test/test-images/jpg/tiger.jpg" in
+ let img2 = Jpg.IO.loadImage "test/test-images/jpg/tiger-2.jpg" in
+ let diffOutput, _, _, _ = Diff.compare img1 img2 () in
+ let originalDiff =
+ Png.IO.loadImage "test/test-images/jpg/tiger-diff.png"
+ in
+ let diffMaskOfDiff, diffOfDiffPixels, diffOfDiffPercentage, _ =
+ Output_Diff.compare originalDiff diffOutput ()
+ in
+ if diffOfDiffPixels > 0 then (
+ Jpg.IO.saveImage diffOutput "test/test-images/jpg/_diff-output.png";
+ Png.IO.saveImage diffMaskOfDiff
+ "test/test-images/jpg/_diff-of-diff.png");
+ (expect.int diffOfDiffPixels).toBe 0;
+ (expect.float diffOfDiffPercentage).toBeCloseTo 0.0))
diff --git a/test/Test_IO_JPG.re b/test/Test_IO_JPG.re
deleted file mode 100644
index 92c66d26..00000000
--- a/test/Test_IO_JPG.re
+++ /dev/null
@@ -1,57 +0,0 @@
-open TestFramework;
-open ODiffIO;
-
-module Diff = Odiff.Diff.MakeDiff(Jpg.IO, Jpg.IO);
-module Output_Diff = Odiff.Diff.MakeDiff(Png.IO, Jpg.IO);
-
-describe("IO: JPG / JPEG", ({test, _}) => {
- test("finds difference between 2 images", ({expect, _}) => {
- let img1 = Jpg.IO.loadImage("test/test-images/jpg/tiger.jpg");
- let img2 = Jpg.IO.loadImage("test/test-images/jpg/tiger-2.jpg");
-
- let (_, diffPixels, diffPercentage, _) = Diff.compare(img1, img2, ());
-
- expect.int(diffPixels).toBe(7586);
- expect.float(diffPercentage).toBeCloseTo(1.14);
- });
-
- test("Diff of mask and no mask are equal", ({expect, _}) => {
- let img1 = Jpg.IO.loadImage("test/test-images/jpg/tiger.jpg");
- let img2 = Jpg.IO.loadImage("test/test-images/jpg/tiger-2.jpg");
-
- let (_, diffPixels, diffPercentage, _) =
- Diff.compare(img1, img2, ~outputDiffMask=false, ());
-
- let img1 = Jpg.IO.loadImage("test/test-images/jpg/tiger.jpg");
- let img2 = Jpg.IO.loadImage("test/test-images/jpg/tiger-2.jpg");
-
- let (_, diffPixelsMask, diffPercentageMask, _) =
- Diff.compare(img1, img2, ~outputDiffMask=true, ());
-
- expect.int(diffPixels).toBe(diffPixelsMask);
- expect.float(diffPercentage).toBeCloseTo(diffPercentageMask);
- });
-
- test("Creates correct diff output image", ({expect, _}) => {
- let img1 = Jpg.IO.loadImage("test/test-images/jpg/tiger.jpg");
- let img2 = Jpg.IO.loadImage("test/test-images/jpg/tiger-2.jpg");
-
- let (diffOutput, _, _, _) = Diff.compare(img1, img2, ());
-
- let originalDiff =
- Png.IO.loadImage("test/test-images/jpg/tiger-diff.png");
- let (diffMaskOfDiff, diffOfDiffPixels, diffOfDiffPercentage, _) =
- Output_Diff.compare(originalDiff, diffOutput, ());
-
- if (diffOfDiffPixels > 0) {
- Jpg.IO.saveImage(diffOutput, "test/test-images/jpg/_diff-output.png");
- Png.IO.saveImage(
- diffMaskOfDiff,
- "test/test-images/jpg/_diff-of-diff.png",
- );
- };
-
- expect.int(diffOfDiffPixels).toBe(0);
- expect.float(diffOfDiffPercentage).toBeCloseTo(0.0);
- });
-});
diff --git a/test/Test_IO_PNG.ml b/test/Test_IO_PNG.ml
new file mode 100644
index 00000000..4c8f83e8
--- /dev/null
+++ b/test/Test_IO_PNG.ml
@@ -0,0 +1,39 @@
+open TestFramework
+open ODiffIO
+module Diff = Odiff.Diff.MakeDiff (Png.IO) (Png.IO)
+
+let _ =
+ describe "IO: PNG" (fun { test; _ } ->
+ let open Png.IO in
+ test "finds difference between 2 images" (fun { expect; _ } ->
+ let img1 = loadImage "test/test-images/png/orange.png" in
+ let img2 = loadImage "test/test-images/png/orange_changed.png" in
+ let _, diffPixels, diffPercentage, _ = Diff.compare img1 img2 () in
+ (expect.int diffPixels).toBe 1430;
+ (expect.float diffPercentage).toBeCloseTo 1.20);
+ test "Diff of mask and no mask are equal" (fun { expect; _ } ->
+ let img1 = loadImage "test/test-images/png/orange.png" in
+ let img2 = loadImage "test/test-images/png/orange_changed.png" in
+ let _, diffPixels, diffPercentage, _ =
+ Diff.compare img1 img2 ~outputDiffMask:false ()
+ in
+ let img1 = loadImage "test/test-images/png/orange.png" in
+ let img2 = loadImage "test/test-images/png/orange_changed.png" in
+ let _, diffPixelsMask, diffPercentageMask, _ =
+ Diff.compare img1 img2 ~outputDiffMask:true ()
+ in
+ (expect.int diffPixels).toBe diffPixelsMask;
+ (expect.float diffPercentage).toBeCloseTo diffPercentageMask);
+ test "Creates correct diff output image" (fun { expect; _ } ->
+ let img1 = loadImage "test/test-images/png/orange.png" in
+ let img2 = loadImage "test/test-images/png/orange_changed.png" in
+ let diffOutput, _, _, _ = Diff.compare img1 img2 () in
+ let originalDiff = loadImage "test/test-images/png/orange_diff.png" in
+ let diffMaskOfDiff, diffOfDiffPixels, diffOfDiffPercentage, _ =
+ Diff.compare originalDiff diffOutput ()
+ in
+ if diffOfDiffPixels > 0 then (
+ saveImage diffOutput "test/test-images/png/diff-output.png";
+ saveImage diffMaskOfDiff "test/test-images/png/diff-of-diff.png");
+ (expect.int diffOfDiffPixels).toBe 0;
+ (expect.float diffOfDiffPercentage).toBeCloseTo 0.0))
diff --git a/test/Test_IO_PNG.re b/test/Test_IO_PNG.re
deleted file mode 100644
index 0c859cbd..00000000
--- a/test/Test_IO_PNG.re
+++ /dev/null
@@ -1,54 +0,0 @@
-open TestFramework;
-open ODiffIO;
-
-module Diff = Odiff.Diff.MakeDiff(Png.IO, Png.IO);
-
-describe("IO: PNG", ({test, _}) => {
- open Png.IO;
-
- test("finds difference between 2 images", ({expect, _}) => {
- let img1 = loadImage("test/test-images/png/orange.png");
- let img2 = loadImage("test/test-images/png/orange_changed.png");
-
- let (_, diffPixels, diffPercentage, _) = Diff.compare(img1, img2, ());
-
- expect.int(diffPixels).toBe(1430);
- expect.float(diffPercentage).toBeCloseTo(1.20);
- });
-
- test("Diff of mask and no mask are equal", ({expect, _}) => {
- let img1 = loadImage("test/test-images/png/orange.png");
- let img2 = loadImage("test/test-images/png/orange_changed.png");
-
- let (_, diffPixels, diffPercentage, _) =
- Diff.compare(img1, img2, ~outputDiffMask=false, ());
-
- let img1 = loadImage("test/test-images/png/orange.png");
- let img2 = loadImage("test/test-images/png/orange_changed.png");
-
- let (_, diffPixelsMask, diffPercentageMask, _) =
- Diff.compare(img1, img2, ~outputDiffMask=true, ());
-
- expect.int(diffPixels).toBe(diffPixelsMask);
- expect.float(diffPercentage).toBeCloseTo(diffPercentageMask);
- });
-
- test("Creates correct diff output image", ({expect, _}) => {
- let img1 = loadImage("test/test-images/png/orange.png");
- let img2 = loadImage("test/test-images/png/orange_changed.png");
-
- let (diffOutput, _, _, _) = Diff.compare(img1, img2, ());
-
- let originalDiff = loadImage("test/test-images/png/orange_diff.png");
- let (diffMaskOfDiff, diffOfDiffPixels, diffOfDiffPercentage, _) =
- Diff.compare(originalDiff, diffOutput, ());
-
- if (diffOfDiffPixels > 0) {
- saveImage(diffOutput, "test/test-images/png/diff-output.png");
- saveImage(diffMaskOfDiff, "test/test-images/png/diff-of-diff.png");
- };
-
- expect.int(diffOfDiffPixels).toBe(0);
- expect.float(diffOfDiffPercentage).toBeCloseTo(0.0);
- });
-});
diff --git a/test/Test_IO_TIFF.ml b/test/Test_IO_TIFF.ml
new file mode 100644
index 00000000..1deb0b35
--- /dev/null
+++ b/test/Test_IO_TIFF.ml
@@ -0,0 +1,44 @@
+open TestFramework
+open ODiffIO
+module Diff = Odiff.Diff.MakeDiff (Tiff.IO) (Tiff.IO)
+module Output_Diff = Odiff.Diff.MakeDiff (Png.IO) (Tiff.IO)
+
+let _ =
+ describe "IO: TIFF" (fun { test; _ } ->
+ test "finds difference between 2 images" (fun { expect; _ } ->
+ let img1 = Tiff.IO.loadImage "test/test-images/tiff/laptops.tiff" in
+ let img2 = Tiff.IO.loadImage "test/test-images/tiff/laptops-2.tiff" in
+ let _, diffPixels, diffPercentage, _ = Diff.compare img1 img2 () in
+ (expect.int diffPixels).toBe 8569;
+ (expect.float diffPercentage).toBeCloseTo 3.79);
+
+ test "Diff of mask and no mask are equal" (fun { expect; _ } ->
+ let img1 = Tiff.IO.loadImage "test/test-images/tiff/laptops.tiff" in
+ let img2 = Tiff.IO.loadImage "test/test-images/tiff/laptops-2.tiff" in
+ let _, diffPixels, diffPercentage, _ =
+ Diff.compare img1 img2 ~outputDiffMask:false ()
+ in
+ let img1 = Tiff.IO.loadImage "test/test-images/tiff/laptops.tiff" in
+ let img2 = Tiff.IO.loadImage "test/test-images/tiff/laptops-2.tiff" in
+ let _, diffPixelsMask, diffPercentageMask, _ =
+ Diff.compare img1 img2 ~outputDiffMask:true ()
+ in
+ (expect.int diffPixels).toBe diffPixelsMask;
+ (expect.float diffPercentage).toBeCloseTo diffPercentageMask);
+ test "Creates correct diff output image" (fun { expect; _ } ->
+ let img1 = Tiff.IO.loadImage "test/test-images/tiff/laptops.tiff" in
+ let img2 = Tiff.IO.loadImage "test/test-images/tiff/laptops-2.tiff" in
+ let diffOutput, _, _, _ = Diff.compare img1 img2 () in
+ let originalDiff =
+ Png.IO.loadImage "test/test-images/tiff/laptops-diff.png"
+ in
+ let diffMaskOfDiff, diffOfDiffPixels, diffOfDiffPercentage, _ =
+ Output_Diff.compare originalDiff diffOutput ()
+ in
+ if diffOfDiffPixels > 0 then (
+ Tiff.IO.saveImage diffOutput
+ "test/test-images/tiff/_diff-output.png";
+ Png.IO.saveImage diffMaskOfDiff
+ "test/test-images/tiff/_diff-of-diff.png");
+ (expect.int diffOfDiffPixels).toBe 0;
+ (expect.float diffOfDiffPercentage).toBeCloseTo 0.0))
diff --git a/test/Test_IO_TIFF.re b/test/Test_IO_TIFF.re
deleted file mode 100644
index 56c2e238..00000000
--- a/test/Test_IO_TIFF.re
+++ /dev/null
@@ -1,57 +0,0 @@
-open TestFramework;
-open ODiffIO;
-
-module Diff = Odiff.Diff.MakeDiff(Tiff.IO, Tiff.IO);
-module Output_Diff = Odiff.Diff.MakeDiff(Png.IO, Tiff.IO);
-
-describe("IO: TIFF", ({test, _}) => {
- test("finds difference between 2 images", ({expect, _}) => {
- let img1 = Tiff.IO.loadImage("test/test-images/tiff/laptops.tiff");
- let img2 = Tiff.IO.loadImage("test/test-images/tiff/laptops-2.tiff");
-
- let (_, diffPixels, diffPercentage, _) = Diff.compare(img1, img2, ());
-
- expect.int(diffPixels).toBe(8569);
- expect.float(diffPercentage).toBeCloseTo(3.79);
- });
-
- test("Diff of mask and no mask are equal", ({expect, _}) => {
- let img1 = Tiff.IO.loadImage("test/test-images/tiff/laptops.tiff");
- let img2 = Tiff.IO.loadImage("test/test-images/tiff/laptops-2.tiff");
-
- let (_, diffPixels, diffPercentage, _) =
- Diff.compare(img1, img2, ~outputDiffMask=false, ());
-
- let img1 = Tiff.IO.loadImage("test/test-images/tiff/laptops.tiff");
- let img2 = Tiff.IO.loadImage("test/test-images/tiff/laptops-2.tiff");
-
- let (_, diffPixelsMask, diffPercentageMask, _) =
- Diff.compare(img1, img2, ~outputDiffMask=true, ());
-
- expect.int(diffPixels).toBe(diffPixelsMask);
- expect.float(diffPercentage).toBeCloseTo(diffPercentageMask);
- });
-
- test("Creates correct diff output image", ({expect, _}) => {
- let img1 = Tiff.IO.loadImage("test/test-images/tiff/laptops.tiff");
- let img2 = Tiff.IO.loadImage("test/test-images/tiff/laptops-2.tiff");
-
- let (diffOutput, _, _, _) = Diff.compare(img1, img2, ());
-
- let originalDiff =
- Png.IO.loadImage("test/test-images/tiff/laptops-diff.png");
- let (diffMaskOfDiff, diffOfDiffPixels, diffOfDiffPercentage, _) =
- Output_Diff.compare(originalDiff, diffOutput, ());
-
- if (diffOfDiffPixels > 0) {
- Tiff.IO.saveImage(diffOutput, "test/test-images/tiff/_diff-output.png");
- Png.IO.saveImage(
- diffMaskOfDiff,
- "test/test-images/tiff/_diff-of-diff.png",
- );
- };
-
- expect.int(diffOfDiffPixels).toBe(0);
- expect.float(diffOfDiffPercentage).toBeCloseTo(0.0);
- });
-});
diff --git a/test/dune b/test/dune
index d1d9b628..e60f682d 100644
--- a/test/dune
+++ b/test/dune
@@ -6,16 +6,14 @@
; you will want to depend on the library you are testing as well, however for
; the purposes of this example we are only depending on the test runner itself
(libraries rely.lib odiff odiff-io)
- (modules (:standard \ RunTests))
-)
+ (modules
+ (:standard \ RunTests)))
+
(executable
; the for the library is automatically detected because of the name, but we
; need to explicitly specify the package here
(name RunTests)
(package odiff)
(public_name RunTests.exe)
- (libraries
- OdiffTests
- )
- (modules RunTests)
-)
\ No newline at end of file
+ (libraries OdiffTests)
+ (modules RunTests))