From c68edf26ab8386a823fef0badb7404077f7bb6df Mon Sep 17 00:00:00 2001 From: Krzysztof Rodak Date: Fri, 26 Apr 2024 10:37:07 +0200 Subject: [PATCH 01/10] feat: ios: update tos and pp files --- .../Resources/Docs/privacy-policy.txt | 237 +++++------------- .../Resources/Docs/terms-and-conditions.txt | 197 ++++----------- 2 files changed, 114 insertions(+), 320 deletions(-) diff --git a/ios/PolkadotVault/Resources/Docs/privacy-policy.txt b/ios/PolkadotVault/Resources/Docs/privacy-policy.txt index dfa1bb9ab2..5b70a74b2e 100644 --- a/ios/PolkadotVault/Resources/Docs/privacy-policy.txt +++ b/ios/PolkadotVault/Resources/Docs/privacy-policy.txt @@ -1,225 +1,126 @@ -Parity Technologies Limited (“**We**”; “**us**”; or “**our**”) are committed to protecting and respecting your privacy. +**1. GENERAL INFORMATION** -This policy (together with our terms of use on our websites [https://parity.io](https://parity.io), [https://paritytech.io](https://paritytech.io) and [https://polkadot.io](https://polkadot.io) (the “**Sites**“) and any other documents referred to on it) sets out the basis on which any personal data we collect from you, or that you provide to us, will be processed by us. Please read the following carefully to understand our views and practices regarding your personal data and how we will treat it. +Novasama Technologies GmbH, Schönhauser Allee 163, 10435 Berlin, Germany (hereinafter "**Novasama**" or “**we**”) offers the mobile application Polkadot Vault (hereinafter: “**Vault**”), a non-custodial wallet software that allows the User to turn his/her mobile device, such as smartphone or tablet (hereinafter: “**Storage Device**”), into a cold storage hardware wallet by holding the User’s private cryptographic keys offline while keeping the Storage Device offline. The Vault can be downloaded from the Apple App Store and from the Google Play Store. The User can use the Vault to safekeep their Private Keys, manage their accounts and blockchain-based digital assets (hereinafter: “**Digital Assets**”), send and receive transactions of Digital Assets, and cryptographically sign blockchain transactions. The Vault contains certain features that, inter alia, allow the User to connect the Vault to third-party decentralized applications (hereinafter: “**DApp**”), protocols and services that Novasama does not operate itself (hereinafter: “**Third-Party Services**”). Novasama does not offer Third-Party Services in its own name. Further information about the functions offered in connection with the Vault can be found in Novasama’s General terms and conditions of business and use (hereafter “GTC”). We encourage you to read the GTC carefully as they affect your obligations and legal rights regarding the usage of the Vault. -**What data do we collect from you?** +In connection with the usage of the Vault, no personal data will be processed by Novasama since the Vault will be installed on Users’ Storage Device without Novasama having access to any personal data of the User when using the Vault. However, Novasama may process personal data of persons who visit Novasama’s website https://novasama.io/ (hereinafter each a “**Website** and together “**Websites**”) and/or contact Novasama. Personal data is information that relates to an identified or identifiable natural person. An identifiable natural person is a person who can be identified directly or indirectly, e.g., by means of association with an online identifier (hereinafter: “**Data Subject**”). -The Ethereum and Substrate based blockchain clients written in the programming language Rust known as Parity does not collect information from you, however any information you publish onto a blockchain like Ethereum is public by design. +Novasama takes the protection of personal data very seriously. We treat personal data confidentially, in accordance with this Privacy Notice and applicable data protection law, including, but not limited to the General Data Protection Regulation (hereinafter: “**GDPR**”) and the German Federal Data Protection Act (hereinafter: “**FDPA**”). +This Privacy Notice informs you about how we handle your personal data that is under our control. +Unless otherwise provided in this Privacy Notice, capitalised terms used herein have the meaning determined in the GTC. -If you go to our Sites or utilise other services, we may collect and process the following personal data about you: +**2. CONTROLLER** -- **Information you give us**. This is information about you that you give us by filling in forms on our Sites, filling in forms on the sites of third party vendors providing us with a service, or by corresponding with us by phone, e-mail or otherwise. It includes information you provide when you agree to our contributors license agreement (“**CLA**”), apply to attend one of the events that we host, attend one of the events that we host, apply for a job on our Sites, ask to receive our newsletter and when you report a problem with our Sites. The information you give us may include your name, address, e-mail address and phone number and job application information (e.g. your CV, education data, and picture). +Novasama acts as responsible party and, hence, as controller within the meaning of the GDPR with regard to the personal data processed in connection with the Websites or any contacting of Novasama. A controller is a natural or legal person who alone or jointly with others decides on the purposes and means of the processing of personal data. +If you have any questions regarding this Privacy Notice or the processing of your personal data, do not hesitate to contact us via the following contact details: -- **Information we collect about you**. With regard to each of your visits to our Sites we may automatically collect the following information: - - technical information, including the Internet protocol (IP) address used to connect your computer to the Internet, browser type and version, and versions, operating system and platform; and - - information about your visit, including the full Uniform Resource Locators (URL), page response times and download errors. +**Name:** +**Novasama Technologies GmbH** +**Address:** +**Schönhauser Allee 163, 10435 Berlin, Germany** +**Email:** +**admin@novasama.io** -- **Information we receive from other sources**. This is information we receive about you if you use any of the other websites we operate or the other services we provide or, to the extent permitted by law, publicly accessible information about you on e.g. business social media. We are working closely with third parties (including, for example, recruitment services providers, and event organisation service providers and event partners). We will notify you when we receive information about you from them and the purposes for which we intend to use that information. +**3. PURPOSES AND LEGAL BASES OF DATA PROCESSING BY NOVASAMA** -**Cookies** +**a) General** -Our Sites uses cookies to distinguish you from other users of our Sites. This helps us to provide you with a good experience when you browse our Sites and also allows us to improve our Sites. For detailed information on the cookies we use and the purposes for which we use them see our “**Cookie Policy**” below. +The Vault was built with privacy in mind, and we expect you to use it in a privacy-friendly manner. We intend to provide you with all the necessary tools and opportunities to use the Vault while processing as little personal data as possible. In particular, no personal data will be processed by Novasama in connection with the usage of the Vault. Rather, all personal data provided by the User when using the Vault will be stored locally on the User’s Storage Device and kept offline therein. Should the Vault be used to sign a transaction or to interact with DApps no personal data will be processed or accessed by Novasama. Any data processing in connection with the use of the Vault will, therefore, either be a data processing by a third party through interaction with Third-Party Services according to Section 4.a) of this Privacy Notice or a blockchain data processing according to Section 4.b) of this Privacy Notice, which are both not controlled by Novasama. Other than described under Section 3. b) - d) below, we neither collect your personal data nor process or store it. -**For what purposes do we use your data and what is the legal basis for this use?** +**b) Visiting our Websites** -We may use information held about you in the following ways and relying on the following legal bases: +When visiting our Websites certain personal data is automatically collected every time you call up the Websites and is automatically stored in so-called server log files. The personal data processed in this regard are browser type and version, operating system used, website from which the access is made (referrer URL), host name of the accessing computer, date and time of access as well as IP address of the requesting computer (hereafter referred to as “**Access Personal Data**”). +The processing of Access Personal Data is necessary for technical reasons to provide the Websites in a functional way and to ensure system security. This also applies to the storage of your IP address, which is necessary and, under further conditions, can at least theoretically enable an assignment to your person. In addition to the above-mentioned purposes, we use server log files exclusively for the needs-based design and optimisation of the Websites. We do not combine this data with other data sources, nor do we evaluate the data for marketing purposes. +The Access Personal Data is only stored for the period of time for which it is required to achieve the above-mentioned purposes. Your IP address is stored for a maximum of 7 days for IT security purposes. +The legal basis for the temporary storage and processing of Access Personal Data is Art. 6 (1) sentence 1 lit. b GDPR, which permits the processing of personal data for the fulfilment of a contract or for the implementation of pre-contractual measures. In addition, Art. 6 para. 1 sentence 1 lit. f GDPR serves as the legal basis for the temporary storage of technical Access Personal Data. Our legitimate interest here is to be able to provide you with the Websites in a technically functioning and user-friendly way and to ensure the security of our systems. - As required by Parity to conduct our business and pursue our legitimate interests, in particular: - - to notify you about changes to our service; - - to ensure that content from our Sites are presented in the most effective manner for you and for your computer; - - to administer our Sites and for internal operations, including troubleshooting and statistical purposes; - - to improve our Sites to ensure that content is presented in the most effective manner for you and for your computer; - - to allow you to participate in interactive features of our service, when you choose to do so; - - as part of our efforts to keep our Sites safe and secure; - - to use information you provide to investigate any complaints received from you or from others, about our Sites or our products or services; - - to assess your eligibility for the particular role you applied for; - - to assess your eligibility for any role that we might have available; - - to schedule, arrange and administer events and meetups in which you have expressed an interest (including creating an attendance record for the event and sending anonymised data to the venue including attendees, dietary requirements and accessibility requirements); - - to document the copyright and other rights granted with contributions made under our CLA; - - to use data in connection with legal claims, compliance, regulatory and investigative purposes as necessary (including disclosure of such information in connection with legal process or litigation); and - - Information we receive from other sources: We will combine this information with information you give to us and information we collect about you. We will use this information and the combined information for the purposes set out above (depending on the types of information we receive). +**c) Contacting us** - Where you give us consent: - - we or our carefully selected partners will send you direct marketing in relation to our relevant products and services, or other products and services provided by us, our affiliates and carefully selected partners. However, we will only provide you with marketing related information after you have, where legally required to do so, opted in to receive those communications and having provided the opportunity for you to opt out at any time. - - we place cookies and use similar technologies in accordance with our Cookies Policy and the information provided to you when those technologies are used - - on other occasions where we ask you for consent. We will use the data for the purpose which we explain at that time. +If you contact us, we may collect and process certain information related to your request, such as your name, email addresses and any other data requested by us or data that you choose to provide us with (hereafter together referred to as “**ontact Data**”). - For purposes which are required by law: - - In response to requests by government or law enforcement authorities conducting an investigation. +Contact Data will be processed for the purpose of processing and answering your enquiry and in the event of follow-up questions. -**Relying on our legitimate interests** +If you contact us, our processing activities in this regard are based on our legitimate interests in accordance with Art. 6 (1) sentence 1 lit. f GDPR to provide appropriate response to customer/contact enquiries. In addition, if you contact us within the framework of an existing contractual relationship or in advance for information about our services, the Contact Data you provide to us will be processed for the purpose of processing and answering your contact enquiry in accordance with Art. 6 (1) sentence 1 lit. b GDPR as a legal basis. +The Contact Data will remain with us until the purpose for storing/processing no longer applies (i.e., after processing your enquiry has been completed). The Contact Data will, at the latest, be deleted after one (1) year from the last date when you contacted us regarding the same matter. Mandatory legal provisions – in particular retention periods – remain unaffected. -We have carried out balancing tests for all the data processing we carry out on the basis of our legitimate interests, which we have described above. You can obtain information on any of our balancing tests by contacting us using the details set out later in this notice. +**d) Other processing purposes** -**Withdrawing consent or otherwise objecting to direct marketing** + **i) Compliance with legal requirements:** We also process your personal data to comply with other legal obligations that may apply to us in connection with our business activities, including, but not limited to compliance with mandatory retention periods under commercial, trade or tax law or regulations and laws against money laundering. We process your personal data in accordance with Art. 6 (1) sentence 1 lit. c GDPR as legal basis to fulfil a legal obligation to which we are subject. -Wherever we rely on your consent, you will always be able to withdraw that consent, although we may have other legal grounds for processing your data for other purposes, such as those set out above. In some cases, we are able to send you direct marketing without your consent, where we rely on our legitimate interests. Once we have received notification that you have withdrawn your consent, we will no longer process your information for the purpose(s) to which you originally consented unless there is no other legal ground for the processing. + **ii) Legal enforcement:** We also process your personal data in order to be able to assert our rights and enforce our legal claims, as well as to be able to defend ourselves against legal claims. Finally, we process your personal data to the extent necessary to prevent or prosecute criminal offences. In this context, we process your personal data to protect our legitimate interests pursuant to Art. 6 (1) sentence 1 lit. f GDPR as legal basis, insofar as we assert legal claims or defend ourselves in legal disputes or we prevent or investigate criminal offences. -You have an absolute right to opt-out of direct marketing, or profiling we carry out for direct marketing, at any time. You can do this by following the instructions in the communication where this is an electronic message, or by contacting us using the details set out below. + **iii) Consent:** Please note that we currently do not collect your personal data based on your consent. However, in case you give us consent to process your personal data for certain purposes (e.g., sending information material and offers), the lawfulness of this processing is based on your consent. Consent given can be withdrawn at any time. Please note that the withdrawal is only effective for the future and processing up to that point is not affected. -**Who will we share your data with, where and when?** +**4. OTHER DATA PROCESSING NOT CONTROLLED BY NOVASAMA** -We will share your personal information with: +**a) Interaction with Third-Party Services** -- Any member of our group, which means our subsidiaries, our ultimate holding company and its subsidiaries for : - - website maintenance and security; and - - recruitment and hiring -- Selected third parties including but not limited to: - - business partners and sub-contractors for the performance of any contract we enter into with them or you; - - our newsletter service provider for the purposes of providing you with our newsletter; - - event organisation service providers for the purposes of scheduling and arranging events and meetups in which you have expressed an interest; - - our applicant tracking system service provider for the purposes of assessing your application for a role at Parity; and - - third party developers for and / or providers of website hosting and maintenance. +Using the Vault to cryptographically sign a transaction may require the User to interact with certain Third-Party Services. Any interaction with or enabling such connections may allow such Third-Party Services providers to collect, process, or share certain personal data about you. Please note that Novasama does neither receive, process or store such personal data nor does it control, operate, or manage those Third-Party Services providers. Therefore, Novasama is not responsible for the Third-Party Services providers’ data processing or privacy documentation (policy, notice, statement) and any data protection rights in this regard would need to be exercised against the Third-Party Services provider. When you intend to interact with any such Third-Party Services providers or leave the Vault, we encourage you to read the privacy documentation of the respective Third-Party Service you use or visit. -We will also disclose your personal information to third parties: +**b) Blockchain data processing** -- In the event that we sell or buy any business or assets, in which case we will disclose your personal data to the prospective seller or buyer of such business or assets. -- If Parity Technologies Limited or substantially all of its assets are acquired by a third party, in which case personal data held by it about its customers will be one of the transferred assets. -- If we are under a duty to disclose or share your personal data in order to comply with any legal obligation, or in order to enforce or apply our terms of use and other agreements; or to protect the rights, property, or safety of Parity Technologies Limited, our customers, or others. This includes exchanging information with other companies and organisations for the purposes of fraud protection and credit risk reduction. +Please note that certain data, such as public addresses associated with your wallets and information about transactions associated therewith (hereafter “**Transactions**”), interact with public decentralised blockchain infrastructures and blockchain-based software, including smart-contracts, which work autonomously. “Decentralised” means that there is no single person, including Novasama, who controls the blockchain or stores data available thereon. “Public” means that the access is available for anyone and cannot be restricted. The data entered in a public decentralised blockchain is distributed via the nodes that simultaneously store all records entered into the blockchain. By design, blockchain records cannot be changed or deleted and are said to be “immutable”. Due to the blockchain’s nature, once you start entering information into a blockchain, particularly by carrying out any Transactions, such information, which may be considered personal data, will become publicly available on a blockchain. Please be aware that any Transaction within a blockchain is irreversible and any information, including personal data, entered into a blockchain cannot be deleted or changed. Novasama will never control such information entered in a blockchain nor manage access to it and is, therefore, not responsible for any data processing in this regard. The ultimate decision whether to transact on a blockchain or carry out any Transaction rests with you. Therefore, your ability to exercise certain data protection rights in this regard will be limited. -The data that we collect from you may be transferred to, and stored at, a destination outside the European Economic Area ("EEA"). It may also be processed by staff operating outside the EEA (in our case the US) who works for us or for one of our suppliers. +**c) App Store data processing** -Where information is transferred outside the EEA, and where this is to a stakeholder or vendor in a country that is not subject to an adequacy decision by the EU Commission, data is adequately protected by EU Commission approved standard contractual clauses, an appropriate Privacy Shield certification or a vendor's Processor Binding Corporate Rules. A copy of the relevant mechanism can be provided for your review on request to admin@parity.io. -Our Sites may, from time to time, contain links to and from the websites of our partner networks, and affiliates. If you follow a link to any of these websites, please note that these websites have their own privacy policies and that we do not accept any responsibility or liability for these policies. Please check these policies before you submit any personal data to these websites. +The Vault can be downloaded from the Apple App Store and from the Google Play Store. Please note, that downloading the Vault from an App Store will allow the respective App Store provider to collect, process, or share certain personal data about you (e.g. account information and/or contact details). Please note that Novasama does neither receive, process or store such personal data nor does it control, operate, or manage those App Store providers. Therefore, Novasama is not responsible for the App Store providers’ data processing or privacy documentation (policy, notice, statement) and any data protection rights in this regard would need to be exercised against the App Store provider. When you intend to interact with any such App Store providers, e.g. to download the Vault, we encourage you to read the privacy documentation of the respective App Store provider you use or visit prior. -**Your rights** +**5. DATA RECIPIENTS** -You have the right to **ask us for a copy** of your personal data; to **correct**, **delete** or **restrict** (stop any active) processing of your personal data; and to **obtain the personal data you provide to us for a contract or with your consent in a structured, machine readable format**, and to ask us to **share (port) this data to another controller**. +Within Novasama those persons will get access to your personal data that need it to fulfil our contractual and legal obligations. -In addition, you can **object to the processing** of your personal data in some circumstances (in particular, where we don’t have to process the data to meet a contractual or other legal requirement). +In individual cases we may transmit personal data to our advisors in legal or tax matters, whereby these recipients act independently in their own data protection responsibility and are also obliged to comply with the requirements of the GDPR and other applicable data protection regulations. Furthermore, they are obliged to maintain special confidentiality and secrecy due to their professional status. Other than that, we will not transfer any personal data controlled by us to any third-party recipients. -These **rights may be limited**, for example if fulfilling your request would reveal personal data about another person, where they would infringe the rights of a third party (including our rights) or if you ask us to delete information which we are required by law to keep or have compelling legitimate interests in keeping. Relevant exemptions are included in the GDPR. We will inform you of relevant exemptions we rely upon when responding to any request you make. +**6. DATA TRANSFER TO THIRD COUNTRIES** -To exercise any of these rights, or to obtain other information, such as a copy of a legitimate interests balancing test, you can get in touch with us using the details set out under the Section “**Contact**” below. If you have unresolved concerns, you have the **right to complain** to an EU data protection authority where you live, work or where you believe a breach may have occurred. +We will not transfer any personal data to recipients located in countries outside the EU (European Union) / EEA (European Economic Area). -You have the right to ask us not to process your personal data for marketing purposes. We will usually inform you (before collecting your data) if we intend to use your data for such purposes or if we intend to disclose your information to any third party for such purposes. You can exercise your right to prevent such processing by checking certain boxes on the forms we use to collect your data. You can also exercise the right at any time by contacting us at admin@parity.io. +**7. DURATION OF DATA STORAGE** -**Which entity is my data controller, and which affiliates might my data be shared with?** +We initially process and store your personal data for the duration for which the respective purpose of use requires corresponding storage (see above under Section 3 on the individual processing purposes). This may also include the periods of initiating a contract (pre-contractual legal relationship) and processing a contract. On this basis, personal data is regularly deleted as part of the fulfilment of our contractual and/or legal obligations, unless its temporary further processing is necessary for the following purposes: -The data controller for your information is Parity Technologies Limited of c/o IGNITION LAW Moray House, Floor 1, Moray House, 23-31 Great Titchfield Street, London, United Kingdom, WC1W 7PA. + · Fulfilment of legal storage obligations, which result, for example, from the German Commercial Code (§§ 238, 257 para. 4 HGB) and the German Fiscal Code (§ 147 para. 3, 4 AO). The periods specified there for storage or documentation are up to ten years. -Your data might be shared with our group company Parity Technologies Deutschland GmbH, Glogauer Str. 6, 10999, Berlin, Germany for recruiting purposes and for the management of group functions. -How long will you retain my data? + · Preservation of evidence taking into account the statute of limitations. According to §§ 194 ff. of the German Civil Code (BGB), these limitation periods can be up to 30 years, with the regular limitation period being three years. -Where you are a contributor, customer or a registered user, we will keep your information for the duration of any contractual relationship you have with us, and, to the extent permitted, after the end of that relationship for as long as necessary to perform the purposes set out in this notice. +**8. DATA SUBJECT RIGHTS** -Where we process personal data with your consent, we process the data until you ask us to stop and for a short period after this (to allow us to implement your requests). We also keep a record of the fact that you have asked us not to process your data indefinitely so that we can respect your request in future. +You are entitled to the following rights as a Data Subject under the legal requirements: -For data about your visits to our Sites and where we process personal data for Sites security purposes, we will retain this data for 12 months following your last visit of our Sites. +**a) Right of withdrawal:** You may, in accordance with Art. 7 (3) GDPR, at any time withdraw any consent you provided to allow us to process your personal data. Please note that the withdrawal only takes effect for the future. Processing that took place before the withdrawal is not affected. However, please note that we currently do not collect your personal data based on your consent. -Data you provided to us in the course of your job application will be kept for 6 months, if your application was not successful. If you enter in an employment relationship with us, the relevant information will be kept for the duration of the employment contract as part of your personnel file. +**b) Right to information/access:** You are entitled at any time, within the framework of Art. 15 GDPR, to request confirmation from us as to whether we are processing personal data relating to you. If this is the case, you are also entitled, within the framework of Art. 15 GDPR, to receive information about this personal data as well as certain other information (including processing purposes, categories of personal data, categories of recipients, planned storage period, the origin of the data, the use of automated decision-making and, in the case of third country transfers, the appropriate safeguards) and a copy of your personal data. The restrictions of § 34 FDPA apply. +**c) Right to rectification:** You are entitled to request us to rectify the personal data stored about you if it is inaccurate or incorrect, in accordance with Art. 16 GDPR. -Laws may require us to hold certain information for specific periods. In other cases, we may retain data for an appropriate period after any relationship with you ends to protect itself from legal claims, or to administer its business. +**d) Right to erasure:** You are entitled, under the conditions of Art. 17 GDPR, to demand that we delete personal data relating to you without delay. The right to erasure does not apply if the processing of the personal data is necessary, for example, to comply with a legal obligation (e.g., statutory retention obligations) or to assert, exercise or defend legal claims. Furthermore, the restrictions of § 35 FDPA apply. -**How you protect my data** +**e) Right to restrict processing:** You are entitled to demand that we restrict the processing of your personal data under the conditions of Art. 18 GDPR. -We strive to maintain the highest standards of security and Parity has put in place robust technical and organizational measures for the protection of your data in accordance with the current, general state of the art technologies, especially to protect the data against loss, falsification or access by unauthorized third persons. However the transmission of information via the internet is not completely secure. So, whilst we will do our best to protect your personal data, we cannot guarantee the security of your data transmitted to our Sites. Any transmission is at your own risk. Once we have received your personal data we will use strict procedures and security features to prevent unauthorized access. +**f) Right to data portability:** You are entitled, under the conditions of Art. 20 GDPR to demand that we hand over to you the personal data concerning you that you have provided to us, in a structured, common and machine-readable format. Note that this right only applies to automated information which you initially provided consent for us to use or where we used the information to perform a contract with you. However, we are currently not processing your personal data based on your consent or based on performance of a contract with you. -Where we have given you (or where you have chosen) a password which enables you to access certain parts of our Sites, you are responsible for keeping this password confidential. We ask you not to share a password with anyone. +**g) Right of objection:** You are entitled to object to the processing of your personal data under the conditions of Art. 21 GDPR, so that we must stop processing your personal data. The right to object only exists within the limits provided for in Art. 21 GDPR. In addition, our interests may conflict with the termination of processing, so that we are entitled to process your personal data despite your objection. -**Cookie-policy** +**h) Right of appeal to a supervisory authority:** Subject to the conditions of Art. 77 GDPR, you have the right to lodge a complaint with a competent supervisory authority. A list of data protection supervisory authorities in Germany and their contact details can be found here. As a rule, the Data Subject can turn to the supervisory authority at his/her habitual residence or place of work or Novasama’s registered office. The supervisory authority responsible for Novasama is the Berlin Commissioner for Data Protection and Freedom of Information (Der Berliner Beauftragte für Datenschutz und Informationsfreiheit) -Cookies are small text files that are placed on your computer by the websites that you visit. They are widely used in order to make websites work, or work more efficiently, as well as to provide information to the owners of the site. The use of cookies is now standard for most websites. If you are uncomfortable with the use of cookies, you can manage and control them through your browser, including removing cookies by deleting them from your ‘browser history’ (cache) when you leave the site. See the subsection “How to manage cookies” for further information +**Other concerns:** For further data protection questions and concerns, please contact us under the contact details provided in Section 2 above. -**Necessary cookies** +**9. REQUIREMENT TO PROVIDE DATA** -The law states that we can store cookies on your device if they are strictly necessary for the operation of this site. To set all other types of cookies we need your permission. Necessary cookies help make a website usable by enabling basic functions like page navigation and access to secure areas of the website. The website cannot function properly without these cookies. +Visiting our Websites requires you to provide certain personal data to us, as described in Section 3.b) above. Other than that, you are not required to provide any personal data to us. However, if you decide not to provide your personal data to us, you may not be able to contact us and/or we will not be able to contact you, e.g., to respond to your enquiries or questions. -**Parity Technologies’ use of cookies** +**10. AUTOMATED DECISION MAKING / PROFILING** -The only cookie set on Parity Technologies’ websites is the "cfduid" cookie. This cookie is set by a third party, CloudFlare (a content delivery network service), and is necessary for the website to function properly as it is used to identify trusted web traffic. It does not correspond to any user ID in the web application, nor does the cookie store any personally identifiable information. In addition, it’s a “first-party” cookie bound to Parity’s hostname and not accessible from anywhere else, which makes it unusable for tracking purposes. Where technically possible it is also marked as “Secure” which would only allow its transmission over encrypted channels. [https://support.cloudflare.com/hc/en-us/articles/200170156-What-does-the-CloudFlare-cfduid-cookie-do-](https://support.cloudflare.com/hc/en-us/articles/200170156-What-does-the-CloudFlare-cfduid-cookie-do-) +We do not use your personal data to make any automated decision making or profiling (meaning an automated analysis of your personal circumstances). -This cookie expires after 1 year. +**11. CHILDREN PERSONAL DATA** -**How to manage cookies** +The Vault is not intended for the use of children (under 18 years old). We do not knowingly market to, solicit, process, collect, or use personal data of children. -Current versions of web browsers offer enhanced user controls regarding the placement and duration of both first and third party cookies. Search for "cookies" under your web browser's “Help menu” for more information on cookie management features available to you. You can enable or disable cookies by modifying the settings in your browser. You can also find out how to do this, and find more information on cookies at www.allaboutcookies.org. However, if you choose to disable cookies in your browser, you may be unable to complete certain activities on our Sites or to correctly access certain parts of it. If you would like more information about interest-based advertising, including how to opt-out of these cookies, please visit [ http://youronlinechoices.eu/](http://youronlinechoices.eu/). +If we become aware that a child has provided us with personal data, we will use commercially reasonable efforts to delete such information from our database within a reasonable timeframe. If you are the parent or legal guardian of a child and believe that we have collected personal data from your child, please contact us. -**Changes to our privacy policy** +**12. CHANGES TO THIS PRIVACY NOTICE** -Any changes we make to our privacy policy in the future will be posted on this page and, where appropriate, notified to you by e-mail. Please check back frequently to see any updates or changes to our privacy policy. - -**Contact** - -Questions, comments and requests regarding this privacy policy are welcomed and should be addressed to admin@parity.io or by writing to Parity Technologies Limited of c/o IGNITION LAW Moray House, Floor 1, Moray House, 23-31 Great Titchfield Street, London, United Kingdom, WC1W 7PA. - -**Supplemental privacy notice for event participants** - -"We", "our", "Parity" – refers to Parity Technologies Limited. - -This notice supplements our Privacy Notice and describes how we collect, use, share and retain additional personal data collected when you participate in a Parity event (whether as an attendee, guest, or speaker), and how to access and control this additional data. Please let us know if you have any questions about this supplemental notice. - -**What additional data do we collect from you:** - -**Event registration** - -When you register to participate in a Parity event we will collect some or all of the following information from you directly or we will receive it from Eventbrite or Meetup: - -- Name -- Meetup or Eventbrite profile link -- Organisation -- Email address -- Dietary requirements -- Accessibility requirements - -When you book an event through Eventbrite or Meetup you will also have to agree to their terms and conditions of service. Please note that Eventbrite and Meetup are third-party services that are not owned or managed by Parity. This policy only refers to the way Parity will use your information. - -If you wish to attend one of our events but do not wish to use Eventbrite or Meetup to book a place, please contact the event organiser. Contact details for each event are provided on the event booking page. - -**Event photography and audio / video recordings** - -We frequently take photos and record audio and/or video at our events. If so, we may make and store photographs containing your likeness and recordings of your voice and likeness. We may associate your image and the sound of your voice with your name if you are identified during the recording or identify yourself by name. - -If you do not want your photograph to be taken or to be featured in video or audio of an event please let a member of our team know. - -**What we do with this additional data and why:** - -**Event registration data** - -We may use this information for the purposes of scheduling, organising and administering the event, this includes but is not limited to: - -- registering you to attend the event; -- sending you an email to you to confirm your registration and provide you with updates regarding the event; -- tracking and administering dietary and accessibility requirements; and -- organising and arranging an appropriate venue and refreshments. - -**Event photography and audio or video recordings** - -We may use, edit, copy, exhibit, publish, or distribute photos and audio or video recording from our events for the purposes of promoting our events and Parity. -When we share this additional data - -**Event registration data** - -Unless otherwise stated we use Meetup or Eventbrite to manage online registration for our events. We may share your personal data with Meetup or Eventbrite (or an alternative service provider), event partners (including but not limited to: event space providers, caterers and security service providers) and partner organisations (for example partners with whom we are joint hosting or presenting) as needed to provide you with information and services associated with the event and so as to administer the event itself. - -**Event photography and audio or video recordings** - -We may publish our or distribute photos and audio or video recording from our events via social media, including Twitter, Telegram, and LinkedIn. In doing so we will share those photos, audio or video with those services and their users. - -**How long do we retain your data?** - -**Event Registration Data** - -If you have informed us that you wish to be contacted about future events we will keep your data until you tell us that you no longer wish to be contacted. We will check from time to time that you still wish to hear from us. If you have informed us that you do not wish to be contacted about events we will delete your information within eight weeks of the event. - -Event photography and audio or video recordings - -Any photos and audio or video recording from our events that we choose not to use for the purposes of promoting our events and Parity will be deleted within eight weeks of the event. - -**Changes to this supplemental policy** - -We keep this policy under regular review and we will post any updates on this webpage. - -**How to contact us** - -Please contact us at admin@parity.io if you have any questions about this supplemental policy or the information we hold about you. -Statutory information - -**Statutory information about Parity Technologies Limited:** - -- Registered in England and Wales -- Registered Number: 09760015 -- Registered Office: Ignition Law, Moray House Floor 1, 23-31 Great Titchfield Street, London, United Kingdom, WC1W 7PA. +We keep this Privacy Notice under regular review and may update it at any time. If we make any changes to this Privacy Notice, we will change the “Last Updated” date above. Please review this Privacy Notice regularly to check for any updates. The current version of the Privacy Notice can be accessed at any time on https://novasama.io/vault-privacy. +Last Updated: February 5, 2024 diff --git a/ios/PolkadotVault/Resources/Docs/terms-and-conditions.txt b/ios/PolkadotVault/Resources/Docs/terms-and-conditions.txt index f309609586..2094b0dd47 100644 --- a/ios/PolkadotVault/Resources/Docs/terms-and-conditions.txt +++ b/ios/PolkadotVault/Resources/Docs/terms-and-conditions.txt @@ -1,194 +1,87 @@ -**POLKADOT VAULT MOBILE APPLICATION - END USER LICENCE AGREEMENT** +**General terms and conditions of business and use** +**1. Basic Provisions; Risk Information; No Financial Service** -**Parity Technologies Limited** is a company registered in England and Wales under company number 09760015, with its registered office at c/o Ignition Law, 1 Sans Walk, London, England, EC1R 0LT ("**Parity**"). Parity operates this Polkadot Vault mobile application (the "**App**"). +**1.1** Novasama Technologies GmbH, Schönhauser Allee 163, 10435 Berlin, Germany (hereinafter: “**Novasama**”) offers the mobile application Polkadot Vault (hereinafter: “**Vault**”) to customers as Free-Ware free of charge. The Vault is a non-custodial wallet software that allows the User to turn his/her mobile device, such as smartphone or tablet (hereinafter: “**Storage Device**”), into a cold storage hardware wallet by holding the User’s private cryptographic keys (hereinafter: “**Private Key**”) offline while keeping the Storage Device offline. Novasama does neither store, nor has access to or control over a User's Private Key and seed recovery phrase (hereinafter: “**Mnemonic Phrase**”) at any time. -In this document, when we refer to "**we**", "**us**" or "**our**", we mean Parity; and when we refer to "**you**" or "**your**" we mean you, the person downloading, accessing and/or using the App. -**1. Understanding these terms** +**1.2** The User can use the Vault to safekeep their Private Keys, manage their accounts and blockchain-based digital assets (hereinafter: “**Digital Assets**”), send and receive transactions of Digital Assets, and cryptographically sign blockchain transactions. - 1.1 This end user license agreement together with appendix 1 to it and our instructions referred to in it (this "**EULA**") describes how you may download the App and access and/or use the App. By downloading, accessing and/or using the App, this EULA will apply to you and you agree to the terms of this EULA. You should therefore read the terms carefully before downloading, accessing and/or using the App. If any written instruction we have given you is inconsistent with the terms set out in this document, you should comply with our instructions and in doing so you will not be in breach of the inconsistent term of this document. +**1.3** By using the Vault, the User confirms that the User is aware of the inherent risks associated with the use of cryptographic and blockchain-based systems and that the User is experienced with securing Private Keys and handling Digital Assets. The User is aware that Digital Asset markets can be highly volatile due to various factors such as speculation, advancing technology, or changes in the regulatory environment and may involve financial risks. Blockchain transactions signed by using the Private Key stored in the Vault and validated by the blockchain network are irrevocable and irreversible, and there is no possibility to retrieve Digital Assets that have been transferred. - 1.2 When certain words and phrases are used in this EULA, they have specific meanings (these are known as "**defined terms**"). You can identify these defined terms because they start with capital letters (even if they are not at the start of a sentence). Where a defined term is used, it has the meaning given to it in the section of this EULA where it was defined (you can find these meanings by looking at the sentence where the defined term is included in brackets and speech marks). +**1.4** The User acknowledges that Novasama offers a non-custodial wallet solution. The User is responsible for storing and securing the User’s Mnemonic Phrase and Private Keys, as well as any backups thereof. In particular, the User acknowledges that the failure or loss of the Storage Device can lead to the irreversible loss of all information stored in the Vault including the Mnemonic Phrase and/or Private Key. Therefore, the User commits to keeping a back-up copy of his/her information, including Mnemonic Phrase and Private Key, separate from the Vault and from the Storage Device altogether. - 1.3 In order to access and/or use the App it must be downloaded on to a smartphone or other mobile device running either the iOS or Android operating systems (the device you use, "**Device**"). In order to download the App, you will need Internet access. +**1.5** Novasama does not store Mnemonic Phrases and Private Keys for the User, nor does it have any backups or access to the User’s Mnemonic Phrase and Private Keys. In the event of loss of the Mnemonic Phrase and Private Keys by the User, Novasama will not be able to recover the User's Private Keys or otherwise restore access to the Vault or any Digital Assets. Novasama is not responsible for the loss of the User’s Mnemonic Phrase or Private Keys. In case of loss, only the User himself can recover his/her Wallet. +**1.6** The User is aware that the use of blockchain infrastructures and the processing of blockchain transactions may result in network fees, which shall be borne by the User. Novasama does not charge the User with these network fees and cannot influence these costs. +**1.7** Novasama does not provide any financial services, in particular Novasama does not give any investment recommendations or advice and does not provide any trading or crypto custody services. Novasama is also not a provider of Digital Assets, does not offer Digital Assets for sale or purchase. The User is responsible for the tax treatment, in particular income tax treatment, of the profits from the purchase or sale of Digital Assets and use of other services. - 1.4 Please note that: +**2. Scope of Application; Amendment of the General Terms and Conditions of Business and Use** - 1.4.1 to download the App, you must also review and agree to the additional app terms set out in appendix 1 to this EULA and any other terms and conditions imposed by the app store from which you have downloaded the App; and +**2.1** These General Terms and Conditions of Business and Use (hereinafter: “**GTC**”) apply to contracts concluded between Novasama and the contractual partner (hereinafter: “**User**”) (hereinafter: “**User Agreement**”). The contract is concluded by downloading the Vault on the User’s Storage Device subject to these GTC. The use of the Vault is only permitted to legal entities, partnerships and natural persons with unlimited legal capacity. In particular, minors are prohibited from using the Vault. +‍ - 1.4.2 we will not collect any personal information from or in relation to you, including from your downloading, accessing and/or use of the App. If you contact us, we only use your personal information in accordance with our privacy policy (available at [*www.parity.io/privacy*](www.parity.io/privacy)). +**2.2** The application of the User’s general terms and conditions is excluded. Deviating, conflicting or supplementary general terms and conditions of the User shall only become part of the contract if and to the extent that Novasama has expressly agreed to their application in writing. This consent requirement shall apply in any case, even if for example Novasama, being aware of the general terms and conditions of the contractual partner, accepts payments by the contractual partner without reservations. -**2. The App** +**2.3** The current version of the GTC is published on Novasama’s website under https://novasama.io, indicating the date of the last update to the GTC. By downloading or updating the Vault, the User accepts the version of the GTC available at the time of his/her latest download or update. - 2.1 Subject to the terms of this EULA, the App is made available to you free of charge. The App does not connect to any computer system (other than the Device on which you install it) and does not gather or transmit to us or any other person any data in relation to you or your use of the App. +**3. Functions of the Vault; User’s Duty of Care; Third-Party Services.** - 2.2 You are responsible for making all arrangements necessary for you to have access to and use of the App. You should not allow any other person to access and/or use the App on your Device. +**3.1** The Vault allows the User, *inter alia*, to store his/her Private Keys and Mnemonic Phrase offline, to create multiple accounts with derivation paths using his/her Mnemonic Phrase, and to sign transactions or services related to Digital Assets in an air-gapped way without connecting the Storage Device to the internet and/or to other devices. The Vault is native to the Polkadot ecosystem and can be used for any supported blockchain. Novasama continues to develop the Vault on a regular basis, so that the services offered may be subject to change. The presentation of the Vault only reflects the current functionality and does not constitute a binding offer for future services. - 2.3 The App and the content on it are provided for general information purposes only. They are not intended to amount to advice on which you should rely. +**3.2** To use the Vault, the User must choose a Storage Device which the User is willing to permanently disconnect from the internet and from other devices. The User must reset this Storage Device to factory settings, download the Vault and disconnect the Storage Device from the internet and from all other devices. The Vault will then guide the User through the set-up process. The User acknowledges that, once the Vault is set-up, its security benefits as a hardware wallet might be corrupted if the Storage Device is ever connected to the internet and/or to other devices. The User is responsible for keeping the Storage Device safe and offline at all times. Furthermore, the User must frequently update the metadata about blockchain network specifications (hereinafter: “**Metadata**”) stored in the Vault. Otherwise, the User might not be able to, e.g., sign transactions for as long as the Metadata in the Vault is outdated. Up-to-date Metadata is currently provided by Novasama as well as by other providers and can be imported into the Vault in an air-gapped way while keeping the Storage Device offline. - 2.4 You may only access and/or use the App for your own domestic, private and non-commercial use. +**3.3** From time to time, Novasama may release updated versions of the Vault software. Should the User decide to update the Vault, the User must reset the Storage Device and delete the Vault and the information contained therein prior to connecting the Storage Device to the internet. After that, the User must download and set-up the updated version of the Vault again and add his/her Private Keys, as described in Section 3.2. The User’s obligation to keep back-up copies of his/her information, including Mnemonic Phrase and Private Key, remains unaffected (cf. Section 1.4). - 2.5 Subject to clause 2.6, the App (once downloaded on to a Device in accordance with this EULA) is designed to enable you to: +**3.4** The Vault contains certain features (hereinafter: “**Vault Features**”) that, inter alia, allow the User to connect the Vault to third-party decentralized applications (hereinafter: “**DApp**”), protocols and services that Novasama does not operate itself (hereinafter: “**Third-Party Services**”, cf. Section 4 below). Novasama does not offer Third-Party Services in its own name. The conditions of service provisions for Third-Party Services, if any, shall be governed exclusively by the applicable contractual provisions between the User and the respective provider of the Third-Party Services. Novasama continues to develop the Vault Features on a regular basis, so that the Vault Features offered and Vault's compatibility with Third-Party Services may be subject to change. The presentation of the Vault and the Vault Features in the Vault only reflects the current functionality and does not constitute a binding offer for future services.‍ - 2.5.1 generate private keys using a recovery phrase ("**Private Key(s**)") and a corresponding public key and store them on such Device; +**4. Conditions of Service; GNU GPLv3** - 2.5.2 verify and sign transactions on Blockchains (as defined below) using the relevant Private Key ("**Digital Signature**"); and +**4.1** The User's right to use the Vault is limited to the respective state of art. Novasama may temporarily restrict the Vault or certain Vault Features if this is necessary due to capacity limits, to maintain the security or integrity of the software, servers or services or to carry out technical measures, e.g. maintenance work serving the proper or improved service of the Vault. In these cases, Novasama will take the User’s legitimate interests into account, e.g. by providing appropriate information about planned maintenance work in advance. Section 6 of the GTC remains unaffected. - 2.5.3 when used in conjunction with certain Third Party Services (which are defined in clause 4.3), can be used to broadcast transactions on the relevant Blockchains, +**4.2** To the extent the User connects his/her Vault to Third-Party Services or relies on content or data from third party providers, Novasama does not warrant their accuracy, completeness or timeliness. No contractual relationship exists between Novasama and the Third-Party Service providers and the Third-Party Service providers are not acting as agents of or at the direction of Novasama. Novasama has no technical, legal or organizational means to influence Third-Party Services. Novasama is not liable for any damages incurred by the User due to the use of Third-Party Services, in particular when signing transactions or importing Metadata, such as in case of bridged tokens, unavailability and customization of DApps and protocols, transactions to incompatible, incorrect or unassigned wallet addresses, transactions to DApps, failure of nodes or unavailability of blockchain networks, hacker attacks on DApps, or inaccurate Metadata imported from Third-Party Service providers. +**4.3** Novasama reserves all intellectual property rights in and to the Vault, Vault Features, its software, content, data, or other material. Novasama provides the Vault software code on an "open source" basis in accordance with the terms of the GPL 3.0 license, which can be found here: https://opensource.org/licenses/GPL-3.0, and make the source code of the Vault available here https://github.com/novasamatech. You are free to use, modify and distribute the software code of the Vault in accordance with the terms of GPL 3.0. -(the "**App** **Functionality**"). +**5. Fees** - 2.6 The App Functionality the App, can only be used on the Ethereum public blockchain protocol, blockchain protocols built on our "Substrate" technology, including Kusama and Polkadot, and other blockchain protocols as are indicated within the App itself ("**Blockchain(s)**"). You are responsible for your choice of and interaction with the relevant Blockchain. +Blockchain network fees which are due for the execution of transactions shall be borne by the User. Novasama does not charge the User with these network fees and cannot influence these costs. Furthermore, Novasama has no control over the fees charged by the Third-Party Services. - 2.7 The App is not itself part of any blockchain. For this reason, we will have no liability to you in relation to any activity on any blockchain or the performance or availability of any blockchain. In addition, we do not guarantee that a Digital Signature will result in the related transaction being recorded on the relevant Blockchain. You are responsible for ensuring that any transactions you broadcast, or Digital Signatures you create, conform to the applicable rules of the relevant Blockchain. +**6. Liability of Novasama; Force Majeure** - 2.8 You should only download, access and/or use the App if you are familiar with interacting with the Blockchains. We recommend you learn about and understand the basics of the Blockchains in connection with which you intend to use the App before downloading, accessing and/or using the App. +**6.1** Except in case of intentional misconduct (*Vorsatz*) or gross negligence (*grobe Fahrlässigkeit*), any liability of Novasama shall be excluded for any and all claims arising in connection to the Vault provided to the Customer as Free-Ware free of charge. Warranty obligations shall only arise if Novasama has fraudulently concealed a possible defect in the Vault or the contractual services. - 2.9 The purpose of the App is to provide the App Functionality on a Device which is not connected to any form network or the internet. The App should only ever be used on an offline Device. Once you have downloaded, installed and set up the App on the Device, it is very important that you follow the instructions we provide on our website (available at [https://github.com/paritytech/parity-signer](https://github.com/paritytech/parity-signer)) to ensure the Device is not connected to any network or the internet. +**6.2** The limitations of liability according to Section 6.1 do not apply (i) concerning damages arising from injury to life, body or health, (ii) as far as Novasama has assumed a guarantee, (iii) to claims of the User according to the Product Liability Act (*Produkthaftungsgesetz*), and (iv) to claims of the User according to any applicable data privacy laws. - 2.10 You are responsible for the use and security of any Device on which you have installed the App. We will have no liability to you for any losses or damages you incur in respect of (i) access and/or use of the App (including the creation of any Digital Signature or loss of Private Keys) as a result of unauthorised persons gaining access to your Device; or (ii) your Device being compromised or corrupted. +**6.3** The liability provisions in Sections 6.1 and 6.2 shall also apply to the personal liability of the executive bodies, legal representatives, employees and vicarious agents of Novasama. -**3. Your account and password** +**6.4** If the User suffers damages from the loss of data, Novasama is not liable for this, as far as the damages would have been avoided by a regular and complete backup of all relevant data by the User. - 3.1 You will need to register an account on the App in order to make full use of the App ("**Account**"). If you register an Account, you will be asked to provide certain information (such as your email address) and to create a pin code and a seed recovery phrase, as part of our security procedures. The information relating to your Account is never transmitted to us. You must treat such pin code and recovery phrase as confidential and you must not disclose it to any third party. Your recovery phrase is used to generate your Private Key, so if you lose your recovery phase, you will not be able to regenerate your Private Key to recover your Account. This may mean you are unable to access any digital currency, token and cryptocurrency associated with such Private Keys and/or create any Digital Signatures. You should ensure that you have taken appropriate steps to securely back-up any of your data stored on your Device (including the recovery phrase and Private Keys) so that such data is accessible in these circumstances. +**6.5** Novasama takes all possible measures to enable the User to access the Vault and the Vault Features. In the event of disruptions to the technical infrastructure, the internet connection or a relevant blockchain, Novasama shall be exempt from its obligation to perform. This also applies if Novasama is prevented from performing due to force majeure or other circumstances, the elimination of which is not possible or cannot be economically expected of Novasama. - 3.2 You are responsible for any unauthorised access and/or use of your App or Account login details. +**6.6** Liability in any other event but Section 6.1 to 6.5 above is excluded. -**4. Acceptable use** +**7. Indemnities** -*General* +**7.1** The User agrees to indemnify Novasama to the extent liable under statutory law from all claims, which other Users or other third parties assert for infringement of their rights against Novasama due to the User’s use of the Vault or other Third-Party Services. - 4.1 We provide software code in the App on an "open source" basis in accordance with the terms of the GPL 3.0 licence, which can be found here: [*https://opensource.org/licenses/GPL-3.0*](https://opensource.org/licenses/GPL-3.0), ("GPL 3.0") and make the source code of the App available at [*https://github.com/paritytech/parity-signer*](https://github.com/paritytech/parity-signer). You are free to use, modify and distribute the software code in the App in accordance with the terms of GPL 3.0. In the case of any conflict between the terms of GPL 3.0 and the terms of this EULA in relation to your use of the software code in the App, the terms of GPL 3.0 shall prevail. +**7.2** In this case, the User assumes all necessary costs of legal defense of Novasama, including all statutory court and attorney fees. This does not apply if the User is not responsible for the infringement. - 4.2 When accessing and/or using the App, you agree: +**7.3** In case of a claim asserted by a third party, the User is obliged to the extent liable under statutory law to provide Novasama with immediate, truthful and complete information necessary for the examination of claims and defense. - 4.2.1 not to access and/or use the App in any unlawful manner, for any unlawful purpose or in any manner inconsistent with this EULA; +**8. Data Protection** - 4.2.2 not to infringe our intellectual property rights or those of any third party in relation to your use of the App (to the extent that such access and/or use is not licensed under this EULA); and +‍Novasama informs the User about Novasama’s processing of personal data, including the disclosure to third parties and the rights of the User as an affected party, in the data protection information. - 4.2.3 to comply with all technology control or export laws and regulations that apply to the technology used or supported by the App. +**9. Final Provisions** -*Use with other software and hardware* +**9.1** Novasama is entitled to transfer its rights and obligations under the User Agreement in whole or in part to third parties with a notice period of four weeks. In this case, the User has the right to terminate the User Agreement without notice. - 4.3 When you make use of the App, you may use the App Functionality to enter into transactions on the relevant Blockchain (for example, transferring crypto currency, entering into a smart contract, or purchasing goods) (“**Transactions**”). You may also use the App in conjunction with other services or software (including cryptographic wallet technology such as software wallets) which are provided by a person or company other than Parity (“**Third Party Services**”). You agree and understand that you are responsible for any Transaction which you enter into and we do not operate or control any such Third Party Services. We have no responsibility for any Transactions you enter into and your use of Third Party Services is at your sole risk and we provide no warranty or guarantee of any in respect of Third Party Services. You further agree that under no circumstances will we be liable to you for any losses or damages arising from any Transactions or any interactions between you and the provider of any such Third Party Services or for any information that such Third Party Services provider provides you or you to them. +**9.2** Should individual provisions of these GTC be or become invalid or unenforceable in whole or in part, this shall not affect the validity of the remaining provisions. The invalid or unenforceable provision shall be replaced by the statutory provision. If there is no statutory provision or if the statutory provision would lead to an unacceptable result, the parties shall enter negotiations to replace the invalid or unenforceable provision with a valid provision that comes as close as possible to the economic purpose of the invalid or unenforceable provision. -*Bugs and Viruses* +**9.3** The User Agreement including these GTC shall be governed by German law. The application of the UN Convention on Contracts for the International Sale of Goods is excluded. For consumers domiciled in another European country but Germany, the mandatory provisions of the consumer protection laws of the member state in which the consumer is domiciled shall also apply, provided that these are more advantageous for the consumer than the provisions of the German law. - 4.4 We do not guarantee that the App will be totally secure or free from bugs or viruses. +**9.4** For users who are merchants within the meaning of the German Commercial Code (*Handelsgesetzbuch*), a special fund (*Sondervermögen*) under public law or a legal person under public law, Berlin shall be the exclusive place of jurisdiction for all disputes arising from the contractual relationship. - 4.5 You must not misuse the App by knowingly introducing viruses, trojans, worms, logic bombs or other material which is malicious or technologically harmful. By breaching this provision, you would commit criminal offences. +**9.5** In the event of a conflict between the German and the English version of these GTC, the German version shall prevail. -**5. Intellectual property** +Last Updated: February 28, 2024 - 5.1 As we refer to above, we grant to you a licence to use the software code in the App on the terms of GPL 3.0. This right does not apply to the Parity name and mark, the Polkadot Vault product names, and any texts, designs, graphics, photographs and images contained in the App, which you are not entitled to use (other than through the use of the App on your Device in accordance with this EULA) or modify in any circumstances . We reserve all other rights. - - 5.2 We are the owner or licensee of all intellectual property rights in the App and its content, the Parity name and mark and Polkadot Vault product names and images. Those works are protected by intellectual property laws and treaties around the world. All such rights are reserved. - - 5.3 You are not granted any right to use, and may not use, any of our intellectual property rights other than as set out in this EULA. You must not use the App (or any part of it or its content) for commercial purposes. - - 5.4 Any communications or materials you send to us by electronic mail or other means will be treated as non-proprietary and non-confidential. We are free to publish, display, post, distribute and otherwise use any ideas, suggestions, concepts, designs, know-how and other information contained in such communications or material for any purpose, including, but not limited to, developing, manufacturing, advertising and marketing us and our products. - -**6. Our liability** - - 6.1 Nothing in this EULA excludes or limits our liability for: - - 6.1.1 death or personal injury caused by our negligence; - - 6.1.2 fraud or fraudulent misrepresentation; and - - 6.1.3 any matter in respect of which it would be unlawful for us to exclude or restrict our liability. - - 6.2 The App is built on open source software and made available in accordance with this agreement as an open source community project. Accordingly, we make the App (and both the source code and object code in it) available on an "as is" basis. This means that we cannot guarantee or warrant to you that the App is free from errors or defects. - - 6.3 It is possible that as a result of an error or defect the version of the App stored on your Device may become corrupt and unusable so that it may not be possible to retrieve the data stored on it (including any Private Keys). You should ensure that you have taken appropriate steps to securely back-up any of your data (including any Private Keys) stored on your Device so that it is not lost in these circumstances. Save if we cause damage to your Device or other digital content and such damage would not have occurred if we had exercised reasonable care and skill, as the App is free for you to access and/or use and we receive no data in relation to you from your use of it, we will not be liable to you in any way if the App stops working properly or at all, including where any data stored in the App is lost or corrupted. - - 6.4 Nothing in this EULA affects your statutory rights. Advice about your statutory rights is available from your local Citizens' Advice Bureau or Trading Standards Office. - - 6.5 We only supply the App for domestic and private use. You agree not to use the App, or any content on the App, for any commercial or business purposes and we have no liability to you for any loss of profit, loss of business, business interruption, or loss of business opportunity. - - 6.6 The App may contain inaccuracies or typographical errors. We make no representations about the reliability, availability, timeliness or accuracy of the content included on the App. - - 6.7 We assume no responsibility for the content of any websites or services which you use the App to authenticate transactions on. We will not be liable for any loss or damage that may arise from your use of them. - - 6.8 Save as set out in clause 6.1 above, our maximum liability to you under this EULA is £100. - -**7. Suspension and termination** - - 7.1 Either you or we may terminate this EULA at any time for any reason. - - 7.2 If you breach any of the terms of this EULA, we may immediately do any or all of the following (without limitation): - - 7.2.1 issue a warning to you; - - 7.2.2 temporarily or permanently withdraw your right to use the App; - - 7.2.3 issue legal proceedings against you for reimbursement of all costs resulting from the breach (including, but not limited to, reasonable administrative and legal costs); - - 7.2.4 take further legal action against you; and/or - - 7.2.5 disclose such information to law enforcement authorities as we reasonably feel is necessary to do so. - - 7.3 If we withdraw your right to use the App, then: - - 7.3.1 all rights granted to you under this EULA shall cease; - - 7.3.2 you must immediately cease all activities authorised by this EULA, including your use of any services provided through the App; and - - 7.3.3 you must immediately delete or remove the App from your Device, and immediately destroy all copies of the App then in your possession, custody or control and if we request you to, certify to us that you have done so. - -**8. Changes to this EULA** - - 8.1 We may make changes to the terms of this EULA from time to time (if, for example, there is a change in the law that means we need to change this EULA). Please check this EULA (at the address indicated in clause 1.1) regularly to ensure that you understand the up-to-date terms that apply at the time that you access and use the App. If we update the terms of this EULA, the updated terms will apply 10 days after the update is posted (at the address indicated in clause 1.1) to each of your uses of the App from that point on. - - 8.2 From time to time updates to the App may be issued through the relevant app store. As the App is designed to operate on a Device which remains offline, you agree that it is your responsibility to check whether we have published any updates to the App. You should carry out this check on a device on which the App has not been installed and follow our instructions (available at [https://github.com/paritytech/parity-signer](https://github.com/paritytech/parity-signer)) as to how to update the App. - - 8.3 You will be assumed to have obtained permission from the owners of any Devices that are controlled, but not owned, by you to download a copy of the App onto the Devices. You and they may be charged by your and their service providers for Internet access on the Devices. You accept responsibility in accordance with the terms of this EULA for the use of the App in relation to any Device, whether or not it is owned by you. - -**9. Other important information** - - 9.1 Each of the clauses of this EULA operates separately. If any court or relevant authority decides that any of them are unlawful or unenforceable, the remaining clauses will remain in full force and effect. - - 9.2 If we fail to insist that you perform any of your obligations under this EULA, or if we do not enforce our rights against you, or if we delay in doing so, that will not mean that we have waived our rights against you and will not mean that you do not have to comply with those obligations. If we do waive a default by you, we will only do so in writing, and that will not mean that we will automatically waive any later default by you. - - 9.3 If you wish to have more information on online dispute resolution, please follow this link to the website of the European Commission: [*http://ec.europa.eu/consumers/odr/*](http://ec.europa.eu/consumers/odr/). This link is provided as required by Regulation (EU) No 524/2013 of the European Parliament and of the Council, for information purposes only. We are not obliged to participate in online dispute resolution. - -**10. Governing law and jurisdiction** - - 10.1 This EULA is governed by English law. This means that your download, access to, and use of, the App, and any dispute or claim arising out of or in connection therewith will be governed by English law. - - 10.2 You can bring proceedings in respect of this EULA in the English courts. However, as a consumer, if you live in another European Union member state you can bring legal proceedings in respect of this EULA in either the English courts or the courts of that Member State. - - 10.3 As a consumer, if you are resident in the European Union and we direct this App to the member state in which you are resident, you will benefit from any mandatory provisions of the law of the country in which you are resident. Nothing in this EULA, including clause 10.1, affects your rights as a consumer to rely on such mandatory provisions of local law. - -**11. Contacting us** - -Should you have any reasons for a complaint, we will endeavour to resolve the issue and avoid any re-occurrence in the future. You can always contact us by using the following details: -Address: Parity Technologies Limited, c/o Ignition Law, 1 Sans Walk, London, England, EC1R 0LT -Email address: admin@parity.io and legal@parity.io - -Thank you. - -**Terms last updated 09 Februray 2021** - -**APPENDIX 1** - -**Additional App Terms** - -The following terms and conditions shall apply to your access and/or use of the App in addition to those set out in this EULA. - -For the purpose of this appendix 1, "**Appstore Provider**" means the provider of the app store through which you have downloaded the App (for example, Apple is the Appstore Provider if you have downloaded the App from the Apple App Store, Google is the Appstore Provider if you have downloaded the App from Google Play, etc). - -1. You acknowledge and agree that this EULA has been concluded between you and Parity, and not with the Appstore Provider. You acknowledge and agree that the Appstore Provider is not responsible for the App and its content. - -2. You acknowledge and agree that the Appstore Provider has no obligation to provide any maintenance or support in respect of the App. Should you have any problems in using the App, please contact us at admin@parity.io. - -3. In the event that the App does not conform with any product warranty provided for by this EULA, the Appstore Provider may provide you with a refund of the price that you paid to purchase the App (if any). The Appstore Provider shall, to the maximum extent permitted by law, have no obligation to you whatsoever with respect to the App. - -4. You acknowledge and agree that the Appstore Provider shall not be responsible for addressing any claims that you might have relating to the App, including (without limitation): product liability claims; any claim that the App fails to conform to any applicable legal or regulatory requirement; and claims arising under consumer protection or similar legislation. - -5. In the event that a third party claims that the App infringes its intellectual property rights, Parity (and not the Appstore Provider) shall be solely responsible for the investigation, defence, settlement and discharge of such claim. - -6. You warrant and represent that: (i) you are not located in a country that is subject to a U.S. Government embargo, or that has been designated by the U.S. Government as a "terrorist supporting" country; and (ii) you are not listed on any U.S. Government list of prohibited or restricted parties. - -If the Appstore Provider is Apple, you acknowledge and agree that Apple and its subsidiaries are third party beneficiaries to this EULA. Upon your acceptance of this EULA, Apple will have the right to enforce the EULA against you as a third party beneficiary. From 1bc7f895d302eaebe604829041877ea2922e5baa Mon Sep 17 00:00:00 2001 From: Krzysztof Rodak Date: Fri, 26 Apr 2024 10:37:29 +0200 Subject: [PATCH 02/10] chore: ios: update Fastlane configuration --- ios/PolkadotVault.xcodeproj/project.pbxproj | 4 ++-- ios/fastlane/Appfile | 6 +++--- ios/fastlane/lanes/lane_build.rb | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ios/PolkadotVault.xcodeproj/project.pbxproj b/ios/PolkadotVault.xcodeproj/project.pbxproj index df38cc0d2b..a83161709c 100644 --- a/ios/PolkadotVault.xcodeproj/project.pbxproj +++ b/ios/PolkadotVault.xcodeproj/project.pbxproj @@ -3187,7 +3187,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"PolkadotVault/Preview Content\""; - DEVELOPMENT_TEAM = P2PX3JU8FT; + DEVELOPMENT_TEAM = QXCVVJ6654; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; @@ -3366,7 +3366,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"PolkadotVault/Preview Content\""; - DEVELOPMENT_TEAM = P2PX3JU8FT; + DEVELOPMENT_TEAM = QXCVVJ6654; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = PolkadotVault/Info.plist; diff --git a/ios/fastlane/Appfile b/ios/fastlane/Appfile index d87383074a..25e0fa1873 100644 --- a/ios/fastlane/Appfile +++ b/ios/fastlane/Appfile @@ -1,4 +1,4 @@ app_identifier "io.parity.NativeSigner" -apple_id "krzysztof@parity.io" -team_name "PARITY TECHNOLOGIES LIMITED" -team_id "P2PX3JU8FT" +apple_id "krzysztof@novasama.io" +team_name "Novasama Technologies GmbH" +team_id "QXCVVJ6654" diff --git a/ios/fastlane/lanes/lane_build.rb b/ios/fastlane/lanes/lane_build.rb index c19ed2d52b..5a63133e22 100644 --- a/ios/fastlane/lanes/lane_build.rb +++ b/ios/fastlane/lanes/lane_build.rb @@ -11,7 +11,7 @@ configuration = options[:configuration] app_identifier = CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier) - profile_name = "NativeSigner Distribution Provisioning Profile" + profile_name = "Polkadot Vault Distribution" output_name = scheme # just in case we need to customise it for other GAs export_method = "app-store" compile_bitcode = false @@ -50,7 +50,7 @@ lane :prepare_code_signing do |options| api_key = lane_context[SharedValues::APP_STORE_CONNECT_API_KEY] app_identifier = CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier) - profile_name = "NativeSigner Distribution Provisioning Profile" + profile_name = "Polkadot Vault Distribution" cert( api_key: api_key, From 2587f2cd8720806498e1d6028f4af087b4351840 Mon Sep 17 00:00:00 2001 From: Stepan Lavrentev <40560660+stepanLav@users.noreply.github.com> Date: Mon, 3 Feb 2025 15:53:58 +0300 Subject: [PATCH 03/10] Test build (#2425) * Revert "chore(deps): bump raptorq from 1.8.1 to 2.0.0 in /rust (#2372)" This reverts commit d31f5534f1a794dbf05207eac7eadc6be03bb61c. * fix: allow ded_code * fix: permission for semantic workflow * fix: clippy * fix: change semantic permission to write * fix: change token usage * fix: pull_request event * fix: add concurency * fix: add actor * fix: lint problem * fix: change signing cecrt * fix: change appfile * change team id * fix: semantic triggers * fix: change actors * fix: remove unnecessary changes * fix: return semantic run back * fix: temp add stepanLav --------- Co-authored-by: valentunn <70131744+valentunn@users.noreply.github.com> --- .github/workflows/actions.yml | 4 ++++ .github/workflows/android-app.yml | 4 ++++ .github/workflows/android-release.yml | 4 ++++ .github/workflows/docs.yml | 4 ++++ .github/workflows/rust-cargo-deny.yml | 4 ++++ .github/workflows/rust-clippy.yml | 4 ++++ .github/workflows/rust-fmt.yml | 4 ++++ .github/workflows/rust-test-android.yml | 4 ++++ .github/workflows/rust-test-ios.yml | 4 ++++ .github/workflows/semantic.yml | 7 +++++++ .github/workflows/testflight-prod.yml | 2 +- .github/workflows/testflight-qa.yml | 2 +- ios/PolkadotVault.xcodeproj/project.pbxproj | 10 +++++----- ios/fastlane/Appfile | 2 +- rust/Cargo.lock | 4 ++-- rust/generate_message/src/error.rs | 1 + rust/qr_reader_phone/Cargo.toml | 2 +- rust/qrcode_rtx/Cargo.toml | 2 +- 18 files changed, 56 insertions(+), 12 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 31822d84c7..c621e225dc 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -1,5 +1,9 @@ name: E2E Test +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + on: pull_request: push: diff --git a/.github/workflows/android-app.yml b/.github/workflows/android-app.yml index 0103523492..8f168b6fe9 100644 --- a/.github/workflows/android-app.yml +++ b/.github/workflows/android-app.yml @@ -1,5 +1,9 @@ name: Build android app +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + on: pull_request: push: diff --git a/.github/workflows/android-release.yml b/.github/workflows/android-release.yml index 5caac2416f..2fd966c4e4 100644 --- a/.github/workflows/android-release.yml +++ b/.github/workflows/android-release.yml @@ -1,5 +1,9 @@ name: Release android app +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + on: workflow_dispatch: jobs: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 104537dc8e..cacde40f3f 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,5 +1,9 @@ name: Check links and Publish Docs +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + on: pull_request: push: diff --git a/.github/workflows/rust-cargo-deny.yml b/.github/workflows/rust-cargo-deny.yml index ef64547b22..1f0305f942 100644 --- a/.github/workflows/rust-cargo-deny.yml +++ b/.github/workflows/rust-cargo-deny.yml @@ -1,5 +1,9 @@ name: Check cargo deny +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + on: pull_request: push: diff --git a/.github/workflows/rust-clippy.yml b/.github/workflows/rust-clippy.yml index 41aa1a1ae0..7934ab70a5 100644 --- a/.github/workflows/rust-clippy.yml +++ b/.github/workflows/rust-clippy.yml @@ -1,5 +1,9 @@ name: Rust clippy +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + on: pull_request: push: diff --git a/.github/workflows/rust-fmt.yml b/.github/workflows/rust-fmt.yml index ec9a97fda3..8f813f7290 100644 --- a/.github/workflows/rust-fmt.yml +++ b/.github/workflows/rust-fmt.yml @@ -1,5 +1,9 @@ name: Rustfmt +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + on: pull_request: push: diff --git a/.github/workflows/rust-test-android.yml b/.github/workflows/rust-test-android.yml index c6dde2dee3..d6380b3739 100644 --- a/.github/workflows/rust-test-android.yml +++ b/.github/workflows/rust-test-android.yml @@ -1,5 +1,9 @@ name: Rust backend test for android +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + on: pull_request: push: diff --git a/.github/workflows/rust-test-ios.yml b/.github/workflows/rust-test-ios.yml index c4b62e1de8..a4ef8d750d 100644 --- a/.github/workflows/rust-test-ios.yml +++ b/.github/workflows/rust-test-ios.yml @@ -1,5 +1,9 @@ name: Rust backend test for ios +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + on: pull_request: push: diff --git a/.github/workflows/semantic.yml b/.github/workflows/semantic.yml index b4d3db0362..016566e512 100644 --- a/.github/workflows/semantic.yml +++ b/.github/workflows/semantic.yml @@ -1,5 +1,9 @@ name: Semantic PR +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + on: pull_request_target: types: @@ -7,6 +11,9 @@ on: - edited - synchronize +permissions: + pull-requests: write + jobs: main: # By default, these PR titles are allowed: diff --git a/.github/workflows/testflight-prod.yml b/.github/workflows/testflight-prod.yml index 7a794a2127..935b2d68c5 100644 --- a/.github/workflows/testflight-prod.yml +++ b/.github/workflows/testflight-prod.yml @@ -5,7 +5,7 @@ on: jobs: distribute_testflight: - if: contains('["krodak","prybalko"]', github.actor) + if: contains('["krodak","ERussel","stepanLav"]', github.actor) runs-on: macos-13 name: Distribute TestFlight Production Build diff --git a/.github/workflows/testflight-qa.yml b/.github/workflows/testflight-qa.yml index 5c3b3c3159..9db441a895 100644 --- a/.github/workflows/testflight-qa.yml +++ b/.github/workflows/testflight-qa.yml @@ -5,7 +5,7 @@ on: jobs: distribute_testflight: - if: contains('["krodak","prybalko"]', github.actor) + if: contains('["krodak","ERussel","stepanLav"]', github.actor) runs-on: macos-13 name: Distribute TestFlight QA Build diff --git a/ios/PolkadotVault.xcodeproj/project.pbxproj b/ios/PolkadotVault.xcodeproj/project.pbxproj index a83161709c..f61f3b7992 100644 --- a/ios/PolkadotVault.xcodeproj/project.pbxproj +++ b/ios/PolkadotVault.xcodeproj/project.pbxproj @@ -3220,10 +3220,10 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = accent_pink300; CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"PolkadotVault/Preview Content\""; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = QXCVVJ6654; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = PolkadotVault/Info.plist; @@ -3255,7 +3255,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 4GK8JWU7P9; + DEVELOPMENT_TEAM = QXCVVJ6654; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; INFOPLIST_FILE = PolkadotVaultTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -3280,7 +3280,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = P2PX3JU8FT; + DEVELOPMENT_TEAM = QXCVVJ6654; INFOPLIST_FILE = PolkadotVaultTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -3398,7 +3398,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 4GK8JWU7P9; + DEVELOPMENT_TEAM = QXCVVJ6654; INFOPLIST_FILE = PolkadotVaultTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/ios/fastlane/Appfile b/ios/fastlane/Appfile index 25e0fa1873..1b58274e56 100644 --- a/ios/fastlane/Appfile +++ b/ios/fastlane/Appfile @@ -1,4 +1,4 @@ app_identifier "io.parity.NativeSigner" -apple_id "krzysztof@novasama.io" +apple_id "stepan@novasama.io" team_name "Novasama Technologies GmbH" team_id "QXCVVJ6654" diff --git a/rust/Cargo.lock b/rust/Cargo.lock index a06ccd8c7c..9b81d5cb16 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -3001,9 +3001,9 @@ dependencies = [ [[package]] name = "raptorq" -version = "2.0.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90b1b1fad69672f0b901b5004863ea4307f03d168a3db5f2bcba4d3dfed88e97" +checksum = "7cc8cd0bcb2d520fff368264b5a6295e064c60955349517d09b14473afae4856" [[package]] name = "rayon" diff --git a/rust/generate_message/src/error.rs b/rust/generate_message/src/error.rs index 7c745c1821..bb186f6e04 100644 --- a/rust/generate_message/src/error.rs +++ b/rust/generate_message/src/error.rs @@ -530,6 +530,7 @@ impl std::fmt::Display for Changed { /// /// Expected to receive data in hexadecimal format, got something different. /// [`NotHexActive`] specifies what was expected. +#[allow(dead_code)] #[derive(Debug)] pub enum NotHexActive { /// Network genesis hash, fetched through RPC call. diff --git a/rust/qr_reader_phone/Cargo.toml b/rust/qr_reader_phone/Cargo.toml index 9524bef1a1..c7df0a3a68 100644 --- a/rust/qr_reader_phone/Cargo.toml +++ b/rust/qr_reader_phone/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" [dependencies] hex = "0.4.3" -raptorq = "2.0.0" +raptorq = "1.8.1" nom = "7.1.3" thiserror = "1.0.57" constants = {path = "../constants"} diff --git a/rust/qrcode_rtx/Cargo.toml b/rust/qrcode_rtx/Cargo.toml index e1af43c162..05a2f73da5 100644 --- a/rust/qrcode_rtx/Cargo.toml +++ b/rust/qrcode_rtx/Cargo.toml @@ -9,7 +9,7 @@ edition = "2018" [dependencies] bitvec = "1.0.1" hex = "0.4.3" -raptorq = "2.0.0" +raptorq = "1.8.1" qrcodegen = "1.8.0" png = "0.17.13" From a69bb3adda570ddf28e62b627abda84263b12108 Mon Sep 17 00:00:00 2001 From: Russel Date: Mon, 3 Feb 2025 14:48:01 +0100 Subject: [PATCH 04/10] fix: XCode 16 build --- ios/PolkadotVault/Cards/TransactionCardSelector.swift | 5 ----- ios/PolkadotVault/Helpers/URLOpening.swift | 2 +- .../Screens/Scan/Models/MTransaction+ImportDerivedKeys.swift | 2 +- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/ios/PolkadotVault/Cards/TransactionCardSelector.swift b/ios/PolkadotVault/Cards/TransactionCardSelector.swift index ad8e1b3e9b..0125a40c17 100644 --- a/ios/PolkadotVault/Cards/TransactionCardSelector.swift +++ b/ios/PolkadotVault/Cards/TransactionCardSelector.swift @@ -16,7 +16,6 @@ struct TransactionCardSelector: View { TCAuthorPlain(value: value) case let .authorPublicKeyCard(value): // Not present on new designs TCAuthorPublicKey(value: value) - // Foldable Markdown values on tap case let .callCard(value): // This is used to present `Method` and provides details on tap TCCall(value: value) @@ -26,7 +25,6 @@ struct TransactionCardSelector: View { TCFieldName(value: value) case let .fieldNumberCard(value): TCFieldNumber(value: value) - // Sections case let .newSpecsCard(value): // User when adding new network, redesigned TCAddNewNetwork(value: value) @@ -39,13 +37,11 @@ struct TransactionCardSelector: View { case let .txSpecPlainCard(value): // Unknown network information for given transaction, not present on new // designs TCTXSpecPlain(content: value) - // Error handling case let .errorCard(text): TCError(text: text) case let .warningCard(text): TCWarning(text: text) - // Simple values with identicons / icons / markdown case let .networkInfoCard(value): // Not present in new designs TCNetworkInfo(content: value) @@ -53,7 +49,6 @@ struct TransactionCardSelector: View { TCTypesInfo(content: value) case let .textCard(text): // Markdown text field, not present on new designs TCText(text: text) - // Simple values - redesigned case let .authorCard(author): TCNamedValueCard(name: Localizable.TCName.from.string, value: author.base58, valueInSameLine: false) diff --git a/ios/PolkadotVault/Helpers/URLOpening.swift b/ios/PolkadotVault/Helpers/URLOpening.swift index 0ea6d33bb5..922de1c7fb 100644 --- a/ios/PolkadotVault/Helpers/URLOpening.swift +++ b/ios/PolkadotVault/Helpers/URLOpening.swift @@ -15,7 +15,7 @@ protocol URLOpening: AnyObject { func open( _ url: URL, options: [UIApplication.OpenExternalURLOptionsKey: Any], - completionHandler completion: ((Bool) -> Void)? + completionHandler completion: (@MainActor @Sendable (Bool) -> Void)? ) } diff --git a/ios/PolkadotVault/Screens/Scan/Models/MTransaction+ImportDerivedKeys.swift b/ios/PolkadotVault/Screens/Scan/Models/MTransaction+ImportDerivedKeys.swift index bf6e63a220..42d44c7ccb 100644 --- a/ios/PolkadotVault/Screens/Scan/Models/MTransaction+ImportDerivedKeys.swift +++ b/ios/PolkadotVault/Screens/Scan/Models/MTransaction+ImportDerivedKeys.swift @@ -61,7 +61,7 @@ extension MTransaction { var hasImportableKeys: Bool { switch ttype { case .importDerivations: - var hasImportableKeys: Bool = false + var hasImportableKeys = false sortedValueCards().forEach { if case let .derivationsCard(keys) = $0.card { hasImportableKeys = keys From 0f3c3a5093eb4910a2a845ecfa64f9d76ca91614 Mon Sep 17 00:00:00 2001 From: Russel Date: Tue, 4 Feb 2025 14:23:00 +0100 Subject: [PATCH 05/10] fix: fix opencv library update --- rust/qr_reader_pc/src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rust/qr_reader_pc/src/lib.rs b/rust/qr_reader_pc/src/lib.rs index d318a33b49..41fce6d7d9 100644 --- a/rust/qr_reader_pc/src/lib.rs +++ b/rust/qr_reader_pc/src/lib.rs @@ -15,6 +15,7 @@ use qr_reader_phone::process_payload::{process_decoded_payload, InProgress, Read use opencv::{ highgui, imgproc::{cvt_color, COLOR_BGR2GRAY}, + core::{AlgorithmHint}, prelude::*, videoio, videoio::{CAP_PROP_FRAME_HEIGHT, CAP_PROP_FRAME_WIDTH}, @@ -123,7 +124,7 @@ fn camera_capture(camera: &mut videoio::VideoCapture, window: &str) -> Result Date: Tue, 4 Feb 2025 14:48:55 +0100 Subject: [PATCH 06/10] fix warning --- rust/qr_reader_pc/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/qr_reader_pc/src/lib.rs b/rust/qr_reader_pc/src/lib.rs index 41fce6d7d9..12fdc4dced 100644 --- a/rust/qr_reader_pc/src/lib.rs +++ b/rust/qr_reader_pc/src/lib.rs @@ -15,7 +15,7 @@ use qr_reader_phone::process_payload::{process_decoded_payload, InProgress, Read use opencv::{ highgui, imgproc::{cvt_color, COLOR_BGR2GRAY}, - core::{AlgorithmHint}, + core::AlgorithmHint, prelude::*, videoio, videoio::{CAP_PROP_FRAME_HEIGHT, CAP_PROP_FRAME_WIDTH}, From 7b60b93b65ef857c00ffb763cc7f60ea8fd35a09 Mon Sep 17 00:00:00 2001 From: Russel Date: Thu, 6 Feb 2025 16:46:30 +0100 Subject: [PATCH 07/10] linting --- rust/qr_reader_pc/src/lib.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rust/qr_reader_pc/src/lib.rs b/rust/qr_reader_pc/src/lib.rs index 12fdc4dced..e43cf0ad19 100644 --- a/rust/qr_reader_pc/src/lib.rs +++ b/rust/qr_reader_pc/src/lib.rs @@ -13,9 +13,9 @@ use indicatif::ProgressBar; use qr_reader_phone::process_payload::{process_decoded_payload, InProgress, Ready}; use opencv::{ + core::AlgorithmHint, highgui, imgproc::{cvt_color, COLOR_BGR2GRAY}, - core::AlgorithmHint, prelude::*, videoio, videoio::{CAP_PROP_FRAME_HEIGHT, CAP_PROP_FRAME_WIDTH}, @@ -124,7 +124,13 @@ fn camera_capture(camera: &mut videoio::VideoCapture, window: &str) -> Result Date: Thu, 20 Feb 2025 13:11:53 +0300 Subject: [PATCH 08/10] fix: build workflow (#2434) * fix: dependencies * fix: upload-artifacts * fix deny * fix manifest path * fix: semantic permissions * fix: use app instead of github token * fix: update version * fix: rust build fix token usage fix: return events back fix: dependencies update list of deny rollback rust fix: try to use particullar version return stable back fix: add test default fix tiny disable cache disable cache fix: qr reader phone fix: qr_reader use target_os fix: cargo clippy fix: fmt fix: remove semantic changes fix: remove semantic changes * fix: clippy fix: clippy fix: clippy fix: clippy fix: clippy * fix: redundant decrease * fix: workflows fix: ations * fix: versions * fix cargo.lock * fix: return small fixes back * fix: deny config * fix: clippy fix clippy fix clippy * fix: rollback version to ref * fix: deny * fix: macos version * downgrade opencv * fix: remove cache * fix: update opencv usage * fix: fmt * fix version in actions * fix: spellcheck * fix build script * fix: build version for ios * fix: return target_os definition * fix: rollback ubuntu version * make directory writable * downgrade ubuntu * fix: use latest opencv on ubuntu (#2437) * fix: use latest opencv on ubuntu * feat: add using opencv dockerfile * trigger event * remove test trigger * use builded container * rebuild image * update build image * debug * swithc to root * fix install dep * fix source * fix dependency * fix dependency * fix: dependency * build new image version * fix source * fix: build errors * fix: install dep * fix: dependency * fix: dependency * fix dependency * fix: remove sudo command * fix dependency in doc * fix: update opencv version * fix: update opencv * fix: decrease repetition * try to use action * use fixed version * fix version format * allow arm64 and build libsigner based on platform * rollback building --------- Co-authored-by: Russel --- .devcontainer/devcontainer.json | 17 + .../actions/install-android-dep/action.yaml | 20 + .github/workflows/actions.yml | 38 +- .github/workflows/android-app.yml | 101 +- .github/workflows/android-release.yml | 94 +- .github/workflows/docs.yml | 24 +- .github/workflows/opencv-docker.yml | 37 + .github/workflows/rust-cargo-deny.yml | 5 +- .github/workflows/rust-clippy.yml | 21 +- .github/workflows/rust-fmt.yml | 5 - .github/workflows/rust-test-android.yml | 19 +- .github/workflows/rust-test-ios.yml | 15 +- .github/workflows/testflight-prod.yml | 41 +- .github/workflows/testflight-qa.yml | 39 +- .gitignore | 8 +- .spellcheck/config.toml | 1 + Gemfile.lock | 144 +- docker/opencv.Dockerfile | 44 + ios/PolkadotVault.xcodeproj/project.pbxproj | 6 +- ios/scripts/build_libsigner.sh | 23 +- rust/Cargo.lock | 2376 +++++++++-------- rust/constants/src/lib.rs | 12 +- rust/db_handling/Cargo.toml | 5 +- rust/db_handling/src/cold_default.rs | 20 +- rust/db_handling/src/db_transactions.rs | 72 +- rust/db_handling/src/error.rs | 2 +- rust/db_handling/src/helpers.rs | 8 +- rust/db_handling/src/hot_default.rs | 10 +- rust/db_handling/src/identities.rs | 18 +- rust/db_handling/src/lib.rs | 8 +- rust/db_handling/src/manage_history.rs | 4 +- rust/defaults/Cargo.toml | 4 +- rust/defaults/src/lib.rs | 4 +- rust/definitions/Cargo.toml | 14 +- rust/definitions/src/error_signer.rs | 4 +- rust/definitions/src/keyring.rs | 36 +- rust/definitions/src/metadata.rs | 2 +- rust/definitions/src/network_specs.rs | 28 +- rust/deny.toml | 191 +- rust/generate_message/Cargo.toml | 6 +- rust/generate_message/src/error.rs | 10 +- rust/generate_message/src/helpers.rs | 4 +- rust/generate_message/src/interpret_specs.rs | 4 +- rust/generate_message/src/lib.rs | 134 +- rust/generate_message/src/load.rs | 44 +- rust/generate_message/src/parser.rs | 44 +- rust/generate_message/src/remove.rs | 14 +- rust/generate_message/src/show.rs | 10 +- rust/generate_message/src/specs.rs | 32 +- rust/generate_message/tests/common/mod.rs | 2 +- rust/navigator/Cargo.toml | 4 +- rust/navigator/src/tests.rs | 2 +- rust/parser/Cargo.toml | 6 +- rust/parser/src/decoding_older.rs | 52 +- rust/parser/src/error.rs | 4 +- rust/parser/src/method.rs | 3 - rust/printing_balance/src/lib.rs | 1 - rust/qr_reader_pc/Cargo.toml | 7 +- rust/qr_reader_pc/src/lib.rs | 5 +- rust/signer/Cargo.toml | 4 +- rust/transaction_parsing/Cargo.toml | 4 +- rust/transaction_parsing/src/cards.rs | 4 +- rust/transaction_parsing/src/error.rs | 1 - rust/transaction_parsing/src/lib.rs | 5 +- .../src/parse_transaction.rs | 6 +- rust/transaction_signing/Cargo.toml | 4 +- 66 files changed, 2055 insertions(+), 1881 deletions(-) create mode 100644 .devcontainer/devcontainer.json create mode 100644 .github/actions/install-android-dep/action.yaml create mode 100644 .github/workflows/opencv-docker.yml create mode 100644 docker/opencv.Dockerfile mode change 100644 => 100755 ios/scripts/build_libsigner.sh diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..12cbabfd43 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,17 @@ +{ + "name": "Ubuntu Development", + "image": "ubuntu:22.04", + + "customizations": { + "vscode": { + "extensions": [ + "ms-vscode.rust-analyzer" + ] + } + }, + + "features": { + "ghcr.io/devcontainers/features/git:1": {}, + "ghcr.io/devcontainers/features/github-cli:1": {} + } +} \ No newline at end of file diff --git a/.github/actions/install-android-dep/action.yaml b/.github/actions/install-android-dep/action.yaml new file mode 100644 index 0000000000..0b28256aa2 --- /dev/null +++ b/.github/actions/install-android-dep/action.yaml @@ -0,0 +1,20 @@ +name: 'Install Android Dependencies' +description: 'Sets up JDK and Android SDK/NDK' + +runs: + using: "composite" + steps: + - name: Set up JDK environment + uses: actions/setup-java@v4 + with: + distribution: 'adopt' + java-version: 17 + + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + with: + cmdline-tools-version: 12266719 + + - name: Install NDK + shell: bash + run: echo "y" | ${ANDROID_SDK_ROOT}/cmdline-tools/16.0/bin/sdkmanager --install "ndk;24.0.8215888" --sdk_root=${ANDROID_SDK_ROOT} diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index c621e225dc..abe4b7ca53 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -14,14 +14,9 @@ on: jobs: check: name: Check on MacOS - runs-on: macos-13 + runs-on: macos-15 steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 - with: - access_token: ${{ github.token }} - - name: Checkout sources uses: actions/checkout@v4.1.1 with: @@ -32,22 +27,25 @@ jobs: uses: ruby/setup-ruby@v1 with: ruby-version: '2.7' - bundler-cache: true + bundler-cache: false - name: Setup - Xcode - run: sudo xcode-select -switch '/Applications/Xcode_15.0.app/Contents/Developer' && /usr/bin/xcodebuild -version + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: 16 - name: Install dependencies run: | brew install sourcery + bundle install - - name: Get cached Swift Packages managed by Xcode - uses: actions/cache@v3 - with: - path: ~/Library/Developer/Xcode/DerivedData/**/SourcePackages/ - key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} - restore-keys: | - ${{ runner.os }}-spm- + # - name: Get cached Swift Packages managed by Xcode + # uses: actions/cache@v3 + # with: + # path: ~/Library/Developer/Xcode/DerivedData/**/SourcePackages/ + # key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} + # restore-keys: | + # ${{ runner.os }}-spm- - name: Install Rust targets uses: dtolnay/rust-toolchain@stable @@ -60,12 +58,12 @@ jobs: with: crate: uniffi_bindgen version: 0.22.0 # Must be in sync with version in Cargo.toml - use-tool-cache: true + use-tool-cache: false - - name: Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - with: - workspaces: rust -> rust/target + # - name: Rust Cache + # uses: Swatinem/rust-cache@27b8ea9368cf428f0bfe41b0876b1a7e809d9844 # v2.7.7 + # with: + # workspaces: rust -> rust/target - name: Build iOS and run tests shell: bash diff --git a/.github/workflows/android-app.yml b/.github/workflows/android-app.yml index 8f168b6fe9..7bda8b0c7b 100644 --- a/.github/workflows/android-app.yml +++ b/.github/workflows/android-app.yml @@ -15,11 +15,9 @@ jobs: build: name: Build runs-on: ubuntu-22.04 + container: + image: ghcr.io/${{ github.repository }}/opencv-builder:4.11.0 steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 - with: - access_token: ${{ github.token }} - name: Checkout Sources uses: actions/checkout@v4.1.1 @@ -30,7 +28,7 @@ jobs: - name: Install System Dependencies (Linux) run: | sudo apt-get update - sudo apt-get install -y clang libclang-dev libopencv-dev + sudo apt-get install -y clang libclang-dev - name: Install Rust stable toolchain uses: dtolnay/rust-toolchain@stable @@ -40,34 +38,28 @@ jobs: with: crate: uniffi_bindgen version: 0.22.0 # Must be in sync with version in Cargo.toml - use-tool-cache: true + use-tool-cache: false - name: Install additional rust targets run: rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android - - - name: Set up JDK environment - uses: actions/setup-java@v4 - with: - distribution: 'adopt' - java-version: 17 - - - name: Install NDK - run: echo "y" | sudo ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "ndk;24.0.8215888" --sdk_root=${ANDROID_SDK_ROOT} - - - name: Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - with: - workspaces: rust -> rust/target - - - name: Gradle Cache - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- + + - name: Install Android Dependencies + uses: ./.github/actions/install-android-dep + + # - name: Rust Cache + # uses: Swatinem/rust-cache@27b8ea9368cf428f0bfe41b0876b1a7e809d9844 # v2.7.7 + # with: + # workspaces: rust -> rust/target + + # - name: Gradle Cache + # uses: actions/cache@v3 + # with: + # path: | + # ~/.gradle/caches + # ~/.gradle/wrapper + # key: ${{ runner.os }}-gradle-${{ hashFiles('**/.gradle*', '**/gradle-wrapper.properties') }} + # restore-keys: | + # ${{ runner.os }}-gradle- - name: Build run: | @@ -76,12 +68,10 @@ jobs: makeapk: name: Build unsigned APKs runs-on: ubuntu-22.04 + container: + image: ghcr.io/${{ github.repository }}/opencv-builder:4.11.0 # if: github.ref == ' refs/head/main' steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 - with: - access_token: ${{ github.token }} - name: Checkout Sources uses: actions/checkout@v4.1.1 @@ -90,10 +80,9 @@ jobs: submodules: 'recursive' - name: Install System Dependencies (Linux) - if: runner.os == 'Linux' run: | sudo apt-get update - sudo apt-get install -y clang libclang-dev libopencv-dev + sudo apt-get install -y clang libclang-dev - name: Install Rust stable toolchain uses: dtolnay/rust-toolchain@stable @@ -103,41 +92,35 @@ jobs: with: crate: uniffi_bindgen version: 0.22.0 # Must be in sync with version in Cargo.toml - use-tool-cache: true + use-tool-cache: false - name: Install additional rust targets run: rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android - - name: Set up JDK environment - uses: actions/setup-java@v4 - with: - distribution: 'adopt' - java-version: 17 + - name: Install Android Dependencies + uses: ./.github/actions/install-android-dep - - name: Install NDK - run: echo "y" | sudo ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "ndk;24.0.8215888" --sdk_root=${ANDROID_SDK_ROOT} + # - name: Rust Cache + # uses: Swatinem/rust-cache@27b8ea9368cf428f0bfe41b0876b1a7e809d9844 # v2.7.7 + # with: + # workspaces: rust -> rust/target - - name: Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - with: - workspaces: rust -> rust/target - - - name: Gradle Cache - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- + # - name: Gradle Cache + # uses: actions/cache@v3 + # with: + # path: | + # ~/.gradle/caches + # ~/.gradle/wrapper + # key: ${{ runner.os }}-gradle-${{ hashFiles('**/.gradle*', '**/gradle-wrapper.properties') }} + # restore-keys: | + # ${{ runner.os }}-gradle- - name: Assemble unsigned debug apk run: | ./gradlew clean assembleDebug --stacktrace - name: Upload Gplay unsigned APKs - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: signer-debug-unsigned path: | diff --git a/.github/workflows/android-release.yml b/.github/workflows/android-release.yml index 2fd966c4e4..e01880829b 100644 --- a/.github/workflows/android-release.yml +++ b/.github/workflows/android-release.yml @@ -11,11 +11,9 @@ jobs: build: name: Build android unit test runs-on: ubuntu-22.04 + container: + image: ghcr.io/${{ github.repository }}/opencv-builder:4.11.0 steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 - with: - access_token: ${{ github.token }} - name: Checkout Sources uses: actions/checkout@v4.1.1 @@ -26,7 +24,7 @@ jobs: - name: Install System Dependencies (Linux) run: | sudo apt-get update - sudo apt-get install -y clang libclang-dev libopencv-dev + sudo apt-get install -y clang libclang-dev - name: Install Rust stable toolchain uses: dtolnay/rust-toolchain@stable @@ -36,34 +34,28 @@ jobs: with: crate: uniffi_bindgen version: 0.22.0 # Must be in sync with version in Cargo.toml - use-tool-cache: true + use-tool-cache: false - name: Install additional rust targets run: rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android - - name: Set up JDK environment - uses: actions/setup-java@v4 - with: - distribution: 'adopt' - java-version: 17 + - name: Install Android Dependencies + uses: ./.github/actions/install-android-dep - - name: Install NDK - run: echo "y" | sudo ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "ndk;24.0.8215888" --sdk_root=${ANDROID_SDK_ROOT} + # - name: Rust Cache + # uses: Swatinem/rust-cache@27b8ea9368cf428f0bfe41b0876b1a7e809d9844 # v2.7.7 + # with: + # workspaces: rust -> rust/target - - name: Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - with: - workspaces: rust -> rust/target - - - name: Gradle Cache - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- + # - name: Gradle Cache + # uses: actions/cache@v3 + # with: + # path: | + # ~/.gradle/caches + # ~/.gradle/wrapper + # key: ${{ runner.os }}-gradle-${{ hashFiles('**/.gradle*', '**/gradle-wrapper.properties') }} + # restore-keys: | + # ${{ runner.os }}-gradle- - name: Build run: | @@ -72,12 +64,10 @@ jobs: make: name: Build signed APKs runs-on: ubuntu-22.04 + container: + image: ghcr.io/${{ github.repository }}/opencv-builder:4.11.0 # if: github.ref == ' refs/head/main' steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 - with: - access_token: ${{ github.token }} - name: Checkout Sources uses: actions/checkout@v4.1.1 @@ -88,7 +78,7 @@ jobs: - name: Install System Dependencies (Linux) run: | sudo apt-get update - sudo apt-get install -y clang libclang-dev libopencv-dev + sudo apt-get install -y clang libclang-dev - name: Install Rust stable toolchain uses: dtolnay/rust-toolchain@stable @@ -98,34 +88,28 @@ jobs: with: crate: uniffi_bindgen version: 0.22.0 # Must be in sync with version in Cargo.toml - use-tool-cache: true + use-tool-cache: false - name: Install additional rust targets run: rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android - - name: Set up JDK environment - uses: actions/setup-java@v4 - with: - distribution: 'adopt' - java-version: 17 + - name: Install Android Dependencies + uses: ./.github/actions/install-android-dep - - name: Install NDK - run: echo "y" | sudo ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "ndk;24.0.8215888" --sdk_root=${ANDROID_SDK_ROOT} + # - name: Rust Cache + # uses: Swatinem/rust-cache@27b8ea9368cf428f0bfe41b0876b1a7e809d9844 # v2.7.7 + # with: + # workspaces: rust -> rust/target - - name: Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - with: - workspaces: rust -> rust/target - - - name: Gradle Cache - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- + # - name: Gradle Cache + # uses: actions/cache@v3 + # with: + # path: | + # ~/.gradle/caches + # ~/.gradle/wrapper + # key: ${{ runner.os }}-gradle-${{ hashFiles('**/.gradle*', '**/gradle-wrapper.properties') }} + # restore-keys: | + # ${{ runner.os }}-gradle- # Build and publish @@ -154,7 +138,7 @@ jobs: BUILD_TOOLS_VERSION: ${{ env.BUILD_TOOL_VERSION }} - name: Upload Gplay release APKs - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: signer-release-signed path: | diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index cacde40f3f..b7b0aaa1c7 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -13,14 +13,11 @@ on: jobs: rustdocs_user_docs: name: Build rustdocs, user-docs and check links - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 + container: + image: ghcr.io/${{ github.repository }}/opencv-builder:4.11.0 steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 - with: - access_token: ${{ github.token }} - - name: Checkout sources uses: actions/checkout@v4.1.1 with: @@ -31,12 +28,15 @@ jobs: - name: Install rustdocs dependencies run: | sudo apt update - sudo apt install -y clang libclang-dev libopencv-dev + sudo apt install -y clang libclang-dev - - name: Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - with: - workspaces: rust -> rust/target + - name: Install Rust stable toolchain + uses: dtolnay/rust-toolchain@stable + + # - name: Rust Cache + # uses: Swatinem/rust-cache@27b8ea9368cf428f0bfe41b0876b1a7e809d9844 # v2.7.7 + # with: + # workspaces: rust -> rust/target - name: Install cargo-spellcheck uses: baptiste0928/cargo-install@1cd874a5478fdca35d868ccc74640c5aabbb8f1b # v3.0.0 @@ -48,7 +48,7 @@ jobs: with: crate: uniffi_bindgen version: 0.22.0 # Must be in sync with version in Cargo.toml - use-tool-cache: true + use-tool-cache: false - name: Run spellcheck run: | diff --git a/.github/workflows/opencv-docker.yml b/.github/workflows/opencv-docker.yml new file mode 100644 index 0000000000..044bdf0aa8 --- /dev/null +++ b/.github/workflows/opencv-docker.yml @@ -0,0 +1,37 @@ +name: Build OpenCV Docker Image + +on: + workflow_dispatch: + push: + paths: + - 'docker/opencv.Dockerfile' + branches: + - master + +jobs: + build-and-push: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: docker/opencv.Dockerfile + push: true + tags: | + ghcr.io/${{ github.repository }}/opencv-builder:latest + ghcr.io/${{ github.repository }}/opencv-builder:4.11.0 diff --git a/.github/workflows/rust-cargo-deny.yml b/.github/workflows/rust-cargo-deny.yml index 1f0305f942..97dfde20e2 100644 --- a/.github/workflows/rust-cargo-deny.yml +++ b/.github/workflows/rust-cargo-deny.yml @@ -26,6 +26,7 @@ jobs: uses: actions/checkout@v4.1.1 - name: Run cargo-deny - uses: EmbarkStudios/cargo-deny-action@5def368d93be6684ad20a0fdec5f23c8ea11e022 # v1.5.13 + uses: EmbarkStudios/cargo-deny-action@v2.0.4 with: - command: --manifest-path=./rust/Cargo.toml check ${{ matrix.checks }} + manifest-path: ./rust/Cargo.toml + command: check ${{ matrix.checks }} diff --git a/.github/workflows/rust-clippy.yml b/.github/workflows/rust-clippy.yml index 7934ab70a5..fc5ab9ca98 100644 --- a/.github/workflows/rust-clippy.yml +++ b/.github/workflows/rust-clippy.yml @@ -13,14 +13,11 @@ on: jobs: linter: name: Cargo clippy - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 + container: + image: ghcr.io/${{ github.repository }}/opencv-builder:4.11.0 steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 - with: - access_token: ${{ github.token }} - - name: Checkout sources uses: actions/checkout@v4.1.1 with: @@ -30,7 +27,7 @@ jobs: - name: Install system dependancies run: | sudo apt update - sudo apt install -y clang libclang-dev libopencv-dev + sudo apt install -y clang libclang-dev - name: Install Rust stable toolchain uses: dtolnay/rust-toolchain@stable @@ -40,12 +37,12 @@ jobs: with: crate: uniffi_bindgen version: 0.22.0 # Must be in sync with version in Cargo.toml - use-tool-cache: true + use-tool-cache: false - - name: Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - with: - workspaces: rust -> rust/target + # - name: Rust Cache + # uses: Swatinem/rust-cache@27b8ea9368cf428f0bfe41b0876b1a7e809d9844 # v2.7.7 + # with: + # workspaces: rust -> rust/target - name: cargo clippy run: | diff --git a/.github/workflows/rust-fmt.yml b/.github/workflows/rust-fmt.yml index 8f813f7290..98967f8745 100644 --- a/.github/workflows/rust-fmt.yml +++ b/.github/workflows/rust-fmt.yml @@ -16,11 +16,6 @@ jobs: runs-on: ubuntu-latest steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 - with: - access_token: ${{ github.token }} - - name: Checkout sources uses: actions/checkout@v4.1.1 with: diff --git a/.github/workflows/rust-test-android.yml b/.github/workflows/rust-test-android.yml index d6380b3739..473789c78c 100644 --- a/.github/workflows/rust-test-android.yml +++ b/.github/workflows/rust-test-android.yml @@ -14,13 +14,10 @@ jobs: check: name: Cargo test on Ubuntu runs-on: ubuntu-22.04 + container: + image: ghcr.io/${{ github.repository }}/opencv-builder:4.11.0 steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 - with: - access_token: ${{ github.token }} - - name: Checkout sources uses: actions/checkout@v4.1.1 with: @@ -30,7 +27,7 @@ jobs: - name: Install system dependancies run: | sudo apt update - sudo apt install -y clang libclang-dev libopencv-dev + sudo apt install -y clang libclang-dev - name: Install Rust stable toolchain uses: dtolnay/rust-toolchain@stable @@ -46,12 +43,12 @@ jobs: with: crate: uniffi_bindgen version: 0.22.0 # Must be in sync with version in Cargo.toml - use-tool-cache: true + use-tool-cache: false - - name: Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - with: - workspaces: rust -> rust/target + # - name: Rust Cache + # uses: Swatinem/rust-cache@27b8ea9368cf428f0bfe41b0876b1a7e809d9844 # v2.7.7 + # with: + # workspaces: rust -> rust/target - name: cargo nextest run: | diff --git a/.github/workflows/rust-test-ios.yml b/.github/workflows/rust-test-ios.yml index a4ef8d750d..8f17d46955 100644 --- a/.github/workflows/rust-test-ios.yml +++ b/.github/workflows/rust-test-ios.yml @@ -16,11 +16,6 @@ jobs: runs-on: macos-latest steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 - with: - access_token: ${{ github.token }} - - name: Checkout sources uses: actions/checkout@v4.1.1 with: @@ -45,12 +40,12 @@ jobs: with: crate: uniffi_bindgen version: 0.22.0 # Must be in sync with version in Cargo.toml - use-tool-cache: true + use-tool-cache: false - - name: Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - with: - workspaces: rust -> rust/target + # - name: Rust Cache + # uses: Swatinem/rust-cache@27b8ea9368cf428f0bfe41b0876b1a7e809d9844 # v2.7.7 + # with: + # workspaces: rust -> rust/target - name: cargo nextest shell: bash diff --git a/.github/workflows/testflight-prod.yml b/.github/workflows/testflight-prod.yml index 935b2d68c5..138ae8b41d 100644 --- a/.github/workflows/testflight-prod.yml +++ b/.github/workflows/testflight-prod.yml @@ -1,19 +1,19 @@ name: Distribute TestFlight Production Build +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: false + on: workflow_dispatch: jobs: distribute_testflight: if: contains('["krodak","ERussel","stepanLav"]', github.actor) - runs-on: macos-13 + runs-on: macos-15 name: Distribute TestFlight Production Build steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 - with: - access_token: ${{ github.token }} - name: Checkout repository uses: actions/checkout@v4.1.1 @@ -22,22 +22,25 @@ jobs: uses: ruby/setup-ruby@v1 with: ruby-version: '2.7' - bundler-cache: true + bundler-cache: false - name: Setup - Xcode - run: sudo xcode-select -switch '/Applications/Xcode_15.0.app/Contents/Developer' && /usr/bin/xcodebuild -version + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: 16 - name: Install dependencies run: | brew install sourcery + bundle install - - name: Get cached Swift Packages managed by Xcode - uses: actions/cache@v3 - with: - path: ~/Library/Developer/Xcode/DerivedData/**/SourcePackages/ - key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} - restore-keys: | - ${{ runner.os }}-spm- + # - name: Get cached Swift Packages managed by Xcode + # uses: actions/cache@v3 + # with: + # path: ~/Library/Developer/Xcode/DerivedData/**/SourcePackages/ + # key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} + # restore-keys: | + # ${{ runner.os }}-spm- - name: Install Rust targets uses: dtolnay/rust-toolchain@stable @@ -50,12 +53,12 @@ jobs: with: crate: uniffi_bindgen version: 0.22.0 # Must be in sync with version in Cargo.toml - use-tool-cache: true + use-tool-cache: false - - name: Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - with: - workspaces: rust -> rust/target + # - name: Rust Cache + # uses: Swatinem/rust-cache@27b8ea9368cf428f0bfe41b0876b1a7e809d9844 # v2.7.7 + # with: + # workspaces: rust -> rust/target - name: Install the Apple certificate and provisioning profile env: diff --git a/.github/workflows/testflight-qa.yml b/.github/workflows/testflight-qa.yml index 9db441a895..216217b00d 100644 --- a/.github/workflows/testflight-qa.yml +++ b/.github/workflows/testflight-qa.yml @@ -1,19 +1,19 @@ name: Distribute TestFlight QA Build +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: false + on: workflow_dispatch: jobs: distribute_testflight: if: contains('["krodak","ERussel","stepanLav"]', github.actor) - runs-on: macos-13 + runs-on: macos-15 name: Distribute TestFlight QA Build steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 - with: - access_token: ${{ github.token }} - name: Checkout repository uses: actions/checkout@v4.1.1 @@ -22,22 +22,25 @@ jobs: uses: ruby/setup-ruby@v1 with: ruby-version: '2.7' - bundler-cache: true + bundler-cache: false - name: Setup - Xcode - run: sudo xcode-select -switch '/Applications/Xcode_15.0.app/Contents/Developer' && /usr/bin/xcodebuild -version + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: 16 - name: Install dependencies run: | brew install sourcery + bundle install - - name: Get cached Swift Packages managed by Xcode - uses: actions/cache@v3 - with: - path: ~/Library/Developer/Xcode/DerivedData/**/SourcePackages/ - key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} - restore-keys: | - ${{ runner.os }}-spm- + # - name: Get cached Swift Packages managed by Xcode + # uses: actions/cache@v3 + # with: + # path: ~/Library/Developer/Xcode/DerivedData/**/SourcePackages/ + # key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} + # restore-keys: | + # ${{ runner.os }}-spm- - name: Install Rust targets uses: dtolnay/rust-toolchain@stable @@ -52,10 +55,10 @@ jobs: version: 0.22.0 # Must be in sync with version in Cargo.toml use-tool-cache: true - - name: Rust Cache - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 - with: - workspaces: rust -> rust/target + # - name: Rust Cache + # uses: Swatinem/rust-cache@27b8ea9368cf428f0bfe41b0876b1a7e809d9844 # v2.7.7 + # with: + # workspaces: rust -> rust/target - name: Install the Apple certificate and provisioning profile env: diff --git a/.gitignore b/.gitignore index 41fa18705e..d199f5e4d7 100644 --- a/.gitignore +++ b/.gitignore @@ -64,10 +64,10 @@ android/libs # For more information about the recommended setup visit: # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots -fastlane/test_output +ios/fastlane/report.xml +ios/fastlane/Preview.html +ios/fastlane/screenshots +ios/fastlane/test_output # vim *.swp diff --git a/.spellcheck/config.toml b/.spellcheck/config.toml index ab5c53af0d..dbdda2f6ab 100644 --- a/.spellcheck/config.toml +++ b/.spellcheck/config.toml @@ -23,5 +23,6 @@ transform_regex = [ # 22_100 "^(?:[0-9]+_)+[0-9]+$" ] + allow_concatenation = true allow_dashes = true diff --git a/Gemfile.lock b/Gemfile.lock index c5d0b50971..652c86904d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,43 +1,46 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.6) + CFPropertyList (3.0.7) + base64 + nkf rexml - addressable (2.8.5) - public_suffix (>= 2.0.2, < 6.0) - artifactory (3.0.15) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + artifactory (3.0.17) atomos (0.1.3) - aws-eventstream (1.2.0) - aws-partitions (1.834.0) - aws-sdk-core (3.185.1) - aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.651.0) - aws-sigv4 (~> 1.5) + aws-eventstream (1.3.1) + aws-partitions (1.1051.0) + aws-sdk-core (3.218.1) + aws-eventstream (~> 1, >= 1.3.0) + aws-partitions (~> 1, >= 1.992.0) + aws-sigv4 (~> 1.9) + base64 jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.72.0) - aws-sdk-core (~> 3, >= 3.184.0) - aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.136.0) - aws-sdk-core (~> 3, >= 3.181.0) + aws-sdk-kms (1.98.0) + aws-sdk-core (~> 3, >= 3.216.0) + aws-sigv4 (~> 1.5) + aws-sdk-s3 (1.181.0) + aws-sdk-core (~> 3, >= 3.216.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.6) - aws-sigv4 (1.6.0) + aws-sigv4 (~> 1.5) + aws-sigv4 (1.11.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) + base64 (0.2.0) claide (1.1.0) colored (1.2) colored2 (3.1.2) commander (4.6.0) highline (~> 2.0.0) declarative (0.0.20) - digest-crc (0.6.5) + digest-crc (0.7.0) rake (>= 12.0.0, < 14.0.0) - domain_name (0.5.20190701) - unf (>= 0.0.5, < 1.0.0) + domain_name (0.6.20240107) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.104.0) - faraday (1.10.3) + excon (0.112.0) + faraday (1.10.4) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -56,24 +59,24 @@ GEM faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) faraday-httpclient (1.0.1) - faraday-multipart (1.0.4) - multipart-post (~> 2) - faraday-net_http (1.0.1) + faraday-multipart (1.1.0) + multipart-post (~> 2.0) + faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) faraday-retry (1.0.3) - faraday_middleware (1.2.0) + faraday_middleware (1.2.1) faraday (~> 1.0) - fastimage (2.2.7) - fastlane (2.216.0) + fastimage (2.4.0) + fastlane (2.226.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) aws-sdk-s3 (~> 1.0) babosa (>= 1.0.3, < 2.0.0) bundler (>= 1.12.0, < 3.0.0) - colored + colored (~> 1.2) commander (~> 4.6) dotenv (>= 2.1.1, < 3.0.0) emoji_regex (>= 0.1, < 4.0) @@ -82,9 +85,11 @@ GEM faraday-cookie_jar (~> 0.0.6) faraday_middleware (~> 1.0) fastimage (>= 2.1.0, < 3.0.0) + fastlane-sirp (>= 1.0.0) gh_inspector (>= 1.1.2, < 2.0.0) google-apis-androidpublisher_v3 (~> 0.3) google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-env (>= 1.6.0, < 2.0.0) google-cloud-storage (~> 1.31) highline (~> 2.0) http-cookie (~> 1.0.5) @@ -93,10 +98,10 @@ GEM mini_magick (>= 4.9.4, < 5.0.0) multipart-post (>= 2.0.0, < 3.0.0) naturally (~> 2.2) - optparse (~> 0.1.1) + optparse (>= 0.1.1, < 1.0.0) plist (>= 3.1.0, < 4.0.0) rubyzip (>= 2.0.0, < 3.0.0) - security (= 0.1.3) + security (= 0.1.5) simctl (~> 1.6.3) terminal-notifier (>= 2.0.0, < 3.0.0) terminal-table (~> 3) @@ -104,12 +109,14 @@ GEM tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) xcodeproj (>= 1.13.0, < 2.0.0) - xcpretty (~> 0.3.0) - xcpretty-travis-formatter (>= 0.0.3) + xcpretty (~> 0.4.0) + xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) + fastlane-sirp (1.0.0) + sysrandom (~> 1.0) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.50.0) + google-apis-androidpublisher_v3 (0.54.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.1) + google-apis-core (0.11.3) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -117,24 +124,23 @@ GEM representable (~> 3.0) retriable (>= 2.0, < 4.a) rexml - webrick google-apis-iamcredentials_v1 (0.17.0) google-apis-core (>= 0.11.0, < 2.a) google-apis-playcustomapp_v1 (0.13.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-storage_v1 (0.19.0) - google-apis-core (>= 0.9.0, < 2.a) - google-cloud-core (1.6.0) - google-cloud-env (~> 1.0) + google-apis-storage_v1 (0.31.0) + google-apis-core (>= 0.11.0, < 2.a) + google-cloud-core (1.7.1) + google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.3.1) - google-cloud-storage (1.44.0) + google-cloud-errors (1.4.0) + google-cloud-storage (1.47.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.19.0) + google-apis-storage_v1 (~> 0.31.0) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) @@ -145,34 +151,36 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.5) + http-cookie (1.0.8) domain_name (~> 0.5) httpclient (2.8.3) jmespath (1.6.2) - json (2.6.3) - jwt (2.7.1) - mini_magick (4.12.0) + json (2.10.1) + jwt (2.10.1) + base64 + mini_magick (4.13.2) mini_mime (1.1.5) multi_json (1.15.0) - multipart-post (2.3.0) - nanaimo (0.3.0) + multipart-post (2.4.1) + nanaimo (0.4.0) naturally (2.2.1) - optparse (0.1.1) + nkf (0.2.0) + optparse (0.6.0) os (1.1.4) - plist (3.7.0) - public_suffix (5.0.3) - rake (13.0.6) + plist (3.7.2) + public_suffix (6.0.1) + rake (13.2.1) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.6) - rouge (2.0.7) + rexml (3.4.1) + rouge (3.28.0) ruby2_keywords (0.0.5) - rubyzip (2.3.2) - security (0.1.3) - signet (0.18.0) + rubyzip (2.4.1) + security (0.1.5) + signet (0.19.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) @@ -180,35 +188,33 @@ GEM simctl (1.6.10) CFPropertyList naturally + sysrandom (1.0.5) terminal-notifier (2.0.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) trailblazer-option (0.1.2) tty-cursor (0.7.1) - tty-screen (0.8.1) + tty-screen (0.8.2) tty-spinner (0.9.3) tty-cursor (~> 0.7) uber (0.1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.8.2) - unicode-display_width (2.5.0) - webrick (1.8.1) + unicode-display_width (2.6.0) word_wrap (1.0.0) - xcodeproj (1.23.0) + xcodeproj (1.27.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) - nanaimo (~> 0.3.0) - rexml (~> 3.2.4) - xcpretty (0.3.0) - rouge (~> 2.0.7) + nanaimo (~> 0.4.0) + rexml (>= 3.3.6, < 4.0) + xcpretty (0.4.0) + rouge (~> 3.28.0) xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) PLATFORMS arm64-darwin-22 + arm64-darwin-23 x86_64-darwin-20 DEPENDENCIES diff --git a/docker/opencv.Dockerfile b/docker/opencv.Dockerfile new file mode 100644 index 0000000000..ab6feba05e --- /dev/null +++ b/docker/opencv.Dockerfile @@ -0,0 +1,44 @@ +FROM ghcr.io/catthehacker/ubuntu:rust-22.04 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get install -y \ + libjpeg-dev \ + libtiff-dev \ + libpng-dev \ + libavcodec-dev \ + libavformat-dev \ + libswscale-dev \ + libv4l-dev \ + libxvidcore-dev \ + libx264-dev \ + libgtk-3-dev \ + libatlas-base-dev \ + gfortran \ + python3-dev \ + unzip \ + wget \ + cmake \ + g++ + +WORKDIR /tmp + +RUN wget -O opencv.zip https://github.com/opencv/opencv/archive/4.11.0.zip && \ + wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.11.0.zip && \ + unzip opencv.zip && \ + unzip opencv_contrib.zip && \ + cd opencv-4.11.0 && \ + mkdir build && cd build && \ + cmake -D CMAKE_BUILD_TYPE=RELEASE \ + -D CMAKE_INSTALL_PREFIX=/usr/local \ + -D OPENCV_ENABLE_NONFREE=ON \ + -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.11.0/modules \ + -D BUILD_EXAMPLES=OFF .. && \ + make -j2 && \ + make install && \ + ldconfig && \ + cd /tmp && \ + rm -rf opencv* && \ + apt-get clean + +WORKDIR /build \ No newline at end of file diff --git a/ios/PolkadotVault.xcodeproj/project.pbxproj b/ios/PolkadotVault.xcodeproj/project.pbxproj index f61f3b7992..368da154c4 100644 --- a/ios/PolkadotVault.xcodeproj/project.pbxproj +++ b/ios/PolkadotVault.xcodeproj/project.pbxproj @@ -2573,7 +2573,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ $ACTION != \"indexbuild\" ]; then\n bash $PROJECT_DIR/scripts/build_libsigner.sh\nfi\n"; + shellScript = "if [ $ACTION != \"indexbuild\" ]; then\n if [ \"$PLATFORM_NAME\" = \"iphoneos\" ]; then\n bash \"$PROJECT_DIR/scripts/build_libsigner.sh\" device\n else\n bash \"$PROJECT_DIR/scripts/build_libsigner.sh\" simulator\n fi\nfi\n"; }; 6DDEF13A28AE744F004CA2FD /* Generate Database */ = { isa = PBXShellScriptBuildPhase; @@ -2640,7 +2640,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ $ACTION != \"indexbuild\" ]; then\n sourcery --config \"${SRCROOT}/sourcery.yml\" && bash \"${SRCROOT}/PolkadotVaultTests/Generated/AutoMockable/Scripts/initial_setup.sh\"\nfi\n"; + shellScript = "if [ $ACTION != \"indexbuild\" ]; then\n export PATH=\"/opt/homebrew/bin:/usr/local/bin:$PATH\"\n sourcery --config \"${SRCROOT}/sourcery.yml\" && bash \"${SRCROOT}/PolkadotVaultTests/Generated/AutoMockable/Scripts/initial_setup.sh\"\nfi\n"; }; /* End PBXShellScriptBuildPhase section */ @@ -3190,7 +3190,6 @@ DEVELOPMENT_TEAM = QXCVVJ6654; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; INFOPLIST_FILE = PolkadotVault/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance"; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; @@ -3256,7 +3255,6 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = QXCVVJ6654; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; INFOPLIST_FILE = PolkadotVaultTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/ios/scripts/build_libsigner.sh b/ios/scripts/build_libsigner.sh old mode 100644 new mode 100755 index 44ba9ea5bc..c34bedd6f5 --- a/ios/scripts/build_libsigner.sh +++ b/ios/scripts/build_libsigner.sh @@ -2,10 +2,22 @@ set -e source $HOME/.cargo/env -IOS_ARCHS=(aarch64-apple-ios x86_64-apple-ios) LIB_NAME=signer +IOS_VERSION=15.8.1 -printf "Building iOS targets..."; +# Validate the input argument +if [ "$1" == "device" ]; then + ARM_ARCH=aarch64-apple-ios + echo "Building for iOS Device (x86_64-apple-ios and aarch64-apple-ios)" +elif [ "$1" == "simulator" ]; then + ARM_ARCH=aarch64-apple-ios-sim + echo "Building for iOS Simulator (x86_64-apple-ios and aarch64-apple-ios-sim)" +else + echo "Usage: $0 [device|simulator]" + exit 1 +fi + +IOS_ARCHS=(x86_64-apple-ios ${ARM_ARCH}) # XCode tries to be helpful and overwrites the PATH. Reset that. PATH="$(bash -l -c 'echo $PATH')" @@ -15,9 +27,10 @@ cd "$(dirname "${0}")/../../rust/signer" for i in "${IOS_ARCHS[@]}"; do rustup target add "$i"; - env -i PATH="${PATH}" \ + env -i PATH="${PATH}" IPHONEOS_DEPLOYMENT_TARGET="${IOS_VERSION}" \ + RUSTFLAGS="-C link-arg=-mios-version-min=${IOS_VERSION}" "${HOME}"/.cargo/bin/cargo build --locked --target "$i" --release --no-default-features done -lipo -create -output "../../ios/PolkadotVault/lib${LIB_NAME}.a" ../target/x86_64-apple-ios/release/libsigner.a ../target/aarch64-apple-ios/release/libsigner.a -lipo -create -output "lib${LIB_NAME}.a" ../target/x86_64-apple-ios/release/libsigner.a ../target/aarch64-apple-ios/release/libsigner.a +lipo -create -output "../../ios/PolkadotVault/lib${LIB_NAME}.a" ../target/x86_64-apple-ios/release/libsigner.a ../target/${ARM_ARCH}/release/libsigner.a +lipo -create -output "lib${LIB_NAME}.a" ../target/x86_64-apple-ios/release/libsigner.a ../target/${ARM_ARCH}/release/libsigner.a \ No newline at end of file diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 9b81d5cb16..15932ae828 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -14,24 +14,24 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.17.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aead" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c192eb8f11fc081b0fe4259ba5af04217d4e0faddd02417310a927911abd7c8" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ "crypto-common", "generic-array 0.14.7", @@ -39,29 +39,35 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", "once_cell", "version_check", ] [[package]] name = "aho-corasick" -version = "1.0.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_log-sys" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27f0fc03f560e1aebde41c2398b691cb98b5ea5996a6184a7a67bbbb77448969" +checksum = "5ecc8056bf6ab9892dcd53216c83d1597487d7dacac16c8df6b877d127df9937" [[package]] name = "android_logger" @@ -77,9 +83,9 @@ dependencies = [ [[package]] name = "android_system_properties" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9e" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ "libc", ] @@ -95,69 +101,71 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.7" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd2405b3ac1faab2990b74d728624cd9fd115651fcecc7c2d8daf01376275ba" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.82" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "array-bytes" -version = "4.1.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a913633b0c922e6b745072795f50d90ebea78ba31a57e2ac8c2fc7b50950949" +checksum = "f52f63c5c1316a16a4b35eaac8b76a98248961a533f061684cb2a7cb0eafb6c6" [[package]] name = "arrayref" -version = "0.3.6" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -167,9 +175,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "askama" @@ -190,7 +198,7 @@ checksum = "87bf87e6e8b47264efa9bde63d6225c6276a52e05e91bf37eaa8afd0032d6b71" dependencies = [ "askama_shared", "proc-macro2", - "syn 1.0.102", + "syn 1.0.109", ] [[package]] @@ -212,19 +220,20 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 1.0.102", + "syn 1.0.109", "toml", ] [[package]] name = "assert_cmd" -version = "2.0.14" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8" +checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d" dependencies = [ "anstyle", "bstr", "doc-comment", + "libc", "predicates", "predicates-core", "predicates-tree", @@ -233,43 +242,43 @@ dependencies = [ [[package]] name = "async-lock" -version = "2.5.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" dependencies = [ "event-listener", ] [[package]] name = "async-trait" -version = "0.1.58" +version = "0.1.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c" +checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" dependencies = [ "proc-macro2", "quote", - "syn 1.0.102", + "syn 2.0.98", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.64" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide 0.4.4", + "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -277,7 +286,7 @@ name = "banana_recovery" version = "0.2.0" source = "git+https://github.com/paritytech/banana-recovery-rust#a6d8d3214fa1abccca4a64a73a34d610ed02cb10" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bitvec", "crypto_secretbox", "hex", @@ -286,7 +295,7 @@ dependencies = [ "scrypt", "serde", "serde_json", - "sha2 0.10.2", + "sha2 0.10.8", "thiserror", "zeroize", ] @@ -299,27 +308,27 @@ checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" -version = "1.0.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "beef" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed554bd50246729a1ec158d08aa3235d1b69d94ad120ebe187e28894787e736" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" dependencies = [ "serde", ] @@ -335,9 +344,9 @@ dependencies = [ [[package]] name = "bit_field" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" [[package]] name = "bitflags" @@ -347,9 +356,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" [[package]] name = "bitvec" @@ -395,9 +404,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.10.2" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array 0.14.7", ] @@ -413,20 +422,20 @@ dependencies = [ [[package]] name = "bstr" -version = "1.6.0" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05" +checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" dependencies = [ "memchr", - "regex-automata 0.3.9", + "regex-automata 0.4.9", "serde", ] [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" @@ -442,45 +451,45 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.1.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" [[package]] name = "camino" -version = "1.0.9" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "869119e97797867fd90f5e22af7d0bd274bd4635ebb9eb68c04f3f513ae6c412" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ "serde", ] [[package]] name = "cargo-platform" -version = "0.1.2" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] [[package]] name = "cargo_metadata" -version = "0.15.2" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982a0cf6a99c350d7246035613882e376d58cebe571785abc5da4f648d53ac0a" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", @@ -492,11 +501,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.73" +version = "1.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9" dependencies = [ "jobserver", + "libc", + "shlex", ] [[package]] @@ -507,23 +518,21 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.21" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f725f340c3854e3cb3ab736dc21f0cca183303acea3b3ffec30f141503ac8eb" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ + "android-tzdata", "iana-time-zone", - "js-sys", - "num-integer", "num-traits", - "wasm-bindgen", - "winapi", + "windows-targets 0.52.6", ] [[package]] name = "cipher" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1873270f8f7942c191139cb8a40fd228da6c3fd2fc376d7e92d47aa14aeb59e" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", @@ -542,9 +551,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.3.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cc00842eed744b858222c4c9faf7243aafc6d33f92f96935263ef4d8a41ce21" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", @@ -552,9 +561,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.2" +version = "4.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651" +checksum = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d" dependencies = [ "clap_builder", "clap_derive", @@ -562,33 +571,33 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.0", + "strsim 0.11.1", ] [[package]] name = "clap_derive" -version = "4.5.0" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.47", + "syn 2.0.98", ] [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "color_quant" @@ -598,23 +607,41 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "console" -version = "0.15.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28b32d32ca44b70c3e4acd7db1babf555fa026e385fb95f18028f88848b3c31" +checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" dependencies = [ "encode_unicode", "libc", "once_cell", - "regex", - "terminal_size", "unicode-width", - "winapi", + "windows-sys 0.59.0", +] + +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", ] [[package]] @@ -626,9 +653,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -636,78 +663,58 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.2" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.4" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", - "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.1" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.8" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "lazy_static", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.8" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" -dependencies = [ - "cfg-if", - "lazy_static", -] +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-common" @@ -802,7 +809,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 1.0.102", + "syn 1.0.109", ] [[package]] @@ -813,18 +820,20 @@ checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ "darling_core", "quote", - "syn 1.0.102", + "syn 1.0.109", ] [[package]] name = "dashmap" -version = "5.3.3" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391b56fbd302e585b7a9494fb70e40949567b1cf9003a8e4a6041a1687c26573" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.12.3", + "hashbrown 0.14.5", "lock_api", + "once_cell", + "parking_lot_core 0.9.10", ] [[package]] @@ -886,9 +895,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", ] @@ -901,25 +910,34 @@ checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.102", + "syn 1.0.109", ] [[package]] name = "derive_more" -version = "0.99.17" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 1.0.102", + "syn 2.0.98", ] [[package]] name = "diff" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e25ea47919b1560c4e3b7fe0aaab9becf5b84a10325ddf7db0f0ba5e1026499" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" [[package]] name = "difflib" @@ -951,11 +969,22 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.2", + "block-buffer 0.10.4", "crypto-common", "subtle", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "doc-comment" version = "0.3.3" @@ -964,21 +993,21 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "downcast-rs" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dunce" -version = "1.0.2" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453440c271cf5577fd2a40e4942540cb7d0d2f85e27c8d07dd0023c925a67541" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clonable" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4" +checksum = "a36efbb9bfd58e1723780aa04b61aba95ace6a05d9ffabfdb0b43672552f0805" dependencies = [ "dyn-clonable-impl", "dyn-clone", @@ -986,20 +1015,20 @@ dependencies = [ [[package]] name = "dyn-clonable-impl" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5" +checksum = "7e8671d54058979a37a26f3511fbf8d198ba1aa35ffb202c42587d918d77213a" dependencies = [ "proc-macro2", "quote", - "syn 1.0.102", + "syn 2.0.98", ] [[package]] name = "dyn-clone" -version = "1.0.5" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28" +checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" [[package]] name = "ed25519-zebra" @@ -1017,15 +1046,15 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "env_logger" @@ -1042,45 +1071,45 @@ dependencies = [ [[package]] name = "environmental" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797" +checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "event-listener" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "exr" -version = "1.5.1" +version = "1.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a7880199e74c6d3fe45579df2f436c5913a71405494cb89d59234d86b47dc5" +checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" dependencies = [ "bit_field", - "flume", "half", "lebe", - "miniz_oxide 0.5.4", + "miniz_oxide", + "rayon-core", "smallvec", - "threadpool", + "zune-inflate", ] [[package]] @@ -1091,15 +1120,15 @@ checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "fastrand" -version = "2.0.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fdeflate" -version = "0.3.3" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "209098dd6dfc4445aa6111f0e98653ac323eaa4dfd212c9ca3931bf9955c31bd" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" dependencies = [ "simd-adler32", ] @@ -1128,25 +1157,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.24" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", - "miniz_oxide 0.5.4", -] - -[[package]] -name = "flume" -version = "0.10.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843c03199d0c0ca54bc1ea90ac0d507274c28abcc4f691ae8b4eaa375087c76a" -dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "pin-project", - "spin 0.9.3", + "miniz_oxide", ] [[package]] @@ -1157,9 +1173,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -1190,9 +1206,12 @@ dependencies = [ [[package]] name = "fs-err" -version = "2.8.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64db3e262960f0662f43a6366788d5f10f7f244b8f7d7d987f560baf5ded5c50" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] [[package]] name = "fs2" @@ -1212,9 +1231,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1227,9 +1246,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1237,15 +1256,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1255,44 +1274,44 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.47", + "syn 2.0.98", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-timer" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1326,7 +1345,7 @@ dependencies = [ "defaults", "definitions", "hex", - "jsonrpsee 0.20.3", + "jsonrpsee 0.20.4", "lazy_static", "parity-scale-codec", "qrcode_rtx", @@ -1376,9 +1395,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -1387,6 +1406,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + [[package]] name = "gif" version = "0.13.1" @@ -1399,21 +1430,21 @@ dependencies = [ [[package]] name = "gimli" -version = "0.26.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "goblin" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572564d6cba7d09775202c8e7eebc4d534d5ae36578ab402fb21e182a0ac9505" +checksum = "0d6b4de4a8eb6c46a8c77e1d3be942cb9a8bf073c22374578e5ba4b08ed0ff68" dependencies = [ "log", "plain", @@ -1441,9 +1472,13 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] [[package]] name = "hash-db" @@ -1471,9 +1506,15 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "heck" @@ -1482,28 +1523,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] -name = "hermit-abi" -version = "0.1.19" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.2.6" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hermit-abi" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "hex" @@ -1553,9 +1588,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.6" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -1564,9 +1599,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -1575,9 +1610,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.6.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -1593,9 +1628,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.20" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -1608,7 +1643,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2", "tokio", "tower-service", "tracing", @@ -1617,9 +1652,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http", @@ -1629,197 +1664,322 @@ dependencies = [ "rustls-native-certs", "tokio", "tokio-rustls", - "webpki-roots 0.23.1", + "webpki-roots", ] [[package]] name = "iana-time-zone" -version = "0.1.41" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1779539f58004e5dba1c1f093d44325ebeb244bfc04b791acdc0aaeca9c04570" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", - "core-foundation", + "core-foundation-sys", + "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi", + "windows-core 0.52.0", ] [[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "0.4.0" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "cc", ] [[package]] -name = "image" -version = "0.24.9" +name = "icu_collections" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" dependencies = [ - "bytemuck", - "byteorder", - "color_quant", - "exr", - "gif", - "jpeg-decoder", - "num-traits", - "png", - "qoi", - "tiff", + "displaydoc", + "yoke", + "zerofrom", + "zerovec", ] [[package]] -name = "impl-codec" -version = "0.6.0" +name = "icu_locid" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" dependencies = [ - "parity-scale-codec", + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", ] [[package]] -name = "impl-serde" -version = "0.4.0" +name = "icu_locid_transform" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" dependencies = [ - "serde", + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", ] [[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" +name = "icu_locid_transform_data" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.102", -] +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" [[package]] -name = "indexmap" -version = "2.1.0" +name = "icu_normalizer" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" dependencies = [ - "equivalent", - "hashbrown 0.14.3", + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", ] [[package]] -name = "indicatif" -version = "0.17.8" +name = "icu_normalizer_data" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" -dependencies = [ - "console", - "instant", - "number_prefix", - "portable-atomic", - "unicode-width", -] +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" [[package]] -name = "inout" -version = "0.1.3" +name = "icu_properties" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" dependencies = [ - "generic-array 0.14.7", + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", ] [[package]] -name = "instant" -version = "0.1.12" +name = "icu_properties_data" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" dependencies = [ - "cfg-if", + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", ] [[package]] -name = "integer-sqrt" -version = "0.1.5" +name = "icu_provider_macros" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "exr", + "gif", + "jpeg-decoder", "num-traits", + "png", + "qoi", + "tiff", ] [[package]] -name = "io-lifetimes" -version = "1.0.11" +name = "impl-codec" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", + "parity-scale-codec", ] [[package]] -name = "is-terminal" -version = "0.4.2" +name = "impl-serde" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" dependencies = [ - "hermit-abi 0.2.6", - "io-lifetimes", - "rustix 0.36.16", - "windows-sys 0.42.0", + "serde", ] [[package]] -name = "itertools" -version = "0.10.3" +name = "impl-trait-for-tuples" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ - "either", + "proc-macro2", + "quote", + "syn 2.0.98", ] +[[package]] +name = "indexmap" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", +] + +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width", + "web-time", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "integer-sqrt" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +dependencies = [ + "num-traits", +] + +[[package]] +name = "is-terminal" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" +dependencies = [ + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itoa" -version = "1.0.5" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jobserver" -version = "0.1.25" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] [[package]] name = "jpeg-decoder" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" dependencies = [ "rayon", ] [[package]] name = "js-sys" -version = "0.3.59" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1843,12 +2003,12 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.20.3" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "affdc52f7596ccb2d7645231fc6163bb314630c989b64998f3699a28b4d5d4dc" +checksum = "138572befc78a9793240645926f30161f8b4143d2be18d09e44ed9814bd7ee2c" dependencies = [ - "jsonrpsee-core 0.20.3", - "jsonrpsee-types 0.20.3", + "jsonrpsee-core 0.20.4", + "jsonrpsee-types 0.20.4", "jsonrpsee-ws-client", ] @@ -1870,18 +2030,18 @@ dependencies = [ "tokio-rustls", "tokio-util", "tracing", - "webpki-roots 0.25.2", + "webpki-roots", ] [[package]] name = "jsonrpsee-client-transport" -version = "0.20.3" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b005c793122d03217da09af68ba9383363caa950b90d3436106df8cabce935" +checksum = "5c671353e4adf926799107bd7f5724a06b6bc0a333db442a0843c58640bdd0c1" dependencies = [ "futures-util", "http", - "jsonrpsee-core 0.20.3", + "jsonrpsee-core 0.20.4", "pin-project", "rustls-native-certs", "soketto", @@ -1918,9 +2078,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.20.3" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2327ba8df2fdbd5e897e2b5ed25ce7f299d345b9736b6828814c3dbd1fd47b" +checksum = "f24ea59b037b6b9b0e2ebe2c30a3e782b56bd7c76dcc5d6d70ba55d442af56e3" dependencies = [ "anyhow", "async-lock", @@ -1928,7 +2088,7 @@ dependencies = [ "beef", "futures-timer", "futures-util", - "jsonrpsee-types 0.20.3", + "jsonrpsee-types 0.20.4", "rustc-hash", "serde", "serde_json", @@ -1972,9 +2132,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.20.3" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be0be325642e850ed0bdff426674d2e66b2b7117c9be23a7caef68a2902b7d9" +checksum = "3264e339143fe37ed081953842ee67bfafa99e3b91559bdded6e4abd8fc8535e" dependencies = [ "anyhow", "beef", @@ -1986,28 +2146,31 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.20.3" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca9cb3933ccae417eb6b08c3448eb1cb46e39834e5b503e395e5e5bd08546c0" +checksum = "6d06eeabbb55f0af8405288390a358ebcceb6e79e1390741e6f152309c4d6076" dependencies = [ "http", - "jsonrpsee-client-transport 0.20.3", - "jsonrpsee-core 0.20.3", - "jsonrpsee-types 0.20.3", + "jsonrpsee-client-transport 0.20.4", + "jsonrpsee-core 0.20.4", + "jsonrpsee-types 0.20.4", "url", ] [[package]] name = "keccak" -version = "0.1.0" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lebe" @@ -2017,15 +2180,15 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libm" -version = "0.2.5" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "292a948cd991e376cf75541fe5b97a1081d713c618b4f1b9500f8844e49eb565" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libsecp256k1" @@ -2034,7 +2197,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" dependencies = [ "arrayref", - "base64 0.13.0", + "base64 0.13.1", "digest 0.9.0", "hmac-drbg", "libsecp256k1-core", @@ -2077,21 +2240,21 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.1.3" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f9f08d8963a6c613f4b1a78f4f4a4dbfadf8e6545b2d72861731e4858b8b47f" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] -name = "linux-raw-sys" -version = "0.4.12" +name = "litemap" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" [[package]] name = "lock_api" -version = "0.4.7" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -2099,9 +2262,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "lru" @@ -2123,18 +2286,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" - -[[package]] -name = "memoffset" -version = "0.6.5" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memory-db" @@ -2167,15 +2321,15 @@ dependencies = [ [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", @@ -2189,51 +2343,23 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" -dependencies = [ - "adler", - "autocfg", -] - -[[package]] -name = "miniz_oxide" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" -dependencies = [ - "adler", -] - -[[package]] -name = "miniz_oxide" -version = "0.7.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b" dependencies = [ - "adler", + "adler2", "simd-adler32", ] [[package]] name = "mio" -version = "0.8.11" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", -] - -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.14", + "windows-sys 0.52.0", ] [[package]] @@ -2280,11 +2406,10 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -2297,13 +2422,13 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-derive" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.47", + "syn 2.0.98", ] [[package]] @@ -2312,27 +2437,25 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" dependencies = [ - "arrayvec 0.7.2", + "arrayvec 0.7.6", "itoa", ] [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-rational" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", "num-bigint", "num-integer", "num-traits", @@ -2340,20 +2463,20 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.13.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.1.19", + "hermit-abi 0.3.9", "libc", ] @@ -2365,18 +2488,18 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.27.1" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.13.0" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "opaque-debug" @@ -2386,15 +2509,15 @@ checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "opencv" -version = "0.88.7" +version = "0.94.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "461ace7d1fd13b846ef1096dc7cac0f2ac39e8803360953eb869a42e8e1e5baa" +checksum = "f80fd7d018d20b1e49bdd65e72350f1f63cad6bc9c15f850c47c31a6ad8d0d20" dependencies = [ "cc", "dunce", @@ -2407,13 +2530,14 @@ dependencies = [ "semver", "shlex", "vcpkg", + "windows", ] [[package]] name = "opencv-binding-generator" -version = "0.84.0" +version = "0.95.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e842c276fd00b26100de550e2b47f6ded4f06213c62f0575cb7242aecde2efd" +checksum = "7283829fe440be381fea73521f850b287fd44f994acd6453e1e19b3d479ef7fc" dependencies = [ "clang", "clang-sys", @@ -2421,13 +2545,14 @@ dependencies = [ "once_cell", "percent-encoding", "regex", + "shlex", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "oslog" @@ -2442,29 +2567,31 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.9" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" +checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" dependencies = [ - "arrayvec 0.7.2", + "arrayvec 0.7.6", "bitvec", "byte-slice-cast", "bytes", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.9" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" +checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" dependencies = [ - "proc-macro-crate 2.0.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 1.0.102", + "syn 2.0.98", ] [[package]] @@ -2477,7 +2604,7 @@ dependencies = [ "hashbrown 0.12.3", "impl-trait-for-tuples", "parity-util-mem-derive", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "primitive-types", "winapi", ] @@ -2489,8 +2616,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" dependencies = [ "proc-macro2", - "syn 1.0.102", - "synstructure", + "syn 1.0.109", + "synstructure 0.12.6", ] [[package]] @@ -2507,44 +2634,44 @@ checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", "lock_api", - "parking_lot_core 0.8.5", + "parking_lot_core 0.8.6", ] [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", - "parking_lot_core 0.9.2", + "parking_lot_core 0.9.10", ] [[package]] name = "parking_lot_core" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ "cfg-if", "instant", "libc", - "redox_syscall", + "redox_syscall 0.2.16", "smallvec", "winapi", ] [[package]] name = "parking_lot_core" -version = "0.9.2" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995f667a6c822200b0433ac218e05582f0e2efa1b922a3fd2fbaadc5f87bab37" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.8", "smallvec", - "windows-sys 0.34.0", + "windows-targets 0.52.6", ] [[package]] @@ -2583,9 +2710,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.7" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pbkdf2" @@ -2626,35 +2753,35 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.0.10" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.10" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" dependencies = [ "proc-macro2", "quote", - "syn 1.0.102", + "syn 2.0.98", ] [[package]] name = "pin-project-lite" -version = "0.2.12" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -2664,9 +2791,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plain" @@ -2676,15 +2803,15 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "png" -version = "0.17.13" +version = "0.17.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" dependencies = [ "bitflags 1.3.2", "crc32fast", "fdeflate", "flate2", - "miniz_oxide 0.7.1", + "miniz_oxide", ] [[package]] @@ -2694,15 +2821,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ "cpufeatures", - "opaque-debug 0.3.0", + "opaque-debug 0.3.1", "universal-hash", ] [[package]] name = "portable-atomic" -version = "1.3.2" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc59d1bcc64fc5d021d67521f818db868368028108d37f0e98d74e33f68297b5" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "powerfmt" @@ -2712,33 +2839,35 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "predicates" -version = "3.0.3" +version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09963355b9f467184c04017ced4a2ba2d75cbcb4e7462690d388233253d4b1a9" +checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" dependencies = [ "anstyle", "difflib", - "itertools", "predicates-core", ] [[package]] name = "predicates-core" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" +checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" [[package]] name = "predicates-tree" -version = "1.0.5" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d86de6de25020a36c6d3643a86d9a6a9f552107c0559c60ea03551b5e16c032" +checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" dependencies = [ "predicates-core", "termtree", @@ -2746,9 +2875,9 @@ dependencies = [ [[package]] name = "pretty_assertions" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" dependencies = [ "diff", "yansi", @@ -2756,9 +2885,9 @@ dependencies = [ [[package]] name = "primitive-types" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", @@ -2773,21 +2902,21 @@ version = "0.1.0" [[package]] name = "proc-macro-crate" -version = "1.1.3" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ - "thiserror", - "toml", + "once_cell", + "toml_edit 0.19.15", ] [[package]] name = "proc-macro-crate" -version = "2.0.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit", + "toml_edit 0.22.24", ] [[package]] @@ -2799,7 +2928,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.102", + "syn 1.0.109", "version_check", ] @@ -2816,9 +2945,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.75" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "907a61bd0f64c2f29cd1cf1dc34d05176426a3f504a78010f08416ddb7b13708" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] @@ -2905,9 +3034,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -2978,7 +3107,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", ] [[package]] @@ -3007,68 +3136,72 @@ checksum = "7cc8cd0bcb2d520fff368264b5a6295e064c60955349517d09b14473afae4856" [[package]] name = "rayon" -version = "1.5.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ - "autocfg", - "crossbeam-deque", "either", "rayon-core", ] [[package]] name = "rayon-core" -version = "1.9.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "lazy_static", - "num_cpus", ] [[package]] name = "redox_syscall" -version = "0.2.13" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +dependencies = [ + "bitflags 2.8.0", +] + [[package]] name = "ref-cast" -version = "1.0.6" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300f2a835d808734ee295d45007adacb9ebb29dd3ae2424acfa17930cae541da" +checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.6" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c38e3aecd2b21cb3959637b883bb3714bc7e43f0268b9a29d3743ee3e55cdd2" +checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn 1.0.102", + "syn 2.0.98", ] [[package]] name = "regex" -version = "1.10.3" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.4", - "regex-syntax 0.8.2", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -3082,19 +3215,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" - -[[package]] -name = "regex-automata" -version = "0.4.4" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.5", ] [[package]] @@ -3105,24 +3232,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" - -[[package]] -name = "ring" -version = "0.16.20" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", -] +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "ring" @@ -3131,18 +3243,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babe80d5c16becf6594aa32ad2be8fe08498e7ae60b77de8df700e67f191d7e" dependencies = [ "cc", - "getrandom 0.2.14", + "getrandom 0.2.15", "libc", - "spin 0.9.3", - "untrusted 0.9.0", + "spin", + "untrusted", "windows-sys 0.48.0", ] [[package]] name = "rustc-demangle" -version = "0.1.21" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -3158,29 +3270,15 @@ checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustix" -version = "0.36.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6da3636faa25820d8648e0e31c5d519bbb01f72fdf57131f0f5f7da5fed36eab" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.1.3", - "windows-sys 0.45.0", -] - -[[package]] -name = "rustix" -version = "0.38.31" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.8.0", "errno", "libc", - "linux-raw-sys 0.4.12", - "windows-sys 0.52.0", + "linux-raw-sys", + "windows-sys 0.59.0", ] [[package]] @@ -3190,16 +3288,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.3", - "rustls-webpki 0.101.7", + "ring", + "rustls-webpki", "sct", ] [[package]] name = "rustls-native-certs" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca9ebdfa27d3fc180e42879037b5338ab1c040c06affd00d8338598e7800943" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", "rustls-pemfile", @@ -3209,44 +3307,34 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "0.2.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.13.0", + "base64 0.21.7", ] [[package]] name = "rustls-webpki" -version = "0.100.2" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e98ff011474fa39949b7e5c0428f9b4937eda7da7848bbb947786b7be0b27dab" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring", + "untrusted", ] [[package]] -name = "rustls-webpki" -version = "0.101.7" +name = "rustversion" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring 0.17.3", - "untrusted 0.9.0", -] - -[[package]] -name = "rustversion" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "ryu" -version = "1.0.9" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "salsa20" @@ -3260,7 +3348,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "log", "sp-core", @@ -3271,7 +3359,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "environmental", "parity-scale-codec", @@ -3287,7 +3375,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "log", "parity-scale-codec", @@ -3324,9 +3412,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.10.0" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "bitvec", "cfg-if", @@ -3338,14 +3426,14 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.10.0" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 1.0.102", + "syn 2.0.98", ] [[package]] @@ -3367,12 +3455,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.19" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "lazy_static", - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -3395,9 +3482,9 @@ dependencies = [ [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scroll" @@ -3410,13 +3497,13 @@ dependencies = [ [[package]] name = "scroll_derive" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbda6ac5cd1321e724fa9cee216f3a61885889b896f073b8f82322789c5250e" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 1.0.102", + "syn 2.0.98", ] [[package]] @@ -3428,24 +3515,24 @@ dependencies = [ "password-hash", "pbkdf2 0.12.2", "salsa20", - "sha2 0.10.2", + "sha2 0.10.8", ] [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring", + "untrusted", ] [[package]] name = "secp256k1" -version = "0.24.2" +version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9512ffd81e3a3503ed401f79c33168b9148c75038956039166cd750eaa037c3" +checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" dependencies = [ "secp256k1-sys", ] @@ -3470,11 +3557,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.6.1" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.8.0", "core-foundation", "core-foundation-sys", "libc", @@ -3483,9 +3570,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.6.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -3493,40 +3580,41 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.7" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.194" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b114498256798c94a0689e1a15fec6005dee8ac1f41de56404b67afc2a4b773" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.194" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3385e45322e8f9931410f01b3031ec534c3947d0e94c18049af4d9f9907d4e0" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.47", + "syn 2.0.98", ] [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -3541,7 +3629,7 @@ dependencies = [ "cfg-if", "cpufeatures", "digest 0.9.0", - "opaque-debug 0.3.0", + "opaque-debug 0.3.1", ] [[package]] @@ -3566,14 +3654,14 @@ dependencies = [ "cfg-if", "cpufeatures", "digest 0.9.0", - "opaque-debug 0.3.0", + "opaque-debug 0.3.1", ] [[package]] name = "sha2" -version = "0.10.2" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -3582,9 +3670,9 @@ dependencies = [ [[package]] name = "sha3" -version = "0.10.1" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881bf8156c87b6301fc5ca6b27f11eeb2761224c7081e69b409d5a1951a70c86" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ "digest 0.10.7", "keccak", @@ -3592,9 +3680,9 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] @@ -3607,9 +3695,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -3644,21 +3732,24 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "siphasher" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" -version = "0.4.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] [[package]] name = "sled" @@ -3678,28 +3769,18 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" [[package]] name = "socket2" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "socket2" -version = "0.5.5" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3708,7 +3789,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ - "base64 0.13.0", + "base64 0.13.1", "bytes", "futures", "httparse", @@ -3720,7 +3801,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "parity-scale-codec", "scale-info", @@ -3733,7 +3814,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "integer-sqrt", "num-traits", @@ -3748,7 +3829,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "array-bytes", "base58", @@ -3768,7 +3849,7 @@ dependencies = [ "num-traits", "parity-scale-codec", "parity-util-mem", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "primitive-types", "rand 0.7.3", "regex", @@ -3794,12 +3875,12 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "blake2", "byteorder", "digest 0.10.7", - "sha2 0.10.2", + "sha2 0.10.8", "sha3", "sp-std 4.0.0", "twox-hash", @@ -3814,7 +3895,7 @@ dependencies = [ "blake2", "byteorder", "digest 0.10.7", - "sha2 0.10.2", + "sha2 0.10.8", "sha3", "sp-std 6.0.0", "twox-hash", @@ -3823,28 +3904,28 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "proc-macro2", "quote", "sp-core-hashing 4.0.0", - "syn 1.0.102", + "syn 1.0.109", ] [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "proc-macro2", "quote", - "syn 1.0.102", + "syn 1.0.109", ] [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "environmental", "parity-scale-codec", @@ -3855,7 +3936,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "bytes", "futures", @@ -3863,7 +3944,7 @@ dependencies = [ "libsecp256k1", "log", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "secp256k1", "sp-core", "sp-externalities", @@ -3881,7 +3962,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "lazy_static", "sp-core", @@ -3892,13 +3973,13 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "async-trait", "futures", "merlin", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "schnorrkel", "sp-core", "sp-externalities", @@ -3908,7 +3989,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "thiserror", "zstd", @@ -3917,7 +3998,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "backtrace", "lazy_static", @@ -3927,7 +4008,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "either", "hash256-std-hasher", @@ -3950,7 +4031,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -3968,19 +4049,19 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "Inflector", - "proc-macro-crate 1.1.3", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 1.0.102", + "syn 1.0.109", ] [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "log", "parity-scale-codec", @@ -3994,13 +4075,13 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "hash-db", "log", "num-traits", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "rand 0.7.3", "smallvec", "sp-core", @@ -4016,7 +4097,7 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" [[package]] name = "sp-std" @@ -4027,7 +4108,7 @@ checksum = "af0ee286f98455272f64ac5bb1384ff21ac029fbb669afbaf48477faff12760e" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "impl-serde", "parity-scale-codec", @@ -4040,7 +4121,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "parity-scale-codec", "sp-std 4.0.0", @@ -4052,7 +4133,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "ahash", "hash-db", @@ -4062,7 +4143,7 @@ dependencies = [ "memory-db", "nohash-hasher", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "scale-info", "sp-core", "sp-std 4.0.0", @@ -4075,7 +4156,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "impl-serde", "parity-scale-codec", @@ -4092,18 +4173,18 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "parity-scale-codec", "proc-macro2", "quote", - "syn 1.0.102", + "syn 1.0.109", ] [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "impl-trait-for-tuples", "log", @@ -4115,7 +4196,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate#49734dd1d72a00b9d3b87ba397661a63e0e17af3" +source = "git+https://github.com/paritytech/substrate?rev=49734dd1d72a00b9d3b87ba397661a63e0e17af3#49734dd1d72a00b9d3b87ba397661a63e0e17af3" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -4130,24 +4211,15 @@ dependencies = [ [[package]] name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "spin" -version = "0.9.3" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c530c2b0d0bf8b69304b39fe2001993e267461948b890cd037d8ad4293fa1a0d" -dependencies = [ - "lock_api", -] +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "ss58-registry" -version = "1.37.0" +version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d44528162f980c0e03c71e005d334332c8da0aec9f2b0b4bdc557ed4a9f24776" +checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" dependencies = [ "Inflector", "num-format", @@ -4158,6 +4230,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -4172,9 +4250,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strsim" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" @@ -4191,11 +4269,11 @@ version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "rustversion", - "syn 1.0.102", + "syn 1.0.109", ] [[package]] @@ -4228,11 +4306,11 @@ dependencies = [ "derivative", "frame-metadata 15.1.0", "futures", - "getrandom 0.2.14", + "getrandom 0.2.15", "hex", "impl-serde", "parity-scale-codec", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "primitive-types", "scale-bits", "scale-decode", @@ -4255,7 +4333,7 @@ checksum = "b8e86cb719003f1cedf2710a6e55ca4c37aba4c989bbd3b81dd1c52af9e4827e" dependencies = [ "darling", "frame-metadata 15.1.0", - "heck", + "heck 0.4.1", "hex", "jsonrpsee 0.16.3", "parity-scale-codec", @@ -4264,7 +4342,7 @@ dependencies = [ "quote", "scale-info", "subxt-metadata", - "syn 1.0.102", + "syn 1.0.109", "tokio", ] @@ -4277,7 +4355,7 @@ dependencies = [ "darling", "proc-macro-error", "subxt-codegen", - "syn 1.0.102", + "syn 1.0.109", ] [[package]] @@ -4294,9 +4372,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.102" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -4305,9 +4383,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.47" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1726efe18f42ae774cc644f330953a5e7b3c3003d3edcecf18850fe9d4dd9afb" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -4322,10 +4400,21 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", - "syn 1.0.102", + "syn 1.0.109", "unicode-xid", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "tap" version = "1.0.1" @@ -4334,84 +4423,68 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" dependencies = [ "cfg-if", "fastrand", - "rustix 0.38.31", - "windows-sys 0.52.0", + "getrandom 0.3.1", + "once_cell", + "rustix", + "windows-sys 0.59.0", ] [[package]] name = "termcolor" -version = "1.1.3" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] -[[package]] -name = "terminal_size" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "termtree" -version = "0.2.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507e9898683b6c43a9aa55b64259b721b52ba226e0f3779137e50ad114a4c90b" +checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.47", + "syn 2.0.98", ] [[package]] name = "thread_local" -version = "1.1.4" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ + "cfg-if", "once_cell", ] -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - [[package]] name = "tiff" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" dependencies = [ "flate2", "jpeg-decoder", @@ -4420,9 +4493,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", @@ -4441,9 +4514,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", @@ -4480,56 +4553,65 @@ dependencies = [ "pbkdf2 0.11.0", "rand 0.8.5", "rustc-hash", - "sha2 0.10.2", + "sha2 0.10.8", "thiserror", "unicode-normalization", "wasm-bindgen", "zeroize", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.36.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.47", + "syn 2.0.98", ] [[package]] @@ -4544,9 +4626,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.3" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -4554,48 +4636,57 @@ dependencies = [ "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] name = "toml" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] [[package]] name = "toml_edit" -version = "0.20.7" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ "indexmap", "toml_datetime", - "winnow", + "winnow 0.7.2", ] [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.35" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ - "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -4603,20 +4694,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.20" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 1.0.102", + "syn 2.0.98", ] [[package]] name = "tracing-core" -version = "0.1.28" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -4624,12 +4715,12 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] @@ -4730,9 +4821,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "twox-hash" @@ -4748,15 +4839,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.15.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "uint" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" dependencies = [ "byteorder", "crunchy", @@ -4766,45 +4857,36 @@ dependencies = [ [[package]] name = "unicase" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.13" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.4" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" -version = "0.1.9" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "uniffi" @@ -4835,7 +4917,7 @@ dependencies = [ "fs-err", "glob", "goblin", - "heck", + "heck 0.4.1", "once_cell", "paste", "serde", @@ -4864,7 +4946,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f55105cc7e1ac83ca1eb29587e3b7f65737f9142dc65d54b63502c2589c9d6a5" dependencies = [ "quote", - "syn 1.0.102", + "syn 1.0.109", ] [[package]] @@ -4880,7 +4962,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 1.0.102", + "syn 1.0.109", "toml", "uniffi_build", "uniffi_meta", @@ -4914,20 +4996,14 @@ dependencies = [ [[package]] name = "universal-hash" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d3160b73c9a19f7e2939a2fdad446c57c1bbbbf4d919d3213ff1267a580d8b5" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ "crypto-common", "subtle", ] -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -4936,26 +5012,38 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.0" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -4965,15 +5053,15 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -4999,36 +5087,46 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.82" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.82" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 1.0.102", + "syn 2.0.98", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.82" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5036,22 +5134,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.82" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 1.0.102", + "syn 2.0.98", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.82" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-instrument" @@ -5096,10 +5197,10 @@ dependencies = [ ] [[package]] -name = "web-sys" -version = "0.3.57" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -5107,18 +5208,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.23.1" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" -dependencies = [ - "rustls-webpki 0.100.2", -] - -[[package]] -name = "webpki-roots" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "weedle2" @@ -5153,11 +5245,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -5167,40 +5259,75 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows-sys" -version = "0.34.0" +name = "windows" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5acdd78cb4ba54c0045ac14f62d8f94a03d10047904ae2a40afa1e99d8f70825" +checksum = "7f919aee0a93304be7f62e8e5027811bbba96bcb1de84d6618be56e43f8a32a1" dependencies = [ - "windows_aarch64_msvc 0.34.0", - "windows_i686_gnu 0.34.0", - "windows_i686_msvc 0.34.0", - "windows_x86_64_gnu 0.34.0", - "windows_x86_64_msvc 0.34.0", + "windows-core 0.59.0", + "windows-targets 0.53.0", ] [[package]] -name = "windows-sys" -version = "0.42.0" +name = "windows-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows_aarch64_gnullvm 0.42.1", - "windows_aarch64_msvc 0.42.1", - "windows_i686_gnu 0.42.1", - "windows_i686_msvc 0.42.1", - "windows_x86_64_gnu 0.42.1", - "windows_x86_64_gnullvm 0.42.1", - "windows_x86_64_msvc 0.42.1", + "windows-targets 0.52.6", ] [[package]] -name = "windows-sys" -version = "0.45.0" +name = "windows-core" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "810ce18ed2112484b0d4e15d022e5f598113e220c53e373fb31e67e21670c1ce" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.53.0", +] + +[[package]] +name = "windows-implement" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "windows-interface" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26fd936d991781ea39e87c3a27285081e3c0da5ca0fcbc02d368cc6f52ff01" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "windows-result" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "d08106ce80268c4067c0571ca55a9b4e9516518eaa1a1fe9b37ca403ae1d1a34" dependencies = [ - "windows-targets 0.42.1", + "windows-targets 0.53.0", +] + +[[package]] +name = "windows-strings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b888f919960b42ea4e11c2f408fadb55f78a9f236d5eef084103c8ce52893491" +dependencies = [ + "windows-targets 0.53.0", ] [[package]] @@ -5209,7 +5336,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -5218,233 +5345,256 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] -name = "windows-targets" -version = "0.42.1" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows_aarch64_gnullvm 0.42.1", - "windows_aarch64_msvc 0.42.1", - "windows_i686_gnu 0.42.1", - "windows_i686_msvc 0.42.1", - "windows_x86_64_gnu 0.42.1", - "windows_x86_64_gnullvm 0.42.1", - "windows_x86_64_msvc 0.42.1", + "windows-targets 0.52.6", ] [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.1" +name = "windows-targets" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] -name = "windows_aarch64_msvc" -version = "0.34.0" +name = "windows_aarch64_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" [[package]] name = "windows_aarch64_msvc" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" [[package]] name = "windows_i686_gnu" -version = "0.34.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.42.1" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" [[package]] -name = "windows_i686_gnu" -version = "0.52.0" +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] -name = "windows_i686_msvc" -version = "0.34.0" +name = "windows_i686_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" [[package]] name = "windows_i686_msvc" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.34.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" [[package]] name = "windows_x86_64_gnu" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" [[package]] name = "windows_x86_64_msvc" -version = "0.34.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.42.1" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] -name = "windows_x86_64_msvc" -version = "0.52.0" +name = "winnow" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] [[package]] name = "winnow" -version = "0.5.19" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "59690dea168f2198d1a3b0cac23b8063efcd11012f10ae4698f284808c8ef603" dependencies = [ "memchr", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" dependencies = [ "tap", ] [[package]] name = "yansi" -version = "0.5.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "yap" @@ -5452,25 +5602,112 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fc77f52dc9e9b10d55d3f4462c3b7fc393c4f17975d641542833ab2d3bc26ef" +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", + "synstructure 0.13.1", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", + "synstructure 0.13.1", +] + [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 1.0.102", - "synstructure", + "syn 2.0.98", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] @@ -5494,10 +5731,19 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.1+zstd.1.5.2" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", - "libc", + "pkg-config", +] + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", ] diff --git a/rust/constants/src/lib.rs b/rust/constants/src/lib.rs index 8f70170e71..a102404cd2 100644 --- a/rust/constants/src/lib.rs +++ b/rust/constants/src/lib.rs @@ -13,13 +13,13 @@ //! //! - [`SPECSTREE`], with network specs in cold database format //! - [`VERIFIERS`], with network verifiers, i.e. data on who user trusts to -//! sign updates for a given network +//! sign updates for a given network //! - [`METATREE`], with network metadata //! - [`ADDRTREE`], with user addresses public information //! - [`SETTREE`], containing general verifier, types information, and Vault -//! danger status +//! danger status //! - [`TRANSACTION`], used to store temporarily transaction data while the -//! user accepts or declines it +//! user accepts or declines it //! - [`HISTORY`], with history log //! //! Hot database contains following trees: @@ -34,7 +34,7 @@ //! //! - tree names in cold database alone or shared between cold and hot databases //! - key names in [`SPECSTREE`] tree of cold database alone or shared between -//! cold and hot databases +//! cold and hot databases //! - recurring throughout the Vault seed phrase for Alice //! - QR graphic settings, used for both static and animated PNG QR codes //! @@ -43,7 +43,7 @@ //! air-gapped device. It includes: //! //! - keys for [`TRANSACTION`] tree, used for temporary storage for various -//! kinds of transactions while they are shown to user for approval +//! kinds of transactions while they are shown to user for approval //! - display settings for history log and word guesser //! //! Feature `"active"` corresponds to all Vault-related things happening @@ -54,7 +54,7 @@ //! - default color settings for network specs //! - default files and folders name fragments, for use with `generate_message` //! - fountain qr generation parameters (large apng fountain qr codes are -//! generated only on the hot side) +//! generated only on the hot side) //! //! Feature `"test"` includes all `"signer"` and `"active"` contents, and some //! recurring data for integration testing, such as known identicons and known diff --git a/rust/db_handling/Cargo.toml b/rust/db_handling/Cargo.toml index f621abac5d..9b2ee56575 100644 --- a/rust/db_handling/Cargo.toml +++ b/rust/db_handling/Cargo.toml @@ -16,8 +16,8 @@ lazy_static = "1.4.0" parity-scale-codec = {version = "3.6.9", features = ["derive"]} regex = "1.10.3" sled = "0.34.6" -sp-core = {git = "https://github.com/paritytech/substrate", default-features = false, features = ["full_crypto"], optional = true} -sp-runtime = {git = "https://github.com/paritytech/substrate", default-features = false, optional = true} +sp-core = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false, features = ["full_crypto"], optional = true} +sp-runtime = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false, optional = true} thiserror = "1.0.57" time = {version = "0.3.36", features = ["formatting", "macros"]} tiny-bip39 = {version = "1.0.0", default-features = false, optional = true} @@ -30,6 +30,7 @@ tempfile = { version = "3.10" } [features] default = [] active = ["defaults/active", "definitions/active", "tiny-bip39", "sp-core", "sp-runtime", "zeroize"] +test = [] [lib] name = "db_handling" diff --git a/rust/db_handling/src/cold_default.rs b/rust/db_handling/src/cold_default.rs index 7ed364d03f..e09b64565c 100644 --- a/rust/db_handling/src/cold_default.rs +++ b/rust/db_handling/src/cold_default.rs @@ -8,7 +8,7 @@ //! - `HISTORY` with Vault history log //! - `METATREE` with network metadata //! - `SETTREE` with settings: types information, Vault dangerous exposures -//! record and Vault database general verifier +//! record and Vault database general verifier //! - `SPECSTREE` with network specs //! - `TRANSACTION` for temporary storage of the transaction data //! - `VERIFIERS` with network verifiers data @@ -19,10 +19,10 @@ //! Before the database could be used, it must be initiated: //! //! - History log old entries (if any are present) are removed and a new entry -//! `Event::DatabaseInitiated` is added +//! `Event::DatabaseInitiated` is added //! - General verifier is set and this event is recorded in the history log. By -//! default, Vault sets up Parity-associated key as a general verifier. This -//! could be later on changed by the user. +//! default, Vault sets up Parity-associated key as a general verifier. This +//! could be later on changed by the user. //! //! Vault then reads and updates the database as it operates. //! @@ -31,13 +31,13 @@ //! state. The difference would be only in the general verifier setting: //! //! - `Wipe all data` would set the general verifier to default `Some(_)`, -//! with Parity-associated key inside +//! with Parity-associated key inside //! - `Remove general certificate` would set the general verifier to `None`. -//! User would then be able to set up own general verifier, preferably -//! immediately afterwards, by loading to Vault any verified data. -//! Setting up a new general verifier would remove all data associated with the -//! general verifier from the Vault database to avoid confusion as to who -//! verified what information. +//! User would then be able to set up own general verifier, preferably +//! immediately afterwards, by loading to Vault any verified data. +//! Setting up a new general verifier would remove all data associated with the +//! general verifier from the Vault database to avoid confusion as to who +//! verified what information. #[cfg(feature = "active")] use parity_scale_codec::Encode; #[cfg(feature = "active")] diff --git a/rust/db_handling/src/db_transactions.rs b/rust/db_handling/src/db_transactions.rs index 9868a762db..32fdbcb7e2 100644 --- a/rust/db_handling/src/db_transactions.rs +++ b/rust/db_handling/src/db_transactions.rs @@ -498,8 +498,8 @@ impl TrDbColdStub { /// cold database: /// /// - Add a (key, value) pair to the metadata additions queue in - /// `metadata_stub`. Key is [`MetaKey`] in key form, value is metadata in - /// `Vec` format. + /// `metadata_stub`. Key is [`MetaKey`] in key form, value is metadata in + /// `Vec` format. /// - Add corresponding `Event::MetadataAdded(_)` into `history_stub`. pub fn add_metadata(mut self, meta_values: &MetaValues) -> Self { let meta_key = MetaKey::from_parts(&meta_values.name, meta_values.version); @@ -515,7 +515,7 @@ impl TrDbColdStub { /// Prepare removing the metadata from the cold database: /// /// - Add [`MetaKey`] in key form to the metadata removals queue in - /// `metadata_stub`. + /// `metadata_stub`. /// - Add corresponding `Event::MetadataRemoved(_)` into `history_stub`. /// /// Function is used for `Hold` and `GeneralHold` processing when, @@ -532,26 +532,26 @@ impl TrDbColdStub { /// Prepare adding [`OrderedNetworkSpecs`] into the cold database: /// /// - Transform received in `add_specs` payload [`NetworkSpecs`] - /// into [`OrderedNetworkSpecs`] by adding `order` field. Networks are always added - /// in the end of the network list, with order set to the total number of - /// network specs entries currently in Vault. When a network is removed, - /// the order of the remaining networks gets rearranged, see details in - /// function [`remove_network`](crate::helpers::remove_network). + /// into [`OrderedNetworkSpecs`] by adding `order` field. Networks are always added + /// in the end of the network list, with order set to the total number of + /// network specs entries currently in Vault. When a network is removed, + /// the order of the remaining networks gets rearranged, see details in + /// function [`remove_network`](crate::helpers::remove_network). /// - Add a (key, value) pair to the network specs additions queue in - /// `network_specs_stub`. Key is [`NetworkSpecsKey`] in key form, value is - /// SCALE-encoded [`OrderedNetworkSpecs`]. + /// `network_specs_stub`. Key is [`NetworkSpecsKey`] in key form, value is + /// SCALE-encoded [`OrderedNetworkSpecs`]. /// - Add corresponding `Event::NetworkSpecsAdded(_)` into `history_stub`. /// - Add root address for the network if the - /// [`AddressDetails`](definitions::users::AddressDetails) entry with - /// matching [`Encryption`](definitions::crypto::Encryption) already exists, - /// i.e. add (key, value) pair to the address additions queue in - /// `addresses_stub`. Key is - /// [`AddressKey`](definitions::keyring::AddressKey) - /// in key form, value is - /// SCALE-encoded updated - /// [`AddressDetails`](definitions::users::AddressDetails). + /// [`AddressDetails`](definitions::users::AddressDetails) entry with + /// matching [`Encryption`](definitions::crypto::Encryption) already exists, + /// i.e. add (key, value) pair to the address additions queue in + /// `addresses_stub`. Key is + /// [`AddressKey`](definitions::keyring::AddressKey) + /// in key form, value is + /// SCALE-encoded updated + /// [`AddressDetails`](definitions::users::AddressDetails). /// - If address was added, add corresponding `Event::IdentityAdded(_)` - /// into `history_stub`. + /// into `history_stub`. /// /// Note that `add_network_specs` does not deal with network verifiers: /// verifier data is not necessarily updated each time the network @@ -589,7 +589,7 @@ impl TrDbColdStub { /// Prepare removing [`OrderedNetworkSpecs`] from the cold database: /// /// - Add [`NetworkSpecsKey`] in key form to the network specs removal queue - /// in `network_specs_stub`. + /// in `network_specs_stub`. /// - Add corresponding `Event::NetworkSpecsRemoved(_)` into `history_stub`. /// /// Function is used for `Hold` and `GeneralHold` processing when, @@ -627,8 +627,8 @@ impl TrDbColdStub { /// database: /// /// - Add a (key, value) pair to the settings additions queue in - /// `settings_stub`. Key is [`GENERALVERIFIER`] and the value is - /// SCALE-encoded [`Verifier`] that is set to be the new general verifier. + /// `settings_stub`. Key is [`GENERALVERIFIER`] and the value is + /// SCALE-encoded [`Verifier`] that is set to be the new general verifier. /// - Add corresponding `Event::GeneralVerifierSet(_)` into `history_stub`. pub fn new_general_verifier(mut self, general_verifier: &Verifier) -> Self { self.settings_stub = self @@ -644,8 +644,8 @@ impl TrDbColdStub { /// `load_types` update into the cold database: /// /// - Add a (key, value) pair to the settings additions queue in - /// `settings_stub`. Key is [`TYPES`] and the value is [`ContentLoadTypes`] - /// types information in `store` format (SCALE-encoded). + /// `settings_stub`. Key is [`TYPES`] and the value is [`ContentLoadTypes`] + /// types information in `store` format (SCALE-encoded). /// - Add corresponding `Event::TypesAdded(_)` into `history_stub`. pub fn add_types(mut self, types: &ContentLoadTypes, general_verifier: &Verifier) -> Self { self.settings_stub = self @@ -676,9 +676,9 @@ impl TrDbColdStub { /// cold database: /// /// - Add a (key, value) pair to the verifiers additions queue in - /// `verifiers_stub`. Key is [`VerifierKey`] and the value is SCALE-encoded - /// [`ValidCurrentVerifier`] that is set to be the new verifier for the - /// network. + /// `verifiers_stub`. Key is [`VerifierKey`] and the value is SCALE-encoded + /// [`ValidCurrentVerifier`] that is set to be the new verifier for the + /// network. /// - Add corresponding `Event::NetworkVerifierSet(_)` into `history_stub`. pub fn new_network_verifier( mut self, @@ -748,9 +748,9 @@ impl Default for TrDbColdStub { /// - [`SignContent`] with data to sign /// - name of the network in which the transaction is made /// - derivation path of the address used, whether the address has password, -/// corresponding [`MultiSigner`] value +/// corresponding [`MultiSigner`] value /// - relevant history [`Event`] set: warnings that were shown during the -/// parsing +/// parsing #[derive(Debug, Decode, Default, Encode)] pub struct TrDbColdSign { /// Bulk of transactions to sign. @@ -803,17 +803,17 @@ impl TrDbColdSign { /// Possible history log entries are: /// /// - `Event::TransactionSigned(_)` and `Event::MessageSigned(_)` for the - /// cases when the signature was generated and displayed through the user - /// interface + /// cases when the signature was generated and displayed through the user + /// interface /// - `Event::TransactionSignError(_)` and `Event::MessageSignError(_)` for - /// the cases when the user has entered the wrong password and no signature - /// was generated. Vault current policy is to log all wrong password entry - /// attempts. + /// the cases when the user has entered the wrong password and no signature + /// was generated. Vault current policy is to log all wrong password entry + /// attempts. /// /// Required input: /// /// - `wrong_password` flag; for entries with `true` value the signature - /// was not generated, because user has entered the wrong password; + /// was not generated, because user has entered the wrong password; /// - user-added text comment for the transaction /// - index of the transaction in the bulk /// - database name, into which the data is added @@ -939,7 +939,7 @@ impl TrDbColdSignOne { /// - [`SignContent`] with data to sign /// - name of the network in which the transaction is made /// - derivation path of the address used, whether the address has password, - /// corresponding [`MultiSigner`] value + /// corresponding [`MultiSigner`] value /// - relevant history [`Event`] set pub fn generate( content: SignContent, diff --git a/rust/db_handling/src/error.rs b/rust/db_handling/src/error.rs index 52f4f7384f..53234f1b13 100644 --- a/rust/db_handling/src/error.rs +++ b/rust/db_handling/src/error.rs @@ -221,7 +221,7 @@ pub enum Error { /// /// Associated error content is: /// - [`MultiSigner`](https://docs.rs/sp-runtime/6.0.0/sp_runtime/enum.MultiSigner.html) - /// of the already existing address + /// of the already existing address /// - [`AddressDetails`] for already existing address /// - [`NetworkSpecsKey`] of the associated network #[error( diff --git a/rust/db_handling/src/helpers.rs b/rust/db_handling/src/helpers.rs index a9a97f98c9..c5c0a3b31f 100644 --- a/rust/db_handling/src/helpers.rs +++ b/rust/db_handling/src/helpers.rs @@ -266,9 +266,9 @@ pub fn try_get_types(database: &sled::Db) -> Result>> { /// Types data is expected to be found, for example, in: /// /// - hot database, from which the types data could not be removed using -/// standard operations +/// standard operations /// - cold database, when transactions made using `RuntimeMetadata` `V12` or `V13` are -/// being decoded +/// being decoded /// /// Not finding types data results in an error. pub fn get_types(database: &sled::Db) -> Result> { @@ -455,9 +455,9 @@ pub fn transfer_metadata_to_cold(database_hot: &sled::Db, database_cold: &sled:: /// Removing a network means: /// /// - Remove from [`SPECSTREE`] all [`OrderedNetworkSpecs`] that have genesis hash -/// associated with given `NetworkSpecsKey` +/// associated with given `NetworkSpecsKey` /// - Remove from [`METATREE`] all metadata entries corresponding to the network -/// name, as found in `OrderedNetworkSpecs` +/// name, as found in `OrderedNetworkSpecs` /// - Remove from [`ADDRTREE`] all addresses in the networks being removed /// - Modify `Verifier` data if necessary. /// diff --git a/rust/db_handling/src/hot_default.rs b/rust/db_handling/src/hot_default.rs index 6587d4fac8..890be18932 100644 --- a/rust/db_handling/src/hot_default.rs +++ b/rust/db_handling/src/hot_default.rs @@ -6,15 +6,15 @@ //! Hot database contains following trees: //! //! - [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) with information needed to -//! perform RPC calls on networks +//! perform RPC calls on networks //! - [`METATREE`](constants::METATREE) with network metadata fetched through -//! RPC calls, maximum two entries are allowed for each network, empty by -//! default +//! RPC calls, maximum two entries are allowed for each network, empty by +//! default //! - [`META_HISTORY`](constants::META_HISTORY) with block hashes for metadata -//! fetched through RPC calls, empty by default +//! fetched through RPC calls, empty by default //! - [`SETTREE`](constants::SETTREE) with types information //! - [`SPECSTREEPREP`](constants::SPECSTREEPREP) with network specs entries -//! [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) +//! [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) use parity_scale_codec::Encode; use sled::Batch; diff --git a/rust/db_handling/src/identities.rs b/rust/db_handling/src/identities.rs index 4319f30137..7b4c6eb791 100644 --- a/rust/db_handling/src/identities.rs +++ b/rust/db_handling/src/identities.rs @@ -7,9 +7,9 @@ //! Required data to generate address: //! //! - seed phrase (secret words set, must be always zeroized after use and is -//! never stored in Rust database) +//! never stored in Rust database) //! - derivation path (`/soft//hard///password`); password part, i.e. whatever -//! follows `///` is not stored in Rust database and must be zeroized after use +//! follows `///` is not stored in Rust database and must be zeroized after use //! - [`NetworkSpecsKey`](definitions::keyring::NetworkSpecsKey) //! //! The combination of seed phrase and derivation path allows to generate key @@ -767,10 +767,10 @@ pub(crate) struct PrepData { /// The output [`PrepData`] contains: /// /// - `address_prep` set of `(AddressKey, AddressDetails)` values that -/// eventually will be transformed into [`Batch`](sled::Batch) to update the -/// `ADDRTREE` of the cold database +/// eventually will be transformed into [`Batch`](sled::Batch) to update the +/// `ADDRTREE` of the cold database /// - output `Event` set that will be eventually added into `HISTORY` as a part -/// of single `Entry`(definitions::history::Entry) +/// of single `Entry`(definitions::history::Entry) /// /// Function creates only **one** address, and output `PrepData` **updates** /// address preparation set received as input. @@ -1003,10 +1003,10 @@ fn do_create_address( /// The output [`PrepData`] contains: /// /// - `address_prep` set of `(AddressKey, AddressDetails)` values that -/// eventually will be transformed into [`Batch`](sled::Batch) to update the -/// `ADDRTREE` of the cold database +/// eventually will be transformed into [`Batch`](sled::Batch) to update the +/// `ADDRTREE` of the cold database /// - output `Event` set that will be eventually added into `HISTORY` as a part -/// of single `Entry`(definitions::history::Entry) +/// of single `Entry`(definitions::history::Entry) /// /// All output `PrepData` elements are generated within this function. /// It does not input addresses previously processed for the same transaction @@ -1464,7 +1464,7 @@ pub fn try_create_address( /// Function wipes [`ADDRTREE`] and adds: /// /// - seed key, i.e. seed addresses for all 3 default networks (Polkadot, -/// Kusama, Westend) +/// Kusama, Westend) /// - addresses with default derivation path in each default network /// - address with `//Alice` derivation path in Westend network #[cfg(feature = "active")] diff --git a/rust/db_handling/src/lib.rs b/rust/db_handling/src/lib.rs index f16945f5c5..738c3f846e 100644 --- a/rust/db_handling/src/lib.rs +++ b/rust/db_handling/src/lib.rs @@ -6,11 +6,11 @@ //! //! - contains helpers to operate the databases, used throughout Vault system //! - generates cold (used in air-gapped Vault) and hot (used in -//! `generate_message` client) databases with default settings +//! `generate_message` client) databases with default settings //! - deals with taking data out of the database and putting the data in the -//! database +//! database //! - contains Vault interface interactions, allowing exports of data to the -//! interface +//! interface //! - deals with address generation for Vault //! //! # Features @@ -67,7 +67,7 @@ use hot_default::reset_hot_database; /// /// - network specs for default networks (Polkadot, Kusama, Westend) /// - verifier information for default networks, with verifiers set to the -/// general one +/// general one /// - two latest metadata versions for default networks /// - default types information and clean danger status /// diff --git a/rust/db_handling/src/manage_history.rs b/rust/db_handling/src/manage_history.rs index c96f5ceec0..9dddabe43e 100644 --- a/rust/db_handling/src/manage_history.rs +++ b/rust/db_handling/src/manage_history.rs @@ -145,7 +145,7 @@ pub fn history_entry_system(database: &sled::Db, event: Event) -> Result<()> { /// /// - Add history log entry with `Event::DeviceWasOnline`. /// - Update [`DangerRecord`] stored in [`SETTREE`](constants::SETTREE) with -/// `device_was_online = true` flag. +/// `device_was_online = true` flag. /// /// Unacknowledged non-safe [`DangerRecord`] block the use of Vault in the /// frontend. @@ -164,7 +164,7 @@ pub fn device_was_online(database: &sled::Db) -> Result<()> { /// /// - Add history log entry with `Event::ResetDangerRecord`. /// - Reset [`DangerRecord`] stored in [`SETTREE`](constants::SETTREE) to -/// `safe`, i.e. with `device_was_online = false` flag. +/// `safe`, i.e. with `device_was_online = false` flag. /// /// Acknowledged and reset [`DangerRecord`] allow to resume the use of Vault in /// the frontend. Use it wisely. diff --git a/rust/defaults/Cargo.toml b/rust/defaults/Cargo.toml index 94e2289090..679ba839d3 100644 --- a/rust/defaults/Cargo.toml +++ b/rust/defaults/Cargo.toml @@ -9,8 +9,8 @@ edition = "2021" definitions = {path = "../definitions", default-features = false, optional = true} lazy_static = {version = "1.4.0", optional = true} regex = {version = "1.10.3", optional = true} -sp-core = {git = "https://github.com/paritytech/substrate", default-features = false, features = ["full_crypto"]} -sp-runtime = {git = "https://github.com/paritytech/substrate", default-features = false} +sp-core = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false, features = ["full_crypto"]} +sp-runtime = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false} thiserror = "1.0.57" [features] diff --git a/rust/defaults/src/lib.rs b/rust/defaults/src/lib.rs index 7a07c32011..445c7d4d2a 100644 --- a/rust/defaults/src/lib.rs +++ b/rust/defaults/src/lib.rs @@ -12,10 +12,10 @@ //! Default build of the cold database for Vault includes: //! //! - general verifier `Verifier` set to `Some(VerifierValue)` with Parity -//! public key as a verifier value +//! public key as a verifier value //! - network specs `OrderedNetworkSpecs` for default networks //! - verifiers for default networks, set to -//! `CurrentVerifier::Valid(ValidCurrentVerifier::General)` +//! `CurrentVerifier::Valid(ValidCurrentVerifier::General)` //! - two latest metadata versions for each of the default networks //! - default types information //! diff --git a/rust/definitions/Cargo.toml b/rust/definitions/Cargo.toml index 2a7717c791..ac7a34f9c0 100644 --- a/rust/definitions/Cargo.toml +++ b/rust/definitions/Cargo.toml @@ -10,14 +10,14 @@ frame-metadata = {version = "16.0.0", features = ["std", "legacy"]} hex = "0.4.3" libsecp256k1 = "0.7.1" parity-scale-codec = {version = "3.6.9", features = ["derive"]} -sc-executor-common = {git = "https://github.com/paritytech/substrate"} -sc-executor-wasmi = {git = "https://github.com/paritytech/substrate", optional = true} +sc-executor-common = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3"} +sc-executor-wasmi = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", optional = true} sled = "0.34.6" -sp-core = {git = "https://github.com/paritytech/substrate", default-features = false, features = ["full_crypto"]} -sp-io = {git = "https://github.com/paritytech/substrate", optional = true} -sp-runtime = {git = "https://github.com/paritytech/substrate", default-features = false} -sp-version = {git = "https://github.com/paritytech/substrate"} -sp-wasm-interface = {git = "https://github.com/paritytech/substrate", optional = true} +sp-core = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false, features = ["full_crypto"]} +sp-io = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", optional = true} +sp-runtime = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false} +sp-version = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3"} +sp-wasm-interface = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", optional = true} thiserror = "1.0.57" constants = {path = "../constants"} diff --git a/rust/definitions/src/error_signer.rs b/rust/definitions/src/error_signer.rs index 2067a097b1..a9b2d08e78 100644 --- a/rust/definitions/src/error_signer.rs +++ b/rust/definitions/src/error_signer.rs @@ -66,7 +66,7 @@ pub enum ParserError { /// `53xx00` and `53xx02` transcations consist of: /// /// - prelude, `53xx00` or `53xx02`, where `xx` stands for the encryption -/// algorithm associated with address and network used +/// algorithm associated with address and network used /// - public key corresponding to the address that can sign the transaction /// - encoded call data, the body of the transaction /// - extensions, as set in the network metadata @@ -126,7 +126,7 @@ pub enum ParserError { /// `53xx03` transaction consists of: /// /// - prelude `53xx03`, where `xx` stands for the encryption algorithm -/// associated with address and network used +/// associated with address and network used /// - public key corresponding to the address that can sign the transaction /// - SCALE-encoded `String` contents of the message /// - genesis hash of the network in which the transaction was generated diff --git a/rust/definitions/src/keyring.rs b/rust/definitions/src/keyring.rs index 74a65cf9ad..7285231871 100644 --- a/rust/definitions/src/keyring.rs +++ b/rust/definitions/src/keyring.rs @@ -3,32 +3,32 @@ //! Cold database has following trees: //! //! - `SPECSTREE`, for network specs `OrderedNetworkSpecs` entries, with keys -//! [`NetworkSpecsKey`] +//! [`NetworkSpecsKey`] //! - `VERIFIERS`, for network verifier [`CurrentVerifier`](crate::network_specs::CurrentVerifier) -//! entries, with keys [`VerifierKey`] +//! entries, with keys [`VerifierKey`] //! - `METATREE`, for `Vec` metadata entries, with keys [`MetaKey`] and -//! prefix search with [`MetaKeyPrefix`] +//! prefix search with [`MetaKeyPrefix`] //! - `ADDRTREE`, for [`AddressDetails`](crate::users::AddressDetails) entries -//! with public information associated with user addresses, with keys -//! [`AddressKey`] +//! with public information associated with user addresses, with keys +//! [`AddressKey`] //! - `SETTREE`, for types information, Vault danger status, and general -//! verifier +//! verifier //! - `TRANSACTION`, to temporarily store transaction information while waiting -//! for user approval +//! for user approval //! - `HISTORY`, for [`Entry`](crate::history::Entry) log of all events -//! happening in Vault, with keys [`Order`] +//! happening in Vault, with keys [`Order`] //! //! Hot database has following trees: //! //! - `SPECSTREEPREP`, for network specs [`NetworkSpecs`](crate::network_specs::NetworkSpecs) -//! entries, with keys [`NetworkSpecsKey`] +//! entries, with keys [`NetworkSpecsKey`] //! - `METATREE`, for `Vec` metadata entries, with keys [`MetaKey`] and -//! prefix search with [`MetaKeyPrefix`] +//! prefix search with [`MetaKeyPrefix`] //! - `META_HISTORY`, for [`H256`] block hash entries, with keys [`MetaKey`] and -//! prefix search with [`MetaKeyPrefix`] +//! prefix search with [`MetaKeyPrefix`] //! - `SETTREE`, for types information //! - `ADDRESS_BOOK` for `AddressBookEntry` data needed to maintain hot database -//! and send RPC calls to fetch network information, with keys `AddressBookKey` +//! and send RPC calls to fetch network information, with keys `AddressBookKey` //! use parity_scale_codec::{Decode, Encode}; use sled::IVec; @@ -164,7 +164,7 @@ impl VerifierKey { /// - derivation: soft (`/`) and hard (`//`) junctions and password (`///`) /// - encryption algorithm /// - network for address to be used with (network must support the encryption -/// algorithm) +/// algorithm) /// /// The seed phrase and password are **not** stored in rust-managed database. /// For storing seed phrases, Vault device's own key management system is used. @@ -263,13 +263,13 @@ impl AddressKey { /// entry has unique [`MetaKey`]. This is so because: /// /// - Metadata that could be used in Vault must contain `Version` constant in -/// pallet `System`, and only such metadata can be added in the databases. +/// pallet `System`, and only such metadata can be added in the databases. /// /// - Two raw metadata entries corresponding to same network name and network -/// version must be identical. If the metadata changes without bumping the -/// network version, both Vault and hot database client would produce an error. -/// It is not possible to switch the metadata in cold or hot database to the -/// changed one without removing the old entry first. +/// version must be identical. If the metadata changes without bumping the +/// network version, both Vault and hot database client would produce an error. +/// It is not possible to switch the metadata in cold or hot database to the +/// changed one without removing the old entry first. #[derive(Debug, Clone)] pub struct MetaKey(Vec); diff --git a/rust/definitions/src/metadata.rs b/rust/definitions/src/metadata.rs index d676f105e8..5612512d49 100644 --- a/rust/definitions/src/metadata.rs +++ b/rust/definitions/src/metadata.rs @@ -200,7 +200,7 @@ pub fn convert_wasm_into_metadata(filename: &str) -> Result> { /// - must have 'System' pallet /// - must have `Version` constant in `System` pallet, SCALE-decodeable /// - can have `SS58Prefix` constant in `System` pallet, and if it does, the -/// constant must be SCALE-decodeable +/// constant must be SCALE-decodeable /// /// Additionally, for [`RuntimeMetadataV14`](https://docs.rs/frame-metadata/15.0.0/frame_metadata/v14/struct.RuntimeMetadataV14.html) /// the extensions set must be decoding-compatible for any signable transaction. diff --git a/rust/definitions/src/network_specs.rs b/rust/definitions/src/network_specs.rs index 9778b9136d..6268b6503f 100644 --- a/rust/definitions/src/network_specs.rs +++ b/rust/definitions/src/network_specs.rs @@ -148,24 +148,24 @@ //! by accepting updating payloads: //! //! - `ValidCurrentVerifier::General` with general verifier `None` could be -//! upgraded to `ValidCurrentVerifier::General` with general verifier -//! `(Some(VerifierValue))`. Happens when Vault with no value set up for -//! the general verifier receives and accepts a verified update with any -//! network specs or types. +//! upgraded to `ValidCurrentVerifier::General` with general verifier +//! `(Some(VerifierValue))`. Happens when Vault with no value set up for +//! the general verifier receives and accepts a verified update with any +//! network specs or types. //! //! - Network `ValidCurrentVerifier::Custom(Some(VerifierValue))` could be -//! upgraded to `ValidCurrentVerifier::General` with general verifier set to -//! `(Some(VerifierValue))`. -//! Happens when Vault receives and accepts network specs update verified -//! by general verifier for this network. Note: metadata update with -//! verifier upgrade would be rejected. +//! upgraded to `ValidCurrentVerifier::General` with general verifier set to +//! `(Some(VerifierValue))`. +//! Happens when Vault receives and accepts network specs update verified +//! by general verifier for this network. Note: metadata update with +//! verifier upgrade would be rejected. //! //! - Network `ValidCurrentVerifier::Custom(None)` could be upgraded to -//! `ValidCurrentVerifier::General` with general verifier set to -//! `(Some(VerifierValue))`. -//! Happens when Vault receives and accepts network specs update verified -//! by general verifier for this network. Note: metadata update with -//! verifier upgrade would be rejected. +//! `ValidCurrentVerifier::General` with general verifier set to +//! `(Some(VerifierValue))`. +//! Happens when Vault receives and accepts network specs update verified +//! by general verifier for this network. Note: metadata update with +//! verifier upgrade would be rejected. //! //! If [`CurrentVerifier`] upgrade occurs, all pre-upgrade network information //! is wiped (Vault warns about that). diff --git a/rust/deny.toml b/rust/deny.toml index 2ab2b1b0ab..279639ba52 100644 --- a/rust/deny.toml +++ b/rust/deny.toml @@ -1,205 +1,46 @@ -# This template contains all of the possible sections and their default values - -# Note that all fields that take a lint level have these possible values: -# * deny - An error will be produced and the check will fail -# * warn - A warning will be produced, but the check will not fail -# * allow - No warning or error will be produced, though in some cases a note -# will be - -# The values provided in this template are the default values that will be used -# when any section or field is not specified in your own configuration - -# If 1 or more target triples (and optionally, target_features) are specified, -# only the specified targets will be checked when running `cargo deny check`. -# This means, if a particular package is only ever used as a target specific -# dependency, such as, for example, the `nix` crate only being used via the -# `target_family = "unix"` configuration, that only having windows targets in -# this list would mean the nix crate, as well as any of its exclusive -# dependencies not shared by any other crates, would be ignored, as the target -# list here is effectively saying which targets you are building for. -targets = [ - # The triple can be any string, but only the target triples built in to - # rustc (as of 1.40) can be checked against actual config expressions - #{ triple = "x86_64-unknown-linux-musl" }, - # You can also specify which target_features you promise are enabled for a - # particular target. target_features are currently not validated against - # the actual valid features supported by the target architecture. - #{ triple = "wasm32-unknown-unknown", features = ["atomics"] }, -] - -# This section is considered when running `cargo deny check advisories` -# More documentation for the advisories section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html [advisories] -# The path where the advisory database is cloned/fetched into +version = 2 db-path = "~/.cargo/advisory-db" -# The URL(s) of the advisory databases to use db-urls = ["https://github.com/rustsec/advisory-db"] -# The lint level for security vulnerabilities -vulnerability = "deny" -# The lint level for unmaintained crates -unmaintained = "warn" -# The lint level for crates that have been yanked from their source registry yanked = "warn" -# The lint level for crates with security notices. Note that as of -# 2019-12-17 there are no security notice advisories in -# https://github.com/rustsec/advisory-db -notice = "warn" -# A list of advisory IDs to ignore. Note that ignored advisories will still -# output a note when they are encountered. + ignore = [ - #"RUSTSEC-0000-0000", + "RUSTSEC-2024-0344", + "RUSTSEC-2021-0139", + "RUSTSEC-2024-0370", + "RUSTSEC-2022-0061", + "RUSTSEC-2022-0081", + "RUSTSEC-2024-0384", + "RUSTSEC-2024-0388", + "RUSTSEC-2022-0080", ] -# Threshold for security vulnerabilities, any vulnerability with a CVSS score -# lower than the range specified will be ignored. Note that ignored advisories -# will still output a note when they are encountered. -# * None - CVSS Score 0.0 -# * Low - CVSS Score 0.1 - 3.9 -# * Medium - CVSS Score 4.0 - 6.9 -# * High - CVSS Score 7.0 - 8.9 -# * Critical - CVSS Score 9.0 - 10.0 -#severity-threshold = -# This section is considered when running `cargo deny check licenses` -# More documentation for the licenses section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html [licenses] -# The lint level for crates which do not have a detectable license -unlicensed = "deny" -# List of explicitly allowed licenses -# See https://spdx.org/licenses/ for list of possible licenses -# [possible values: any SPDX 3.11 short identifier (+ optional exception)]. -allow = [ - #"MIT", - #"Apache-2.0", - #"Apache-2.0 WITH LLVM-exception", -] -# List of explicitly disallowed licenses -# See https://spdx.org/licenses/ for list of possible licenses -# [possible values: any SPDX 3.11 short identifier (+ optional exception)]. -deny = [ - #"Nokia", -] -# Lint level for licenses considered copyleft -copyleft = "warn" -# Blanket approval or denial for OSI-approved or FSF Free/Libre licenses -# * both - The license will be approved if it is both OSI-approved *AND* FSF -# * either - The license will be approved if it is either OSI-approved *OR* FSF -# * osi-only - The license will be approved if is OSI-approved *AND NOT* FSF -# * fsf-only - The license will be approved if is FSF *AND NOT* OSI-approved -# * neither - This predicate is ignored and the default lint level is used -allow-osi-fsf-free = "neither" -# Lint level used when no other predicates are matched -# 1. License isn't in the allow or deny lists -# 2. License isn't copyleft -# 3. License isn't OSI/FSF, or allow-osi-fsf-free = "neither" -default = "deny" -# The confidence threshold for detecting a license from license text. -# The higher the value, the more closely the license text must be to the -# canonical license text of a valid SPDX license file. -# [possible values: any between 0.0 and 1.0]. +version = 2 +allow = [] confidence-threshold = 0.8 -# Allow 1 or more licenses on a per-crate basis, so that particular licenses -# aren't accepted for every possible crate as with the normal allow list -exceptions = [ - # Each entry is the crate and version constraint, and its specific allow - # list - #{ allow = ["Zlib"], name = "adler32", version = "*" }, -] - -# Some crates don't have (easily) machine readable licensing information, -# adding a clarification entry for it allows you to manually specify the -# licensing information -#[[licenses.clarify]] -# The name of the crate the clarification applies to -#name = "ring" -# The optional version constraint for the crate -#version = "*" -# The SPDX expression for the license requirements of the crate -#expression = "MIT AND ISC AND OpenSSL" -# One or more files in the crate's source used as the "source of truth" for -# the license expression. If the contents match, the clarification will be used -# when running the license check, otherwise the clarification will be ignored -# and the crate will be checked normally, which may produce warnings or errors -# depending on the rest of your configuration -#license-files = [ - # Each entry is a crate relative path, and the (opaque) hash of its contents - #{ path = "LICENSE", hash = 0xbd0eed23 } -#] [licenses.private] -# If true, ignores workspace crates that aren't published, or are only -# published to private registries. -# To see how to mark a crate as unpublished (to the official registry), -# visit https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field. ignore = false -# One or more private registries that you might publish crates to, if a crate -# is only published to private registries, and ignore is true, the crate will -# not have its license(s) checked registries = [ - #"https://sekretz.com/registry ] -# This section is considered when running `cargo deny check bans`. -# More documentation about the 'bans' section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html [bans] -# Lint level for when multiple versions of the same crate are detected multiple-versions = "warn" -# Lint level for when a crate version requirement is `*` wildcards = "allow" -# The graph highlighting used when creating dotgraphs for crates -# with multiple versions -# * lowest-version - The path to the lowest versioned duplicate is highlighted -# * simplest-path - The path to the version with the fewest edges is highlighted -# * all - Both lowest-version and simplest-path are used highlight = "all" -# List of crates that are allowed. Use with care! -allow = [ - #{ name = "ansi_term", version = "=0.11.0" }, -] -# List of crates to deny -deny = [ - # Each entry the name of a crate and a version range. If version is - # not specified, all versions will be matched. - #{ name = "ansi_term", version = "=0.11.0" }, - # - # Wrapper crates can optionally be specified to allow the crate when it - # is a direct dependency of the otherwise banned crate - #{ name = "ansi_term", version = "=0.11.0", wrappers = [] }, -] -# Certain crates/versions that will be skipped when doing duplicate detection. -skip = [ - #{ name = "ansi_term", version = "=0.11.0" }, -] -# Similarly to `skip` allows you to skip certain crates during duplicate -# detection. Unlike skip, it also includes the entire tree of transitive -# dependencies starting at the specified crate, up to a certain depth, which is -# by default infinite -skip-tree = [ - #{ name = "ansi_term", version = "=0.11.0", depth = 20 }, -] +allow = [] +deny = [] +skip = [] +skip-tree = [] -# This section is considered when running `cargo deny check sources`. -# More documentation about the 'sources' section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html [sources] -# Lint level for what to happen when a crate from a crate registry that is not -# in the allow list is encountered unknown-registry = "warn" -# Lint level for what to happen when a crate from a git repository that is not -# in the allow list is encountered unknown-git = "warn" -# List of URLs for allowed crate registries. Defaults to the crates.io index -# if not specified. If it is specified but empty, no registries are allowed. allow-registry = ["https://github.com/rust-lang/crates.io-index"] -# List of URLs for allowed Git repositories allow-git = [] [sources.allow-org] -# 1 or more github.com organizations to allow git sources for github = [""] -# 1 or more gitlab.com organizations to allow git sources for gitlab = [""] -# 1 or more bitbucket.org organizations to allow git sources for bitbucket = [""] diff --git a/rust/generate_message/Cargo.toml b/rust/generate_message/Cargo.toml index 19b47e36aa..c787bd442a 100644 --- a/rust/generate_message/Cargo.toml +++ b/rust/generate_message/Cargo.toml @@ -19,9 +19,9 @@ qrcode_rtx = {path = "../qrcode_rtx"} regex = "1.10.3" serde_json = "1.0.114" sled = "0.34.6" -sp-core = {git = "https://github.com/paritytech/substrate", default-features = false, features = ["full_crypto"]} -sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false } -sp-keyring = { git = "https://github.com/paritytech/substrate", default-features = false } +sp-core = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false, features = ["full_crypto"]} +sp-runtime = { git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false } +sp-keyring = { git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false } thiserror = "1.0.57" tokio = { version = "1", features = ["full"] } diff --git a/rust/generate_message/src/error.rs b/rust/generate_message/src/error.rs index bb186f6e04..6644ad6698 100644 --- a/rust/generate_message/src/error.rs +++ b/rust/generate_message/src/error.rs @@ -466,13 +466,13 @@ pub enum Changed { /// Network name is stored in multiple places in the hot database: /// /// - in `name` field of network specs - /// [`NetworkSpecs`](crate::network_specs::NetworkSpecs) stored - /// in `SPECSTREEPREP` tree + /// [`NetworkSpecs`](crate::network_specs::NetworkSpecs) stored + /// in `SPECSTREEPREP` tree /// - in `name` field of address book entry - /// [`AddressBookEntry`](crate::metadata::AddressBookEntry) stored in - /// `ADDRESS_BOOK` tree + /// [`AddressBookEntry`](crate::metadata::AddressBookEntry) stored in + /// `ADDRESS_BOOK` tree /// - encoded as a part of [`MetaKey`] and inside the network metadata - /// stored in `METATREE` tree + /// stored in `METATREE` tree /// /// All those entries eventually are produced from network name that is /// part of `Version` constant in `System` pallet of the network metadata. diff --git a/rust/generate_message/src/helpers.rs b/rust/generate_message/src/helpers.rs index 03d411b22b..a6da8bd6c2 100644 --- a/rust/generate_message/src/helpers.rs +++ b/rust/generate_message/src/helpers.rs @@ -762,9 +762,9 @@ pub fn update_known_specs( /// /// - `&str` address to make RPC calls /// - `NetworkSpecs` as they were found in the database, to be modified -/// here +/// here /// - new `Encryption` to apply to `encryption` and `title` (if no title -/// override was entered) fields of the `NetworkSpecs` +/// override was entered) fields of the `NetworkSpecs` /// - optional title override /// - optional token override pub fn update_modify_encryption_specs( diff --git a/rust/generate_message/src/interpret_specs.rs b/rust/generate_message/src/interpret_specs.rs index 357c8ad39a..e106046aa8 100644 --- a/rust/generate_message/src/interpret_specs.rs +++ b/rust/generate_message/src/interpret_specs.rs @@ -8,9 +8,9 @@ //! //! - base58 prefix for the network (to be fit into `u16`) //! - decimals to display balance-related values with correct order of magnitude -//! (to be fit into `u8`) +//! (to be fit into `u8`) //! - unit to display balance-related values with correct units (to be fit into -//! `String`) +//! `String`) //! //! There could be base58 prefix information in network metadata. If base58 //! prefix is fetched via `system_properties` RPC call and the metadata contains diff --git a/rust/generate_message/src/lib.rs b/rust/generate_message/src/lib.rs index cec353a7cf..6e4cba4191 100644 --- a/rust/generate_message/src/lib.rs +++ b/rust/generate_message/src/lib.rs @@ -7,11 +7,11 @@ //! - fetch network data through RPC calls //! - prepare Vault update and derivation import payloads //! - generate Vault update QR codes, either signed or unsigned, and -//! derivations import QR codes, to be scanned into Vault +//! derivations import QR codes, to be scanned into Vault //! - maintain the `hot` database on the network-connected device, to store and -//! manage the data that went into update QR codes +//! manage the data that went into update QR codes //! - maintain Vault default network metadata set in `defaults` crate and -//! prepare the `cold` database for the Vault release +//! prepare the `cold` database for the Vault release //! //! # Supported Vault updates //! @@ -20,11 +20,11 @@ //! //! - `add-specs`, to add a new network (i.e. the network specs) into the Vault //! - `load-metadata`, to load into the Vault the network metadata, for -//! networks that already have corresponding network specs entry in the Vault -//! database +//! networks that already have corresponding network specs entry in the Vault +//! database //! - `load-types`, to load types information (it is used to support the -//! transactions parsing in networks with legacy metadata, `RuntimeMetadata` -//! version below `V14`) +//! transactions parsing in networks with legacy metadata, `RuntimeMetadata` +//! version below `V14`) //! //! Updates are assembled as `Vec` and could be transformed into: //! @@ -110,7 +110,7 @@ //! 1. make update payload //! 2. (optional) make signature for update payload //! 3. make update QR code (optionally signed), that could be scanned into -//! Vault +//! Vault //! //! Steps (1) and (3) are done in `generate_message`, the signature is produced //! in other tools, except the test "signed" updates with Alice as a verifier, @@ -151,13 +151,13 @@ //! [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree: //! //! - address book title for the network `-`, -//! used only to distinguish between address book entries +//! used only to distinguish between address book entries //! - URL address at which RPC calls are made for the network //! - network encryption //! - additional marker that the network is a default one, i.e. entry has not -//! changed since the database generation +//! changed since the database generation //! - network title as it will be displayed in Vault, from -//! [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) +//! [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) //! //! ## Show network specs for a network, as recorded in the hot database //! @@ -179,9 +179,9 @@ //! Asserts that: //! //! - the file contains valid metadata, with retrievable network name and -//! version +//! version //! - if the metadata for same network name and version is in the hot -//! database, it completely matches the one from the file +//! database, it completely matches the one from the file //! //! ### Example //! @@ -214,13 +214,13 @@ //! Setting keys that could be used in command line (maximum one): //! //! - `-d`: do **not** update the database, make RPC calls, and produce -//! output files +//! output files //! - `-f`: do **not** run RPC calls, produce output files using data already in -//! the database +//! the database //! - `-p`: update or check database through RPC calls, do **not** produce any -//! output files +//! output files //! - `-t` (no setting key defaults here): update or check database through RPC -//! calls, produce output files +//! calls, produce output files //! //! //! @@ -258,11 +258,11 @@ //! Reference keys (exactly only one has to be used): //! //! - `--all`: all networks with entries in the -//! [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree of the hot database +//! [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree of the hot database //! - `--name` followed by single network address book title: for a network with -//! existing record in the [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) +//! existing record in the [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) //! - `--url` followed by single URL address: reserved for networks with no -//! record yet in the [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) +//! record yet in the [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) //! //! `--all` key could be used with `--pass-errors` key, to stop processing after first //! error. @@ -423,15 +423,15 @@ //! Setting keys that could be used in command line (maximum one): //! //! - `-d`: do **not** update the database, make RPC calls, and produce -//! output files +//! output files //! - `-f`: do **not** run RPC calls, produce output files from database as -//! it is +//! it is //! - `-k`: update database through RPC calls, produce output files only for -//! **new** database entries +//! **new** database entries //! - `-p`: update database through RPC calls, do **not** produce any output -//! files +//! files //! - `-t` (no setting key defaults here): update database through RPC -//! calls, produce output files +//! calls, produce output files //! //!
//! @@ -479,11 +479,11 @@ //! Reference keys (exactly only one has to be used): //! //! - `-a,--all`: all networks with entries in the -//! [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree of the hot database +//! [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree of the hot database //! - `-n,--name` followed by single network name: for a network with existing -//! record in the [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) +//! record in the [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) //! - `-u,--url` followed by single URL address: reserved for networks with no -//! record yet in the [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) +//! record yet in the [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) //! //! `-a` key could be used with `--pass-errors` key, to stop processing after first //! error. @@ -643,10 +643,10 @@ //! Command `make` is used to generate: //! //! - signed updates with a valid signature, associated public key and -//! encryption algorithm +//! encryption algorithm //! - test signed updates, i.e. updates signed by a key with -//! [Alice seed phrase](constants::ALICE_SEED_PHRASE) and derivation `//Alice`, -//! with encryption algorithm chosen by user, for tests +//! [Alice seed phrase](constants::ALICE_SEED_PHRASE) and derivation `//Alice`, +//! with encryption algorithm chosen by user, for tests //! - unsigned updates //! //! Signature for `make` command is generated for contents of raw `[u8]` update @@ -715,26 +715,26 @@ //! - `add-specs` //! //! - Key `--verifier` (can be entered only if the `--crypto` argument was -//! `ed25519`, `sr25519`, or `ecdsa`), followed by: +//! `ed25519`, `sr25519`, or `ecdsa`), followed by: //! - `Alice` to generate messages "verified" by -//! [Alice seed phrase](constants::ALICE_SEED_PHRASE) with derivation `//Alice` +//! [Alice seed phrase](constants::ALICE_SEED_PHRASE) with derivation `//Alice` //! - `-hex` followed by hex public key //! - `-file` followed by the path in dedicated [`FOLDER`](constants::FOLDER) -//! for file with public key as raw bytes +//! for file with public key as raw bytes //! //! - Key `--payload` followed by file path in dedicated -//! [`FOLDER`](constants::FOLDER) containing already generated payload as -//! raw bytes +//! [`FOLDER`](constants::FOLDER) containing already generated payload as +//! raw bytes //! //! - Key `--signature` (can be entered only if the `--crypto` argument was -//! `ed25519`, `sr25519`, or `ecdsa` **and** `--verifier` is not `Alice`), -//! followed by: +//! `ed25519`, `sr25519`, or `ecdsa` **and** `--verifier` is not `Alice`), +//! followed by: //! - `-hex` followed by hex signature //! - `-file` followed by the path in dedicated [`FOLDER`](constants::FOLDER) -//! for file with signature as raw bytes +//! for file with signature as raw bytes //! //! - Optional key `-name` followed by path override for export file in -//! dedicated [`EXPORT_FOLDER`](constants::EXPORT_FOLDER) +//! dedicated [`EXPORT_FOLDER`](constants::EXPORT_FOLDER) //! //! ### `sign` command //! @@ -749,10 +749,10 @@ //! //! - Key `-sufficient` followed by: //! - `-hex` followed by hexadecimal string with contents of Vault-produced -//! `SufficientCrypto` QR code +//! `SufficientCrypto` QR code //! - `-file` followed by file path in dedicated -//! [`FOLDER`](constants::FOLDER) for raw bytes file with contents of -//! Vault-produced `SufficientCrypto` QR code +//! [`FOLDER`](constants::FOLDER) for raw bytes file with contents of +//! Vault-produced `SufficientCrypto` QR code //! //! - Key `-msg` followed by message type: //! - `load-types` @@ -760,11 +760,11 @@ //! - `add-specs` //! //! - Key `--payload` followed by file path in dedicated -//! [`FOLDER`](constants::FOLDER) containing already generated payload as -//! raw bytes +//! [`FOLDER`](constants::FOLDER) containing already generated payload as +//! raw bytes //! //! - Optional key `-name` followed by path override for export file in -//! dedicated [`EXPORT_FOLDER`](constants::EXPORT_FOLDER) +//! dedicated [`EXPORT_FOLDER`](constants::EXPORT_FOLDER) //! //! Generating `SufficientCrypto` in Vault is suggested mainly for update //! distribution purposes. A dedicated (i.e. used only for updates signing), @@ -866,17 +866,17 @@ //! //! This will remove: //! - address book entry -//! [`AddressBookEntry`](definitions::metadata::AddressBookEntry) from -//! [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree +//! [`AddressBookEntry`](definitions::metadata::AddressBookEntry) from +//! [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree //! - network specs -//! [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) -//! from [`SPECSTREEPREP`](constants::SPECSTREEPREP) tree +//! [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) +//! from [`SPECSTREEPREP`](constants::SPECSTREEPREP) tree //! - all associated metadata entries from [`METATREE`](constants::METATREE) -//! if there are no other address book entries this metadata is associated -//! with +//! if there are no other address book entries this metadata is associated +//! with //! - all associated meta block history entries from -//! [`META_HISTORY`](constants::META_HISTORY) if there are no other address book -//! entries this block history entries are associated with +//! [`META_HISTORY`](constants::META_HISTORY) if there are no other address book +//! entries this block history entries are associated with //! //! ## Restore hot database to default state //! @@ -892,7 +892,7 @@ //! - types information in [`SETTREE`](constants::SETTREE) //! - **no** metadata entries in [`METATREE`](constants::METATREE) //! - **no** meta block history entries in -//! [`META_HISTORY`](constants::META_HISTORY) +//! [`META_HISTORY`](constants::META_HISTORY) //! //! Default networks are Polkadot, Kusama, and Westend. //! @@ -908,11 +908,11 @@ //! //! - [`SPECSTREE`](constants::SPECSTREE) entries for default networks //! - [`VERIFIERS`](constants::VERIFIERS) entries for default networks, with -//! verifiers set to the general one +//! verifiers set to the general one //! - two latest metadata versions for default networks in -//! [`METATREE`](constants::METATREE) +//! [`METATREE`](constants::METATREE) //! - default types information and clean danger status in -//! [`SETTREE`](constants::SETTREE) +//! [`SETTREE`](constants::SETTREE) //! //! Note that the general verifier is not specified and history is not //! started. This will be done only in Vault itself. Before initialization, @@ -938,19 +938,19 @@ //! Keys to be used in command line: //! //! - ``: `qr` will generate only apng QR code, `text` -//! will generate only text file with hex-encoded update. By default, i.e. if -//! content key is not provided, both QR code and text file are generated. -//! `` is expected immediately after `derivations` command, -//! if at all; keys to follow could go in any order, but with argument -//! immediately following the key. +//! will generate only text file with hex-encoded update. By default, i.e. if +//! content key is not provided, both QR code and text file are generated. +//! `` is expected immediately after `derivations` command, +//! if at all; keys to follow could go in any order, but with argument +//! immediately following the key. //! //! - Key `--derivations` followed by file path in `/generate_message/` folder. -//! File with derivations contains valid derivations, each on its own line. Only -//! suitable derivations will be processed. Processed derivations are also -//! printed for user to check. +//! File with derivations contains valid derivations, each on its own line. Only +//! suitable derivations will be processed. Processed derivations are also +//! printed for user to check. //! //! - Key `--title` followed by network address book title, to indicate to -//! which network the derivations belong. +//! which network the derivations belong. //! //! Output file is in `/generate_message/` folder, file name would be //! `derivations-`. diff --git a/rust/generate_message/src/load.rs b/rust/generate_message/src/load.rs index 41299a9dd7..13df855cbb 100644 --- a/rust/generate_message/src/load.rs +++ b/rust/generate_message/src/load.rs @@ -3,16 +3,16 @@ //! This module deals with processing commands: //! //! - `$ cargo run load-metadata <(argument)>` to produce -//! `load_metadata` update payloads from the database entries and through RPC -//! calls and update the hot database +//! `load_metadata` update payloads from the database entries and through RPC +//! calls and update the hot database //! //! - `$ cargo run unwasm -payload ` to -//! produce `load_metadata` update payloads from `.wasm` files and update the -//! hot database +//! produce `load_metadata` update payloads from `.wasm` files and update the +//! hot database //! //! - `$ cargo run meta_default_file -name -version //! ` to generates metadata files for `defaults` crate from -//! hot database entries +//! hot database entries use sp_core::H256; use std::path::Path; @@ -245,7 +245,7 @@ pub fn gen_load_meta(instruction: InstructionMeta) -> Result<()> { /// `load-metadata-f -a` for individual [`AddressSpecs`] value. /// /// - Get metadata entries from database [`METATREE`] by [`MetaKeyPrefix`] -/// generated with network name. At most two entries are expected. +/// generated with network name. At most two entries are expected. /// - Check the metadata integrity /// - Output raw bytes payload file fn meta_f_a_element

(database: &sled::Db, set_element: &AddressSpecs, files_dir: P) -> Result<()> @@ -279,9 +279,9 @@ where /// `load-metadata-f -n ` /// /// - Get all available [`AddressSpecs`] from the database and search for the -/// one with user-entered network name +/// one with user-entered network name /// - Get metadata entries from database [`METATREE`] by [`MetaKeyPrefix`] -/// generated with `name`. At most two entries are expected. +/// generated with `name`. At most two entries are expected. /// - Check the metadata integrity /// - Output raw bytes payload file fn meta_f_n

(database: &sled::Db, name: &str, files_dir: P) -> Result<()> @@ -294,7 +294,7 @@ where /// `load-metadata-d -a` for individual [`AddressSpecs`] value. /// /// - Fetch network information using RPC calls at `address` in [`AddressSpecs`] -/// and interpret it +/// and interpret it /// - Check the metadata integrity with the data on record in the database /// - Output raw bytes payload file fn meta_d_a_element

(set_element: &AddressSpecs, files_dir: P) -> Result<()> @@ -308,9 +308,9 @@ where /// `load-metadata-d -n ` /// /// - Get all available [`AddressSpecs`] from the database and search for the -/// one with user-entered network name +/// one with user-entered network name /// - Fetch network information using RPC calls at `address` in [`AddressSpecs`] -/// and interpret it +/// and interpret it /// - Check the metadata integrity with the data on record in the database /// - Output raw bytes payload file fn meta_d_n

(database: &sled::Db, name: &str, files_dir: P) -> Result<()> @@ -323,7 +323,7 @@ where /// `load-metadata-d -u ` /// /// - Fetch network information using RPC calls at user-entered `address` and -/// interpret it +/// interpret it /// - Output raw bytes payload file /// /// The command is intended to be used with unknown networks that do not have @@ -353,11 +353,11 @@ where /// /// - Get all available [`AddressSpecs`] from the database /// - Get and sort existing metadata entries from [`METATREE`], with block -/// data from [`META_HISTORY`](constants::META_HISTORY) if available +/// data from [`META_HISTORY`](constants::META_HISTORY) if available /// - Process each [`AddressSpecs`] and update sorted metadata entries in the -/// process. Input [`Write`] indicates if the payload file should be created. +/// process. Input [`Write`] indicates if the payload file should be created. /// - Rewrite the database [`METATREE`] with updated metadata set and update -/// [`META_HISTORY`](constants::META_HISTORY) +/// [`META_HISTORY`](constants::META_HISTORY) fn meta_kpt_a

(database: &sled::Db, write: &Write, pass_errors: bool, files_dir: P) -> Result<()> where P: AsRef, @@ -376,9 +376,9 @@ where /// `load-metadata<-k/-p/-t> -a` for individual [`AddressSpecs`] value. /// /// - Fetch network information using RPC calls at `address` in [`AddressSpecs`] -/// and interpret it +/// and interpret it /// - Check the metadata integrity with the data on record in the database, -/// insert it into received [`SortedMetaValues`] +/// insert it into received [`SortedMetaValues`] /// - Output raw bytes payload file, if requested by input [`Write`] /// /// Inputs [`AddressSpecs`] for the network currently processed, [`Write`] @@ -423,16 +423,16 @@ where /// `load-metadata<-k/-p/-t> -n ` /// /// - Get and sort existing metadata entries from [`METATREE`], with block -/// data from [`META_HISTORY`](constants::META_HISTORY) if available +/// data from [`META_HISTORY`](constants::META_HISTORY) if available /// - Get all available [`AddressSpecs`] from the database and search for the -/// one with user-entered network name +/// one with user-entered network name /// - Fetch network information using RPC calls at `address` in [`AddressSpecs`] -/// and interpret it +/// and interpret it /// - Check the metadata integrity with the data on record in the database, -/// insert it into [`SortedMetaValues`] +/// insert it into [`SortedMetaValues`] /// - Output raw bytes payload file, if requested by input [`Write`] /// - Rewrite the database [`METATREE`] with updated metadata set and update -/// [`META_HISTORY`](constants::META_HISTORY) +/// [`META_HISTORY`](constants::META_HISTORY) /// /// Inputs user-entered network name and [`Write`] indicating if the /// `load_metadata` payload should be created. diff --git a/rust/generate_message/src/parser.rs b/rust/generate_message/src/parser.rs index 7f0b70cbee..696188246d 100644 --- a/rust/generate_message/src/parser.rs +++ b/rust/generate_message/src/parser.rs @@ -35,17 +35,17 @@ pub enum Command { /// /// This will remove: /// - address book entry - /// [`AddressBookEntry`](definitions::metadata::AddressBookEntry) from - /// [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree + /// [`AddressBookEntry`](definitions::metadata::AddressBookEntry) from + /// [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree /// - network specs - /// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) - /// from [`SPECSTREEPREP`](constants::SPECSTREEPREP) tree + /// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) + /// from [`SPECSTREEPREP`](constants::SPECSTREEPREP) tree /// - all associated metadata entries from [`METATREE`](constants::METATREE) - /// if there are no other address book entries this metadata is associated - /// with + /// if there are no other address book entries this metadata is associated + /// with /// - all associated meta block history entries from - /// [`META_HISTORY`](constants::META_HISTORY) if there are no other address book - /// entries this block history entries are associated with + /// [`META_HISTORY`](constants::META_HISTORY) if there are no other address book + /// entries this block history entries are associated with #[command(name = "add-specs")] Specs { #[clap(flatten)] @@ -78,17 +78,17 @@ pub enum Command { /// /// This will remove: /// - address book entry - /// [`AddressBookEntry`](definitions::metadata::AddressBookEntry) from - /// [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree + /// [`AddressBookEntry`](definitions::metadata::AddressBookEntry) from + /// [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree /// - network specs - /// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) - /// from [`SPECSTREEPREP`](constants::SPECSTREEPREP) tree + /// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) + /// from [`SPECSTREEPREP`](constants::SPECSTREEPREP) tree /// - all associated metadata entries from [`METATREE`](constants::METATREE) - /// if there are no other address book entries this metadata is associated - /// with + /// if there are no other address book entries this metadata is associated + /// with /// - all associated meta block history entries from - /// [`META_HISTORY`](constants::META_HISTORY) if there are no other address book - /// entries this block history entries are associated with + /// [`META_HISTORY`](constants::META_HISTORY) if there are no other address book + /// entries this block history entries are associated with Remove { #[clap(subcommand)] r: Remove, @@ -110,7 +110,7 @@ pub enum Command { /// - types information in [`SETTREE`](constants::SETTREE) /// - **no** metadata entries in [`METATREE`](constants::METATREE) /// - **no** meta block history entries in - /// [`META_HISTORY`](constants::META_HISTORY) + /// [`META_HISTORY`](constants::META_HISTORY) /// /// Default networks are Polkadot, Kusama, and Westend. RestoreDefaults { @@ -129,11 +129,11 @@ pub enum Command { /// /// - [`SPECSTREE`](constants::SPECSTREE) entries for default networks /// - [`VERIFIERS`](constants::VERIFIERS) entries for default networks, with - /// verifiers set to the general one + /// verifiers set to the general one /// - two latest metadata versions for default networks in - /// [`METATREE`](constants::METATREE) + /// [`METATREE`](constants::METATREE) /// - default types information and clean danger status in - /// [`SETTREE`](constants::SETTREE) + /// [`SETTREE`](constants::SETTREE) /// /// Note that the general verifier is not specified and history is not /// started. This will be done only in Vault itself. Before initialization, @@ -782,7 +782,7 @@ pub struct Override { /// /// - network has no database record yet /// - network has multiple decimals and unit values, those were retrieved as - /// arrays of equal size. + /// arrays of equal size. #[arg(long)] pub token_decimals: Option, @@ -793,7 +793,7 @@ pub struct Override { /// /// - network has no database record yet /// - network has multiple decimals and unit values, those were retrieved as - /// arrays of equal size. + /// arrays of equal size. #[arg(long)] pub token_unit: Option, } diff --git a/rust/generate_message/src/remove.rs b/rust/generate_message/src/remove.rs index 960bf605b9..e7747461c9 100644 --- a/rust/generate_message/src/remove.rs +++ b/rust/generate_message/src/remove.rs @@ -35,16 +35,16 @@ //! Removed data associated with the address book title consists of: //! //! - address book entry -//! [`AddressBookEntry`](definitions::metadata::AddressBookEntry) from -//! [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree +//! [`AddressBookEntry`](definitions::metadata::AddressBookEntry) from +//! [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) tree //! - network specs -//! [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) from -//! [`SPECSTREEPREP`](constants::SPECSTREEPREP) tree +//! [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) from +//! [`SPECSTREEPREP`](constants::SPECSTREEPREP) tree //! - all associated metadata entries from [`METATREE`] if there are no other -//! address book entries this metadata is associated with +//! address book entries this metadata is associated with //! - all associated meta block history entries from [`META_HISTORY`] if there -//! are no other address book entries this block history entries are associated -//! with +//! are no other address book entries this block history entries are associated +//! with //! //! Note that single address book entry corresponds to single network specs //! entry, and they are created and removed always simultaneously. diff --git a/rust/generate_message/src/show.rs b/rust/generate_message/src/show.rs index 6a8497793b..0143976969 100644 --- a/rust/generate_message/src/show.rs +++ b/rust/generate_message/src/show.rs @@ -21,7 +21,7 @@ use crate::helpers::{ /// - network version /// - hexadecimal metadata hash /// - block hash at which the metadata was fetched if on record, from -/// [`META_HISTORY`](constants::META_HISTORY) tree +/// [`META_HISTORY`](constants::META_HISTORY) tree /// /// It could be called by: /// @@ -70,8 +70,8 @@ pub fn show_metadata(database: &sled::Db) -> Result<()> { /// - network encryption /// - additional marker that the network is a default one /// - network title as it will be displayed in Vault, from -/// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) in -/// [`SPECSTREEPREP`](constants::SPECSTREEPREP) tree +/// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) in +/// [`SPECSTREEPREP`](constants::SPECSTREEPREP) tree /// /// It could be called by: /// @@ -133,9 +133,9 @@ pub fn show_networks(database: &sled::Db) -> Result<()> { /// Function asserts that: /// /// - the file contains valid metadata, with retrievable network name and -/// version +/// version /// - if the metadata for same network name and version is in the hot database, -/// it completely matches the one from the file +/// it completely matches the one from the file /// /// Function could be used to check release metadata files in `defaults` crate. pub fn check_file(database: &sled::Db, path: String) -> Result<()> { diff --git a/rust/generate_message/src/specs.rs b/rust/generate_message/src/specs.rs index ca5776e220..df9a0718aa 100644 --- a/rust/generate_message/src/specs.rs +++ b/rust/generate_message/src/specs.rs @@ -255,8 +255,8 @@ pub fn gen_add_specs(instruction: InstructionSpecs) -> Result<()> { /// `add-specs -f -a` for individual address book entry. /// /// - Get network specs -/// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) from -/// the database using information in address book entry +/// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) from +/// the database using information in address book entry /// - Output raw bytes payload file fn specs_f_a_element

(database: &sled::Db, entry: &AddressBookEntry, files_dir: P) -> Result<()> where @@ -273,8 +273,8 @@ where /// /// - Get address book entry for the network using network address book `title` /// - Get network specs -/// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) from -/// the database using information in address book entry +/// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) from +/// the database using information in address book entry /// - Output raw bytes payload file fn specs_f_n

( database: &sled::Db, @@ -315,8 +315,8 @@ where /// /// - Fetch network information using RPC calls and interpret it /// - Construct -/// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) with -/// fetched values, user overrides and defaults +/// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) with +/// fetched values, user overrides and defaults /// - Output raw bytes payload file fn specs_d_u

( address: &str, @@ -346,16 +346,16 @@ where /// `printing` flag indicating if payload file should be made. /// /// - Search for an address book entry by address book title and get -/// corresponding -/// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) +/// corresponding +/// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) /// - Fetch network specs through RPC calls and check that the network specs -/// from the database are still valid +/// from the database are still valid /// - Modify network specs according to the overrides requested /// - Update database as needed: [`ADDRESS_BOOK`](constants::ADDRESS_BOOK) and -/// [`SPECSTREEPREP`](constants::SPECSTREEPREP) are updated if the encryption -/// was not previously in the database for this network, -/// [`SPECSTREEPREP`](constants::SPECSTREEPREP) alone is updated if the -/// overrides modified network specs entry +/// [`SPECSTREEPREP`](constants::SPECSTREEPREP) are updated if the encryption +/// was not previously in the database for this network, +/// [`SPECSTREEPREP`](constants::SPECSTREEPREP) alone is updated if the +/// overrides modified network specs entry /// - Print payload files if requested /// /// Network address book title for new address book entries is constructed as @@ -470,10 +470,10 @@ where /// - Check that the URL address is unknown to the database /// - Fetch network information using RPC calls and interpret it /// - Check that there is no entries with same genesis hash as was just fetched -/// in the database +/// in the database /// - Construct -/// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) with -/// fetched values, user overrides and defaults +/// [`NetworkSpecs`](definitions::network_specs::NetworkSpecs) with +/// fetched values, user overrides and defaults /// - Construct `AddressBookEntry` /// - Update the database (network specs and address book) /// - Output raw bytes payload files if requested diff --git a/rust/generate_message/tests/common/mod.rs b/rust/generate_message/tests/common/mod.rs index 1a0e66cb88..c892c76424 100644 --- a/rust/generate_message/tests/common/mod.rs +++ b/rust/generate_message/tests/common/mod.rs @@ -22,7 +22,7 @@ pub fn base_cmd() -> Command { pub fn assert_cmd_stdout(command: &str, output: &'static str) { base_cmd() - .args(&command.split(' ').collect::>()) + .args(command.split(' ').collect::>()) .assert() .success() .code(0) diff --git a/rust/navigator/Cargo.toml b/rust/navigator/Cargo.toml index 4eae0ccc3f..9830169e09 100644 --- a/rust/navigator/Cargo.toml +++ b/rust/navigator/Cargo.toml @@ -10,7 +10,7 @@ db_handling = {path = "../db_handling", default-features = false } definitions = {path = "../definitions", default-features = false } hex = "0.4.3" lazy_static = "1.4.0" -sp-runtime = {git = "https://github.com/paritytech/substrate", default-features = false} +sp-runtime = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false} banana_recovery = { git = "https://github.com/paritytech/banana-recovery-rust" } thiserror = "1.0.57" transaction_parsing = {path = "../transaction_parsing"} @@ -25,7 +25,7 @@ log = "0.4" pretty_assertions = "1" tempfile = "3.10" regex = { version = "1.10.3" } -sp-core = { git = "https://github.com/paritytech/substrate", default-features = false, features = ["full_crypto"] } +sp-core = { git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false, features = ["full_crypto"] } constants = { path = "../constants" } parser = { path = "../parser", default-features = false } diff --git a/rust/navigator/src/tests.rs b/rust/navigator/src/tests.rs index 4b0ca3674d..1df63fece1 100644 --- a/rust/navigator/src/tests.rs +++ b/rust/navigator/src/tests.rs @@ -6205,7 +6205,7 @@ fn test_sign_dd_transaction() { "530102".to_string() + &alice_westend_public + tx + WESTEND_GENESIS; assert!(signature_is_good( &non_dynamic_transaction, - &String::from_utf8(transaction.signature.signatures[0].data().to_vec()).unwrap() + core::str::from_utf8(transaction.signature.signatures[0].data()).unwrap() )); } diff --git a/rust/parser/Cargo.toml b/rust/parser/Cargo.toml index 84b76effef..d0f67b76f6 100644 --- a/rust/parser/Cargo.toml +++ b/rust/parser/Cargo.toml @@ -17,9 +17,9 @@ parity-scale-codec = {version = "3.6.9", features = ["derive", "bit-vec"]} printing_balance = {path = "../printing_balance"} regex = "1.10.3" scale-info = "2.10.0" -sp-arithmetic = {git = "https://github.com/paritytech/substrate"} -sp-core = {git = "https://github.com/paritytech/substrate", default-features = false, features = ["full_crypto"]} -sp-runtime = {git = "https://github.com/paritytech/substrate", default-features = false} +sp-arithmetic = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3"} +sp-core = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false, features = ["full_crypto"]} +sp-runtime = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false} thiserror = "1.0.57" [dev-dependencies] diff --git a/rust/parser/src/decoding_older.rs b/rust/parser/src/decoding_older.rs index 86379e37ef..cc806e5e71 100644 --- a/rust/parser/src/decoding_older.rs +++ b/rust/parser/src/decoding_older.rs @@ -159,11 +159,11 @@ fn decode_primitive( /// - `data` (remaining `Vec` of data), /// - `meta` (metadata for the network used), /// - `type_database` (it describes all fundamental types that could be encountered in known networks -/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database -/// currently is retrieved and decoded from the database on device used), +/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database +/// currently is retrieved and decoded from the database on device used), /// - `indent` used for creating properly formatted js cards, /// - `short_specs` (network parameters, such as base58 prefix, currency units and decimals), -/// all those are used in some cases for proper output formatting). +/// all those are used in some cases for proper output formatting). /// /// The function outputs the `DecodedOut` value in case of success. /// @@ -226,11 +226,11 @@ fn decode_complex( /// - `data` (call itself), /// - `meta` (metadata for the network used), /// - `type_database` (it describes all fundamental types that could be encountered in known networks -/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database -/// currently is retrieved and decoded from the database on device used), +/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database +/// currently is retrieved and decoded from the database on device used), /// - `indent` used for creating properly formatted js cards, /// - `short_specs` (network parameters, such as base58 prefix, currency units and decimals), -/// all those are used in some cases for proper output formatting). +/// all those are used in some cases for proper output formatting). /// /// The function outputs the `DecodedOut` value in case of success. /// @@ -314,11 +314,11 @@ lazy_static! { /// - `inner_ty` (type inside Option, found using regular expressions) /// - `data` (remaining `Vec` of data), /// - `type_database` (it describes all fundamental types that could be encountered in known networks -/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database -/// currently is retrieved and decoded from the database on device used), +/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database +/// currently is retrieved and decoded from the database on device used), /// - `indent` used for creating properly formatted js cards, /// - `short_specs` (network parameters, such as base58 prefix, currency units and decimals), -/// all those are used in some cases for proper output formatting). +/// all those are used in some cases for proper output formatting). /// /// The function outputs the `DecodedOut` value in case of success. /// @@ -410,11 +410,11 @@ fn deal_with_option( /// - `inner_ty` (type inside `Vec`, found using regular expressions) /// - `data` (remaining `Vec` of data), /// - `type_database` (it describes all fundamental types that could be encountered in known networks -/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database -/// currently is retrieved and decoded from the database on device used), +/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database +/// currently is retrieved and decoded from the database on device used), /// - `indent` used for creating properly formatted js cards, /// - `short_specs` (network parameters, such as base58 prefix, currency units and decimals), -/// all those are used in some cases for proper output formatting). +/// all those are used in some cases for proper output formatting). /// /// The function outputs the `DecodedOut` value in case of success. fn deal_with_vector( @@ -468,11 +468,11 @@ fn deal_with_vector( /// - `number_of_elements` (number of array elements, found using regular expressions) /// - `data` (remaining `Vec` of data), /// - `type_database` (it describes all fundamental types that could be encountered in known networks -/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database -/// currently is retrieved and decoded from the database on device used), +/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database +/// currently is retrieved and decoded from the database on device used), /// - `indent` used for creating properly formatted js cards, /// - `short_specs` (network parameters, such as base58 prefix, currency units and decimals), -/// all those are used in some cases for proper output formatting). +/// all those are used in some cases for proper output formatting). /// /// The function outputs the `DecodedOut` value in case of success. fn deal_with_array( @@ -508,8 +508,8 @@ fn deal_with_array( /// The function takes as arguments /// - data (remaining `Vec` of data), /// - `type_database` (it describes all fundamental types that could be encountered in known networks -/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database -/// currently is retrieved and decoded from the database on device used), +/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database +/// currently is retrieved and decoded from the database on device used), /// - indent used for creating properly formatted js cards. /// /// The function outputs the `DecodedOut` value in case of success. @@ -700,11 +700,11 @@ fn special_case_balance( /// - vector of `StructField` of currently processed type, as found in `type_database` /// - data (remaining `Vec` of data), /// - `type_database` (it describes all fundamental types that could be encountered in known networks -/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database -/// currently is retrieved and decoded from the database on device used), +/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database +/// currently is retrieved and decoded from the database on device used), /// - indent used for creating properly formatted js cards, /// - `short_specs` (network parameters, such as base58 prefix, currency units and decimals), -/// all those are used in some cases for proper output formatting). +/// all those are used in some cases for proper output formatting). /// /// The function outputs the `DecodedOut` value in case of success. fn deal_with_struct( @@ -758,11 +758,11 @@ fn deal_with_struct( /// - vector of `EnumVariant` of currently processed type, as found in `type_database` /// - data (remaining `Vec` of data), /// - `type_database` (it describes all fundamental types that could be encountered in known networks -/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database -/// currently is retrieved and decoded from the database on device used), +/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database +/// currently is retrieved and decoded from the database on device used), /// - indent used for creating properly formatted js cards, /// - `short_specs` (network parameters, such as base58 prefix, currency units and decimals), -/// all those are used in some cases for proper output formatting). +/// all those are used in some cases for proper output formatting). /// /// The function outputs the `DecodedOut` value in case of success. fn deal_with_enum( @@ -869,11 +869,11 @@ fn deal_with_enum( /// - found_ty (type of the argument found in the previous iteration, to be interpreted on run) /// - data (remaining `Vec` of data), /// - `type_database` (it describes all fundamental types that could be encountered in known networks -/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database -/// currently is retrieved and decoded from the database on device used), +/// and are not primitive types (i.e. types decoded by `decode_primitive` function), this database +/// currently is retrieved and decoded from the database on device used), /// - indent used for creating properly formatted js cards, /// - `short_specs` (network parameters, such as base58 prefix, currency units and decimals), -/// all those are used in some cases for proper output formatting). +/// all those are used in some cases for proper output formatting). /// /// The function outputs the `DecodedOut` value in case of success. fn decode_simple( diff --git a/rust/parser/src/error.rs b/rust/parser/src/error.rs index 98e109b032..b5822c72ed 100644 --- a/rust/parser/src/error.rs +++ b/rust/parser/src/error.rs @@ -120,7 +120,7 @@ pub enum ParserMetadataError { /// `53xx00` and `53xx02` transcations consist of: /// /// - prelude, `53xx00` or `53xx02`, where `xx` stands for the encryption -/// algorithm associated with address and network used +/// algorithm associated with address and network used /// - public key corresponding to the address that can sign the transaction /// - encoded call data, the body of the transaction /// - extensions, as set in the network metadata @@ -180,7 +180,7 @@ pub enum ParserMetadataError { /// `53xx03` transaction consists of: /// /// - prelude `53xx03`, where `xx` stands for the encryption algorithm -/// associated with address and network used +/// associated with address and network used /// - public key corresponding to the address that can sign the transaction /// - SCALE-encoded `String` contents of the message /// - genesis hash of the network in which the transaction was generated diff --git a/rust/parser/src/method.rs b/rust/parser/src/method.rs index 8db84ec103..20d1c525fc 100644 --- a/rust/parser/src/method.rs +++ b/rust/parser/src/method.rs @@ -34,7 +34,6 @@ pub enum OlderMeta<'a> { /// in case of success outputs Method value. /// Pallet index is explicitly recorded in network metadata as a number. /// Method index is ordinal number in vector of calls within pallet. - fn find_method_v12( pallet_index: u8, method_index: u8, @@ -133,7 +132,6 @@ fn find_method_v12( /// in case of success outputs Method value. /// Pallet index is explicitly recorded in network metadata as a number. /// Method index is ordinal number in vector of calls within pallet. - fn find_method_v13( pallet_index: u8, method_index: u8, @@ -230,7 +228,6 @@ fn find_method_v13( /// Function to find method for current call for metadata in `V12` or `V13` /// Outputs `NextDecode` value. - pub(crate) fn what_next_old(data: Vec, meta: &OlderMeta) -> Result { if data.len() < 2 { return Err(Error::Decoding(ParserDecodingError::DataTooShort)); diff --git a/rust/printing_balance/src/lib.rs b/rust/printing_balance/src/lib.rs index 73464bef94..dd62f3b3e0 100644 --- a/rust/printing_balance/src/lib.rs +++ b/rust/printing_balance/src/lib.rs @@ -27,7 +27,6 @@ fn assist(a: String, decimals: u8, order: u8) -> (String, Option, i8) { /// Input `balance` has to be a printed number. Likely `u128` or `u64`. /// Validity of input is checked elsewhere. - pub fn convert_balance_pretty(balance: &str, decimals: u8, units: &str) -> PrettyOutput { let order = (balance.len() as u8) - 1; diff --git a/rust/qr_reader_pc/Cargo.toml b/rust/qr_reader_pc/Cargo.toml index 9451b35599..d16adf8335 100644 --- a/rust/qr_reader_pc/Cargo.toml +++ b/rust/qr_reader_pc/Cargo.toml @@ -15,6 +15,11 @@ quircs = "0.10.2" indicatif = "0.17.8" [dependencies.opencv] -version = "0.88" +version = "0.94.2" default-features = false features = ["videoio", "imgproc", "highgui"] + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = [ + 'cfg(ocvrs_opencv_branch_32)', +] } diff --git a/rust/qr_reader_pc/src/lib.rs b/rust/qr_reader_pc/src/lib.rs index e43cf0ad19..f9189de748 100644 --- a/rust/qr_reader_pc/src/lib.rs +++ b/rust/qr_reader_pc/src/lib.rs @@ -195,10 +195,7 @@ pub fn arg_parser(arguments: Vec) -> anyhow::Result { let mut settings = CameraSettings { index: None }; while let Some(arg) = args.next() { - let par = match args.next() { - Some(x) => x, - None => String::from(""), - }; + let par = args.next().unwrap_or_default(); match &arg[..] { "d" | "-d" | "--device" => match par.trim().parse() { diff --git a/rust/signer/Cargo.toml b/rust/signer/Cargo.toml index 1db6047b84..7c124c68ec 100644 --- a/rust/signer/Cargo.toml +++ b/rust/signer/Cargo.toml @@ -12,8 +12,8 @@ uniffi = { version = "0.22.0" } lazy_static = "1.4.0" sled = "0.34" -sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", default-features = false, features = ["full_crypto"] } +sp-runtime = { git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false, features = ["full_crypto"] } db_handling = { path = "../db_handling", default-features = false } definitions = { path = "../definitions", default-features = false } diff --git a/rust/transaction_parsing/Cargo.toml b/rust/transaction_parsing/Cargo.toml index 6d40f979b6..c88211cb78 100644 --- a/rust/transaction_parsing/Cargo.toml +++ b/rust/transaction_parsing/Cargo.toml @@ -15,8 +15,8 @@ hex = "0.4.3" parity-scale-codec = "3.6.9" parser = {path = "../parser", default-features = false} sled = "0.34.6" -sp-core = {git = "https://github.com/paritytech/substrate", default-features = false, features = ["full_crypto"]} -sp-runtime = {git = "https://github.com/paritytech/substrate", default-features = false} +sp-core = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false, features = ["full_crypto"]} +sp-runtime = {git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false} thiserror = "1.0.57" nom = "7.1.3" log = "0.4" diff --git a/rust/transaction_parsing/src/cards.rs b/rust/transaction_parsing/src/cards.rs index 1d2ee661a1..af3f4dffd6 100644 --- a/rust/transaction_parsing/src/cards.rs +++ b/rust/transaction_parsing/src/cards.rs @@ -77,7 +77,7 @@ pub(crate) enum Warning<'a> { MetadataExtensionsIncomplete, } -impl<'a> Warning<'a> { +impl Warning<'_> { pub(crate) fn show(&self) -> String { match &self { Warning::AuthorNotFound => String::from("Transaction author public key not found."), @@ -97,7 +97,7 @@ impl<'a> Warning<'a> { } } -impl<'a> Card<'a> { +impl Card<'_> { pub(crate) fn card(&self, index: &mut u32, indent: u32) -> TransactionCard { let card = match &self { Card::ParserCard(m) => match m { diff --git a/rust/transaction_parsing/src/error.rs b/rust/transaction_parsing/src/error.rs index de88ea4466..cedb724b0b 100644 --- a/rust/transaction_parsing/src/error.rs +++ b/rust/transaction_parsing/src/error.rs @@ -306,7 +306,6 @@ pub enum Error { /// /// Custom verifier could be upgraded only to general one, see /// [here](definitions::network_specs). - #[error( "Network {name} current verifier is {}. Received add_specs message \ is verified by {}, which is neither current network verifier not the \ diff --git a/rust/transaction_parsing/src/lib.rs b/rust/transaction_parsing/src/lib.rs index 78feb86f41..061ea38c06 100644 --- a/rust/transaction_parsing/src/lib.rs +++ b/rust/transaction_parsing/src/lib.rs @@ -37,10 +37,9 @@ pub use crate::error::{Error, Result}; /// Payload in hex format as it arrives into handling contains following elements: /// - prelude, length 6 symbols ("53" stands for substrate, ** - crypto type, ** - transaction type), -/// see the standard for details, +/// see the standard for details, /// - actual content (differs between transaction types, could be even empty) -/// actual content is handled individually depending on prelude - +/// actual content is handled individually depending on prelude fn handle_scanner_input(database: &sled::Db, payload: &str) -> Result { let data_hex = { if let Some(a) = payload.strip_prefix("0x") { diff --git a/rust/transaction_parsing/src/parse_transaction.rs b/rust/transaction_parsing/src/parse_transaction.rs index 236f296e17..8c5ffdcc0c 100644 --- a/rust/transaction_parsing/src/parse_transaction.rs +++ b/rust/transaction_parsing/src/parse_transaction.rs @@ -26,11 +26,10 @@ use crate::TransactionAction; /// Transaction payload in hex format as it arrives into parsing program contains following elements: /// - prelude, length 6 symbols ("53" stands for substrate, ** - crypto type, 00 or 02 - transaction type), -/// see the standard for details, +/// see the standard for details, /// - author public key (length depends on cryptography used), /// - method, extensions, network genesis hash - -/// Enum to move around cards in preparatory stage (author details or author card, and warning card) +/// Enum to move around cards in preparatory stage (author details or author card, and warning card) enum CardsPrep<'a> { SignProceed(AddressDetails, Option>), ShowOnly(TransactionCard, Box), @@ -44,7 +43,6 @@ enum CardsPrep<'a> { /// Transaction format corresponds to what we get from qr code: /// i.e. it starts with 53****, followed by author address, followed by actual transaction piece, /// followed by extrinsics, concluded with chain genesis hash - pub(crate) fn parse_transaction(database: &sled::Db, data_hex: &str) -> Result { let (author_multi_signer, call_data, genesis_hash, encryption) = multisigner_msg_genesis_encryption(database, data_hex)?; diff --git a/rust/transaction_signing/Cargo.toml b/rust/transaction_signing/Cargo.toml index 059b7c8e16..1ec1b0a048 100644 --- a/rust/transaction_signing/Cargo.toml +++ b/rust/transaction_signing/Cargo.toml @@ -12,8 +12,8 @@ zeroize = { version = "1.7.0", features = ["std"] } definitions = { path = "../definitions", default-features = false } db_handling = { path = "../db_handling", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", default-features = false, features = ["full_crypto"] } -sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false } +sp-core = { git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false, features = ["full_crypto"] } +sp-runtime = { git = "https://github.com/paritytech/substrate", rev = "49734dd1d72a00b9d3b87ba397661a63e0e17af3", default-features = false } thiserror = "1.0.57" anyhow = "1.0.82" sled = "0.34" From 90fbea67a678ffb6f10ec7b57bdf6af2f049ac7b Mon Sep 17 00:00:00 2001 From: Ruslan Date: Thu, 20 Feb 2025 11:54:21 +0100 Subject: [PATCH 09/10] fix: Password intersection with borders when importing keyset via banana split (#2430) * feat: add custom modifier for plain text field * refactor --- ios/PolkadotVault.xcodeproj/project.pbxproj | 4 ++ .../TextFields/PlainTextField.swift | 45 +++++++++++++++++++ .../TextFields/SecuredTextField.swift | 7 +-- 3 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 ios/PolkadotVault/Components/TextFields/PlainTextField.swift diff --git a/ios/PolkadotVault.xcodeproj/project.pbxproj b/ios/PolkadotVault.xcodeproj/project.pbxproj index 368da154c4..bafd877cd2 100644 --- a/ios/PolkadotVault.xcodeproj/project.pbxproj +++ b/ios/PolkadotVault.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 0C2F8C4D2D512C34003A9DA0 /* PlainTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C2F8C4C2D512C34003A9DA0 /* PlainTextField.swift */; }; 2D48F35127609CDE004B27BE /* HistoryCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D48F35027609CDE004B27BE /* HistoryCard.swift */; }; 2D48F3532760A2D8004B27BE /* PrimaryFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D48F3522760A2D8004B27BE /* PrimaryFont.swift */; }; 2D48F3D2277A0AB2004B27BE /* HistoryCardExtended.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D48F3D1277A0AB2004B27BE /* HistoryCardExtended.swift */; }; @@ -427,6 +428,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 0C2F8C4C2D512C34003A9DA0 /* PlainTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlainTextField.swift; sourceTree = ""; }; 2D48F35027609CDE004B27BE /* HistoryCard.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HistoryCard.swift; sourceTree = ""; }; 2D48F3522760A2D8004B27BE /* PrimaryFont.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimaryFont.swift; sourceTree = ""; }; 2D48F3D1277A0AB2004B27BE /* HistoryCardExtended.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HistoryCardExtended.swift; sourceTree = ""; }; @@ -2273,6 +2275,7 @@ 6D932CE5292E0CE6008AD883 /* PrimaryTextField.swift */, 6DA08B8729ACFC230027CFCB /* InlineTextField.swift */, 6D850BE1292F85F200BA9017 /* SecuredTextField.swift */, + 0C2F8C4C2D512C34003A9DA0 /* PlainTextField.swift */, ); path = TextFields; sourceTree = ""; @@ -2656,6 +2659,7 @@ 6DF5E7A42923DD4400F2B5B4 /* Text+Markdown.swift in Sources */, 6D7DE0D42ACB178800BFAACA /* DatabaseVersionMediator.swift in Sources */, 6DDEF13228AE6039004CA2FD /* signer.udl in Sources */, + 0C2F8C4D2D512C34003A9DA0 /* PlainTextField.swift in Sources */, 6DF8316728F9BA4A00CB2BCE /* CapsuleButton.swift in Sources */, 6DCC572728D8C0490014278A /* BackupModal.swift in Sources */, 6DDD73732940471900F04CE7 /* Event+AdditionalValue.swift in Sources */, diff --git a/ios/PolkadotVault/Components/TextFields/PlainTextField.swift b/ios/PolkadotVault/Components/TextFields/PlainTextField.swift new file mode 100644 index 0000000000..922528479f --- /dev/null +++ b/ios/PolkadotVault/Components/TextFields/PlainTextField.swift @@ -0,0 +1,45 @@ +// +// PlainTextField.swift +// Polkadot Vault +// +// Created by Ruslan Rezin on 03/02/2025. +// + +import SwiftUI + +struct PlainTextFieldStyle: ViewModifier { + let placeholder: String + let keyboardType: UIKeyboardType + @Binding var text: String + @Binding var isValid: Bool + + func body(content: Content) -> some View { + content + .foregroundColor(isValid ? .textAndIconsPrimary : .accentRed300) + .placeholder(placeholder, when: text.isEmpty) + .font(PrimaryFont.bodyL.font) + .autocapitalization(.none) + .disableAutocorrection(true) + .keyboardType(keyboardType) + .submitLabel(.return) + .frame(height: Heights.textFieldHeight) + } +} + +extension View { + func plainTextFieldStyle( + _ placeholder: String, + keyboardType: UIKeyboardType = .asciiCapable, + text: Binding, + isValid: Binding = Binding.constant(true) + ) -> some View { + modifier( + PlainTextFieldStyle( + placeholder: placeholder, + keyboardType: keyboardType, + text: text, + isValid: isValid + ) + ) + } +} diff --git a/ios/PolkadotVault/Components/TextFields/SecuredTextField.swift b/ios/PolkadotVault/Components/TextFields/SecuredTextField.swift index 8bc9d1aad3..ed9ca99614 100644 --- a/ios/PolkadotVault/Components/TextFields/SecuredTextField.swift +++ b/ios/PolkadotVault/Components/TextFields/SecuredTextField.swift @@ -22,7 +22,7 @@ struct SecurePrimaryTextField: View { var onCommit: (() -> Void) = {} var body: some View { - ZStack(alignment: .trailing) { + HStack(alignment: .center, spacing: Spacing.minimal) { ZStack { SecureField("", text: $text, onCommit: { onCommit() @@ -39,7 +39,7 @@ struct SecurePrimaryTextField: View { .focused($focusedField, equals: .plain) .opacity(isSecured ? 0 : 1) } - .primaryTextFieldStyle(placeholder, text: $text, isValid: $isValid) + .plainTextFieldStyle(placeholder, text: $text, isValid: $isValid) .onChange(of: text) { _ in isValid = true } @@ -50,9 +50,10 @@ struct SecurePrimaryTextField: View { } ) { Image(isSecured ? .showPassword : .hidePassword) - .padding(.trailing, Spacing.medium) .foregroundColor(.textAndIconsTertiary) } } + .padding(.horizontal, Spacing.medium) + .containerBackground(CornerRadius.small, state: isValid ? .standard : .error) } } From e9224ba42d57e678aee8c64fe8b4d840ebca9508 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Thu, 20 Feb 2025 11:55:10 +0100 Subject: [PATCH 10/10] fix: missing filter missing in the empty state (#2432) * feat: add custom modifier for plain text field * refactor * fix: display header with filter button in the empty state * refactor into separate extensions --- .../Views/KeyDetailsView+EmptyState.swift | 16 ++++++++++- .../Views/KeyDetailsView+Header.swift | 20 ++++++++++++++ .../Views/KeyDetailsView+MainList.swift | 27 +++++-------------- .../KeyDetails/Views/KeyDetailsView.swift | 5 +--- 4 files changed, 43 insertions(+), 25 deletions(-) diff --git a/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView+EmptyState.swift b/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView+EmptyState.swift index d12b2bb699..ec53194028 100644 --- a/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView+EmptyState.swift +++ b/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView+EmptyState.swift @@ -9,7 +9,21 @@ import SwiftUI extension KeyDetailsView { @ViewBuilder - func emptyState() -> some View { + func emptyKeysList() -> some View { + VStack(spacing: 0) { + // Main key cell + rootKeyHeader() + // Derived Keys header + listHeader() + Spacer() + // Empty state + emptyState() + Spacer() + } + } + + @ViewBuilder + private func emptyState() -> some View { VStack(spacing: 0) { Localizable.KeyDetails.Label.EmptyState.header.text .font(PrimaryFont.titleM.font) diff --git a/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView+Header.swift b/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView+Header.swift index 4c8f9260db..0233b231dc 100644 --- a/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView+Header.swift +++ b/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView+Header.swift @@ -53,4 +53,24 @@ extension KeyDetailsView { EmptyView() } } + + @ViewBuilder + func listHeader() -> some View { + HStack { + Localizable.KeyDetails.Label.derived.text + .font(PrimaryFont.bodyM.font) + Spacer().frame(maxWidth: .infinity) + Image(.switches) + .foregroundColor( + viewModel.isFilteringActive ? .accentPink300 : .textAndIconsTertiary + ) + .frame(width: Heights.actionSheetButton) + .onTapGesture { + viewModel.onNetworkSelectionTap() + } + } + .foregroundColor(.textAndIconsTertiary) + .padding(.horizontal, Spacing.large) + .padding(.top, Spacing.medium) + } } diff --git a/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView+MainList.swift b/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView+MainList.swift index 6a81cd95fb..dc43c627bb 100644 --- a/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView+MainList.swift +++ b/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView+MainList.swift @@ -11,27 +11,14 @@ extension KeyDetailsView { @ViewBuilder func derivedKeysList() -> some View { ScrollView(showsIndicators: false) { - // Main key cell - rootKeyHeader() - // Derived Keys header - HStack { - Localizable.KeyDetails.Label.derived.text - .font(PrimaryFont.bodyM.font) - Spacer().frame(maxWidth: .infinity) - Image(.switches) - .foregroundColor( - viewModel.isFilteringActive ? .accentPink300 : .textAndIconsTertiary - ) - .frame(width: Heights.actionSheetButton) - .onTapGesture { - viewModel.onNetworkSelectionTap() - } + VStack(spacing: 0) { + // Main key cell + rootKeyHeader() + // Derived Keys header + listHeader() + // List + derivedKeys() } - .foregroundColor(.textAndIconsTertiary) - .padding(.horizontal, Spacing.large) - .padding(.top, Spacing.medium) - // List - derivedKeys() } } diff --git a/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView.swift b/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView.swift index 1730fdc1ce..a607a5c72e 100644 --- a/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView.swift +++ b/ios/PolkadotVault/Screens/KeyDetails/Views/KeyDetailsView.swift @@ -30,10 +30,7 @@ struct KeyDetailsView: View { case .list: derivedKeysList() case .emptyState: - rootKeyHeader() - Spacer() - emptyState() - Spacer() + emptyKeysList() } } .navigationBarHidden(true)