From 4eab4f333bc50968958923f58ee2e4d926be072b Mon Sep 17 00:00:00 2001 From: Todd Resudek Date: Tue, 11 Jun 2024 16:00:22 -0600 Subject: [PATCH] Release v0.10.1 --- src/mix_hex_core.erl | 26 ++++- src/mix_hex_core.hrl | 4 +- src/mix_hex_erl_tar.erl | 2 +- src/mix_hex_erl_tar.hrl | 2 +- src/mix_hex_filename.erl | 2 +- src/mix_hex_http.erl | 4 +- src/mix_hex_http_httpc.erl | 2 +- src/mix_hex_licenses.erl | 203 +++++++++++++++++++++++++++++++++++- src/mix_hex_pb_names.erl | 55 +++++++--- src/mix_hex_pb_package.erl | 59 ++++++++--- src/mix_hex_pb_signed.erl | 35 +++++-- src/mix_hex_pb_versions.erl | 45 ++++++-- src/mix_hex_registry.erl | 2 +- src/mix_hex_repo.erl | 2 +- src/mix_hex_tarball.erl | 117 ++++++++++++--------- src/mix_safe_erl_term.xrl | 2 +- 16 files changed, 451 insertions(+), 111 deletions(-) diff --git a/src/mix_hex_core.erl b/src/mix_hex_core.erl index 896b9213..71e06dc1 100644 --- a/src/mix_hex_core.erl +++ b/src/mix_hex_core.erl @@ -1,4 +1,4 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %% @doc %% `hex_core' entrypoint module. @@ -48,6 +48,18 @@ %% %% * `repo_verify_origin' - If `true' will verify the repository signature origin, %% requires protobuf messages as of hex_core v0.4.0 (default: `true'). +%% +%% * `tarball_max_size' - Maximum size of package tarball, defaults to +%% `16_777_216' (16 MiB). Set to `infinity' to not enforce the limit. +%% +%% * `tarball_max_uncompressed_size' - Maximum size of uncompressed package tarball, defaults to +%% `134_217_728' (128 MiB). Set to `infinity' to not enforce the limit. +%% +%% * `docs_tarball_max_size' - Maximum size of docs tarball, defaults to +%% `16_777_216' (16 MiB). Set to `infinity' to not enforce the limit. +%% +%% * `docs_tarball_max_uncompressed_size' - Maximum size of uncompressed docs tarball, defaults to +%% `134_217_728' (128 MiB). Set to `infinity' to not enforce the limit. -module(mix_hex_core). -export([default_config/0]). @@ -83,8 +95,10 @@ repo_organization => binary() | undefined, repo_verify => boolean(), repo_verify_origin => boolean(), - tarball_max_size => pos_integer(), - tarball_max_uncompressed_size => pos_integer() + tarball_max_size => pos_integer() | infinity, + tarball_max_uncompressed_size => pos_integer() | infinity, + docs_tarball_max_size => pos_integer() | infinity, + docs_tarball_max_uncompressed_size => pos_integer() | infinity }. -spec default_config() -> config(). @@ -105,6 +119,8 @@ default_config() -> repo_organization => undefined, repo_verify => true, repo_verify_origin => true, - tarball_max_size => 8 * 1024 * 1024, - tarball_max_uncompressed_size => 64 * 1024 * 1024 + tarball_max_size => 16 * 1024 * 1024, + tarball_max_uncompressed_size => 128 * 1024 * 1024, + docs_tarball_max_size => 16 * 1024 * 1024, + docs_tarball_max_uncompressed_size => 128 * 1024 * 1024 }. diff --git a/src/mix_hex_core.hrl b/src/mix_hex_core.hrl index e52aea0d..1bb6c0db 100644 --- a/src/mix_hex_core.hrl +++ b/src/mix_hex_core.hrl @@ -1,3 +1,3 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually --define(HEX_CORE_VERSION, "0.10.0"). +-define(HEX_CORE_VERSION, "0.10.1"). diff --git a/src/mix_hex_erl_tar.erl b/src/mix_hex_erl_tar.erl index bb2d52af..8dca985b 100644 --- a/src/mix_hex_erl_tar.erl +++ b/src/mix_hex_erl_tar.erl @@ -1,4 +1,4 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %% @private %% Copied from https://github.com/erlang/otp/blob/OTP-20.0.1/lib/stdlib/src/erl_tar.erl diff --git a/src/mix_hex_erl_tar.hrl b/src/mix_hex_erl_tar.hrl index 75789a06..c836b120 100644 --- a/src/mix_hex_erl_tar.hrl +++ b/src/mix_hex_erl_tar.hrl @@ -1,4 +1,4 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually % Copied from https://github.com/erlang/otp/blob/OTP-20.0.1/lib/stdlib/src/erl_tar.hrl diff --git a/src/mix_hex_filename.erl b/src/mix_hex_filename.erl index ef136cda..f9668808 100644 --- a/src/mix_hex_filename.erl +++ b/src/mix_hex_filename.erl @@ -1,4 +1,4 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually % @private % Excerpt from https://github.com/erlang/otp/blob/OTP-20.0.1/lib/stdlib/src/filename.erl#L761-L788 diff --git a/src/mix_hex_http.erl b/src/mix_hex_http.erl index 79b28374..d5546c0a 100644 --- a/src/mix_hex_http.erl +++ b/src/mix_hex_http.erl @@ -1,4 +1,4 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %% @doc %% HTTP contract. @@ -18,7 +18,7 @@ -type adapter_config() :: map(). -callback request(method(), URI :: binary(), headers(), body(), adapter_config()) -> - {ok, status(), headers(), binary()} + {ok, {status(), headers(), binary()}} | {error, term()}. -spec request(mix_hex_core:config(), method(), URI :: binary(), headers(), body()) -> diff --git a/src/mix_hex_http_httpc.erl b/src/mix_hex_http_httpc.erl index bba3a812..4b2389ef 100644 --- a/src/mix_hex_http_httpc.erl +++ b/src/mix_hex_http_httpc.erl @@ -1,4 +1,4 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %% @doc %% httpc-based implementation of {@link mix_hex_http} contract. diff --git a/src/mix_hex_licenses.erl b/src/mix_hex_licenses.erl index 44bb1aa7..e7e1398d 100644 --- a/src/mix_hex_licenses.erl +++ b/src/mix_hex_licenses.erl @@ -1,14 +1,15 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %% @doc %% Hex Licenses. -%% File generated by spdx.ex. Do not edit manually. +%% File generated by https://github.com/supersimple/spdx. Do not edit manually. -module(mix_hex_licenses). -export([valid/1]). valid(<<"0BSD">>) -> true; +valid(<<"3D-Slicer-1.0">>) -> true; valid(<<"AAL">>) -> true; valid(<<"ADSL">>) -> true; valid(<<"AFL-1.1">>) -> true; @@ -22,8 +23,10 @@ valid(<<"AGPL-1.0-or-later">>) -> true; valid(<<"AGPL-3.0">>) -> true; valid(<<"AGPL-3.0-only">>) -> true; valid(<<"AGPL-3.0-or-later">>) -> true; +valid(<<"AMD-newlib">>) -> true; valid(<<"AMDPLPA">>) -> true; valid(<<"AML">>) -> true; +valid(<<"AML-glslang">>) -> true; valid(<<"AMPAS">>) -> true; valid(<<"ANTLR-PD">>) -> true; valid(<<"ANTLR-PD-fallback">>) -> true; @@ -33,27 +36,37 @@ valid(<<"APSL-1.0">>) -> true; valid(<<"APSL-1.1">>) -> true; valid(<<"APSL-1.2">>) -> true; valid(<<"APSL-2.0">>) -> true; +valid(<<"ASWF-Digital-Assets-1.0">>) -> true; +valid(<<"ASWF-Digital-Assets-1.1">>) -> true; valid(<<"Abstyles">>) -> true; +valid(<<"AdaCore-doc">>) -> true; valid(<<"Adobe-2006">>) -> true; +valid(<<"Adobe-Display-PostScript">>) -> true; valid(<<"Adobe-Glyph">>) -> true; +valid(<<"Adobe-Utopia">>) -> true; valid(<<"Afmparse">>) -> true; valid(<<"Aladdin">>) -> true; valid(<<"Apache-1.0">>) -> true; valid(<<"Apache-1.1">>) -> true; valid(<<"Apache-2.0">>) -> true; +valid(<<"App-s2p">>) -> true; +valid(<<"Arphic-1999">>) -> true; valid(<<"Artistic-1.0">>) -> true; valid(<<"Artistic-1.0-Perl">>) -> true; valid(<<"Artistic-1.0-cl8">>) -> true; valid(<<"Artistic-2.0">>) -> true; valid(<<"BSD-1-Clause">>) -> true; valid(<<"BSD-2-Clause">>) -> true; +valid(<<"BSD-2-Clause-Darwin">>) -> true; valid(<<"BSD-2-Clause-FreeBSD">>) -> true; valid(<<"BSD-2-Clause-NetBSD">>) -> true; valid(<<"BSD-2-Clause-Patent">>) -> true; valid(<<"BSD-2-Clause-Views">>) -> true; +valid(<<"BSD-2-Clause-first-lines">>) -> true; valid(<<"BSD-3-Clause">>) -> true; valid(<<"BSD-3-Clause-Attribution">>) -> true; valid(<<"BSD-3-Clause-Clear">>) -> true; +valid(<<"BSD-3-Clause-HP">>) -> true; valid(<<"BSD-3-Clause-LBNL">>) -> true; valid(<<"BSD-3-Clause-Modification">>) -> true; valid(<<"BSD-3-Clause-No-Military-License">>) -> true; @@ -61,20 +74,37 @@ valid(<<"BSD-3-Clause-No-Nuclear-License">>) -> true; valid(<<"BSD-3-Clause-No-Nuclear-License-2014">>) -> true; valid(<<"BSD-3-Clause-No-Nuclear-Warranty">>) -> true; valid(<<"BSD-3-Clause-Open-MPI">>) -> true; +valid(<<"BSD-3-Clause-Sun">>) -> true; +valid(<<"BSD-3-Clause-acpica">>) -> true; +valid(<<"BSD-3-Clause-flex">>) -> true; valid(<<"BSD-4-Clause">>) -> true; valid(<<"BSD-4-Clause-Shortened">>) -> true; valid(<<"BSD-4-Clause-UC">>) -> true; +valid(<<"BSD-4.3RENO">>) -> true; +valid(<<"BSD-4.3TAHOE">>) -> true; +valid(<<"BSD-Advertising-Acknowledgement">>) -> true; +valid(<<"BSD-Attribution-HPND-disclaimer">>) -> true; +valid(<<"BSD-Inferno-Nettverk">>) -> true; valid(<<"BSD-Protection">>) -> true; valid(<<"BSD-Source-Code">>) -> true; +valid(<<"BSD-Source-beginning-file">>) -> true; +valid(<<"BSD-Systemics">>) -> true; +valid(<<"BSD-Systemics-W3Works">>) -> true; valid(<<"BSL-1.0">>) -> true; valid(<<"BUSL-1.1">>) -> true; +valid(<<"Baekmuk">>) -> true; valid(<<"Bahyph">>) -> true; valid(<<"Barr">>) -> true; valid(<<"Beerware">>) -> true; valid(<<"BitTorrent-1.0">>) -> true; valid(<<"BitTorrent-1.1">>) -> true; +valid(<<"Bitstream-Charter">>) -> true; +valid(<<"Bitstream-Vera">>) -> true; valid(<<"BlueOak-1.0.0">>) -> true; +valid(<<"Boehm-GC">>) -> true; valid(<<"Borceux">>) -> true; +valid(<<"Brian-Gladman-2-Clause">>) -> true; +valid(<<"Brian-Gladman-3-Clause">>) -> true; valid(<<"C-UDA-1.0">>) -> true; valid(<<"CAL-1.0">>) -> true; valid(<<"CAL-1.0-Combined-Work-Exception">>) -> true; @@ -82,30 +112,43 @@ valid(<<"CATOSL-1.1">>) -> true; valid(<<"CC-BY-1.0">>) -> true; valid(<<"CC-BY-2.0">>) -> true; valid(<<"CC-BY-2.5">>) -> true; +valid(<<"CC-BY-2.5-AU">>) -> true; valid(<<"CC-BY-3.0">>) -> true; valid(<<"CC-BY-3.0-AT">>) -> true; +valid(<<"CC-BY-3.0-AU">>) -> true; +valid(<<"CC-BY-3.0-DE">>) -> true; +valid(<<"CC-BY-3.0-IGO">>) -> true; +valid(<<"CC-BY-3.0-NL">>) -> true; valid(<<"CC-BY-3.0-US">>) -> true; valid(<<"CC-BY-4.0">>) -> true; valid(<<"CC-BY-NC-1.0">>) -> true; valid(<<"CC-BY-NC-2.0">>) -> true; valid(<<"CC-BY-NC-2.5">>) -> true; valid(<<"CC-BY-NC-3.0">>) -> true; +valid(<<"CC-BY-NC-3.0-DE">>) -> true; valid(<<"CC-BY-NC-4.0">>) -> true; valid(<<"CC-BY-NC-ND-1.0">>) -> true; valid(<<"CC-BY-NC-ND-2.0">>) -> true; valid(<<"CC-BY-NC-ND-2.5">>) -> true; valid(<<"CC-BY-NC-ND-3.0">>) -> true; +valid(<<"CC-BY-NC-ND-3.0-DE">>) -> true; valid(<<"CC-BY-NC-ND-3.0-IGO">>) -> true; valid(<<"CC-BY-NC-ND-4.0">>) -> true; valid(<<"CC-BY-NC-SA-1.0">>) -> true; valid(<<"CC-BY-NC-SA-2.0">>) -> true; +valid(<<"CC-BY-NC-SA-2.0-DE">>) -> true; +valid(<<"CC-BY-NC-SA-2.0-FR">>) -> true; +valid(<<"CC-BY-NC-SA-2.0-UK">>) -> true; valid(<<"CC-BY-NC-SA-2.5">>) -> true; valid(<<"CC-BY-NC-SA-3.0">>) -> true; +valid(<<"CC-BY-NC-SA-3.0-DE">>) -> true; +valid(<<"CC-BY-NC-SA-3.0-IGO">>) -> true; valid(<<"CC-BY-NC-SA-4.0">>) -> true; valid(<<"CC-BY-ND-1.0">>) -> true; valid(<<"CC-BY-ND-2.0">>) -> true; valid(<<"CC-BY-ND-2.5">>) -> true; valid(<<"CC-BY-ND-3.0">>) -> true; +valid(<<"CC-BY-ND-3.0-DE">>) -> true; valid(<<"CC-BY-ND-4.0">>) -> true; valid(<<"CC-BY-SA-1.0">>) -> true; valid(<<"CC-BY-SA-2.0">>) -> true; @@ -114,6 +157,8 @@ valid(<<"CC-BY-SA-2.1-JP">>) -> true; valid(<<"CC-BY-SA-2.5">>) -> true; valid(<<"CC-BY-SA-3.0">>) -> true; valid(<<"CC-BY-SA-3.0-AT">>) -> true; +valid(<<"CC-BY-SA-3.0-DE">>) -> true; +valid(<<"CC-BY-SA-3.0-IGO">>) -> true; valid(<<"CC-BY-SA-4.0">>) -> true; valid(<<"CC-PDDC">>) -> true; valid(<<"CC0-1.0">>) -> true; @@ -121,6 +166,7 @@ valid(<<"CDDL-1.0">>) -> true; valid(<<"CDDL-1.1">>) -> true; valid(<<"CDL-1.0">>) -> true; valid(<<"CDLA-Permissive-1.0">>) -> true; +valid(<<"CDLA-Permissive-2.0">>) -> true; valid(<<"CDLA-Sharing-1.0">>) -> true; valid(<<"CECILL-1.0">>) -> true; valid(<<"CECILL-1.1">>) -> true; @@ -133,22 +179,36 @@ valid(<<"CERN-OHL-1.2">>) -> true; valid(<<"CERN-OHL-P-2.0">>) -> true; valid(<<"CERN-OHL-S-2.0">>) -> true; valid(<<"CERN-OHL-W-2.0">>) -> true; +valid(<<"CFITSIO">>) -> true; +valid(<<"CMU-Mach">>) -> true; +valid(<<"CMU-Mach-nodoc">>) -> true; valid(<<"CNRI-Jython">>) -> true; valid(<<"CNRI-Python">>) -> true; valid(<<"CNRI-Python-GPL-Compatible">>) -> true; +valid(<<"COIL-1.0">>) -> true; valid(<<"CPAL-1.0">>) -> true; valid(<<"CPL-1.0">>) -> true; valid(<<"CPOL-1.02">>) -> true; valid(<<"CUA-OPL-1.0">>) -> true; valid(<<"Caldera">>) -> true; +valid(<<"Caldera-no-preamble">>) -> true; +valid(<<"Catharon">>) -> true; valid(<<"ClArtistic">>) -> true; +valid(<<"Clips">>) -> true; +valid(<<"Community-Spec-1.0">>) -> true; valid(<<"Condor-1.1">>) -> true; +valid(<<"Cornell-Lossless-JPEG">>) -> true; +valid(<<"Cronyx">>) -> true; valid(<<"Crossword">>) -> true; valid(<<"CrystalStacker">>) -> true; valid(<<"Cube">>) -> true; valid(<<"D-FSL-1.0">>) -> true; +valid(<<"DEC-3-Clause">>) -> true; +valid(<<"DL-DE-BY-2.0">>) -> true; +valid(<<"DL-DE-ZERO-2.0">>) -> true; valid(<<"DOC">>) -> true; valid(<<"DRL-1.0">>) -> true; +valid(<<"DRL-1.1">>) -> true; valid(<<"DSDP">>) -> true; valid(<<"Dotseqn">>) -> true; valid(<<"ECL-1.0">>) -> true; @@ -162,17 +222,25 @@ valid(<<"EUDatagrid">>) -> true; valid(<<"EUPL-1.0">>) -> true; valid(<<"EUPL-1.1">>) -> true; valid(<<"EUPL-1.2">>) -> true; +valid(<<"Elastic-2.0">>) -> true; valid(<<"Entessa">>) -> true; valid(<<"ErlPL-1.1">>) -> true; valid(<<"Eurosym">>) -> true; +valid(<<"FBM">>) -> true; +valid(<<"FDK-AAC">>) -> true; valid(<<"FSFAP">>) -> true; +valid(<<"FSFAP-no-warranty-disclaimer">>) -> true; valid(<<"FSFUL">>) -> true; valid(<<"FSFULLR">>) -> true; +valid(<<"FSFULLRWD">>) -> true; valid(<<"FTL">>) -> true; valid(<<"Fair">>) -> true; +valid(<<"Ferguson-Twofish">>) -> true; valid(<<"Frameworx-1.0">>) -> true; valid(<<"FreeBSD-DOC">>) -> true; valid(<<"FreeImage">>) -> true; +valid(<<"Furuseth">>) -> true; +valid(<<"GCR-docs">>) -> true; valid(<<"GD">>) -> true; valid(<<"GFDL-1.1">>) -> true; valid(<<"GFDL-1.1-invariants-only">>) -> true; @@ -219,26 +287,60 @@ valid(<<"GPL-3.0-with-autoconf-exception">>) -> true; valid(<<"Giftware">>) -> true; valid(<<"Glide">>) -> true; valid(<<"Glulxe">>) -> true; +valid(<<"Graphics-Gems">>) -> true; +valid(<<"Gutmann">>) -> true; +valid(<<"HP-1986">>) -> true; +valid(<<"HP-1989">>) -> true; valid(<<"HPND">>) -> true; +valid(<<"HPND-DEC">>) -> true; +valid(<<"HPND-Fenneberg-Livingston">>) -> true; +valid(<<"HPND-INRIA-IMAG">>) -> true; +valid(<<"HPND-Intel">>) -> true; +valid(<<"HPND-Kevlin-Henney">>) -> true; +valid(<<"HPND-MIT-disclaimer">>) -> true; +valid(<<"HPND-Markus-Kuhn">>) -> true; +valid(<<"HPND-Pbmplus">>) -> true; +valid(<<"HPND-UC">>) -> true; +valid(<<"HPND-UC-export-US">>) -> true; +valid(<<"HPND-doc">>) -> true; +valid(<<"HPND-doc-sell">>) -> true; +valid(<<"HPND-export-US">>) -> true; +valid(<<"HPND-export-US-acknowledgement">>) -> true; +valid(<<"HPND-export-US-modify">>) -> true; +valid(<<"HPND-export2-US">>) -> true; +valid(<<"HPND-merchantability-variant">>) -> true; +valid(<<"HPND-sell-MIT-disclaimer-xserver">>) -> true; +valid(<<"HPND-sell-regexpr">>) -> true; valid(<<"HPND-sell-variant">>) -> true; +valid(<<"HPND-sell-variant-MIT-disclaimer">>) -> true; +valid(<<"HPND-sell-variant-MIT-disclaimer-rev">>) -> true; valid(<<"HTMLTIDY">>) -> true; valid(<<"HaskellReport">>) -> true; valid(<<"Hippocratic-2.1">>) -> true; valid(<<"IBM-pibs">>) -> true; valid(<<"ICU">>) -> true; +valid(<<"IEC-Code-Components-EULA">>) -> true; valid(<<"IJG">>) -> true; +valid(<<"IJG-short">>) -> true; valid(<<"IPA">>) -> true; valid(<<"IPL-1.0">>) -> true; valid(<<"ISC">>) -> true; +valid(<<"ISC-Veillard">>) -> true; valid(<<"ImageMagick">>) -> true; valid(<<"Imlib2">>) -> true; valid(<<"Info-ZIP">>) -> true; +valid(<<"Inner-Net-2.0">>) -> true; valid(<<"Intel">>) -> true; valid(<<"Intel-ACPI">>) -> true; valid(<<"Interbase-1.0">>) -> true; +valid(<<"JPL-image">>) -> true; valid(<<"JPNIC">>) -> true; valid(<<"JSON">>) -> true; +valid(<<"Jam">>) -> true; valid(<<"JasPer-2.0">>) -> true; +valid(<<"Kastrup">>) -> true; +valid(<<"Kazlib">>) -> true; +valid(<<"Knuth-CTAN">>) -> true; valid(<<"LAL-1.2">>) -> true; valid(<<"LAL-1.3">>) -> true; valid(<<"LGPL-2.0">>) -> true; @@ -254,6 +356,8 @@ valid(<<"LGPL-3.0+">>) -> true; valid(<<"LGPL-3.0-only">>) -> true; valid(<<"LGPL-3.0-or-later">>) -> true; valid(<<"LGPLLR">>) -> true; +valid(<<"LOOP">>) -> true; +valid(<<"LPD-document">>) -> true; valid(<<"LPL-1.0">>) -> true; valid(<<"LPL-1.02">>) -> true; valid(<<"LPPL-1.0">>) -> true; @@ -261,30 +365,50 @@ valid(<<"LPPL-1.1">>) -> true; valid(<<"LPPL-1.2">>) -> true; valid(<<"LPPL-1.3a">>) -> true; valid(<<"LPPL-1.3c">>) -> true; +valid(<<"LZMA-SDK-9.11-to-9.20">>) -> true; +valid(<<"LZMA-SDK-9.22">>) -> true; valid(<<"Latex2e">>) -> true; +valid(<<"Latex2e-translated-notice">>) -> true; valid(<<"Leptonica">>) -> true; valid(<<"LiLiQ-P-1.1">>) -> true; valid(<<"LiLiQ-R-1.1">>) -> true; valid(<<"LiLiQ-Rplus-1.1">>) -> true; valid(<<"Libpng">>) -> true; valid(<<"Linux-OpenIB">>) -> true; +valid(<<"Linux-man-pages-1-para">>) -> true; +valid(<<"Linux-man-pages-copyleft">>) -> true; +valid(<<"Linux-man-pages-copyleft-2-para">>) -> true; +valid(<<"Linux-man-pages-copyleft-var">>) -> true; +valid(<<"Lucida-Bitmap-Fonts">>) -> true; valid(<<"MIT">>) -> true; valid(<<"MIT-0">>) -> true; valid(<<"MIT-CMU">>) -> true; +valid(<<"MIT-Festival">>) -> true; +valid(<<"MIT-Khronos-old">>) -> true; valid(<<"MIT-Modern-Variant">>) -> true; +valid(<<"MIT-Wu">>) -> true; valid(<<"MIT-advertising">>) -> true; valid(<<"MIT-enna">>) -> true; valid(<<"MIT-feh">>) -> true; valid(<<"MIT-open-group">>) -> true; +valid(<<"MIT-testregex">>) -> true; valid(<<"MITNFA">>) -> true; +valid(<<"MMIXware">>) -> true; +valid(<<"MPEG-SSG">>) -> true; valid(<<"MPL-1.0">>) -> true; valid(<<"MPL-1.1">>) -> true; valid(<<"MPL-2.0">>) -> true; valid(<<"MPL-2.0-no-copyleft-exception">>) -> true; +valid(<<"MS-LPL">>) -> true; valid(<<"MS-PL">>) -> true; valid(<<"MS-RL">>) -> true; valid(<<"MTLL">>) -> true; +valid(<<"Mackerras-3-Clause">>) -> true; +valid(<<"Mackerras-3-Clause-acknowledgment">>) -> true; valid(<<"MakeIndex">>) -> true; +valid(<<"Martin-Birgmeier">>) -> true; +valid(<<"McPhee-slideshow">>) -> true; +valid(<<"Minpack">>) -> true; valid(<<"MirOS">>) -> true; valid(<<"Motosoto">>) -> true; valid(<<"MulanPSL-1.0">>) -> true; @@ -294,12 +418,17 @@ valid(<<"Mup">>) -> true; valid(<<"NAIST-2003">>) -> true; valid(<<"NASA-1.3">>) -> true; valid(<<"NBPL-1.0">>) -> true; +valid(<<"NCBI-PD">>) -> true; valid(<<"NCGL-UK-2.0">>) -> true; +valid(<<"NCL">>) -> true; valid(<<"NCSA">>) -> true; valid(<<"NGPL">>) -> true; +valid(<<"NICTA-1.0">>) -> true; valid(<<"NIST-PD">>) -> true; valid(<<"NIST-PD-fallback">>) -> true; +valid(<<"NIST-Software">>) -> true; valid(<<"NLOD-1.0">>) -> true; +valid(<<"NLOD-2.0">>) -> true; valid(<<"NLPL">>) -> true; valid(<<"NOSL">>) -> true; valid(<<"NPL-1.0">>) -> true; @@ -316,10 +445,12 @@ valid(<<"Nokia">>) -> true; valid(<<"Noweb">>) -> true; valid(<<"Nunit">>) -> true; valid(<<"O-UDA-1.0">>) -> true; +valid(<<"OAR">>) -> true; valid(<<"OCCT-PL">>) -> true; valid(<<"OCLC-2.0">>) -> true; valid(<<"ODC-By-1.0">>) -> true; valid(<<"ODbL-1.0">>) -> true; +valid(<<"OFFIS">>) -> true; valid(<<"OFL-1.0">>) -> true; valid(<<"OFL-1.0-RFN">>) -> true; valid(<<"OFL-1.0-no-RFN">>) -> true; @@ -349,27 +480,38 @@ valid(<<"OLDAP-2.5">>) -> true; valid(<<"OLDAP-2.6">>) -> true; valid(<<"OLDAP-2.7">>) -> true; valid(<<"OLDAP-2.8">>) -> true; +valid(<<"OLFL-1.3">>) -> true; valid(<<"OML">>) -> true; valid(<<"OPL-1.0">>) -> true; +valid(<<"OPL-UK-3.0">>) -> true; +valid(<<"OPUBL-1.0">>) -> true; valid(<<"OSET-PL-2.1">>) -> true; valid(<<"OSL-1.0">>) -> true; valid(<<"OSL-1.1">>) -> true; valid(<<"OSL-2.0">>) -> true; valid(<<"OSL-2.1">>) -> true; valid(<<"OSL-3.0">>) -> true; +valid(<<"OpenPBS-2.3">>) -> true; valid(<<"OpenSSL">>) -> true; +valid(<<"OpenSSL-standalone">>) -> true; +valid(<<"OpenVision">>) -> true; +valid(<<"PADL">>) -> true; valid(<<"PDDL-1.0">>) -> true; valid(<<"PHP-3.0">>) -> true; valid(<<"PHP-3.01">>) -> true; +valid(<<"PPL">>) -> true; valid(<<"PSF-2.0">>) -> true; valid(<<"Parity-6.0.0">>) -> true; valid(<<"Parity-7.0.0">>) -> true; +valid(<<"Pixar">>) -> true; valid(<<"Plexus">>) -> true; valid(<<"PolyForm-Noncommercial-1.0.0">>) -> true; valid(<<"PolyForm-Small-Business-1.0.0">>) -> true; valid(<<"PostgreSQL">>) -> true; valid(<<"Python-2.0">>) -> true; +valid(<<"Python-2.0.1">>) -> true; valid(<<"QPL-1.0">>) -> true; +valid(<<"QPL-1.0-INRIA-2004">>) -> true; valid(<<"Qhull">>) -> true; valid(<<"RHeCos-1.1">>) -> true; valid(<<"RPL-1.1">>) -> true; @@ -380,45 +522,67 @@ valid(<<"RSCPL">>) -> true; valid(<<"Rdisc">>) -> true; valid(<<"Ruby">>) -> true; valid(<<"SAX-PD">>) -> true; +valid(<<"SAX-PD-2.0">>) -> true; valid(<<"SCEA">>) -> true; valid(<<"SGI-B-1.0">>) -> true; valid(<<"SGI-B-1.1">>) -> true; valid(<<"SGI-B-2.0">>) -> true; +valid(<<"SGI-OpenGL">>) -> true; +valid(<<"SGP4">>) -> true; valid(<<"SHL-0.5">>) -> true; valid(<<"SHL-0.51">>) -> true; valid(<<"SISSL">>) -> true; valid(<<"SISSL-1.2">>) -> true; +valid(<<"SL">>) -> true; valid(<<"SMLNJ">>) -> true; valid(<<"SMPPL">>) -> true; valid(<<"SNIA">>) -> true; valid(<<"SPL-1.0">>) -> true; valid(<<"SSH-OpenSSH">>) -> true; valid(<<"SSH-short">>) -> true; +valid(<<"SSLeay-standalone">>) -> true; valid(<<"SSPL-1.0">>) -> true; valid(<<"SWL">>) -> true; valid(<<"Saxpath">>) -> true; +valid(<<"SchemeReport">>) -> true; valid(<<"Sendmail">>) -> true; valid(<<"Sendmail-8.23">>) -> true; valid(<<"SimPL-2.0">>) -> true; valid(<<"Sleepycat">>) -> true; +valid(<<"Soundex">>) -> true; valid(<<"Spencer-86">>) -> true; valid(<<"Spencer-94">>) -> true; valid(<<"Spencer-99">>) -> true; valid(<<"StandardML-NJ">>) -> true; valid(<<"SugarCRM-1.1.3">>) -> true; +valid(<<"Sun-PPP">>) -> true; +valid(<<"Sun-PPP-2000">>) -> true; +valid(<<"SunPro">>) -> true; +valid(<<"Symlinks">>) -> true; valid(<<"TAPR-OHL-1.0">>) -> true; valid(<<"TCL">>) -> true; valid(<<"TCP-wrappers">>) -> true; +valid(<<"TGPPL-1.0">>) -> true; valid(<<"TMate">>) -> true; valid(<<"TORQUE-1.1">>) -> true; valid(<<"TOSL">>) -> true; +valid(<<"TPDL">>) -> true; +valid(<<"TPL-1.0">>) -> true; +valid(<<"TTWL">>) -> true; +valid(<<"TTYP0">>) -> true; valid(<<"TU-Berlin-1.0">>) -> true; valid(<<"TU-Berlin-2.0">>) -> true; +valid(<<"TermReadKey">>) -> true; +valid(<<"UCAR">>) -> true; valid(<<"UCL-1.0">>) -> true; +valid(<<"UMich-Merit">>) -> true; valid(<<"UPL-1.0">>) -> true; +valid(<<"URT-RLE">>) -> true; +valid(<<"Unicode-3.0">>) -> true; valid(<<"Unicode-DFS-2015">>) -> true; valid(<<"Unicode-DFS-2016">>) -> true; valid(<<"Unicode-TOU">>) -> true; +valid(<<"UnixCrypt">>) -> true; valid(<<"Unlicense">>) -> true; valid(<<"VOSTROM">>) -> true; valid(<<"VSL-1.0">>) -> true; @@ -428,11 +592,15 @@ valid(<<"W3C-19980720">>) -> true; valid(<<"W3C-20150513">>) -> true; valid(<<"WTFPL">>) -> true; valid(<<"Watcom-1.0">>) -> true; +valid(<<"Widget-Workshop">>) -> true; valid(<<"Wsuipa">>) -> true; valid(<<"X11">>) -> true; +valid(<<"X11-distribute-modifications-variant">>) -> true; valid(<<"XFree86-1.1">>) -> true; valid(<<"XSkat">>) -> true; +valid(<<"Xdebug-1.03">>) -> true; valid(<<"Xerox">>) -> true; +valid(<<"Xfig">>) -> true; valid(<<"Xnet">>) -> true; valid(<<"YPL-1.0">>) -> true; valid(<<"YPL-1.1">>) -> true; @@ -440,32 +608,63 @@ valid(<<"ZPL-1.1">>) -> true; valid(<<"ZPL-2.0">>) -> true; valid(<<"ZPL-2.1">>) -> true; valid(<<"Zed">>) -> true; +valid(<<"Zeeff">>) -> true; valid(<<"Zend-2.0">>) -> true; valid(<<"Zimbra-1.3">>) -> true; valid(<<"Zimbra-1.4">>) -> true; valid(<<"Zlib">>) -> true; +valid(<<"any-OSI">>) -> true; +valid(<<"bcrypt-Solar-Designer">>) -> true; valid(<<"blessing">>) -> true; valid(<<"bzip2-1.0.5">>) -> true; valid(<<"bzip2-1.0.6">>) -> true; +valid(<<"check-cvs">>) -> true; +valid(<<"checkmk">>) -> true; valid(<<"copyleft-next-0.3.0">>) -> true; valid(<<"copyleft-next-0.3.1">>) -> true; valid(<<"curl">>) -> true; +valid(<<"cve-tou">>) -> true; valid(<<"diffmark">>) -> true; +valid(<<"dtoa">>) -> true; valid(<<"dvipdfm">>) -> true; valid(<<"eCos-2.0">>) -> true; valid(<<"eGenix">>) -> true; valid(<<"etalab-2.0">>) -> true; +valid(<<"fwlw">>) -> true; valid(<<"gSOAP-1.3b">>) -> true; valid(<<"gnuplot">>) -> true; +valid(<<"gtkbook">>) -> true; +valid(<<"hdparm">>) -> true; valid(<<"iMatix">>) -> true; valid(<<"libpng-2.0">>) -> true; valid(<<"libselinux-1.0">>) -> true; valid(<<"libtiff">>) -> true; +valid(<<"libutil-David-Nugent">>) -> true; +valid(<<"lsof">>) -> true; +valid(<<"magaz">>) -> true; +valid(<<"mailprio">>) -> true; +valid(<<"metamail">>) -> true; +valid(<<"mpi-permissive">>) -> true; valid(<<"mpich2">>) -> true; +valid(<<"mplus">>) -> true; +valid(<<"pkgconf">>) -> true; +valid(<<"pnmstitch">>) -> true; valid(<<"psfrag">>) -> true; valid(<<"psutils">>) -> true; +valid(<<"python-ldap">>) -> true; +valid(<<"radvd">>) -> true; +valid(<<"snprintf">>) -> true; +valid(<<"softSurfer">>) -> true; +valid(<<"ssh-keyscan">>) -> true; +valid(<<"swrule">>) -> true; +valid(<<"threeparttable">>) -> true; +valid(<<"ulem">>) -> true; +valid(<<"w3m">>) -> true; valid(<<"wxWindows">>) -> true; valid(<<"xinetd">>) -> true; +valid(<<"xkeyboard-config-Zinoviev">>) -> true; +valid(<<"xlock">>) -> true; valid(<<"xpp">>) -> true; +valid(<<"xzoom">>) -> true; valid(<<"zlib-acknowledgement">>) -> true; valid(_) -> false. diff --git a/src/mix_hex_pb_names.erl b/src/mix_hex_pb_names.erl index c3b4ce34..1e7d54c7 100644 --- a/src/mix_hex_pb_names.erl +++ b/src/mix_hex_pb_names.erl @@ -1,9 +1,10 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %% -*- coding: utf-8 -*- +%% % this file is @generated %% @private %% Automatically generated, do not edit -%% Generated by gpb_compile version 4.17.6 +%% Generated by gpb_compile version 4.21.1 %% Version source: file -module(mix_hex_pb_names). @@ -74,9 +75,15 @@ -type '$msg'() :: 'Names'() | 'Package'() | 'Timestamp'(). -export_type(['$msg_name'/0, '$msg'/0]). +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/2}). +-endif. -spec encode_msg('$msg'(), '$msg_name'()) -> binary(). encode_msg(Msg, MsgName) when is_atom(MsgName) -> encode_msg(Msg, MsgName, []). +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/3}). +-endif. -spec encode_msg('$msg'(), '$msg_name'(), list()) -> binary(). encode_msg(Msg, MsgName, Opts) -> verify_msg(Msg, MsgName, Opts), @@ -239,14 +246,21 @@ decode_msg(Bin, MsgName, Opts) when is_binary(Bin) -> -ifdef('OTP_RELEASE'). decode_msg_1_catch(Bin, MsgName, TrUserData) -> try decode_msg_2_doit(MsgName, Bin, TrUserData) - catch Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) + catch + error:{gpb_error,_}=Reason:StackTrace -> + erlang:raise(error, Reason, StackTrace); + Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) end. -else. decode_msg_1_catch(Bin, MsgName, TrUserData) -> try decode_msg_2_doit(MsgName, Bin, TrUserData) - catch Class:Reason -> - StackTrace = erlang:get_stacktrace(), - error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) + catch + error:{gpb_error,_}=Reason -> + erlang:raise(error, Reason, + erlang:get_stacktrace()); + Class:Reason -> + StackTrace = erlang:get_stacktrace(), + error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) end. -endif. @@ -538,11 +552,12 @@ verify_msg(Msg, MsgName, Opts) -> -compile({nowarn_unused_function,v_msg_Names/3}). +-dialyzer({nowarn_function,v_msg_Names/3}). v_msg_Names(#{repository := F2} = M, Path, TrUserData) -> case M of #{packages := F1} -> if is_list(F1) -> - _ = [v_msg_Package(Elem, [packages | Path], TrUserData) || Elem <- F1], + _ = [v_submsg_Package(Elem, [packages | Path], TrUserData) || Elem <- F1], ok; true -> mk_type_error({invalid_list_of, {msg, 'Package'}}, F1, [packages | Path]) end; @@ -558,11 +573,16 @@ v_msg_Names(#{repository := F2} = M, Path, TrUserData) -> v_msg_Names(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [repository] -- maps:keys(M), 'Names'}, M, Path); v_msg_Names(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Names'}, X, Path). +-compile({nowarn_unused_function,v_submsg_Package/3}). +-dialyzer({nowarn_function,v_submsg_Package/3}). +v_submsg_Package(Msg, Path, TrUserData) -> v_msg_Package(Msg, Path, TrUserData). + -compile({nowarn_unused_function,v_msg_Package/3}). +-dialyzer({nowarn_function,v_msg_Package/3}). v_msg_Package(#{name := F1} = M, Path, TrUserData) -> v_type_string(F1, [name | Path], TrUserData), case M of - #{updated_at := F2} -> v_msg_Timestamp(F2, [updated_at | Path], TrUserData); + #{updated_at := F2} -> v_submsg_Timestamp(F2, [updated_at | Path], TrUserData); _ -> ok end, lists:foreach(fun (name) -> ok; @@ -574,7 +594,12 @@ v_msg_Package(#{name := F1} = M, Path, TrUserData) -> v_msg_Package(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [name] -- maps:keys(M), 'Package'}, M, Path); v_msg_Package(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Package'}, X, Path). +-compile({nowarn_unused_function,v_submsg_Timestamp/3}). +-dialyzer({nowarn_function,v_submsg_Timestamp/3}). +v_submsg_Timestamp(Msg, Path, TrUserData) -> v_msg_Timestamp(Msg, Path, TrUserData). + -compile({nowarn_unused_function,v_msg_Timestamp/3}). +-dialyzer({nowarn_function,v_msg_Timestamp/3}). v_msg_Timestamp(#{seconds := F1, nanos := F2} = M, Path, TrUserData) -> v_type_int64(F1, [seconds | Path], TrUserData), v_type_int32(F2, [nanos | Path], TrUserData), @@ -588,16 +613,19 @@ v_msg_Timestamp(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_f v_msg_Timestamp(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Timestamp'}, X, Path). -compile({nowarn_unused_function,v_type_int32/3}). -v_type_int32(N, _Path, _TrUserData) when -2147483648 =< N, N =< 2147483647 -> ok; +-dialyzer({nowarn_function,v_type_int32/3}). +v_type_int32(N, _Path, _TrUserData) when is_integer(N), -2147483648 =< N, N =< 2147483647 -> ok; v_type_int32(N, Path, _TrUserData) when is_integer(N) -> mk_type_error({value_out_of_range, int32, signed, 32}, N, Path); v_type_int32(X, Path, _TrUserData) -> mk_type_error({bad_integer, int32, signed, 32}, X, Path). -compile({nowarn_unused_function,v_type_int64/3}). -v_type_int64(N, _Path, _TrUserData) when -9223372036854775808 =< N, N =< 9223372036854775807 -> ok; +-dialyzer({nowarn_function,v_type_int64/3}). +v_type_int64(N, _Path, _TrUserData) when is_integer(N), -9223372036854775808 =< N, N =< 9223372036854775807 -> ok; v_type_int64(N, Path, _TrUserData) when is_integer(N) -> mk_type_error({value_out_of_range, int64, signed, 64}, N, Path); v_type_int64(X, Path, _TrUserData) -> mk_type_error({bad_integer, int64, signed, 64}, X, Path). -compile({nowarn_unused_function,v_type_string/3}). +-dialyzer({nowarn_function,v_type_string/3}). v_type_string(S, Path, _TrUserData) when is_list(S); is_binary(S) -> try unicode:characters_to_binary(S) of B when is_binary(B) -> ok; @@ -615,8 +643,9 @@ mk_type_error(Error, ValueSeen, Path) -> -compile({nowarn_unused_function,prettify_path/1}). +-dialyzer({nowarn_function,prettify_path/1}). prettify_path([]) -> top_level; -prettify_path(PathR) -> string:join(lists:map(fun atom_to_list/1, lists:reverse(PathR)), "."). +prettify_path(PathR) -> lists:append(lists:join(".", lists:map(fun atom_to_list/1, lists:reverse(PathR)))). -compile({nowarn_unused_function,id/2}). @@ -820,10 +849,10 @@ get_protos_by_pkg_name_as_fqbin(E) -> error({gpb_error, {badpkg, E}}). gpb_version_as_string() -> - "4.17.6". + "4.21.1". gpb_version_as_list() -> - [4,17,6]. + [4,21,1]. gpb_version_source() -> "file". diff --git a/src/mix_hex_pb_package.erl b/src/mix_hex_pb_package.erl index 522f89f5..85d72050 100644 --- a/src/mix_hex_pb_package.erl +++ b/src/mix_hex_pb_package.erl @@ -1,9 +1,10 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %% -*- coding: utf-8 -*- +%% % this file is @generated %% @private %% Automatically generated, do not edit -%% Generated by gpb_compile version 4.17.6 +%% Generated by gpb_compile version 4.21.1 %% Version source: file -module(mix_hex_pb_package). @@ -87,9 +88,15 @@ -type '$msg'() :: 'Package'() | 'Release'() | 'RetirementStatus'() | 'Dependency'(). -export_type(['$msg_name'/0, '$msg'/0]). +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/2}). +-endif. -spec encode_msg('$msg'(), '$msg_name'()) -> binary(). encode_msg(Msg, MsgName) when is_atom(MsgName) -> encode_msg(Msg, MsgName, []). +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/3}). +-endif. -spec encode_msg('$msg'(), '$msg_name'(), list()) -> binary(). encode_msg(Msg, MsgName, Opts) -> verify_msg(Msg, MsgName, Opts), @@ -307,14 +314,21 @@ decode_msg(Bin, MsgName, Opts) when is_binary(Bin) -> -ifdef('OTP_RELEASE'). decode_msg_1_catch(Bin, MsgName, TrUserData) -> try decode_msg_2_doit(MsgName, Bin, TrUserData) - catch Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) + catch + error:{gpb_error,_}=Reason:StackTrace -> + erlang:raise(error, Reason, StackTrace); + Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) end. -else. decode_msg_1_catch(Bin, MsgName, TrUserData) -> try decode_msg_2_doit(MsgName, Bin, TrUserData) - catch Class:Reason -> - StackTrace = erlang:get_stacktrace(), - error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) + catch + error:{gpb_error,_}=Reason -> + erlang:raise(error, Reason, + erlang:get_stacktrace()); + Class:Reason -> + StackTrace = erlang:get_stacktrace(), + error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) end. -endif. @@ -795,11 +809,12 @@ verify_msg(Msg, MsgName, Opts) -> -compile({nowarn_unused_function,v_msg_Package/3}). +-dialyzer({nowarn_function,v_msg_Package/3}). v_msg_Package(#{name := F2, repository := F3} = M, Path, TrUserData) -> case M of #{releases := F1} -> if is_list(F1) -> - _ = [v_msg_Release(Elem, [releases | Path], TrUserData) || Elem <- F1], + _ = [v_submsg_Release(Elem, [releases | Path], TrUserData) || Elem <- F1], ok; true -> mk_type_error({invalid_list_of, {msg, 'Release'}}, F1, [releases | Path]) end; @@ -817,21 +832,26 @@ v_msg_Package(#{name := F2, repository := F3} = M, Path, TrUserData) -> v_msg_Package(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [name, repository] -- maps:keys(M), 'Package'}, M, Path); v_msg_Package(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Package'}, X, Path). +-compile({nowarn_unused_function,v_submsg_Release/3}). +-dialyzer({nowarn_function,v_submsg_Release/3}). +v_submsg_Release(Msg, Path, TrUserData) -> v_msg_Release(Msg, Path, TrUserData). + -compile({nowarn_unused_function,v_msg_Release/3}). +-dialyzer({nowarn_function,v_msg_Release/3}). v_msg_Release(#{version := F1, inner_checksum := F2} = M, Path, TrUserData) -> v_type_string(F1, [version | Path], TrUserData), v_type_bytes(F2, [inner_checksum | Path], TrUserData), case M of #{dependencies := F3} -> if is_list(F3) -> - _ = [v_msg_Dependency(Elem, [dependencies | Path], TrUserData) || Elem <- F3], + _ = [v_submsg_Dependency(Elem, [dependencies | Path], TrUserData) || Elem <- F3], ok; true -> mk_type_error({invalid_list_of, {msg, 'Dependency'}}, F3, [dependencies | Path]) end; _ -> ok end, case M of - #{retired := F4} -> v_msg_RetirementStatus(F4, [retired | Path], TrUserData); + #{retired := F4} -> v_submsg_RetirementStatus(F4, [retired | Path], TrUserData); _ -> ok end, case M of @@ -850,7 +870,12 @@ v_msg_Release(#{version := F1, inner_checksum := F2} = M, Path, TrUserData) -> v_msg_Release(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [version, inner_checksum] -- maps:keys(M), 'Release'}, M, Path); v_msg_Release(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Release'}, X, Path). +-compile({nowarn_unused_function,v_submsg_RetirementStatus/3}). +-dialyzer({nowarn_function,v_submsg_RetirementStatus/3}). +v_submsg_RetirementStatus(Msg, Path, TrUserData) -> v_msg_RetirementStatus(Msg, Path, TrUserData). + -compile({nowarn_unused_function,v_msg_RetirementStatus/3}). +-dialyzer({nowarn_function,v_msg_RetirementStatus/3}). v_msg_RetirementStatus(#{reason := F1} = M, Path, TrUserData) -> v_enum_RetirementReason(F1, [reason | Path], TrUserData), case M of @@ -866,7 +891,12 @@ v_msg_RetirementStatus(#{reason := F1} = M, Path, TrUserData) -> v_msg_RetirementStatus(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [reason] -- maps:keys(M), 'RetirementStatus'}, M, Path); v_msg_RetirementStatus(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'RetirementStatus'}, X, Path). +-compile({nowarn_unused_function,v_submsg_Dependency/3}). +-dialyzer({nowarn_function,v_submsg_Dependency/3}). +v_submsg_Dependency(Msg, Path, TrUserData) -> v_msg_Dependency(Msg, Path, TrUserData). + -compile({nowarn_unused_function,v_msg_Dependency/3}). +-dialyzer({nowarn_function,v_msg_Dependency/3}). v_msg_Dependency(#{package := F1, requirement := F2} = M, Path, TrUserData) -> v_type_string(F1, [package | Path], TrUserData), v_type_string(F2, [requirement | Path], TrUserData), @@ -895,6 +925,7 @@ v_msg_Dependency(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_ v_msg_Dependency(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Dependency'}, X, Path). -compile({nowarn_unused_function,v_enum_RetirementReason/3}). +-dialyzer({nowarn_function,v_enum_RetirementReason/3}). v_enum_RetirementReason('RETIRED_OTHER', _Path, _TrUserData) -> ok; v_enum_RetirementReason('RETIRED_INVALID', _Path, _TrUserData) -> ok; v_enum_RetirementReason('RETIRED_SECURITY', _Path, _TrUserData) -> ok; @@ -904,6 +935,7 @@ v_enum_RetirementReason(V, _Path, _TrUserData) when -2147483648 =< V, V =< 21474 v_enum_RetirementReason(X, Path, _TrUserData) -> mk_type_error({invalid_enum, 'RetirementReason'}, X, Path). -compile({nowarn_unused_function,v_type_bool/3}). +-dialyzer({nowarn_function,v_type_bool/3}). v_type_bool(false, _Path, _TrUserData) -> ok; v_type_bool(true, _Path, _TrUserData) -> ok; v_type_bool(0, _Path, _TrUserData) -> ok; @@ -911,6 +943,7 @@ v_type_bool(1, _Path, _TrUserData) -> ok; v_type_bool(X, Path, _TrUserData) -> mk_type_error(bad_boolean_value, X, Path). -compile({nowarn_unused_function,v_type_string/3}). +-dialyzer({nowarn_function,v_type_string/3}). v_type_string(S, Path, _TrUserData) when is_list(S); is_binary(S) -> try unicode:characters_to_binary(S) of B when is_binary(B) -> ok; @@ -921,6 +954,7 @@ v_type_string(S, Path, _TrUserData) when is_list(S); is_binary(S) -> v_type_string(X, Path, _TrUserData) -> mk_type_error(bad_unicode_string, X, Path). -compile({nowarn_unused_function,v_type_bytes/3}). +-dialyzer({nowarn_function,v_type_bytes/3}). v_type_bytes(B, _Path, _TrUserData) when is_binary(B) -> ok; v_type_bytes(B, _Path, _TrUserData) when is_list(B) -> ok; v_type_bytes(X, Path, _TrUserData) -> mk_type_error(bad_binary_value, X, Path). @@ -933,8 +967,9 @@ mk_type_error(Error, ValueSeen, Path) -> -compile({nowarn_unused_function,prettify_path/1}). +-dialyzer({nowarn_function,prettify_path/1}). prettify_path([]) -> top_level; -prettify_path(PathR) -> string:join(lists:map(fun atom_to_list/1, lists:reverse(PathR)), "."). +prettify_path(PathR) -> lists:append(lists:join(".", lists:map(fun atom_to_list/1, lists:reverse(PathR)))). -compile({nowarn_unused_function,id/2}). @@ -1185,10 +1220,10 @@ get_protos_by_pkg_name_as_fqbin(E) -> error({gpb_error, {badpkg, E}}). gpb_version_as_string() -> - "4.17.6". + "4.21.1". gpb_version_as_list() -> - [4,17,6]. + [4,21,1]. gpb_version_source() -> "file". diff --git a/src/mix_hex_pb_signed.erl b/src/mix_hex_pb_signed.erl index 58690937..cb59c96f 100644 --- a/src/mix_hex_pb_signed.erl +++ b/src/mix_hex_pb_signed.erl @@ -1,9 +1,10 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %% -*- coding: utf-8 -*- +%% % this file is @generated %% @private %% Automatically generated, do not edit -%% Generated by gpb_compile version 4.17.6 +%% Generated by gpb_compile version 4.21.1 %% Version source: file -module(mix_hex_pb_signed). @@ -64,9 +65,15 @@ -type '$msg'() :: 'Signed'(). -export_type(['$msg_name'/0, '$msg'/0]). +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/2}). +-endif. -spec encode_msg('$msg'(), '$msg_name'()) -> binary(). encode_msg(Msg, MsgName) when is_atom(MsgName) -> encode_msg(Msg, MsgName, []). +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/3}). +-endif. -spec encode_msg('$msg'(), '$msg_name'(), list()) -> binary(). encode_msg(Msg, MsgName, Opts) -> verify_msg(Msg, MsgName, Opts), @@ -188,14 +195,21 @@ decode_msg(Bin, MsgName, Opts) when is_binary(Bin) -> -ifdef('OTP_RELEASE'). decode_msg_1_catch(Bin, MsgName, TrUserData) -> try decode_msg_2_doit(MsgName, Bin, TrUserData) - catch Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) + catch + error:{gpb_error,_}=Reason:StackTrace -> + erlang:raise(error, Reason, StackTrace); + Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) end. -else. decode_msg_1_catch(Bin, MsgName, TrUserData) -> try decode_msg_2_doit(MsgName, Bin, TrUserData) - catch Class:Reason -> - StackTrace = erlang:get_stacktrace(), - error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) + catch + error:{gpb_error,_}=Reason -> + erlang:raise(error, Reason, + erlang:get_stacktrace()); + Class:Reason -> + StackTrace = erlang:get_stacktrace(), + error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) end. -endif. @@ -347,6 +361,7 @@ verify_msg(Msg, MsgName, Opts) -> -compile({nowarn_unused_function,v_msg_Signed/3}). +-dialyzer({nowarn_function,v_msg_Signed/3}). v_msg_Signed(#{payload := F1} = M, Path, TrUserData) -> v_type_bytes(F1, [payload | Path], TrUserData), case M of @@ -363,6 +378,7 @@ v_msg_Signed(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fiel v_msg_Signed(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Signed'}, X, Path). -compile({nowarn_unused_function,v_type_bytes/3}). +-dialyzer({nowarn_function,v_type_bytes/3}). v_type_bytes(B, _Path, _TrUserData) when is_binary(B) -> ok; v_type_bytes(B, _Path, _TrUserData) when is_list(B) -> ok; v_type_bytes(X, Path, _TrUserData) -> mk_type_error(bad_binary_value, X, Path). @@ -375,8 +391,9 @@ mk_type_error(Error, ValueSeen, Path) -> -compile({nowarn_unused_function,prettify_path/1}). +-dialyzer({nowarn_function,prettify_path/1}). prettify_path([]) -> top_level; -prettify_path(PathR) -> string:join(lists:map(fun atom_to_list/1, lists:reverse(PathR)), "."). +prettify_path(PathR) -> lists:append(lists:join(".", lists:map(fun atom_to_list/1, lists:reverse(PathR)))). -compile({nowarn_unused_function,id/2}). @@ -569,10 +586,10 @@ get_protos_by_pkg_name_as_fqbin(E) -> error({gpb_error, {badpkg, E}}). gpb_version_as_string() -> - "4.17.6". + "4.21.1". gpb_version_as_list() -> - [4,17,6]. + [4,21,1]. gpb_version_source() -> "file". diff --git a/src/mix_hex_pb_versions.erl b/src/mix_hex_pb_versions.erl index c74d4ac3..c79cc832 100644 --- a/src/mix_hex_pb_versions.erl +++ b/src/mix_hex_pb_versions.erl @@ -1,9 +1,10 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %% -*- coding: utf-8 -*- +%% % this file is @generated %% @private %% Automatically generated, do not edit -%% Generated by gpb_compile version 4.17.6 +%% Generated by gpb_compile version 4.21.1 %% Version source: file -module(mix_hex_pb_versions). @@ -70,9 +71,15 @@ -type '$msg'() :: 'Versions'() | 'Package'(). -export_type(['$msg_name'/0, '$msg'/0]). +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/2}). +-endif. -spec encode_msg('$msg'(), '$msg_name'()) -> binary(). encode_msg(Msg, MsgName) when is_atom(MsgName) -> encode_msg(Msg, MsgName, []). +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/3}). +-endif. -spec encode_msg('$msg'(), '$msg_name'(), list()) -> binary(). encode_msg(Msg, MsgName, Opts) -> verify_msg(Msg, MsgName, Opts), @@ -252,14 +259,21 @@ decode_msg(Bin, MsgName, Opts) when is_binary(Bin) -> -ifdef('OTP_RELEASE'). decode_msg_1_catch(Bin, MsgName, TrUserData) -> try decode_msg_2_doit(MsgName, Bin, TrUserData) - catch Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) + catch + error:{gpb_error,_}=Reason:StackTrace -> + erlang:raise(error, Reason, StackTrace); + Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) end. -else. decode_msg_1_catch(Bin, MsgName, TrUserData) -> try decode_msg_2_doit(MsgName, Bin, TrUserData) - catch Class:Reason -> - StackTrace = erlang:get_stacktrace(), - error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) + catch + error:{gpb_error,_}=Reason -> + erlang:raise(error, Reason, + erlang:get_stacktrace()); + Class:Reason -> + StackTrace = erlang:get_stacktrace(), + error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) end. -endif. @@ -506,11 +520,12 @@ verify_msg(Msg, MsgName, Opts) -> -compile({nowarn_unused_function,v_msg_Versions/3}). +-dialyzer({nowarn_function,v_msg_Versions/3}). v_msg_Versions(#{repository := F2} = M, Path, TrUserData) -> case M of #{packages := F1} -> if is_list(F1) -> - _ = [v_msg_Package(Elem, [packages | Path], TrUserData) || Elem <- F1], + _ = [v_submsg_Package(Elem, [packages | Path], TrUserData) || Elem <- F1], ok; true -> mk_type_error({invalid_list_of, {msg, 'Package'}}, F1, [packages | Path]) end; @@ -526,7 +541,12 @@ v_msg_Versions(#{repository := F2} = M, Path, TrUserData) -> v_msg_Versions(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fields, [repository] -- maps:keys(M), 'Versions'}, M, Path); v_msg_Versions(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Versions'}, X, Path). +-compile({nowarn_unused_function,v_submsg_Package/3}). +-dialyzer({nowarn_function,v_submsg_Package/3}). +v_submsg_Package(Msg, Path, TrUserData) -> v_msg_Package(Msg, Path, TrUserData). + -compile({nowarn_unused_function,v_msg_Package/3}). +-dialyzer({nowarn_function,v_msg_Package/3}). v_msg_Package(#{name := F1} = M, Path, TrUserData) -> v_type_string(F1, [name | Path], TrUserData), case M of @@ -558,11 +578,13 @@ v_msg_Package(M, Path, _TrUserData) when is_map(M) -> mk_type_error({missing_fie v_msg_Package(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Package'}, X, Path). -compile({nowarn_unused_function,v_type_int32/3}). -v_type_int32(N, _Path, _TrUserData) when -2147483648 =< N, N =< 2147483647 -> ok; +-dialyzer({nowarn_function,v_type_int32/3}). +v_type_int32(N, _Path, _TrUserData) when is_integer(N), -2147483648 =< N, N =< 2147483647 -> ok; v_type_int32(N, Path, _TrUserData) when is_integer(N) -> mk_type_error({value_out_of_range, int32, signed, 32}, N, Path); v_type_int32(X, Path, _TrUserData) -> mk_type_error({bad_integer, int32, signed, 32}, X, Path). -compile({nowarn_unused_function,v_type_string/3}). +-dialyzer({nowarn_function,v_type_string/3}). v_type_string(S, Path, _TrUserData) when is_list(S); is_binary(S) -> try unicode:characters_to_binary(S) of B when is_binary(B) -> ok; @@ -580,8 +602,9 @@ mk_type_error(Error, ValueSeen, Path) -> -compile({nowarn_unused_function,prettify_path/1}). +-dialyzer({nowarn_function,prettify_path/1}). prettify_path([]) -> top_level; -prettify_path(PathR) -> string:join(lists:map(fun atom_to_list/1, lists:reverse(PathR)), "."). +prettify_path(PathR) -> lists:append(lists:join(".", lists:map(fun atom_to_list/1, lists:reverse(PathR)))). -compile({nowarn_unused_function,id/2}). @@ -786,10 +809,10 @@ get_protos_by_pkg_name_as_fqbin(E) -> error({gpb_error, {badpkg, E}}). gpb_version_as_string() -> - "4.17.6". + "4.21.1". gpb_version_as_list() -> - [4,17,6]. + [4,21,1]. gpb_version_source() -> "file". diff --git a/src/mix_hex_registry.erl b/src/mix_hex_registry.erl index f70db2bc..ac0eeed8 100644 --- a/src/mix_hex_registry.erl +++ b/src/mix_hex_registry.erl @@ -1,4 +1,4 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %% @doc %% Functions for encoding and decoding Hex registries. diff --git a/src/mix_hex_repo.erl b/src/mix_hex_repo.erl index 7d6d29af..aa5568d3 100644 --- a/src/mix_hex_repo.erl +++ b/src/mix_hex_repo.erl @@ -1,4 +1,4 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %% @doc %% Repo API. diff --git a/src/mix_hex_tarball.erl b/src/mix_hex_tarball.erl index 69271157..3003272b 100644 --- a/src/mix_hex_tarball.erl +++ b/src/mix_hex_tarball.erl @@ -1,4 +1,4 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %% @doc %% Functions for creating and unpacking Hex tarballs. @@ -60,6 +60,11 @@ }} | {error, term()}. create(Metadata, Files, Config) -> + #{ + tarball_max_size := TarballMaxSize, + tarball_max_uncompressed_size := TarballMaxUncompressedSize + } = Config, + MetadataBinary = encode_metadata(Metadata), ContentsTarball = create_memory_tarball(Files), ContentsTarballCompressed = gzip(ContentsTarball), @@ -75,20 +80,23 @@ create(Metadata, Files, Config) -> {"contents.tar.gz", ContentsTarballCompressed} ], - Tarball = create_memory_tarball(OuterFiles), - OuterChecksum = checksum(Tarball), - - UncompressedSize = byte_size(ContentsTarball), - - case {(byte_size(Tarball) > TarballMaxSize), (UncompressedSize > TarballMaxUncompressedSize)} of - {_, true} -> - {error, {tarball, {too_big_uncompressed, TarballMaxUncompressedSize}}}; - {true, _} -> - {error, {tarball, {too_big_compressed, TarballMaxSize}}}; - {false, false} -> - {ok, #{ - tarball => Tarball, outer_checksum => OuterChecksum, inner_checksum => InnerChecksum - }} + case valid_size(ContentsTarball, TarballMaxUncompressedSize) of + true -> + Tarball = create_memory_tarball(OuterFiles), + OuterChecksum = checksum(Tarball), + + case valid_size(Tarball, TarballMaxSize) of + true -> + {ok, #{ + tarball => Tarball, + outer_checksum => OuterChecksum, + inner_checksum => InnerChecksum + }}; + false -> + {error, {tarball, {too_big_compressed, TarballMaxSize}}} + end; + false -> + {error, {tarball, {too_big_uncompressed, TarballMaxUncompressedSize}}} end. -spec create(metadata(), files()) -> @@ -113,21 +121,26 @@ create(Metadata, Files) -> %% ''' %% @end -spec create_docs(files(), mix_hex_core:config()) -> {ok, tarball()} | {error, term()}. -create_docs(Files, #{ - tarball_max_size := TarballMaxSize, tarball_max_uncompressed_size := TarballMaxUncompressedSize -}) -> +create_docs(Files, Config) -> + #{ + docs_tarball_max_size := TarballMaxSize, + docs_tarball_max_uncompressed_size := TarballMaxUncompressedSize + } = Config, + UncompressedTarball = create_memory_tarball(Files), - UncompressedSize = byte_size(UncompressedTarball), - Tarball = gzip(UncompressedTarball), - Size = byte_size(Tarball), - - case {(Size > TarballMaxSize), (UncompressedSize > TarballMaxUncompressedSize)} of - {_, true} -> - {error, {tarball, {too_big_uncompressed, TarballMaxUncompressedSize}}}; - {true, _} -> - {error, {tarball, {too_big_compressed, TarballMaxSize}}}; - {false, false} -> - {ok, Tarball} + + case valid_size(UncompressedTarball, TarballMaxUncompressedSize) of + true -> + Tarball = gzip(UncompressedTarball), + + case valid_size(Tarball, TarballMaxSize) of + true -> + {ok, Tarball}; + false -> + {error, {tarball, {too_big_compressed, TarballMaxSize}}} + end; + false -> + {error, {tarball, {too_big_uncompressed, TarballMaxUncompressedSize}}} end. -spec create_docs(files()) -> {ok, tarball()}. @@ -168,19 +181,20 @@ create_docs(Files) -> metadata => metadata() }} | {error, term()}. -unpack(Tarball, _, #{tarball_max_size := TarballMaxSize}) when - byte_size(Tarball) > TarballMaxSize --> - {error, {tarball, too_big}}; -unpack(Tarball, Output, _Config) -> - case mix_hex_erl_tar:extract({binary, Tarball}, [memory]) of - {ok, []} -> - {error, {tarball, empty}}; - {ok, FileList} -> - OuterChecksum = crypto:hash(sha256, Tarball), - do_unpack(maps:from_list(FileList), OuterChecksum, Output); - {error, Reason} -> - {error, {tarball, Reason}} +unpack(Tarball, Output, Config) -> + case valid_size(Tarball, maps:get(tarball_max_size, Config)) of + true -> + case mix_hex_erl_tar:extract({binary, Tarball}, [memory]) of + {ok, []} -> + {error, {tarball, empty}}; + {ok, FileList} -> + OuterChecksum = crypto:hash(sha256, Tarball), + do_unpack(maps:from_list(FileList), OuterChecksum, Output); + {error, Reason} -> + {error, {tarball, Reason}} + end; + false -> + {error, {tarball, too_big}} end. %% @doc @@ -221,12 +235,13 @@ unpack(Tarball, Output) -> -spec unpack_docs (tarball(), memory, mix_hex_core:config()) -> {ok, contents()} | {error, term()}; (tarball(), filename(), mix_hex_core:config()) -> ok | {error, term()}. -unpack_docs(Tarball, _, #{tarball_max_size := TarballMaxSize}) when - byte_size(Tarball) > TarballMaxSize --> - {error, {tarball, too_big}}; -unpack_docs(Tarball, Output, _Config) -> - unpack_tarball(Tarball, Output). +unpack_docs(Tarball, Output, Config) -> + case valid_size(Tarball, maps:get(docs_tarball_max_size, Config)) of + true -> + unpack_tarball(Tarball, Output); + false -> + {error, {tarball, too_big}} + end. -spec unpack_docs (tarball(), memory) -> {ok, contents()} | {error, term()}; @@ -603,6 +618,12 @@ gzip_no_header(Uncompressed) -> %% Helpers %%==================================================================== +%% @private +valid_size(Binary, infinity) when is_binary(Binary) -> + true; +valid_size(Binary, Limit) when is_binary(Binary) and is_integer(Limit) -> + byte_size(Binary) =< Limit. + %% @private binarify(Binary) when is_binary(Binary) -> Binary; binarify(Number) when is_number(Number) -> Number; diff --git a/src/mix_safe_erl_term.xrl b/src/mix_safe_erl_term.xrl index a177504c..a09c984b 100644 --- a/src/mix_safe_erl_term.xrl +++ b/src/mix_safe_erl_term.xrl @@ -1,4 +1,4 @@ -%% Vendored from hex_core v0.10.0 (d87858a), do not edit manually +%% Vendored from hex_core v0.10.1 (8a53ac8), do not edit manually %%% Author : Robert Virding %%% Purpose : Token definitions for Erlang.