diff --git a/.ci/build-platform.yml b/.ci/build-platform.yml index 7de5a578..1414c77c 100644 --- a/.ci/build-platform.yml +++ b/.ci/build-platform.yml @@ -32,6 +32,11 @@ jobs: continueOnError: true condition: and(eq(variables['AGENT.OS'], 'Windows_NT'), and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch'])))) displayName: "Print tar help" + # https://github.com/esy/pesy/commit/3aeaad2550edcf4ac8e259400279a564a92a194e + - powershell: Write-Host "##vso[task.setvariable variable=HOME;]D:\" + continueOnError: true + condition: eq(variables['AGENT.OS'], 'Windows_NT') + displayName: "Make sure $HOME is same is Agent.BuildDirectory" - bash: | # COMPUTE THE ESY INSTALL CACHE LOCATION AHEAD OF TIME DESIRED_LEN="86" diff --git a/.ci/utils/use-esy.yml b/.ci/utils/use-esy.yml index 5cd60116..1f133f86 100644 --- a/.ci/utils/use-esy.yml +++ b/.ci/utils/use-esy.yml @@ -1,5 +1,5 @@ # steps to install esy globally steps: - - script: "npm install -g @esy-nightly/esy" + - script: "npm install -g esy" displayName: "install esy" diff --git a/bin/Main.re b/bin/Main.re index cc153364..138e5d0b 100644 --- a/bin/Main.re +++ b/bin/Main.re @@ -1,13 +1,10 @@ open Odiff.ImageIO; open Odiff.Diff; -let getIOModule = (filename, ~antialiasing) => +let getIOModule = filename => Filename.extension(filename) |> ( fun - | ".png" when antialiasing => ( - (module ODiffIO.Png.BigarrayIO): (module ImageIO) - ) | ".png" => ((module ODiffIO.Png.IO): (module ImageIO)) | ".jpg" | ".jpeg" => ((module ODiffIO.Jpg.IO): (module ImageIO)) @@ -34,8 +31,8 @@ let main = antialiasing, ignoreRegions, ) => { - module IO1 = (val getIOModule(img1Path, ~antialiasing)); - module IO2 = (val getIOModule(img2Path, ~antialiasing)); + module IO1 = (val getIOModule(img1Path)); + module IO2 = (val getIOModule(img2Path)); module Diff = MakeDiff(IO1, IO2); diff --git a/esy.lock/index.json b/esy.lock/index.json index 16de3f70..33577f52 100644 --- a/esy.lock/index.json +++ b/esy.lock/index.json @@ -1,5 +1,5 @@ { - "checksum": "f3ecae1e054832e57ef4792158eeea14", + "checksum": "cb0ba0667e35a26c4d5672789075a722", "root": "odiff@link-dev:./package.json", "node": { "yargs-parser@20.2.9@d41d8cd9": { @@ -29,7 +29,7 @@ "overrides": [], "dependencies": [ "yargs-parser@20.2.9@d41d8cd9", "y18n@5.0.8@d41d8cd9", - "string-width@4.2.2@d41d8cd9", "require-directory@2.1.1@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", "cliui@7.0.4@d41d8cd9" ], @@ -89,7 +89,7 @@ }, "overrides": [], "dependencies": [ - "typedarray-to-buffer@3.1.5@d41d8cd9", "signal-exit@3.0.3@d41d8cd9", + "typedarray-to-buffer@3.1.5@d41d8cd9", "signal-exit@3.0.4@d41d8cd9", "is-typedarray@1.0.0@d41d8cd9", "imurmurhash@0.1.4@d41d8cd9" ], "devDependencies": [] @@ -120,7 +120,7 @@ }, "overrides": [], "dependencies": [ - "strip-ansi@6.0.0@d41d8cd9", "string-width@4.2.2@d41d8cd9", + "strip-ansi@6.0.1@d41d8cd9", "string-width@4.2.3@d41d8cd9", "ansi-styles@4.3.0@d41d8cd9" ], "devDependencies": [] @@ -136,7 +136,7 @@ ] }, "overrides": [], - "dependencies": [ "string-width@4.2.2@d41d8cd9" ], + "dependencies": [ "string-width@4.2.3@d41d8cd9" ], "devDependencies": [] }, "well-known-symbols@2.0.0@d41d8cd9": { @@ -229,7 +229,7 @@ "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", "has-yarn@2.1.0@d41d8cd9", "configstore@5.0.1@d41d8cd9", - "chalk@4.1.1@d41d8cd9", "boxen@5.0.1@d41d8cd9" + "chalk@4.1.2@d41d8cd9", "boxen@5.1.2@d41d8cd9" ], "devDependencies": [] }, @@ -247,14 +247,14 @@ "dependencies": [ "crypto-random-string@2.0.0@d41d8cd9" ], "devDependencies": [] }, - "typescript@4.3.5@d41d8cd9": { - "id": "typescript@4.3.5@d41d8cd9", + "typescript@4.4.3@d41d8cd9": { + "id": "typescript@4.4.3@d41d8cd9", "name": "typescript", - "version": "4.3.5", + "version": "4.4.3", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz#sha1:4d1c37cc16e893973c45a06886b7113234f119f4" + "archive:https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz#sha1:bdc5407caa2b109efd4f82fe130656f977a29324" ] }, "overrides": [], @@ -331,14 +331,14 @@ "dependencies": [], "devDependencies": [] }, - "trim-off-newlines@1.0.1@d41d8cd9": { - "id": "trim-off-newlines@1.0.1@d41d8cd9", + "trim-off-newlines@1.0.2@d41d8cd9": { + "id": "trim-off-newlines@1.0.2@d41d8cd9", "name": "trim-off-newlines", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#sha1:9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + "archive:https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.2.tgz#sha1:65d52e4f4115992c0dac87220bdcc279fe58c422" ] }, "overrides": [], @@ -441,7 +441,7 @@ }, "overrides": [], "dependencies": [ - "strip-ansi@6.0.0@d41d8cd9", "serialize-error@7.0.1@d41d8cd9", + "strip-ansi@6.0.1@d41d8cd9", "serialize-error@7.0.1@d41d8cd9", "js-yaml@3.14.1@d41d8cd9", "indent-string@4.0.0@d41d8cd9", "arrify@2.0.1@d41d8cd9" ], @@ -475,32 +475,18 @@ "dependencies": [], "devDependencies": [] }, - "strip-ansi@6.0.0@d41d8cd9": { - "id": "strip-ansi@6.0.0@d41d8cd9", - "name": "strip-ansi", - "version": "6.0.0", - "source": { - "type": "install", - "source": [ - "archive:https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz#sha1:0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - ] - }, - "overrides": [], - "dependencies": [ "ansi-regex@5.0.0@d41d8cd9" ], - "devDependencies": [] - }, - "strip-ansi@5.2.0@d41d8cd9": { - "id": "strip-ansi@5.2.0@d41d8cd9", + "strip-ansi@6.0.1@d41d8cd9": { + "id": "strip-ansi@6.0.1@d41d8cd9", "name": "strip-ansi", - "version": "5.2.0", + "version": "6.0.1", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#sha1:8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + "archive:https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#sha1:9e26c63d30f53443e9489495b2105d37b67a85d9" ] }, "overrides": [], - "dependencies": [ "ansi-regex@4.1.0@d41d8cd9" ], + "dependencies": [ "ansi-regex@5.0.1@d41d8cd9" ], "devDependencies": [] }, "string_decoder@1.3.0@d41d8cd9": { @@ -517,50 +503,32 @@ "dependencies": [ "safe-buffer@5.2.1@d41d8cd9" ], "devDependencies": [] }, - "string-width@4.2.2@d41d8cd9": { - "id": "string-width@4.2.2@d41d8cd9", + "string-width@4.2.3@d41d8cd9": { + "id": "string-width@4.2.3@d41d8cd9", "name": "string-width", - "version": "4.2.2", + "version": "4.2.3", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz#sha1:dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + "archive:https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#sha1:269c7117d27b05ad2e536830a8ec895ef9c6d010" ] }, "overrides": [], "dependencies": [ - "strip-ansi@6.0.0@d41d8cd9", + "strip-ansi@6.0.1@d41d8cd9", "is-fullwidth-code-point@3.0.0@d41d8cd9", "emoji-regex@8.0.0@d41d8cd9" ], "devDependencies": [] }, - "string-width@3.1.0@d41d8cd9": { - "id": "string-width@3.1.0@d41d8cd9", - "name": "string-width", - "version": "3.1.0", - "source": { - "type": "install", - "source": [ - "archive:https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz#sha1:22767be21b62af1081574306f69ac51b62203961" - ] - }, - "overrides": [], - "dependencies": [ - "strip-ansi@5.2.0@d41d8cd9", - "is-fullwidth-code-point@2.0.0@d41d8cd9", - "emoji-regex@7.0.3@d41d8cd9" - ], - "devDependencies": [] - }, - "stack-utils@2.0.3@d41d8cd9": { - "id": "stack-utils@2.0.3@d41d8cd9", + "stack-utils@2.0.5@d41d8cd9": { + "id": "stack-utils@2.0.5@d41d8cd9", "name": "stack-utils", - "version": "2.0.3", + "version": "2.0.5", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz#sha1:cd5f030126ff116b78ccb3c027fe302713b61277" + "archive:https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz#sha1:d25265fca995154659dbbfba3b49254778d2fdd5" ] }, "overrides": [], @@ -581,14 +549,14 @@ "dependencies": [], "devDependencies": [] }, - "spdx-license-ids@3.0.9@d41d8cd9": { - "id": "spdx-license-ids@3.0.9@d41d8cd9", + "spdx-license-ids@3.0.10@d41d8cd9": { + "id": "spdx-license-ids@3.0.10@d41d8cd9", "name": "spdx-license-ids", - "version": "3.0.9", + "version": "3.0.10", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#sha1:8a595135def9592bda69709474f1cbeea7c2467f" + "archive:https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#sha1:0d9becccde7003d6c658d487dd48a32f0bf3014b" ] }, "overrides": [], @@ -607,7 +575,7 @@ }, "overrides": [], "dependencies": [ - "spdx-license-ids@3.0.9@d41d8cd9", "spdx-exceptions@2.3.0@d41d8cd9" + "spdx-license-ids@3.0.10@d41d8cd9", "spdx-exceptions@2.3.0@d41d8cd9" ], "devDependencies": [] }, @@ -637,24 +605,24 @@ }, "overrides": [], "dependencies": [ - "spdx-license-ids@3.0.9@d41d8cd9", + "spdx-license-ids@3.0.10@d41d8cd9", "spdx-expression-parse@3.0.1@d41d8cd9" ], "devDependencies": [] }, - "source-map-support@0.5.19@d41d8cd9": { - "id": "source-map-support@0.5.19@d41d8cd9", + "source-map-support@0.5.20@d41d8cd9": { + "id": "source-map-support@0.5.20@d41d8cd9", "name": "source-map-support", - "version": "0.5.19", + "version": "0.5.20", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz#sha1:a98b62f86dcaf4f67399648c085291ab9e8fed61" + "archive:https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz#sha1:12166089f8f5e5e8c56926b377633392dd2cb6c9" ] }, "overrides": [], "dependencies": [ - "source-map@0.6.1@d41d8cd9", "buffer-from@1.1.1@d41d8cd9" + "source-map@0.6.1@d41d8cd9", "buffer-from@1.1.2@d41d8cd9" ], "devDependencies": [] }, @@ -703,28 +671,28 @@ "dependencies": [], "devDependencies": [] }, - "simple-git-hooks@2.5.1@d41d8cd9": { - "id": "simple-git-hooks@2.5.1@d41d8cd9", + "simple-git-hooks@2.6.1@d41d8cd9": { + "id": "simple-git-hooks@2.6.1@d41d8cd9", "name": "simple-git-hooks", - "version": "2.5.1", + "version": "2.6.1", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/simple-git-hooks/-/simple-git-hooks-2.5.1.tgz#sha1:78ed9cfa552843bc45cd36ad5b7424567119c2f4" + "archive:https://registry.npmjs.org/simple-git-hooks/-/simple-git-hooks-2.6.1.tgz#sha1:0843d7ad7d3be3bb877b86f218d0abea87611584" ] }, "overrides": [], "dependencies": [], "devDependencies": [] }, - "signal-exit@3.0.3@d41d8cd9": { - "id": "signal-exit@3.0.3@d41d8cd9", + "signal-exit@3.0.4@d41d8cd9": { + "id": "signal-exit@3.0.4@d41d8cd9", "name": "signal-exit", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz#sha1:a1410c2edd8f077b08b4e253c8eacfcaf057461c" + "archive:https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.4.tgz#sha1:366a4684d175b9cab2081e3681fda3747b6c51d7" ] }, "overrides": [], @@ -854,7 +822,7 @@ ] }, "overrides": [], - "dependencies": [ "glob@7.1.7@d41d8cd9" ], + "dependencies": [ "glob@7.2.0@d41d8cd9" ], "devDependencies": [] }, "reusify@1.0.4@d41d8cd9": { @@ -883,7 +851,7 @@ }, "overrides": [], "dependencies": [ - "signal-exit@3.0.3@d41d8cd9", "onetime@5.1.2@d41d8cd9" + "signal-exit@3.0.4@d41d8cd9", "onetime@5.1.2@d41d8cd9" ], "devDependencies": [] }, @@ -941,7 +909,7 @@ }, "overrides": [], "dependencies": [ - "path-parse@1.0.7@d41d8cd9", "is-core-module@2.5.0@d41d8cd9" + "path-parse@1.0.7@d41d8cd9", "is-core-module@2.6.0@d41d8cd9" ], "devDependencies": [] }, @@ -1001,7 +969,7 @@ "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@reason-native/pastel@0.3.0@d41d8cd9", "@reason-native/console@0.1.0@d41d8cd9", - "@opam/re@opam:1.9.0@9373f267", "@opam/dune@opam:2.9.0@489e77a9", + "@opam/re@opam:1.10.3@0585c65d", "@opam/dune@opam:2.9.1@1e504822", "@opam/atdgen@opam:2.2.1@6ace3080", "@esy-ocaml/reason@3.7.0@d41d8cd9" ], @@ -1504,10 +1472,10 @@ }, "overrides": [], "dependencies": [ - "wcwidth@1.0.1@d41d8cd9", "strip-ansi@6.0.0@d41d8cd9", + "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.6.0@d41d8cd9", - "cli-cursor@3.1.0@d41d8cd9", "chalk@4.1.1@d41d8cd9", + "cli-cursor@3.1.0@d41d8cd9", "chalk@4.1.2@d41d8cd9", "bl@4.1.0@d41d8cd9" ], "devDependencies": [] @@ -1552,24 +1520,24 @@ "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", - "esy-zlib@github:eWert-Online/esy-zlib#9b0394f07551d9fde386e28a6ff269984b63ffcf@d41d8cd9", + "esy-zlib@github:esy-packages/esy-zlib#65faba12e4aed539d8fd2444fede2f1136389f6f@d41d8cd9", "esy-libtiff@github:esy-packages/esy-libtiff#83b1f5c8f76ad42acb5c008f537b5b3f0902c066@d41d8cd9", - "esy-libpng@github:eWert-Online/esy-libpng#485fec4990dbb0f6b0ecb3ced53f5bd7bc9a4506@d41d8cd9", + "esy-libspng@github:eWert-Online/esy-libspng#cc9f448dc3b2809513241194ec8ac799c9ef6c8a@d41d8cd9", "esy-libjpeg@github:eWert-Online/esy-libjpeg#76b287add2732e191a2c4a1c14a34bab63c4f74d@d41d8cd9", - "ava@3.15.0@d41d8cd9", "@reason-native/rely@3.2.1@d41d8cd9", + "@reason-native/rely@3.2.1@d41d8cd9", "@reason-native/pastel@0.3.0@d41d8cd9", "@reason-native/console@0.1.0@d41d8cd9", "@opam/reason@opam:3.7.0@494dd52d", - "@opam/dune-configurator@opam:2.9.0@40e837e7", - "@opam/dune@opam:2.9.0@489e77a9", + "@opam/dune-configurator@opam:2.9.1@b7cf7a02", + "@opam/dune@opam:2.9.1@1e504822", "@opam/cmdliner@opam:1.0.4@93208aac" ], "devDependencies": [ - "typescript@4.3.5@d41d8cd9", "simple-git-hooks@2.5.1@d41d8cd9", + "typescript@4.4.3@d41d8cd9", "simple-git-hooks@2.6.1@d41d8cd9", "refmterr@3.3.2@d41d8cd9", "ava@3.15.0@d41d8cd9", "@opam/odoc@opam:1.5.3@29f53af8", "@opam/ocaml-lsp-server@opam:1.4.0@c9583433", - "@opam/merlin@opam:3.5.0@f8ae5d56" + "@opam/merlin@opam:3.6.1@b2fb327d" ] }, "ocaml@4.10.2000@d41d8cd9": { @@ -1785,7 +1753,7 @@ ] }, "overrides": [], - "dependencies": [ "blueimp-md5@2.18.0@d41d8cd9" ], + "dependencies": [ "blueimp-md5@2.19.0@d41d8cd9" ], "devDependencies": [] }, "matcher@3.0.0@d41d8cd9": { @@ -1884,7 +1852,7 @@ }, "overrides": [], "dependencies": [ - "is-unicode-supported@0.1.0@d41d8cd9", "chalk@4.1.1@d41d8cd9" + "is-unicode-supported@0.1.0@d41d8cd9", "chalk@4.1.2@d41d8cd9" ], "devDependencies": [] }, @@ -1946,7 +1914,7 @@ "dependencies": [ "type-fest@0.3.1@d41d8cd9", "strip-bom@3.0.0@d41d8cd9", "pify@4.0.1@d41d8cd9", "parse-json@4.0.0@d41d8cd9", - "graceful-fs@4.2.6@d41d8cd9" + "graceful-fs@4.2.8@d41d8cd9" ], "devDependencies": [] }, @@ -2248,14 +2216,14 @@ ], "devDependencies": [] }, - "is-glob@4.0.1@d41d8cd9": { - "id": "is-glob@4.0.1@d41d8cd9", + "is-glob@4.0.2@d41d8cd9": { + "id": "is-glob@4.0.2@d41d8cd9", "name": "is-glob", - "version": "4.0.1", + "version": "4.0.2", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#sha1:7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + "archive:https://registry.npmjs.org/is-glob/-/is-glob-4.0.2.tgz#sha1:859fc2e731e58c902f99fcabccb75a7dd07d29d8" ] }, "overrides": [], @@ -2276,20 +2244,6 @@ "dependencies": [], "devDependencies": [] }, - "is-fullwidth-code-point@2.0.0@d41d8cd9": { - "id": "is-fullwidth-code-point@2.0.0@d41d8cd9", - "name": "is-fullwidth-code-point", - "version": "2.0.0", - "source": { - "type": "install", - "source": [ - "archive:https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#sha1:a3b30a5c4f199183167aaab93beefae3ddfb654f" - ] - }, - "overrides": [], - "dependencies": [], - "devDependencies": [] - }, "is-extglob@2.1.1@d41d8cd9": { "id": "is-extglob@2.1.1@d41d8cd9", "name": "is-extglob", @@ -2318,14 +2272,14 @@ "dependencies": [], "devDependencies": [] }, - "is-core-module@2.5.0@d41d8cd9": { - "id": "is-core-module@2.5.0@d41d8cd9", + "is-core-module@2.6.0@d41d8cd9": { + "id": "is-core-module@2.6.0@d41d8cd9", "name": "is-core-module", - "version": "2.5.0", + "version": "2.6.0", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz#sha1:f754843617c70bfd29b7bd87327400cda5c18491" + "archive:https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz#sha1:d7553b2526fe59b92ba3e40c8df757ec8a709e19" ] }, "overrides": [], @@ -2628,14 +2582,14 @@ "dependencies": [ "function-bind@1.1.1@d41d8cd9" ], "devDependencies": [] }, - "graceful-fs@4.2.6@d41d8cd9": { - "id": "graceful-fs@4.2.6@d41d8cd9", + "graceful-fs@4.2.8@d41d8cd9": { + "id": "graceful-fs@4.2.8@d41d8cd9", "name": "graceful-fs", - "version": "4.2.6", + "version": "4.2.8", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz#sha1:ff040b2b0853b23c3d31027523706f1885d76bee" + "archive:https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz#sha1:e412b8d33f5e006593cbd3cee6df9f2cebbe802a" ] }, "overrides": [], @@ -2707,17 +2661,17 @@ ] }, "overrides": [], - "dependencies": [ "is-glob@4.0.1@d41d8cd9" ], + "dependencies": [ "is-glob@4.0.2@d41d8cd9" ], "devDependencies": [] }, - "glob@7.1.7@d41d8cd9": { - "id": "glob@7.1.7@d41d8cd9", + "glob@7.2.0@d41d8cd9": { + "id": "glob@7.2.0@d41d8cd9", "name": "glob", - "version": "7.1.7", + "version": "7.2.0", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/glob/-/glob-7.1.7.tgz#sha1:3b193e9233f01d42d0b3f78294bbeeb418f94a90" + "archive:https://registry.npmjs.org/glob/-/glob-7.2.0.tgz#sha1:d15535af7732e02e948f4c41628bd910293f6023" ] }, "overrides": [], @@ -2870,14 +2824,14 @@ "dependencies": [ "escape-string-regexp@1.0.5@d41d8cd9" ], "devDependencies": [] }, - "fastq@1.11.1@d41d8cd9": { - "id": "fastq@1.11.1@d41d8cd9", + "fastq@1.13.0@d41d8cd9": { + "id": "fastq@1.13.0@d41d8cd9", "name": "fastq", - "version": "1.11.1", + "version": "1.13.0", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz#sha1:5d8175aae17db61947f8b162cfc7f63264d22807" + "archive:https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz#sha1:616760f88a7526bdfc596b7cab8c18938c36b98c" ] }, "overrides": [], @@ -2916,16 +2870,16 @@ "dependencies": [], "devDependencies": [] }, - "esy-zlib@github:eWert-Online/esy-zlib#9b0394f07551d9fde386e28a6ff269984b63ffcf@d41d8cd9": { + "esy-zlib@github:esy-packages/esy-zlib#65faba12e4aed539d8fd2444fede2f1136389f6f@d41d8cd9": { "id": - "esy-zlib@github:eWert-Online/esy-zlib#9b0394f07551d9fde386e28a6ff269984b63ffcf@d41d8cd9", + "esy-zlib@github:esy-packages/esy-zlib#65faba12e4aed539d8fd2444fede2f1136389f6f@d41d8cd9", "name": "esy-zlib", "version": - "github:eWert-Online/esy-zlib#9b0394f07551d9fde386e28a6ff269984b63ffcf", + "github:esy-packages/esy-zlib#65faba12e4aed539d8fd2444fede2f1136389f6f", "source": { "type": "install", "source": [ - "github:eWert-Online/esy-zlib#9b0394f07551d9fde386e28a6ff269984b63ffcf" + "github:esy-packages/esy-zlib#65faba12e4aed539d8fd2444fede2f1136389f6f" ] }, "overrides": [], @@ -2946,25 +2900,26 @@ }, "overrides": [], "dependencies": [ - "esy-zlib@github:eWert-Online/esy-zlib#9b0394f07551d9fde386e28a6ff269984b63ffcf@d41d8cd9" + "esy-zlib@github:esy-packages/esy-zlib#65faba12e4aed539d8fd2444fede2f1136389f6f@d41d8cd9" ], "devDependencies": [] }, - "esy-libpng@github:eWert-Online/esy-libpng#485fec4990dbb0f6b0ecb3ced53f5bd7bc9a4506@d41d8cd9": { + "esy-libspng@github:eWert-Online/esy-libspng#cc9f448dc3b2809513241194ec8ac799c9ef6c8a@d41d8cd9": { "id": - "esy-libpng@github:eWert-Online/esy-libpng#485fec4990dbb0f6b0ecb3ced53f5bd7bc9a4506@d41d8cd9", - "name": "esy-libpng", + "esy-libspng@github:eWert-Online/esy-libspng#cc9f448dc3b2809513241194ec8ac799c9ef6c8a@d41d8cd9", + "name": "esy-libspng", "version": - "github:eWert-Online/esy-libpng#485fec4990dbb0f6b0ecb3ced53f5bd7bc9a4506", + "github:eWert-Online/esy-libspng#cc9f448dc3b2809513241194ec8ac799c9ef6c8a", "source": { "type": "install", "source": [ - "github:eWert-Online/esy-libpng#485fec4990dbb0f6b0ecb3ced53f5bd7bc9a4506" + "github:eWert-Online/esy-libspng#cc9f448dc3b2809513241194ec8ac799c9ef6c8a" ] }, "overrides": [], "dependencies": [ - "esy-zlib@github:eWert-Online/esy-zlib#9b0394f07551d9fde386e28a6ff269984b63ffcf@d41d8cd9" + "esy-zlib@github:esy-packages/esy-zlib#65faba12e4aed539d8fd2444fede2f1136389f6f@d41d8cd9", + "esy-cmake@github:Et7f3/CMake#1cead3871bbb27a45adab2263ef2dff4a38a8869@d41d8cd9" ], "devDependencies": [] }, @@ -2984,6 +2939,22 @@ "dependencies": [], "devDependencies": [] }, + "esy-cmake@github:Et7f3/CMake#1cead3871bbb27a45adab2263ef2dff4a38a8869@d41d8cd9": { + "id": + "esy-cmake@github:Et7f3/CMake#1cead3871bbb27a45adab2263ef2dff4a38a8869@d41d8cd9", + "name": "esy-cmake", + "version": + "github:Et7f3/CMake#1cead3871bbb27a45adab2263ef2dff4a38a8869", + "source": { + "type": "install", + "source": [ + "github:Et7f3/CMake#1cead3871bbb27a45adab2263ef2dff4a38a8869" + ] + }, + "overrides": [], + "dependencies": [], + "devDependencies": [] + }, "esutils@2.0.3@d41d8cd9": { "id": "esutils@2.0.3@d41d8cd9", "name": "esutils", @@ -3138,20 +3109,6 @@ "dependencies": [], "devDependencies": [] }, - "emoji-regex@7.0.3@d41d8cd9": { - "id": "emoji-regex@7.0.3@d41d8cd9", - "name": "emoji-regex", - "version": "7.0.3", - "source": { - "type": "install", - "source": [ - "archive:https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#sha1:933a04052860c85e83c122479c4748a8e4c72156" - ] - }, - "overrides": [], - "dependencies": [], - "devDependencies": [] - }, "emittery@0.8.1@d41d8cd9": { "id": "emittery@0.8.1@d41d8cd9", "name": "emittery", @@ -3222,8 +3179,8 @@ "dependencies": [ "slash@3.0.0@d41d8cd9", "rimraf@3.0.2@d41d8cd9", "p-map@4.0.0@d41d8cd9", "is-path-inside@3.0.3@d41d8cd9", - "is-path-cwd@2.2.0@d41d8cd9", "is-glob@4.0.1@d41d8cd9", - "graceful-fs@4.2.6@d41d8cd9", "globby@11.0.4@d41d8cd9" + "is-path-cwd@2.2.0@d41d8cd9", "is-glob@4.0.2@d41d8cd9", + "graceful-fs@4.2.8@d41d8cd9", "globby@11.0.4@d41d8cd9" ], "devDependencies": [] }, @@ -3381,7 +3338,7 @@ "dependencies": [ "xdg-basedir@4.0.0@d41d8cd9", "write-file-atomic@3.0.3@d41d8cd9", "unique-string@2.0.0@d41d8cd9", "make-dir@3.1.0@d41d8cd9", - "graceful-fs@4.2.6@d41d8cd9", "dot-prop@5.3.0@d41d8cd9" + "graceful-fs@4.2.8@d41d8cd9", "dot-prop@5.3.0@d41d8cd9" ], "devDependencies": [] }, @@ -3542,8 +3499,8 @@ }, "overrides": [], "dependencies": [ - "wrap-ansi@7.0.0@d41d8cd9", "strip-ansi@6.0.0@d41d8cd9", - "string-width@4.2.2@d41d8cd9" + "wrap-ansi@7.0.0@d41d8cd9", "strip-ansi@6.0.1@d41d8cd9", + "string-width@4.2.3@d41d8cd9" ], "devDependencies": [] }, @@ -3559,7 +3516,7 @@ }, "overrides": [], "dependencies": [ - "string-width@4.2.2@d41d8cd9", "slice-ansi@3.0.0@d41d8cd9" + "string-width@4.2.3@d41d8cd9", "slice-ansi@3.0.0@d41d8cd9" ], "devDependencies": [] }, @@ -3688,20 +3645,20 @@ "overrides": [], "dependencies": [ "readdirp@3.6.0@d41d8cd9", "normalize-path@3.0.0@d41d8cd9", - "is-glob@4.0.1@d41d8cd9", "is-binary-path@2.1.0@d41d8cd9", + "is-glob@4.0.2@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.2@d41d8cd9" ], "devDependencies": [] }, - "chalk@4.1.1@d41d8cd9": { - "id": "chalk@4.1.1@d41d8cd9", + "chalk@4.1.2@d41d8cd9": { + "id": "chalk@4.1.2@d41d8cd9", "name": "chalk", - "version": "4.1.1", + "version": "4.1.2", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz#sha1:c80b3fab28bf6371e6863325eee67e618b77e6ad" + "archive:https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#sha1:aac4e2b7734a740867aeb16bf02aad556a1e7a01" ] }, "overrides": [], @@ -3774,14 +3731,14 @@ ], "devDependencies": [] }, - "buffer-from@1.1.1@d41d8cd9": { - "id": "buffer-from@1.1.1@d41d8cd9", + "buffer-from@1.1.2@d41d8cd9": { + "id": "buffer-from@1.1.2@d41d8cd9", "name": "buffer-from", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#sha1:32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + "archive:https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#sha1:2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" ] }, "overrides": [], @@ -3834,33 +3791,33 @@ ], "devDependencies": [] }, - "boxen@5.0.1@d41d8cd9": { - "id": "boxen@5.0.1@d41d8cd9", + "boxen@5.1.2@d41d8cd9": { + "id": "boxen@5.1.2@d41d8cd9", "name": "boxen", - "version": "5.0.1", + "version": "5.1.2", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz#sha1:657528bdd3f59a772b8279b831f27ec2c744664b" + "archive:https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz#sha1:788cb686fc83c1f486dfa8a40c68fc2b831d2b50" ] }, "overrides": [], "dependencies": [ "wrap-ansi@7.0.0@d41d8cd9", "widest-line@3.1.0@d41d8cd9", - "type-fest@0.20.2@d41d8cd9", "string-width@4.2.2@d41d8cd9", - "cli-boxes@2.2.1@d41d8cd9", "chalk@4.1.1@d41d8cd9", - "camelcase@6.2.0@d41d8cd9", "ansi-align@3.0.0@d41d8cd9" + "type-fest@0.20.2@d41d8cd9", "string-width@4.2.3@d41d8cd9", + "cli-boxes@2.2.1@d41d8cd9", "chalk@4.1.2@d41d8cd9", + "camelcase@6.2.0@d41d8cd9", "ansi-align@3.0.1@d41d8cd9" ], "devDependencies": [] }, - "blueimp-md5@2.18.0@d41d8cd9": { - "id": "blueimp-md5@2.18.0@d41d8cd9", + "blueimp-md5@2.19.0@d41d8cd9": { + "id": "blueimp-md5@2.19.0@d41d8cd9", "name": "blueimp-md5", - "version": "2.18.0", + "version": "2.19.0", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.18.0.tgz#sha1:1152be1335f0c6b3911ed9e36db54f3e6ac52935" + "archive:https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz#sha1:b53feea5498dcb53dc6ec4b823adb84b729c4af0" ] }, "overrides": [], @@ -3939,10 +3896,10 @@ "overrides": [], "dependencies": [ "yargs@16.2.0@d41d8cd9", "write-file-atomic@3.0.3@d41d8cd9", - "update-notifier@5.1.0@d41d8cd9", "trim-off-newlines@1.0.1@d41d8cd9", + "update-notifier@5.1.0@d41d8cd9", "trim-off-newlines@1.0.2@d41d8cd9", "temp-dir@2.0.0@d41d8cd9", "supertap@2.0.0@d41d8cd9", - "strip-ansi@6.0.0@d41d8cd9", "stack-utils@2.0.3@d41d8cd9", - "source-map-support@0.5.19@d41d8cd9", "slash@3.0.0@d41d8cd9", + "strip-ansi@6.0.1@d41d8cd9", "stack-utils@2.0.5@d41d8cd9", + "source-map-support@0.5.20@d41d8cd9", "slash@3.0.0@d41d8cd9", "resolve-cwd@3.0.0@d41d8cd9", "read-pkg@5.2.0@d41d8cd9", "pretty-ms@7.0.1@d41d8cd9", "plur@4.0.0@d41d8cd9", "pkg-conf@3.1.0@d41d8cd9", "picomatch@2.3.0@d41d8cd9", @@ -3962,10 +3919,10 @@ "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.2@d41d8cd9", - "chalk@4.1.1@d41d8cd9", "callsites@3.1.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.1.1@d41d8cd9", - "acorn@8.4.1@d41d8cd9", "@concordance/react@2.0.0@d41d8cd9" + "ansi-styles@5.2.0@d41d8cd9", "acorn-walk@8.2.0@d41d8cd9", + "acorn@8.5.0@d41d8cd9", "@concordance/react@2.0.0@d41d8cd9" ], "devDependencies": [] }, @@ -4125,46 +4082,32 @@ "dependencies": [ "color-convert@1.9.3@d41d8cd9" ], "devDependencies": [] }, - "ansi-regex@5.0.0@d41d8cd9": { - "id": "ansi-regex@5.0.0@d41d8cd9", + "ansi-regex@5.0.1@d41d8cd9": { + "id": "ansi-regex@5.0.1@d41d8cd9", "name": "ansi-regex", - "version": "5.0.0", - "source": { - "type": "install", - "source": [ - "archive:https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz#sha1:388539f55179bf39339c81af30a654d69f87cb75" - ] - }, - "overrides": [], - "dependencies": [], - "devDependencies": [] - }, - "ansi-regex@4.1.0@d41d8cd9": { - "id": "ansi-regex@4.1.0@d41d8cd9", - "name": "ansi-regex", - "version": "4.1.0", + "version": "5.0.1", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz#sha1:8b9f8f08cf1acb843756a839ca8c7e3168c51997" + "archive:https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#sha1:082cb2c89c9fe8659a311a53bd6a4dc5301db304" ] }, "overrides": [], "dependencies": [], "devDependencies": [] }, - "ansi-align@3.0.0@d41d8cd9": { - "id": "ansi-align@3.0.0@d41d8cd9", + "ansi-align@3.0.1@d41d8cd9": { + "id": "ansi-align@3.0.1@d41d8cd9", "name": "ansi-align", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz#sha1:b536b371cf687caaef236c18d3e21fe3797467cb" + "archive:https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz#sha1:0cdf12e111ace773a86e9a1fad1225c43cb19a59" ] }, "overrides": [], - "dependencies": [ "string-width@3.1.0@d41d8cd9" ], + "dependencies": [ "string-width@4.2.3@d41d8cd9" ], "devDependencies": [] }, "aggregate-error@3.1.0@d41d8cd9": { @@ -4183,28 +4126,28 @@ ], "devDependencies": [] }, - "acorn-walk@8.1.1@d41d8cd9": { - "id": "acorn-walk@8.1.1@d41d8cd9", + "acorn-walk@8.2.0@d41d8cd9": { + "id": "acorn-walk@8.2.0@d41d8cd9", "name": "acorn-walk", - "version": "8.1.1", + "version": "8.2.0", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz#sha1:3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc" + "archive:https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz#sha1:741210f2e2426454508853a2f44d0ab83b7f69c1" ] }, "overrides": [], "dependencies": [], "devDependencies": [] }, - "acorn@8.4.1@d41d8cd9": { - "id": "acorn@8.4.1@d41d8cd9", + "acorn@8.5.0@d41d8cd9": { + "id": "acorn@8.5.0@d41d8cd9", "name": "acorn", - "version": "8.4.1", + "version": "8.5.0", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz#sha1:56c36251fc7cabc7096adc18f05afe814321a28c" + "archive:https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz#sha1:4512ccb99b3698c752591e9bb4472e38ad43cee2" ] }, "overrides": [], @@ -4268,8 +4211,8 @@ "ocaml@4.10.2000@d41d8cd9", "@reason-native/pastel@0.3.0@d41d8cd9", "@reason-native/file-context-printer@0.0.3@d41d8cd9", "@reason-native/cli@0.0.1-alpha@d41d8cd9", - "@opam/re@opam:1.9.0@9373f267", "@opam/junit@opam:2.0.2@f4bd0016", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/reason@3.7.0@d41d8cd9" + "@opam/re@opam:1.10.3@0585c65d", "@opam/junit@opam:2.0.2@500cf494", + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/reason@3.7.0@d41d8cd9" ], "devDependencies": [] }, @@ -4285,8 +4228,8 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/re@opam:1.9.0@9373f267", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/reason@3.7.0@d41d8cd9" + "ocaml@4.10.2000@d41d8cd9", "@opam/re@opam:1.10.3@0585c65d", + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/reason@3.7.0@d41d8cd9" ], "devDependencies": [] }, @@ -4303,7 +4246,7 @@ "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@reason-native/pastel@0.3.0@d41d8cd9", - "@opam/re@opam:1.9.0@9373f267", "@opam/dune@opam:2.9.0@489e77a9", + "@opam/re@opam:1.10.3@0585c65d", "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/reason@3.7.0@d41d8cd9" ], "devDependencies": [] @@ -4320,7 +4263,7 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/reason@3.7.0@d41d8cd9" ], "devDependencies": [] @@ -4338,7 +4281,7 @@ "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@reason-native/pastel@0.3.0@d41d8cd9", - "@opam/re@opam:1.9.0@9373f267", "@opam/dune@opam:2.9.0@489e77a9", + "@opam/re@opam:1.10.3@0585c65d", "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/reason@3.7.0@d41d8cd9" ], "devDependencies": [] @@ -4362,13 +4305,13 @@ "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/cppo@opam:1.6.7@57a6d52c", + "@opam/dune@opam:2.9.1@1e504822", "@opam/cppo@opam:1.6.7@57a6d52c", "@opam/biniou@opam:1.2.1@420bda02", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/biniou@opam:1.2.1@420bda02" + "@opam/dune@opam:2.9.1@1e504822", "@opam/biniou@opam:1.2.1@420bda02" ] }, "@opam/uutf@opam:1.0.2@4440868f": { @@ -4392,7 +4335,7 @@ "ocaml@4.10.2000@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea", "@opam/topkg@opam:1.0.3@e4e10f1c", "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@opam/ocamlbuild@opam:0.14.0@0dee4078", "@opam/cmdliner@opam:1.0.4@93208aac", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], @@ -4418,13 +4361,13 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "ocaml@4.10.2000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@0dee4078", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9" ] }, - "@opam/tyxml@opam:4.5.0@4676c9e9": { - "id": "@opam/tyxml@opam:4.5.0@4676c9e9", + "@opam/tyxml@opam:4.5.0@0a609297": { + "id": "@opam/tyxml@opam:4.5.0@0a609297", "name": "@opam/tyxml", "version": "opam:4.5.0", "source": { @@ -4442,13 +4385,13 @@ "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", - "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.9.0@9373f267", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.10.3@0585c65d", + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", - "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.9.0@9373f267", - "@opam/dune@opam:2.9.0@489e77a9" + "@opam/seq@opam:base@d8d7de1d", "@opam/re@opam:1.10.3@0585c65d", + "@opam/dune@opam:2.9.1@1e504822" ] }, "@opam/topkg@opam:1.0.3@e4e10f1c": { @@ -4470,11 +4413,11 @@ "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@opam/ocamlbuild@opam:0.14.0@0dee4078", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@6ac75d03" + "ocaml@4.10.2000@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@0dee4078" ] }, "@opam/stdlib-shims@opam:0.3.0@0d088929": { @@ -4495,11 +4438,11 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" ] }, "@opam/seq@opam:base@d8d7de1d": { @@ -4539,11 +4482,11 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" ] }, "@opam/reason@opam:3.7.0@494dd52d": { @@ -4568,42 +4511,42 @@ "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", "@opam/ocamlfind@opam:1.9.1@b748edf6", "@opam/merlin-extend@opam:0.6@88755c91", - "@opam/menhir@opam:20210419@11c42419", - "@opam/fix@opam:20201120@0b212fb9", "@opam/dune@opam:2.9.0@489e77a9", + "@opam/menhir@opam:20210419@462bec41", + "@opam/fix@opam:20201120@0b212fb9", "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/result@opam:1.5@1c6a6533", "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", "@opam/merlin-extend@opam:0.6@88755c91", - "@opam/menhir@opam:20210419@11c42419", - "@opam/fix@opam:20201120@0b212fb9", "@opam/dune@opam:2.9.0@489e77a9" + "@opam/menhir@opam:20210419@462bec41", + "@opam/fix@opam:20201120@0b212fb9", "@opam/dune@opam:2.9.1@1e504822" ] }, - "@opam/re@opam:1.9.0@9373f267": { - "id": "@opam/re@opam:1.9.0@9373f267", + "@opam/re@opam:1.10.3@0585c65d": { + "id": "@opam/re@opam:1.10.3@0585c65d", "name": "@opam/re", - "version": "opam:1.9.0", + "version": "opam:1.10.3", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/md5/bd/bddaed4f386a22cace7850c9c7dac296#md5:bddaed4f386a22cace7850c9c7dac296", - "archive:https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz#md5:bddaed4f386a22cace7850c9c7dac296" + "archive:https://opam.ocaml.org/cache/sha256/84/846546967f3fe31765935dd40a6460a9424337ecce7b12727fcba49480790ebb#sha256:846546967f3fe31765935dd40a6460a9424337ecce7b12727fcba49480790ebb", + "archive:https://github.com/ocaml/ocaml-re/releases/download/1.10.3/re-1.10.3.tbz#sha256:846546967f3fe31765935dd40a6460a9424337ecce7b12727fcba49480790ebb" ], "opam": { "name": "re", - "version": "1.9.0", - "path": "esy.lock/opam/re.1.9.0" + "version": "1.10.3", + "path": "esy.lock/opam/re.1.10.3" } }, "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", - "@opam/dune@opam:2.9.0@489e77a9" + "@opam/dune@opam:2.9.1@1e504822" ] }, "@opam/ptime@opam:0.8.5@0051d642": { @@ -4627,7 +4570,7 @@ "ocaml@4.10.2000@d41d8cd9", "@opam/topkg@opam:1.0.3@e4e10f1c", "@opam/result@opam:1.5@1c6a6533", "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@opam/ocamlbuild@opam:0.14.0@0dee4078", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ @@ -4653,11 +4596,11 @@ "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/dune@opam:2.9.0@489e77a9" + "@opam/dune@opam:2.9.1@1e504822" ] }, "@opam/ppx_derivers@opam:1.2.1@ecf0aa45": { @@ -4678,11 +4621,11 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" ] }, "@opam/odoc@opam:1.5.3@29f53af8": { @@ -4703,17 +4646,17 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/tyxml@opam:4.5.0@4676c9e9", + "ocaml@4.10.2000@d41d8cd9", "@opam/tyxml@opam:4.5.0@0a609297", "@opam/result@opam:1.5@1c6a6533", "@opam/fpath@opam:0.7.3@674d8125", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/cppo@opam:1.6.7@57a6d52c", + "@opam/dune@opam:2.9.1@1e504822", "@opam/cppo@opam:1.6.7@57a6d52c", "@opam/cmdliner@opam:1.0.4@93208aac", "@opam/astring@opam:0.8.5@1300cee8", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/tyxml@opam:4.5.0@4676c9e9", + "ocaml@4.10.2000@d41d8cd9", "@opam/tyxml@opam:4.5.0@0a609297", "@opam/result@opam:1.5@1c6a6533", "@opam/fpath@opam:0.7.3@674d8125", - "@opam/dune@opam:2.9.0@489e77a9", + "@opam/dune@opam:2.9.1@1e504822", "@opam/cmdliner@opam:1.0.4@93208aac", "@opam/astring@opam:0.8.5@1300cee8" ] @@ -4745,8 +4688,8 @@ ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9" ] }, - "@opam/ocamlbuild@opam:0.14.0@6ac75d03": { - "id": "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@opam/ocamlbuild@opam:0.14.0@0dee4078": { + "id": "@opam/ocamlbuild@opam:0.14.0@0dee4078", "name": "@opam/ocamlbuild", "version": "opam:0.14.0", "source": { @@ -4795,8 +4738,8 @@ "@opam/result@opam:1.5@1c6a6533", "@opam/ppx_yojson_conv_lib@opam:v0.14.0@605a6997", "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/dune-build-info@opam:2.9.0@c10d566f", - "@opam/dune@opam:2.9.0@489e77a9", + "@opam/dune-build-info@opam:2.9.1@c636b56a", + "@opam/dune@opam:2.9.1@1e504822", "@opam/dot-merlin-reader@opam:4.1@84436e1c", "@opam/csexp@opam:1.5.1@8a8fb3a7", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], @@ -4806,8 +4749,8 @@ "@opam/result@opam:1.5@1c6a6533", "@opam/ppx_yojson_conv_lib@opam:v0.14.0@605a6997", "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/dune-build-info@opam:2.9.0@c10d566f", - "@opam/dune@opam:2.9.0@489e77a9", + "@opam/dune-build-info@opam:2.9.1@c636b56a", + "@opam/dune@opam:2.9.1@1e504822", "@opam/dot-merlin-reader@opam:4.1@84436e1c", "@opam/csexp@opam:1.5.1@8a8fb3a7" ] @@ -4830,45 +4773,45 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", "@opam/cppo@opam:1.6.7@57a6d52c", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" ] }, - "@opam/merlin@opam:3.5.0@f8ae5d56": { - "id": "@opam/merlin@opam:3.5.0@f8ae5d56", + "@opam/merlin@opam:3.6.1@b2fb327d": { + "id": "@opam/merlin@opam:3.6.1@b2fb327d", "name": "@opam/merlin", - "version": "opam:3.5.0", + "version": "opam:3.6.1", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/cd/cdf5426a0f2702a862d8a0290f6175daee53e044659899060597134ad2485328#sha256:cdf5426a0f2702a862d8a0290f6175daee53e044659899060597134ad2485328", - "archive:https://github.com/ocaml/merlin/releases/download/v3.5.0/merlin-v3.5.0.tbz#sha256:cdf5426a0f2702a862d8a0290f6175daee53e044659899060597134ad2485328" + "archive:https://opam.ocaml.org/cache/sha256/b6/b611b2b0bdc424629d2f6aa625fca81bb7734cb10c997eedc184c922d95cb9f6#sha256:b611b2b0bdc424629d2f6aa625fca81bb7734cb10c997eedc184c922d95cb9f6", + "archive:https://github.com/ocaml/merlin/releases/download/v3.6.1/merlin-v3.6.1.tbz#sha256:b611b2b0bdc424629d2f6aa625fca81bb7734cb10c997eedc184c922d95cb9f6" ], "opam": { "name": "merlin", - "version": "3.5.0", - "path": "esy.lock/opam/merlin.3.5.0" + "version": "3.6.1", + "path": "esy.lock/opam/merlin.3.6.1" } }, "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/result@opam:1.5@1c6a6533", "@opam/dune@opam:2.9.0@489e77a9", + "@opam/result@opam:1.5@1c6a6533", "@opam/dune@opam:2.9.1@1e504822", "@opam/dot-merlin-reader@opam:4.1@84436e1c", "@opam/csexp@opam:1.5.1@8a8fb3a7", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/result@opam:1.5@1c6a6533", "@opam/dune@opam:2.9.0@489e77a9", + "@opam/result@opam:1.5@1c6a6533", "@opam/dune@opam:2.9.1@1e504822", "@opam/dot-merlin-reader@opam:4.1@84436e1c", "@opam/csexp@opam:1.5.1@8a8fb3a7" ] }, - "@opam/menhirSdk@opam:20210419@9c7661a4": { - "id": "@opam/menhirSdk@opam:20210419@9c7661a4", + "@opam/menhirSdk@opam:20210419@1798a533": { + "id": "@opam/menhirSdk@opam:20210419@1798a533", "name": "@opam/menhirSdk", "version": "opam:20210419", "source": { @@ -4885,15 +4828,15 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" ] }, - "@opam/menhirLib@opam:20210419@0b3db8d0": { - "id": "@opam/menhirLib@opam:20210419@0b3db8d0", + "@opam/menhirLib@opam:20210419@db96ceab": { + "id": "@opam/menhirLib@opam:20210419@db96ceab", "name": "@opam/menhirLib", "version": "opam:20210419", "source": { @@ -4910,15 +4853,15 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" ] }, - "@opam/menhir@opam:20210419@11c42419": { - "id": "@opam/menhir@opam:20210419@11c42419", + "@opam/menhir@opam:20210419@462bec41": { + "id": "@opam/menhir@opam:20210419@462bec41", "name": "@opam/menhir", "version": "opam:20210419", "source": { @@ -4935,18 +4878,18 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/menhirSdk@opam:20210419@9c7661a4", - "@opam/menhirLib@opam:20210419@0b3db8d0", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "ocaml@4.10.2000@d41d8cd9", "@opam/menhirSdk@opam:20210419@1798a533", + "@opam/menhirLib@opam:20210419@db96ceab", + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/menhirSdk@opam:20210419@9c7661a4", - "@opam/menhirLib@opam:20210419@0b3db8d0", - "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.10.2000@d41d8cd9", "@opam/menhirSdk@opam:20210419@1798a533", + "@opam/menhirLib@opam:20210419@db96ceab", + "@opam/dune@opam:2.9.1@1e504822" ] }, - "@opam/junit@opam:2.0.2@f4bd0016": { - "id": "@opam/junit@opam:2.0.2@f4bd0016", + "@opam/junit@opam:2.0.2@500cf494": { + "id": "@opam/junit@opam:2.0.2@500cf494", "name": "@opam/junit", "version": "opam:2.0.2", "source": { @@ -4963,12 +4906,12 @@ }, "overrides": [], "dependencies": [ - "@opam/tyxml@opam:4.5.0@4676c9e9", "@opam/ptime@opam:0.8.5@0051d642", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "@opam/tyxml@opam:4.5.0@0a609297", "@opam/ptime@opam:0.8.5@0051d642", + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "@opam/tyxml@opam:4.5.0@4676c9e9", "@opam/ptime@opam:0.8.5@0051d642", - "@opam/dune@opam:2.9.0@489e77a9" + "@opam/tyxml@opam:4.5.0@0a609297", "@opam/ptime@opam:0.8.5@0051d642", + "@opam/dune@opam:2.9.1@1e504822" ] }, "@opam/fpath@opam:0.7.3@674d8125": { @@ -4991,7 +4934,7 @@ "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/topkg@opam:1.0.3@e4e10f1c", "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@opam/ocamlbuild@opam:0.14.0@0dee4078", "@opam/astring@opam:0.8.5@1300cee8", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], @@ -5017,11 +4960,11 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" ] }, "@opam/easy-format@opam:1.3.2@1ea9f987": { @@ -5042,76 +4985,76 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" ] }, - "@opam/dune-configurator@opam:2.9.0@40e837e7": { - "id": "@opam/dune-configurator@opam:2.9.0@40e837e7", + "@opam/dune-configurator@opam:2.9.1@b7cf7a02": { + "id": "@opam/dune-configurator@opam:2.9.1@b7cf7a02", "name": "@opam/dune-configurator", - "version": "opam:2.9.0", + "version": "opam:2.9.1", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/bb/bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e#sha256:bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e", - "archive:https://github.com/ocaml/dune/releases/download/2.9.0/dune-2.9.0.tbz#sha256:bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e" + "archive:https://opam.ocaml.org/cache/sha256/b3/b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26#sha256:b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26", + "archive:https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz#sha256:b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26" ], "opam": { "name": "dune-configurator", - "version": "2.9.0", - "path": "esy.lock/opam/dune-configurator.2.9.0" + "version": "2.9.1", + "path": "esy.lock/opam/dune-configurator.2.9.1" } }, "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/result@opam:1.5@1c6a6533", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/csexp@opam:1.5.1@8a8fb3a7", + "@opam/dune@opam:2.9.1@1e504822", "@opam/csexp@opam:1.5.1@8a8fb3a7", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/result@opam:1.5@1c6a6533", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/csexp@opam:1.5.1@8a8fb3a7" + "@opam/dune@opam:2.9.1@1e504822", "@opam/csexp@opam:1.5.1@8a8fb3a7" ] }, - "@opam/dune-build-info@opam:2.9.0@c10d566f": { - "id": "@opam/dune-build-info@opam:2.9.0@c10d566f", + "@opam/dune-build-info@opam:2.9.1@c636b56a": { + "id": "@opam/dune-build-info@opam:2.9.1@c636b56a", "name": "@opam/dune-build-info", - "version": "opam:2.9.0", + "version": "opam:2.9.1", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/bb/bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e#sha256:bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e", - "archive:https://github.com/ocaml/dune/releases/download/2.9.0/dune-2.9.0.tbz#sha256:bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e" + "archive:https://opam.ocaml.org/cache/sha256/b3/b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26#sha256:b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26", + "archive:https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz#sha256:b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26" ], "opam": { "name": "dune-build-info", - "version": "2.9.0", - "path": "esy.lock/opam/dune-build-info.2.9.0" + "version": "2.9.1", + "path": "esy.lock/opam/dune-build-info.2.9.1" } }, "overrides": [], "dependencies": [ - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], - "devDependencies": [ "@opam/dune@opam:2.9.0@489e77a9" ] + "devDependencies": [ "@opam/dune@opam:2.9.1@1e504822" ] }, - "@opam/dune@opam:2.9.0@489e77a9": { - "id": "@opam/dune@opam:2.9.0@489e77a9", + "@opam/dune@opam:2.9.1@1e504822": { + "id": "@opam/dune@opam:2.9.1@1e504822", "name": "@opam/dune", - "version": "opam:2.9.0", + "version": "opam:2.9.1", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/bb/bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e#sha256:bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e", - "archive:https://github.com/ocaml/dune/releases/download/2.9.0/dune-2.9.0.tbz#sha256:bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e" + "archive:https://opam.ocaml.org/cache/sha256/b3/b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26#sha256:b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26", + "archive:https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz#sha256:b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26" ], "opam": { "name": "dune", - "version": "2.9.0", - "path": "esy.lock/opam/dune.2.9.0" + "version": "2.9.1", + "path": "esy.lock/opam/dune.2.9.1" } }, "overrides": [], @@ -5146,14 +5089,14 @@ "ocaml@4.10.2000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", "@opam/result@opam:1.5@1c6a6533", "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/csexp@opam:1.5.1@8a8fb3a7", + "@opam/dune@opam:2.9.1@1e504822", "@opam/csexp@opam:1.5.1@8a8fb3a7", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", "@opam/result@opam:1.5@1c6a6533", "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/csexp@opam:1.5.1@8a8fb3a7" + "@opam/dune@opam:2.9.1@1e504822", "@opam/csexp@opam:1.5.1@8a8fb3a7" ] }, "@opam/csexp@opam:1.5.1@8a8fb3a7": { @@ -5174,11 +5117,11 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822" ] }, "@opam/cppo@opam:1.6.7@57a6d52c": { @@ -5199,12 +5142,12 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", "@opam/base-unix@opam:base@87d0b2eb", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.10.2000@d41d8cd9", "@opam/dune@opam:2.9.1@1e504822", "@opam/base-unix@opam:base@87d0b2eb" ] }, @@ -5249,11 +5192,11 @@ "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", - "@opam/dune@opam:2.9.0@489e77a9" + "@opam/dune@opam:2.9.1@1e504822" ] }, "@opam/base-unix@opam:base@87d0b2eb": { @@ -5309,13 +5252,13 @@ "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/re@opam:1.9.0@9373f267", "@opam/dune@opam:2.9.0@489e77a9", + "@opam/re@opam:1.10.3@0585c65d", "@opam/dune@opam:2.9.1@1e504822", "@opam/biniou@opam:1.2.1@420bda02", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/re@opam:1.9.0@9373f267", "@opam/dune@opam:2.9.0@489e77a9", + "@opam/re@opam:1.10.3@0585c65d", "@opam/dune@opam:2.9.1@1e504822", "@opam/biniou@opam:1.2.1@420bda02" ] }, @@ -5338,13 +5281,13 @@ "overrides": [], "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/biniou@opam:1.2.1@420bda02", + "@opam/dune@opam:2.9.1@1e504822", "@opam/biniou@opam:1.2.1@420bda02", "@opam/atdgen-runtime@opam:2.2.1@c520dbfc", "@opam/atd@opam:2.2.1@5cc6d2c6", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/biniou@opam:1.2.1@420bda02", + "@opam/dune@opam:2.9.1@1e504822", "@opam/biniou@opam:1.2.1@420bda02", "@opam/atdgen-runtime@opam:2.2.1@c520dbfc", "@opam/atd@opam:2.2.1@5cc6d2c6" ] @@ -5367,16 +5310,16 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/re@opam:1.9.0@9373f267", - "@opam/menhir@opam:20210419@11c42419", + "ocaml@4.10.2000@d41d8cd9", "@opam/re@opam:1.10.3@0585c65d", + "@opam/menhir@opam:20210419@462bec41", "@opam/easy-format@opam:1.3.2@1ea9f987", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "@opam/dune@opam:2.9.1@1e504822", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.10.2000@d41d8cd9", "@opam/re@opam:1.9.0@9373f267", - "@opam/menhir@opam:20210419@11c42419", + "ocaml@4.10.2000@d41d8cd9", "@opam/re@opam:1.10.3@0585c65d", + "@opam/menhir@opam:20210419@462bec41", "@opam/easy-format@opam:1.3.2@1ea9f987", - "@opam/dune@opam:2.9.0@489e77a9" + "@opam/dune@opam:2.9.1@1e504822" ] }, "@opam/astring@opam:0.8.5@1300cee8": { @@ -5399,7 +5342,7 @@ "dependencies": [ "ocaml@4.10.2000@d41d8cd9", "@opam/topkg@opam:1.0.3@e4e10f1c", "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "@opam/ocamlbuild@opam:0.14.0@0dee4078", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ "ocaml@4.10.2000@d41d8cd9" ] @@ -5416,7 +5359,7 @@ }, "overrides": [], "dependencies": [ - "fastq@1.11.1@d41d8cd9", "@nodelib/fs.scandir@2.1.5@d41d8cd9" + "fastq@1.13.0@d41d8cd9", "@nodelib/fs.scandir@2.1.5@d41d8cd9" ], "devDependencies": [] }, @@ -5480,8 +5423,8 @@ "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", "@opam/ocamlfind@opam:1.9.1@b748edf6", "@opam/merlin-extend@opam:0.6@88755c91", - "@opam/menhir@opam:20210419@11c42419", - "@opam/fix@opam:20201120@0b212fb9", "@opam/dune@opam:2.9.0@489e77a9" + "@opam/menhir@opam:20210419@462bec41", + "@opam/fix@opam:20201120@0b212fb9", "@opam/dune@opam:2.9.1@1e504822" ], "devDependencies": [] }, @@ -5512,18 +5455,18 @@ "overrides": [], "dependencies": [ "js-tokens@4.0.0@d41d8cd9", "chalk@2.4.2@d41d8cd9", - "@babel/helper-validator-identifier@7.14.5@d41d8cd9" + "@babel/helper-validator-identifier@7.15.7@d41d8cd9" ], "devDependencies": [] }, - "@babel/helper-validator-identifier@7.14.5@d41d8cd9": { - "id": "@babel/helper-validator-identifier@7.14.5@d41d8cd9", + "@babel/helper-validator-identifier@7.15.7@d41d8cd9": { + "id": "@babel/helper-validator-identifier@7.15.7@d41d8cd9", "name": "@babel/helper-validator-identifier", - "version": "7.14.5", + "version": "7.15.7", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#sha1:d0f0e277c512e0c938277faa85a3968c9a44c0e8" + "archive:https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#sha1:220df993bfe904a4a6b02ab4f3385a5ebf6e2389" ] }, "overrides": [], diff --git a/esy.lock/opam/dune-build-info.2.9.0/opam b/esy.lock/opam/dune-build-info.2.9.1/opam similarity index 73% rename from esy.lock/opam/dune-build-info.2.9.0/opam rename to esy.lock/opam/dune-build-info.2.9.1/opam index 8c0ade75..59e09582 100644 --- a/esy.lock/opam/dune-build-info.2.9.0/opam +++ b/esy.lock/opam/dune-build-info.2.9.1/opam @@ -32,11 +32,11 @@ build: [ "@doc" {with-doc} ] ] -x-commit-hash: "641a95d2254ca7c51c97f07f2eed85b7a95db954" +x-commit-hash: "e41c66259135d6d1d72b031be6684bf8826a2586" url { - src: "https://github.com/ocaml/dune/releases/download/2.9.0/dune-2.9.0.tbz" + src: "https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz" checksum: [ - "sha256=bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e" - "sha512=fcd8bc3ea7e9a14e6787a3b0384a488e45fa51e164a175ad1b147bebb3fbcccfd8f321b9b6a7665ac3dafeb18a2a6f8626d182af3b1796691f6ed79c166a5f44" + "sha256=b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26" + "sha512=fce1aa520db785c25ded75a959e9dafeb7887d4f5deeb14b044cd5b9e2d235dca24589d794d2f01513765bc4764cf72f8659bd15f3a4fc06efa61363dc5d709b" ] } diff --git a/esy.lock/opam/dune-configurator.2.9.0/opam b/esy.lock/opam/dune-configurator.2.9.1/opam similarity index 74% rename from esy.lock/opam/dune-configurator.2.9.0/opam rename to esy.lock/opam/dune-configurator.2.9.1/opam index d0fc2619..9319b01b 100644 --- a/esy.lock/opam/dune-configurator.2.9.0/opam +++ b/esy.lock/opam/dune-configurator.2.9.1/opam @@ -37,11 +37,11 @@ build: [ "@doc" {with-doc} ] ] -x-commit-hash: "641a95d2254ca7c51c97f07f2eed85b7a95db954" +x-commit-hash: "e41c66259135d6d1d72b031be6684bf8826a2586" url { - src: "https://github.com/ocaml/dune/releases/download/2.9.0/dune-2.9.0.tbz" + src: "https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz" checksum: [ - "sha256=bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e" - "sha512=fcd8bc3ea7e9a14e6787a3b0384a488e45fa51e164a175ad1b147bebb3fbcccfd8f321b9b6a7665ac3dafeb18a2a6f8626d182af3b1796691f6ed79c166a5f44" + "sha256=b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26" + "sha512=fce1aa520db785c25ded75a959e9dafeb7887d4f5deeb14b044cd5b9e2d235dca24589d794d2f01513765bc4764cf72f8659bd15f3a4fc06efa61363dc5d709b" ] } diff --git a/esy.lock/opam/dune.2.9.0/opam b/esy.lock/opam/dune.2.9.1/opam similarity index 84% rename from esy.lock/opam/dune.2.9.0/opam rename to esy.lock/opam/dune.2.9.1/opam index 7c21132d..6a57ecb0 100644 --- a/esy.lock/opam/dune.2.9.0/opam +++ b/esy.lock/opam/dune.2.9.1/opam @@ -48,11 +48,11 @@ depends: [ "base-unix" "base-threads" ] -x-commit-hash: "641a95d2254ca7c51c97f07f2eed85b7a95db954" +x-commit-hash: "e41c66259135d6d1d72b031be6684bf8826a2586" url { - src: "https://github.com/ocaml/dune/releases/download/2.9.0/dune-2.9.0.tbz" + src: "https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz" checksum: [ - "sha256=bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e" - "sha512=fcd8bc3ea7e9a14e6787a3b0384a488e45fa51e164a175ad1b147bebb3fbcccfd8f321b9b6a7665ac3dafeb18a2a6f8626d182af3b1796691f6ed79c166a5f44" + "sha256=b374feb22b34099ccc6dd32128e18d088ff9a81837952b29f05110b308c09f26" + "sha512=fce1aa520db785c25ded75a959e9dafeb7887d4f5deeb14b044cd5b9e2d235dca24589d794d2f01513765bc4764cf72f8659bd15f3a4fc06efa61363dc5d709b" ] } diff --git a/esy.lock/opam/junit.2.0.2/opam b/esy.lock/opam/junit.2.0.2/opam index 4a50d125..d5fc2356 100644 --- a/esy.lock/opam/junit.2.0.2/opam +++ b/esy.lock/opam/junit.2.0.2/opam @@ -3,7 +3,7 @@ maintainer: "Louis Roché " authors: "Louis Roché " homepage: "https://github.com/Khady/ocaml-junit" bug-reports: "https://github.com/Khady/ocaml-junit/issues" -license: "LGPLv3+ with OCaml linking exception" +license: "LGPL-3.0-or-later WITH OCaml-LGPL-linking-exception" dev-repo: "git+https://github.com/Khady/ocaml-junit.git" doc: "https://khady.github.io/ocaml-junit/" tags: ["junit" "jenkins"] diff --git a/esy.lock/opam/menhir.20210419/opam b/esy.lock/opam/menhir.20210419/opam index 52e60240..67348890 100644 --- a/esy.lock/opam/menhir.20210419/opam +++ b/esy.lock/opam/menhir.20210419/opam @@ -7,7 +7,7 @@ authors: [ 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" +license: "LGPL-2.0-only WITH OCaml-LGPL-linking-exception" build: [ ["dune" "build" "-p" name "-j" jobs] ] diff --git a/esy.lock/opam/menhirLib.20210419/opam b/esy.lock/opam/menhirLib.20210419/opam index 2b1f00e6..b8bd713f 100644 --- a/esy.lock/opam/menhirLib.20210419/opam +++ b/esy.lock/opam/menhirLib.20210419/opam @@ -7,7 +7,7 @@ authors: [ 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" +license: "LGPL-2.0-only WITH OCaml-LGPL-linking-exception" build: [ ["dune" "build" "-p" name "-j" jobs] ] diff --git a/esy.lock/opam/menhirSdk.20210419/opam b/esy.lock/opam/menhirSdk.20210419/opam index b70097cd..dce61116 100644 --- a/esy.lock/opam/menhirSdk.20210419/opam +++ b/esy.lock/opam/menhirSdk.20210419/opam @@ -7,7 +7,7 @@ authors: [ 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" +license: "LGPL-2.0-only WITH OCaml-LGPL-linking-exception" build: [ ["dune" "build" "-p" name "-j" jobs] ] diff --git a/esy.lock/opam/merlin.3.5.0/opam b/esy.lock/opam/merlin.3.6.1/opam similarity index 77% rename from esy.lock/opam/merlin.3.5.0/opam rename to esy.lock/opam/merlin.3.6.1/opam index daa9e780..1dfef63c 100644 --- a/esy.lock/opam/merlin.3.5.0/opam +++ b/esy.lock/opam/merlin.3.6.1/opam @@ -3,8 +3,8 @@ maintainer: "defree@gmail.com" authors: "The Merlin team" homepage: "https://github.com/ocaml/merlin" bug-reports: "https://github.com/ocaml/merlin/issues" -dev-repo: "git+https://github.com/ocaml/merlin.git" -license: "MIT" +dev-repo: "git+https://github.com/ocaml/merlin.git" +license: "MIT" build: [ ["dune" "subst"] {dev} ["dune" "build" "-p" name "-j" jobs] @@ -66,18 +66,13 @@ should take care of basic setup. See https://github.com/OCamlPro/opam-user-setup " {success & !user-setup:installed} -"Since version 3.5.0, Merlin integration with completion packages company -and auto-complete has moved to separate modules. Make sure to add -`(require 'merlin-company)` or `(require 'merlin-ac)` to your emacs -configuration if you were using one of these." - {success} ] -x-commit-hash: "353bcb82443b37cc1924039578d2b22cdb6951a9" +x-commit-hash: "9f6504e9585f8e67101d869494f9efb6dc348c9d" url { src: - "https://github.com/ocaml/merlin/releases/download/v3.5.0/merlin-v3.5.0.tbz" + "https://github.com/ocaml/merlin/releases/download/v3.6.1/merlin-v3.6.1.tbz" checksum: [ - "sha256=cdf5426a0f2702a862d8a0290f6175daee53e044659899060597134ad2485328" - "sha512=77b89009ac57a7c4e524d1a091211dd75451fd7d342bccc37012ce0a7a488bf269631fede6cb75d345f521be7ad488416ec0282090d377225dba7e8b385bc1e2" + "sha256=b611b2b0bdc424629d2f6aa625fca81bb7734cb10c997eedc184c922d95cb9f6" + "sha512=47764d6b9483eee7e51da67d04c83b19a3b0dd406911eeef20a59dab88ab7d11ba45ae43131c61de69e3d88c65a204e76110000020871d64a2abe9cdcd361a61" ] } diff --git a/esy.lock/opam/ocamlbuild.0.14.0/opam b/esy.lock/opam/ocamlbuild.0.14.0/opam index 8deabeed..debc52cb 100644 --- a/esy.lock/opam/ocamlbuild.0.14.0/opam +++ b/esy.lock/opam/ocamlbuild.0.14.0/opam @@ -3,7 +3,7 @@ maintainer: "Gabriel Scherer " authors: ["Nicolas Pouillard" "Berke Durak"] homepage: "https://github.com/ocaml/ocamlbuild/" bug-reports: "https://github.com/ocaml/ocamlbuild/issues" -license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" +license: "LGPL-2.1-only WITH OCaml-LGPL-linking-exception" doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc" dev-repo: "git+https://github.com/ocaml/ocamlbuild.git" build: [ diff --git a/esy.lock/opam/re.1.9.0/opam b/esy.lock/opam/re.1.10.3/opam similarity index 65% rename from esy.lock/opam/re.1.9.0/opam rename to esy.lock/opam/re.1.10.3/opam index 0b197ccc..c65d450f 100644 --- a/esy.lock/opam/re.1.9.0/opam +++ b/esy.lock/opam/re.1.10.3/opam @@ -8,20 +8,20 @@ authors: [ "Rudi Grinberg" "Gabriel Radanne" ] -license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" +license: "LGPL-2.0 with OCaml 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" build: [ - ["dune" "subst"] {dev} + ["dune" "subst"] {pinned} ["dune" "build" "-p" name "-j" jobs] ["dune" "runtest" "-p" name "-j" jobs] {with-test} ] depends: [ "ocaml" {>= "4.02"} - "dune" + "dune" {>= "2.0"} "ounit" {with-test} "seq" ] @@ -37,6 +37,10 @@ Pure OCaml regular expressions with: """ url { src: - "https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz" - checksum: "md5=bddaed4f386a22cace7850c9c7dac296" + "https://github.com/ocaml/ocaml-re/releases/download/1.10.3/re-1.10.3.tbz" + checksum: [ + "sha256=846546967f3fe31765935dd40a6460a9424337ecce7b12727fcba49480790ebb" + "sha512=d02103b7b8b8d8bc797341dcc933554745427f3c1b51b54b4ac9ff81badfd68c94726c57548b08e00ca99f3e09741b54b6500e97c19fc0e8fcefd6dfbe71da7f" + ] } +x-commit-hash: "c5d5df80e128c3d7646b7d8b1322012c5fcc35f3" diff --git a/esy.lock/opam/tyxml.4.5.0/opam b/esy.lock/opam/tyxml.4.5.0/opam index 87db8743..22c77607 100644 --- a/esy.lock/opam/tyxml.4.5.0/opam +++ b/esy.lock/opam/tyxml.4.5.0/opam @@ -4,7 +4,7 @@ description: "TyXML provides a set of convenient combinators that uses the OCaml type system to ensure the validity of the generated documents. TyXML can be used with any representation of HTML and SVG: the textual one, provided directly by this package, or DOM trees (`js_of_ocaml-tyxml`) virtual DOM (`virtual-dom`) and reactive or replicated trees (`eliom`). You can also create your own representation and use it to instantiate a new set of combinators." maintainer: ["dev@ocsigen.org"] authors: ["The ocsigen team"] -license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" +license: "LGPL-2.1-only WITH OCaml-LGPL-linking-exception" homepage: "https://github.com/ocsigen/tyxml" doc: "https://ocsigen.org/tyxml/latest/manual/intro" bug-reports: "https://github.com/ocsigen/tyxml/issues" diff --git a/io/bmp/Bmp.re b/io/bmp/Bmp.re index 0aa8a061..ff5371da 100644 --- a/io/bmp/Bmp.re +++ b/io/bmp/Bmp.re @@ -1,35 +1,26 @@ open Bigarray; +type data = Array1.t(int32, int32_elt, c_layout); + module IO: Odiff.ImageIO.ImageIO = { - type t = Array1.t(int32, int32_elt, c_layout); - type row = int; + type t = data; let loadImage = (filename): Odiff.ImageIO.img(t) => { - let (width, height, image) = ReadBmp.load(filename); + let (width, height, data) = ReadBmp.load(filename); - {width, height, image}; + {width, height, image: data}; }; - let readRow = (img: Odiff.ImageIO.img(t), y): row => y; - - let readDirectPixel = (~x, ~y, img: Odiff.ImageIO.img(t)) => { - (img.image).{y * img.width + x}; + [@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); }; - let readImgColor = (x, row: row, img: Odiff.ImageIO.img(t)) => { - readDirectPixel(~x, ~y=row, img); - }; - - let setImgColor = (x, y, (r, g, b), img: Odiff.ImageIO.img(t)) => { - 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; - Array1.set( - img.image, - y * img.width + x, - Int32.of_int(a lor b lor g lor r), - ); + [@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) => { @@ -42,7 +33,6 @@ module IO: Odiff.ImageIO.ImageIO = { 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 new file mode 100644 index 00000000..256a8d3f --- /dev/null +++ b/io/bmp/Bmp.rei @@ -0,0 +1,3 @@ +type data = Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout); + +module IO: Odiff.ImageIO.ImageIO; diff --git a/io/config/discover.re b/io/config/discover.re index a8e94ccf..c2814f92 100644 --- a/io/config/discover.re +++ b/io/config/discover.re @@ -1,9 +1,9 @@ module C = Configurator.V1; C.main(~name="odiff-c-lib-package-resolver", _c => { - let png_include_path = Sys.getenv("PNG_INCLUDE_PATH") |> String.trim; - let png_lib_path = Sys.getenv("PNG_LIB_PATH") |> String.trim; - let libpng16 = png_lib_path ++ "/libpng16.a"; + 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; @@ -16,13 +16,13 @@ C.main(~name="odiff-c-lib-package-resolver", _c => { 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" ++ png_include_path]); - C.Flags.write_sexp("png_write_c_library_flags.sexp", [libpng16, zlib]); - C.Flags.write_sexp("png_write_flags.sexp", ["-cclib", libpng16]); + 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" ++ png_include_path]); - C.Flags.write_sexp("png_c_library_flags.sexp", [libpng16, zlib]); - C.Flags.write_sexp("png_flags.sexp", ["-cclib", libpng16]); + 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]); diff --git a/io/jpg/Jpg.re b/io/jpg/Jpg.re index f3b554bc..126f53a8 100644 --- a/io/jpg/Jpg.re +++ b/io/jpg/Jpg.re @@ -1,50 +1,56 @@ open Bigarray; -module IO: Odiff.ImageIO.ImageIO = { - type t = Array1.t(int32, int32_elt, c_layout); - type row = int; - let buffer = ref(None); +type data = Array1.t(int32, int32_elt, c_layout); - let loadImage = (filename): Odiff.ImageIO.img(t) => { - let (width, height, image, b) = ReadJpg.read_jpeg_image(filename); - buffer := Some(b); - - {width, height, image}; +module IO = { + type buffer; + type t = { + data, + buffer, }; - let readRow = (img: Odiff.ImageIO.img(t), y): row => y; - - let readDirectPixel = (~x, ~y, img: Odiff.ImageIO.img(t)) => { - (img.image).{y * img.width + x}; + let loadImage = (filename): Odiff.ImageIO.img(t) => { + let (width, height, data, buffer) = ReadJpg.read_jpeg_image(filename); + + { + width, + height, + image: { + data, + buffer, + }, + }; }; - let readImgColor = (x, row: row, img: Odiff.ImageIO.img(t)) => { - readDirectPixel(~x, ~y=row, img); + let readDirectPixel = (~x, ~y, img: Odiff.ImageIO.img(t)) => { + Array1.unsafe_get(img.image.data, y * img.width + x); }; - let setImgColor = (x, y, (r, g, b), img: Odiff.ImageIO.img(t)) => { - 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; - Array1.set( - img.image, - y * img.width + x, - Int32.of_int(a lor b lor g lor r), - ); + 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, img.width, img.height); + WritePng.write_png_bigarray( + filename, + img.image.data, + img.width, + img.height, + ); }; let freeImage = (img: Odiff.ImageIO.img(t)) => { - buffer^ |> Option.iter(ReadJpg.cleanup_jpg); + ReadJpg.cleanup_jpg(img.image.buffer); }; let makeSameAsLayout = (img: Odiff.ImageIO.img(t)) => { - let image = Array1.create(int32, c_layout, Array1.dim(img.image)); - - {...img, image}; + 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 new file mode 100644 index 00000000..256a8d3f --- /dev/null +++ b/io/jpg/Jpg.rei @@ -0,0 +1,3 @@ +type data = Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout); + +module IO: Odiff.ImageIO.ImageIO; diff --git a/io/png/Png.re b/io/png/Png.re index 3db8052d..52395b97 100644 --- a/io/png/Png.re +++ b/io/png/Png.re @@ -1,41 +1,37 @@ -module BigarrayIO = PureC_IO_Bigarray.IO; +open Bigarray; +open Odiff.ImageIO; -module IO: Odiff.ImageIO.ImageIO = { - type t = int; - type row = Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout); +type data = Array1.t(int32, int32_elt, c_layout); - let readRow = (img: Odiff.ImageIO.img(t), y): row => { - ReadPng.read_row(img.image, y, img.width); - }; +module IO: Odiff.ImageIO.ImageIO = { + type t = data; - let readImgColor = (x, row: row, _img: Odiff.ImageIO.img(t)) => { - row.{x}; + 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, pixel, img: Odiff.ImageIO.img(t)) => { - ReadPng.set_pixel_data(img.image, x, y, pixel); + 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, _rowbytes, rowPointers) = - ReadPng.read_png_image(filename); + let (width, height, data, _buffer) = ReadPng.read_png_image(filename); - {width, height, image: rowPointers}; + {width, height, image: data}; }; let saveImage = (img: Odiff.ImageIO.img(t), filename) => { - WritePng.write_png_file(img.image, img.width, img.height, filename); + WritePng.write_png_bigarray(filename, img.image, img.width, img.height); }; let freeImage = (img: Odiff.ImageIO.img(t)) => { - ReadPng.free_row_pointers(img.image, img.height); + (); }; let makeSameAsLayout = (img: Odiff.ImageIO.img(t)) => { - {...img, image: ReadPng.create_empty_img(img.height, img.width)}; - }; - - let readDirectPixel = (~x, ~y, _img) => { - failwith("Direct pixel access is not allowed for imperative C IO"); + let image = Array1.create(int32, c_layout, Array1.dim(img.image)); + {...img, image}; }; }; diff --git a/io/png/PureC_IO_Bigarray.re b/io/png/PureC_IO_Bigarray.re deleted file mode 100644 index faee17c7..00000000 --- a/io/png/PureC_IO_Bigarray.re +++ /dev/null @@ -1,63 +0,0 @@ -open Odiff.ImageIO; - -module IO: Odiff.ImageIO.ImageIO = { - type rowPointers = int; - type t = { - rowPointers, - bigarray: Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout), - }; - - type row = int; - let readDirectPixel = (~x: int, ~y: int, img) => { - (img.image.bigarray).{y * img.width + x}; - }; - - let readRow = (img: Odiff.ImageIO.img(t), y): row => y; - // row is always an int, so we can read pixel directly - let readImgColor = (x, row: row, img: Odiff.ImageIO.img(t)) => - readDirectPixel(~x, ~y=row, img); - - let setImgColor = (x, y, pixel, img: Odiff.ImageIO.img(t)) => { - ReadPng.set_pixel_data(img.image.rowPointers, x, y, pixel); - }; - - let loadImage = (filename): Odiff.ImageIO.img(t) => { - let (width, height, rowbytes, rowPointers) = - ReadPng.read_png_image(filename); - - let bigarray = - ReadPng.row_pointers_to_bigarray(rowPointers, rowbytes, height, width); - - { - width, - height, - image: { - bigarray, - rowPointers, - }, - }; - }; - - let saveImage = (img: Odiff.ImageIO.img(t), filename) => { - WritePng.write_png_file( - img.image.rowPointers, - img.width, - img.height, - filename, - ); - }; - - let freeImage = (img: Odiff.ImageIO.img(t)) => { - ReadPng.free_row_pointers(img.image.rowPointers, img.height); - }; - - let makeSameAsLayout = (img: Odiff.ImageIO.img(t)) => { - { - ...img, - image: { - rowPointers: ReadPng.create_empty_img(img.height, img.width), - bigarray: img.image.bigarray, - }, - }; - }; -}; diff --git a/io/png/ReadPng.c b/io/png/ReadPng.c index c41bc94b..4715007e 100644 --- a/io/png/ReadPng.c +++ b/io/png/ReadPng.c @@ -1,191 +1,87 @@ #define CAML_NAME_SPACE -#include -#include -#include + +#include + #include #include #include #include #include -char *concat(const char *s1, const char *s2) -{ - const size_t len1 = strlen(s1); - const size_t len2 = strlen(s2); - char *result = malloc(len1 + len2 + 1); // +1 for the null-terminator - - memcpy(result, s1, len1); - memcpy(result + len1, s2, len2 + 1); // +1 to copy the null-terminator - return result; -} - CAMLprim value -read_png_file_to_tuple(value file) +read_png_file(value file) { CAMLparam1(file); CAMLlocal2(res, ba); - int width, height; - png_byte color_type; - png_byte bit_depth; - png_bytep *row_pointers = NULL; - + int result = 0; + FILE *png; + spng_ctx *ctx = NULL; + unsigned char *out = NULL; const char *filename = String_val(file); - FILE *fp = fopen(filename, "rb"); - - png_structp png = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png) - caml_failwith(concat("Can not read the file -", filename)); - - png_infop info = png_create_info_struct(png); - if (!info) - caml_failwith(concat("Incorrect file type -", filename)); - - if (setjmp(png_jmpbuf(png))) - caml_failwith(concat("Can not read the file -", filename)); - - png_init_io(png, fp); - - png_read_info(png, info); - - width = png_get_image_width(png, info); - height = png_get_image_height(png, info); - color_type = png_get_color_type(png, info); - bit_depth = png_get_bit_depth(png, info); - - // Read any color_type into 8bit depth, RGBA format. - // See http://www.libpng.org/pub/png/libpng-manual.txt - if (bit_depth == 16) - png_set_strip_16(png); - - if (color_type == PNG_COLOR_TYPE_PALETTE) - png_set_palette_to_rgb(png); - - // PNG_COLOR_TYPE_GRAY_ALPHA is always 8 or 16bit depth. - if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) - png_set_expand_gray_1_2_4_to_8(png); - - if (png_get_valid(png, info, PNG_INFO_tRNS)) - png_set_tRNS_to_alpha(png); - - // These color_type don't have an alpha channel then fill it with 0xff. - if (color_type == PNG_COLOR_TYPE_RGB || - color_type == PNG_COLOR_TYPE_GRAY || - color_type == PNG_COLOR_TYPE_PALETTE) - png_set_filler(png, 0xFF, PNG_FILLER_AFTER); - - if (color_type == PNG_COLOR_TYPE_GRAY || - color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - png_set_gray_to_rgb(png); - - png_set_interlace_handling(png); - - png_read_update_info(png, info); - - row_pointers = (png_bytep *)malloc(sizeof(png_bytep) * height); - int rowbytes = png_get_rowbytes(png, info); - - for (int y = 0; y < height; y++) - { - row_pointers[y] = (png_byte *)malloc(rowbytes); + png = fopen(filename, "rb"); + if(png == NULL) { + caml_failwith("error opening input file"); } - png_read_image(png, row_pointers); - - fclose(fp); - - png_destroy_read_struct(&png, &info, NULL); + ctx = spng_ctx_new(0); - res = caml_alloc(4, 0); - - Store_field(res, 0, Val_int(width)); - Store_field(res, 1, Val_int(height)); - Store_field(res, 2, Val_int(rowbytes)); - Store_field(res, 3, Val_bp(row_pointers)); + if(ctx == NULL) { + caml_failwith("spng_ctx_new() failed"); + spng_ctx_free(ctx); + free(out); + } - CAMLreturn(res); -} + /* Ignore and don't calculate chunk CRC's */ + spng_set_crc_action(ctx, SPNG_CRC_USE, SPNG_CRC_USE); -CAMLprim value -row_pointers_to_bigarray(png_bytep *row_pointers, value rowbytes_val, value height_val, value width_val) -{ - CAMLparam3(rowbytes_val, height_val, width_val); + /* Set memory usage limits for storing standard and unknown chunks, + this is important when reading untrusted files! */ + size_t limit = 1024 * 1024 * 64; + spng_set_chunk_limits(ctx, limit, limit); - int width = Int_val(width_val); - int height = Int_val(height_val); - int rowbytes = Int_val(rowbytes_val); + /* Set source PNG */ + spng_set_png_file(ctx, png); - unsigned char *total_pixels = malloc(height * rowbytes); + struct spng_ihdr ihdr; + result = spng_get_ihdr(ctx, &ihdr); - for (int y = 0; y < height; y++) - { - memcpy(total_pixels + y * rowbytes, row_pointers[y], rowbytes); + if(result) { + caml_failwith("spng_get_ihdr() error!"); + spng_ctx_free(ctx); + free(out); } - CAMLreturn(caml_ba_alloc_dims(CAML_BA_INT32 | CAML_BA_C_LAYOUT, 1, total_pixels, width * height)); -} + size_t out_size; + result = spng_decoded_image_size(ctx, SPNG_FMT_RGBA8, &out_size); + if(result) { + spng_ctx_free(ctx); + }; -CAMLprim value -create_empty_img(value height_val, value width_val) -{ - CAMLparam2(height_val, width_val); - int width = Int_val(width_val); - int height = Int_val(height_val); - png_bytep *row_pointers = (png_bytep *)malloc(sizeof(png_bytep) * height); + out = malloc(out_size); + if(out == NULL) { + spng_ctx_free(ctx); + free(out); + }; - for (int y = 0; y < height; y++) - { - row_pointers[y] = (png_byte *)malloc(width * 4); // we always use RGBA + result = spng_decode_image(ctx, out, out_size, SPNG_FMT_RGBA8, 0); + if(result) { + spng_ctx_free(ctx); + free(out); + caml_failwith(spng_strerror(result)); } - CAMLreturn(Val_bp(row_pointers)); -} - -CAMLprim value -read_row(png_bytep *row_pointers, value y_val, value img_width_val) -{ - CAMLparam2(y_val, img_width_val); - int y = Int_val(y_val); - int img_width = Int_val(img_width_val); - - png_bytep row = row_pointers[y]; - - CAMLreturn(caml_ba_alloc_dims(CAML_BA_INT32 | CAML_BA_C_LAYOUT, 1, row, img_width)); -} - -CAMLprim value -set_pixel_data(png_bytep *row_pointers, value x_val, value y_val, value pixel_val) -{ - CAMLparam3(x_val, y_val, pixel_val); - - int x = Int_val(x_val); - int y = Int_val(y_val); - - png_bytep row = row_pointers[y]; - png_bytep px = &(row[x * 4]); - - px[0] = Int_val(Field(pixel_val, 0)); - px[1] = Int_val(Field(pixel_val, 1)); - px[2] = Int_val(Field(pixel_val, 2)); - px[3] = 255; - - CAMLreturn(Val_unit); -} - -CAMLprim value -free_row_pointers(png_bytep *row_pointers, value height_value) -{ - CAMLparam1(height_value); - int height = Int_val(height_value); + res = caml_alloc(4, 0); + ba = caml_ba_alloc_dims(CAML_BA_INT32 | CAML_BA_C_LAYOUT, 1, out, out_size); - for (int y = 0; y < height; y++) - { - free(row_pointers[y]); - } + Store_field(res, 0, Val_int(ihdr.width)); + Store_field(res, 1, Val_int(ihdr.height)); + Store_field(res, 2, ba); + Store_field(res, 3, Val_bp(out)); - free(row_pointers); + spng_ctx_free(ctx); - CAMLreturn(Val_unit); + CAMLreturn(res); } diff --git a/io/png/ReadPng.re b/io/png/ReadPng.re index 99dfc7ab..43a979a7 100644 --- a/io/png/ReadPng.re +++ b/io/png/ReadPng.re @@ -1,15 +1,9 @@ -external read_png_image: string => (int, int, int, 'b) = - "read_png_file_to_tuple"; - -external row_pointers_to_bigarray: ('b, int, int, int) => 'c = - "row_pointers_to_bigarray"; - -external read_row: ('a, int, int) => 'b = "read_row"; - -[@noalloc] -external set_pixel_data: ('a, int, int, (int, int, int)) => unit = - "set_pixel_data"; - -[@noalloc] external free_row_pointers: ('a, int) => unit = "free_row_pointers"; - -[@noalloc] external create_empty_img: (int, int) => 'a = "create_empty_img"; +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.c b/io/png_write/WritePng.c index b9db9607..c7f0ab95 100644 --- a/io/png_write/WritePng.c +++ b/io/png_write/WritePng.c @@ -1,150 +1,92 @@ #define CAML_NAME_SPACE #include -#include -#include -#include -#include + #include #include #include -CAMLprim value write_png_file(png_bytep *row_pointers, value width_value, value height_value, value filename_value) -{ - CAMLparam3(height_value, width_value, filename_value); - int height = Int_val(height_value); - int width = Int_val(width_value); - - FILE *fp = fopen(String_val(filename_value), "wb"); - if (!fp) - caml_failwith("Can not save the output :("); - - png_structp png = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png) - caml_failwith("Can not save the output :("); - - png_infop info = png_create_info_struct(png); - if (!info) - caml_failwith("Can not save the output :("); - - if (setjmp(png_jmpbuf(png))) - caml_failwith("Can not save the output :("); - - png_init_io(png, fp); - - // Output is 8bit depth, RGBA format. - png_set_IHDR( - png, - info, - width, height, - 8, - PNG_COLOR_TYPE_RGBA, - PNG_INTERLACE_NONE, - PNG_COMPRESSION_TYPE_DEFAULT, - PNG_FILTER_TYPE_DEFAULT); +#include - png_write_info(png, info); - - if (!row_pointers) - caml_failwith("Can not save the output :("); - - png_set_compression_level(png, 2); - png_set_filter(png, 0, PNG_FILTER_NONE); - png_write_image(png, row_pointers); - png_write_end(png, NULL); - - fclose(fp); - - png_destroy_write_struct(&png, &info); +value write_png_bigarray(value filename_val, value bigarray, value width_val, value height_val) +{ + CAMLparam4(filename_val, bigarray, width_val, height_val); - CAMLreturn(Val_unit); -} + int width = Int_val(width_val); + int height = Int_val(height_val); + const char *data = Caml_ba_data_val(bigarray); + const char *filename = String_val(filename_val); -void write_png(const char *name, const char *data, int w, int h) -{ FILE *fp; - png_structp png_ptr; - png_infop info_ptr; - if (( fp = fopen(name, "wb")) == NULL ){ + if (( fp = fopen(filename, "wb")) == NULL ){ caml_failwith("Can not save the output :("); } - if ((png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL)) == NULL){ + int result = 0; + + uint8_t bit_depth = 8; + uint8_t color_type = SPNG_COLOR_TYPE_TRUECOLOR_ALPHA; + uint8_t compression_method = 0; + uint8_t filter_method = SPNG_FILTER_NONE; + uint8_t interlace_method = SPNG_INTERLACE_NONE; + + size_t out_size = width * height * 4; + size_t out_width = out_size / height; + + spng_ctx *ctx = spng_ctx_new(SPNG_CTX_ENCODER); + struct spng_ihdr ihdr = { + width, + height, + bit_depth, + color_type, + compression_method, + filter_method, + interlace_method, + }; + + result = spng_set_ihdr(ctx, &ihdr); + if(result) { + spng_ctx_free(ctx); fclose(fp); - caml_failwith("Can not save the output :("); + caml_failwith(spng_strerror(result)); } - if( (info_ptr = png_create_info_struct(png_ptr)) == NULL ){ + result = spng_set_option(ctx, SPNG_FILTER_CHOICE, SPNG_DISABLE_FILTERING); + if(result) { + spng_ctx_free(ctx); fclose(fp); - png_destroy_write_struct(&png_ptr, (png_infopp)NULL); - caml_failwith("Can not save the output :("); + caml_failwith(spng_strerror(result)); } - /* error handling */ - if (setjmp(png_jmpbuf(png_ptr))) { - /* Free all of the memory associated with the png_ptr and info_ptr */ - png_destroy_write_struct(&png_ptr, &info_ptr); + result = spng_set_png_file(ctx, fp); + if(result) { fclose(fp); - /* If we get here, we had a problem writing the file */ - caml_failwith("Can not save the output :("); + spng_ctx_free(ctx); + caml_failwith(spng_strerror(result)); } - png_init_io(png_ptr, fp); - - png_set_IHDR( - png_ptr, info_ptr, w, h, - 8, - PNG_COLOR_TYPE_RGB_ALPHA, - PNG_INTERLACE_ADAM7, - PNG_COMPRESSION_TYPE_DEFAULT, - PNG_FILTER_TYPE_DEFAULT - ); - - png_write_info(png_ptr, info_ptr); - - png_bytep *row_pointers; - - row_pointers = (png_bytep *)malloc(sizeof(png_bytep) * h); - int rowbytes = png_get_rowbytes(png_ptr, info_ptr); + result = spng_encode_image(ctx, 0, 0, SPNG_FMT_PNG, SPNG_ENCODE_PROGRESSIVE); - for (int y = 0; y < h; y++) - { - row_pointers[y] = (png_bytep)(data + rowbytes * y); + if(result) { + fclose(fp); + spng_ctx_free(ctx); + caml_failwith(spng_strerror(result)); } - png_write_image(png_ptr, row_pointers); - free((void*)row_pointers); + for(int i = 0; i < ihdr.height; i++) { + const char *row = data + out_width * i; + result = spng_encode_scanline(ctx, row, out_width); + if(result) break; + } - png_write_end(png_ptr, info_ptr); - png_destroy_write_struct(&png_ptr, &info_ptr); + if(result != SPNG_EOI) { + spng_ctx_free(ctx); + fclose(fp); + caml_failwith(spng_strerror(result)); + } + spng_ctx_free(ctx); fclose(fp); -} - -value write_png_bigarray(value name, value bigarray, value width, value height) -{ - CAMLparam4(name, bigarray, width, height); - - int w = Int_val(width); - int h = Int_val(height); - const char *buf = Caml_ba_data_val(bigarray); - const char *filename = String_val(name); - - write_png(filename, buf, w, h); - - CAMLreturn(Val_unit); -} - -value write_png_buffer(value name, value buffer, value width, value height) -{ - CAMLparam4(name, buffer, width, height); - - int w = Int_val(width); - int h = Int_val(height); - const char *buf = String_val(buffer); - const char *filename = String_val(name); - - write_png(filename, buf, w, h); CAMLreturn(Val_unit); } diff --git a/io/png_write/WritePng.re b/io/png_write/WritePng.re index 955ff246..277c112e 100644 --- a/io/png_write/WritePng.re +++ b/io/png_write/WritePng.re @@ -1,17 +1,6 @@ -[@noalloc] -external write_png_file: ('a, int, int, string) => unit = "write_png_file"; - -[@noalloc] -external write_png_buffer: (string, bytes, int, int) => unit = - "write_png_buffer"; +open Bigarray; [@noalloc] external write_png_bigarray: - ( - string, - Bigarray.Array1.t(int32, Bigarray.int32_elt, Bigarray.c_layout), - int, - int - ) => - unit = + (string, Array1.t(int32, int32_elt, c_layout), int, int) => unit = "write_png_bigarray"; diff --git a/io/tiff/Tiff.re b/io/tiff/Tiff.re index b84321eb..d4f29dbe 100644 --- a/io/tiff/Tiff.re +++ b/io/tiff/Tiff.re @@ -1,52 +1,56 @@ open Bigarray; -module IO: Odiff.ImageIO.ImageIO = { - type t = Array1.t(int32, int32_elt, c_layout); - type row = int; - - let buffer = ref(None); - - let loadImage = (filename): Odiff.ImageIO.img(t) => { - let (width, height, image, b) = ReadTiff.load(filename); - - buffer := Some(b); +type data = Array1.t(int32, int32_elt, c_layout); - {width, height, image}; +module IO: Odiff.ImageIO.ImageIO = { + type buffer; + type t = { + data, + buffer, }; - let readRow = (img: Odiff.ImageIO.img(t), y): row => y; - - let readDirectPixel = (~x, ~y, img: Odiff.ImageIO.img(t)) => { - (img.image).{y * img.width + x}; + let loadImage = (filename): Odiff.ImageIO.img(t) => { + let (width, height, data, buffer) = ReadTiff.load(filename); + + { + width, + height, + image: { + data, + buffer, + }, + }; }; - let readImgColor = (x, row: row, img: Odiff.ImageIO.img(t)) => { - readDirectPixel(~x, ~y=row, img); + 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, (r, g, b), img: Odiff.ImageIO.img(t)) => { - 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; - Array1.set( - img.image, - y * img.width + x, - Int32.of_int(a lor b lor g lor r), - ); + 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, img.width, img.height); + WritePng.write_png_bigarray( + filename, + img.image.data, + img.width, + img.height, + ); }; let freeImage = (img: Odiff.ImageIO.img(t)) => { - buffer^ |> Option.iter(ReadTiff.cleanup_tiff); + ReadTiff.cleanup_tiff(img.image.buffer); }; let makeSameAsLayout = (img: Odiff.ImageIO.img(t)) => { - let image = Array1.create(int32, c_layout, Array1.dim(img.image)); - - {...img, image}; + 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 new file mode 100644 index 00000000..256a8d3f --- /dev/null +++ b/io/tiff/Tiff.rei @@ -0,0 +1,3 @@ +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 2e4625b7..a54c40ec 100644 --- a/package.json +++ b/package.json @@ -36,9 +36,8 @@ "@reason-native/console": "*", "@reason-native/pastel": "*", "@reason-native/rely": "^3.2.1", - "ava": "^3.15.0", "esy-libtiff": "*", - "esy-libpng": "*", + "esy-libspng": "*", "esy-libjpeg": "*", "esy-zlib": "*", "ocaml": "~4.10.0" @@ -53,10 +52,10 @@ "refmterr": "*" }, "resolutions": { + "esy-libspng": "eWert-Online/esy-libspng#cc9f448dc3b2809513241194ec8ac799c9ef6c8a", "esy-libjpeg": "eWert-Online/esy-libjpeg#76b287add2732e191a2c4a1c14a34bab63c4f74d", - "esy-libpng": "eWert-Online/esy-libpng#485fec4990dbb0f6b0ecb3ced53f5bd7bc9a4506", "esy-libtiff": "esy-packages/esy-libtiff#83b1f5c8f76ad42acb5c008f537b5b3f0902c066", - "esy-zlib": "eWert-Online/esy-zlib#9b0394f07551d9fde386e28a6ff269984b63ffcf" + "esy-zlib": "esy-packages/esy-zlib#65faba12e4aed539d8fd2444fede2f1136389f6f" }, "repository": { "type": "git", diff --git a/src/Diff.re b/src/Diff.re index ad35bc9a..7fbfe83a 100644 --- a/src/Diff.re +++ b/src/Diff.re @@ -5,10 +5,16 @@ type diffVariant('a) = | Layout | Pixel(('a, int, float)); -let isInIgnoreRegion = (x, y) => { - List.exists((((x1, y1), (x2, y2))) => - x >= x1 && x <= x2 && y >= y1 && y <= y2 - ); +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) => { @@ -26,61 +32,89 @@ module MakeDiff = (IO1: ImageIO.ImageIO, IO2: ImageIO.ImageIO) => { ~ignoreRegions=[], (), ) => { - let diffCount = ref(0); let maxDelta = maxYIQPossibleDelta *. threshold ** 2.; let diffOutput = outputDiffMask ? IO1.makeSameAsLayout(base) : base; + let diffPixelQueue = Queue.create(); let countDifference = (x, y) => { - incr(diffCount); - diffOutput |> IO1.setImgColor(x, y, diffPixel); + diffPixelQueue |> Queue.push((x, y)); }; - for (y in 0 to base.height - 1) { - let row = IO1.readRow(base, y); - let row2 = IO2.readRow(comp, y); + let ignoreRegions = + ignoreRegions |> computeIngoreRegionOffsets(base.width); - for (x in 0 to base.width - 1) { - if (isInIgnoreRegion(x, y, ignoreRegions)) { - (); - } else if (x >= comp.width || y >= comp.height) { - let alpha = - Int32.to_int(IO1.readImgColor(x, row, base)) lsr 24 land 0xFF; + let size = base.height * base.width - 1; - if (alpha != 0) { - countDifference(x, y); - }; - } else { - let baseColor = IO1.readImgColor(x, row, base); - let compColor = IO2.readImgColor(x, row2, comp); + 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 (baseColor != compColor) { + let delta = + ColorDelta.calculatePixelColorDelta(baseColor, compColor); - if (delta > maxDelta) { + if (delta > maxDelta) { + let isIgnored = isInIgnoreRegion(offset, ignoreRegions); + + if (!isIgnored) { let isAntialiased = if (!antialiasing) { false; } else { - BaseAA.detect(~x, ~y, ~baseImg=base, ~compImg=comp) - || CompAA.detect(~x, ~y, ~baseImg=comp, ~compImg=base); + 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); + 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(diffCount) /. (Float.of_int(base.width) *. Float.of_int(base.height)); - (diffOutput, diffCount^, diffPercentage); + (diffOutput, diffCount, diffPercentage); }; let diff = diff --git a/src/ImageIO.re b/src/ImageIO.re index abc4265d..62ae1aa6 100644 --- a/src/ImageIO.re +++ b/src/ImageIO.re @@ -4,19 +4,15 @@ type img('a) = { image: 'a, }; -type rgb_pixel = (int, int, int); exception ImageNotLoaded; module type ImageIO = { type t; - type row; let loadImage: string => img(t); - let readRow: (img(t), int) => row; - let readImgColor: (int, row, img(t)) => Int32.t; - let setImgColor: (int, int, rgb_pixel, img(t)) => unit; - let saveImage: (img(t), string) => unit; - let freeImage: img(t) => unit; 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/test/Test_Core.re b/test/Test_Core.re index 6910b268..d59699de 100644 --- a/test/Test_Core.re +++ b/test/Test_Core.re @@ -2,20 +2,19 @@ open TestFramework; open ODiffIO; module PNG_Diff = Odiff.Diff.MakeDiff(Png.IO, Png.IO); -module PNG_BA_Diff = Odiff.Diff.MakeDiff(Png.BigarrayIO, Png.BigarrayIO); describe("CORE: Antialiasing", ({test, _}) => { - open Png.BigarrayIO; + 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_BA_Diff.compare( + PNG_Diff.compare( img1, img2, - ~outputDiffMask=true, + ~outputDiffMask=false, ~antialiasing=true, (), ); @@ -29,7 +28,7 @@ describe("CORE: Antialiasing", ({test, _}) => { let img2 = loadImage("test/test-images/aa/antialiasing-off-small.png"); let (_, diffPixels, diffPercentage) = - PNG_BA_Diff.compare( + PNG_Diff.compare( img1, img2, ~outputDiffMask=true,