From 42eab530d0366b6d68b19e1659c650791eb899c2 Mon Sep 17 00:00:00 2001 From: Benjamin Fuentes Date: Thu, 30 Nov 2023 16:17:04 +0100 Subject: [PATCH] sync with docs.tezos.com --- README.md | 173 +++--- solution/.taq/config.json | 6 +- solution/.taq/development-state.json | 64 +-- solution/.taq/state.json | 90 +-- solution/package-lock.json | 831 +++++++++++++++++++++------ solution/package.json | 8 +- 6 files changed, 836 insertions(+), 336 deletions(-) diff --git a/README.md b/README.md index 72bf228..e0469a0 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,43 @@ --- -title: Training dapp n°3 -tags: Training -description: Training n°3 for decentralized application +title: Part 3: Tickets +authors: "Benjamin Fuentes" +last_update: + date: 29th November 2023 --- -## :round_pushpin: [See Github version and full code here](https://github.com/marigold-dev/training-dapp-3) - -# Training dapp n°3 - -# :point_up: Poke game with permissions - Previously, you learned how to do inter-contract calls, use view and do unit testing. In this third session, you will enhance your skills on : - using tickets - don't mess up with `DUP` errors while manipulating tickets -On the second version of the poke game, you were able poke any contract without constraint. We will introduce now a right to poke via tickets. Ticket are a kind of object that cannot be copied and can hold some trustable information. +On the second version of the poke game, you were able to poke any contract without constraint. A right to poke via tickets is now mandatory. Ticket are a kind of object that cannot be copied and can hold some trustable information. ## new Poke sequence diagram ```mermaid sequenceDiagram - Admin->>SM : Init(User,1) - Note right of SM : Mint 1 ticket for User + Admin->>Smartcontract : Init(User,1) + Note right of Smartcontract : Mint 1 ticket for User Note left of User : Prepare to poke - User->>SM : Poke - Note right of SM : Check available tickets for User - Note right of SM : Store trace and burn 1 ticket - SM-->>User : success - User->>SM : Poke - Note right of SM : Check available tickets for User - SM-->>User : error + User->>Smartcontract : Poke + Note right of Smartcontract : Check available tickets for User + Note right of Smartcontract : Store trace and burn 1 ticket + Smartcontract-->>User : success + User->>Smartcontract : Poke + Note right of Smartcontract : Check available tickets for User + Smartcontract-->>User : error ``` -# :memo: Prerequisites +## Prerequisites -There is nothing more than you needed on first session : https://github.com/marigold-dev/training-dapp-1#memo-prerequisites +Prerequisites are the same as the first session : https://github.com/marigold-dev/training-dapp-1#memo-prerequisites -Get your code from the session 2 or the solution [here](https://github.com/marigold-dev/training-dapp-2/tree/main/solution) +Get the code from the session 2 solution [here](https://github.com/marigold-dev/training-dapp-2/tree/main/solution) -# :ticket: Tickets +## Tickets -Tickets just came with Tezos Edo upgrade, they are great and often misundersood +Tickets came with Tezos **Edo** upgrade, they are great and often misunderstood Ticket structure : @@ -52,28 +47,28 @@ Ticket structure : Tickets features : -- Not comparable : it makes no sense because tickets from same type are all equals and can be merged into a single ticket, for different types it is not comparable -- Transferable : you can send ticket as Transaction parameter -- Storable : only on smart contract storage for the moment (Note : a new protocol release will enable it for implicit account too) +- Not comparable : it makes no sense to compare tickets because tickets from same type are all equals and can be merged into a single ticket. When ticket types are different then it is no more comparable +- Transferable : you can send ticket into a Transaction parameter +- Storable : only on smart contract storage for the moment (Note : a new protocol release will enable it for implicit account soon) - Non dupable : you cannot copy or duplicate a ticket, it is a unique singleton object living in specific blockchain instance - Splittable : if amount is > 2 then you can split ticket object into 2 objects -- Mergable : you can merge ticket from same ticketer and same value -- Mintable/burnable : this is the way to create and destroy tickets +- Mergeable : you can merge ticket from same ticketer and same type +- Mintable/burnable : anyone can create and destroy tickets Example of usage : -- AUTHN/AUTHZ token : give a ticket to a user from a allowed ticketer gives you AUTHN, add some claims on the ticket value and it gives you AUTHZ -- Simplified FA1.2/FA2 token : you can represent crypto token with tickets (mint/burn/split/join) -- Voting rights : give 1 ticket that count for 1 vote on each member -- Wrapped crypto : hold XTZ colletral agains a ticket for redeeming it +- Authentication and Authorization token : giving a ticket to a user provides you Authentication. Adding some claims/rules on the ticket provides you some rights +- Simplified FA1.2/FA2 token : representing crypto token with tickets (mint/burn/split/join), but it does not have all same properties and does not respect the TZIP standard +- Voting rights : giving 1 ticket that count for 1 vote on each member +- Wrapped crypto : holding XTZ collateral against a ticket, and redeeming it later - many others ... -## Step 1 : :seedling: Mint +### Minting -Minting is the action of creating ticket from void. In general, minting operations are done by administrators of smart contract or either by end user (while creating an NFT for example) +Minting is the action of creating ticket from void. In general, minting operations are done by administrators of smart contract or either by an end user. -Edit the `./contracts/pokeGame.jsligo` file and add a map of ticket ownership to the default `storage` type. -This map will keep a list of consumable ticket for each authrozized user. It will be used as a burnable right to poke here +1. Edit the `./contracts/pokeGame.jsligo` file and add a map of ticket ownership to the default `storage` type. + This map keeps a list of consumable tickets for each authorized user. It is used as a burnable right to poke ```ligolang export type storage = { @@ -83,17 +78,17 @@ export type storage = { }; ``` -In order to fill this map, we are adding an new administration endpoint. A new entrypoint `Init` will add x tickets to a specific user +In order to fill this map, add an new administration endpoint. A new entrypoint `Init` is adding x tickets to a specific user -> Note : to simplify, we don't add security around this entrypoint, but in Production we should do it +> Note : to simplify, there is no security around this entrypoint, but in Production it should -Tickets are very special objects that cannot be **DUPLICATED**. During compilation to Michelson, using a variable twice, copying a structure holding tickets are generating `DUP` command. To avoid our contract to fail at runtime, Ligo will parse statically our code during compilation time to detect any DUP on tickets. +Tickets are very special objects that cannot be **DUPLICATED**. During compilation to Michelson, using a variable twice, copying a structure holding tickets are generating `DUP` command. To avoid our contract to fail at runtime, Ligo parses statically our code during compilation time to detect any DUP on tickets. -To solve most of issues, we need to segregate ticket objects from the rest of the storage, or structures containing ticket objects in order to avoid compilation errors. To do this, just destructure any object until you get tickets isolated. +To solve most of issues, segregate ticket objects from the rest of the storage, or structures containing ticket objects in order to avoid compilation errors. To do this, just destructure any object until you get tickets isolated. -For each function having the storage as parameter, `store` object need to be destructured to isolate `ticketOwnership` object holding our tickets. then don't use anymore the `store` object or you will create a **DUP** error. +For each function having the storage as parameter, `store` object need to be destructured to isolate `ticketOwnership` object holding our tickets. Then, don't use anymore the `store` object or it creates a **DUP** error. -Add the new `Init` function +2. Add the new `Init` function ```ligolang @entry @@ -117,7 +112,7 @@ const init = ([a, ticketCount]: [address, nat], store: storage): return_ => { Init function looks at how many tickets to create from the current caller, then it is added to the current map -Modify poke function +3. Modify the poke function ```ligolang @entry @@ -149,13 +144,13 @@ const poke = (_: unit, store: storage): return_ => { }; ``` -First, we need to extract an existing optional ticket from the map. If we try to do operation directly on the map, even trying to find or get this object in the structure, a DUP command can be generated. We use the secure `get_and_update` function from Map library to extract the item from the map and avoid any copy. +First, extract an existing optional ticket from the map. If an operation is done directly on the map, even trying to find or get this object in the structure, a DUP Michelson instruction is generated. Use the secure `get_and_update` function from Map library to extract the item from the map and avoid any copy. > Note : more information about this function [here](https://ligolang.org/docs/reference/map-reference) -Second step, we can look at the optional ticket, if it exists, then we burn it (i.e we do not store it somewhere on the storage anymore) and add a trace of execution, otherwise we fail with an error message +On a second step, look at the optional ticket, if it exists, then burn it (i.e do not store it somewhere on the storage anymore) and add a trace of execution, otherwise fail with an error message -Same for `pokeAndGetFeedback` function, do same checks and type modifications as below +4. Same for `pokeAndGetFeedback` function, do same checks and type modifications as below ```ligolang @no_mutation @@ -202,7 +197,7 @@ const pokeAndGetFeedback = (oracleAddress: address, store: storage): return_ => }; ``` -Update the storage initialization on `pokeGame.storages.jsligo` +5. Update the storage initialization on `pokeGame.storages.jsligo` ```ligolang #import "pokeGame.jsligo" "Contract" @@ -219,45 +214,45 @@ const default_storage = { }; ``` -Compile the contract to check any errors +6. Compile the contract to check any errors > Note : don't forget to check that Docker is running for taqueria ```bash npm i -TAQ_LIGO_IMAGE=ligolang/ligo:1.0.0 taq compile pokeGame.jsligo +TAQ_LIGO_IMAGE=ligolang/ligo:1.1.0 taq compile pokeGame.jsligo ``` Check on logs that everything is fine :ok_hand: -Try to display a DUP error now :japanese_goblin: +Try to display a DUP error now -Add this line on `poke function` after the first line of storage destructuration `const { pokeTraces, feedback, ticketOwnership } = store;` +7. Add this line on `poke function` just after the first line of storage destructuration `const { pokeTraces, feedback, ticketOwnership } = store;` ```ligolang const t2 = Map.find_opt(Tezos.get_source(), ticketOwnership); ``` -Compile again +8. Compile again ```bash -TAQ_LIGO_IMAGE=ligolang/ligo:1.0.0 taq compile pokeGame.jsligo +TAQ_LIGO_IMAGE=ligolang/ligo:1.1.0 taq compile pokeGame.jsligo ``` -This time you should see the `DUP` warning generated by the find function +This time you should see the `DUP` warning generated by the **find** function ```logs Warning: variable "ticketOwnership" cannot be used more than once. ``` -Ok so remove it !!! :negative_squared_cross_mark: +9. Remove it -## Step 2 : Test authorization poking +## Test your code -Update the unit tests files to see if we can still poke +Update the unit tests files to see if you can still poke -Edit `./contracts/unit_pokeGame.jsligo` +1. Edit the `./contracts/unit_pokeGame.jsligo` file ```ligolang #import "./pokeGame.jsligo" "PokeGame" @@ -365,15 +360,15 @@ const testSender1PokeWithNoTicketsToFail = )(); ``` -- On `Init([sender1, ticketCount])`, we initialize the smartcontract with some tickets -- On `Fail`, we check if we have an error on the test (i.e user is allowed to poke) -- On `testSender1Poke`, we test with the first user using a preexisting ticket -- On `testSender1PokeWithNoTicketsToFail`, we test with the same user again but with no ticket and we should have a catched error +- On `Init([sender1, ticketCount])`, initialize the smart contract with some tickets +- On `Fail`, check if you have an error on the test (i.e the user should be allowed to poke) +- On `testSender1Poke`, test with the first user using a preexisting ticket +- On `testSender1PokeWithNoTicketsToFail`, test with the same user again but with no ticket and an error should be caught -Run the test, and look at the logs to track execution +2. Run the test, and look at the logs to track execution ```bash -TAQ_LIGO_IMAGE=ligolang/ligo:1.0.0 taq test unit_pokeGame.jsligo +TAQ_LIGO_IMAGE=ligolang/ligo:1.1.0 taq test unit_pokeGame.jsligo ``` First test should be fine @@ -408,12 +403,12 @@ First test should be fine └──────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` -## Step 3 : Redeploy the smart contract +## Redeploy the smart contract Let play with the CLI to compile and deploy ```bash -TAQ_LIGO_IMAGE=ligolang/ligo:1.0.0 taq compile pokeGame.jsligo +TAQ_LIGO_IMAGE=ligolang/ligo:1.1.0 taq compile pokeGame.jsligo taq generate types ./app/src taq deploy pokeGame.tz -e testing ``` @@ -426,26 +421,26 @@ taq deploy pokeGame.tz -e testing └─────────────┴──────────────────────────────────────┴──────────┴──────────────────┴────────────────────────────────┘ ``` -## Step 4 : Adapt the frontend code +## Adapt the frontend code -Rerun the app, we will check that can cannot use the app anymore without tickets +1. Rerun the app and check that you can cannot use the app anymore without tickets ```bash cd app yarn dev ``` -Connect with any wallet that has enough Tez, and Poke your own contract +2. Connect with any wallet with enough Tez, and Poke your own contract -![pokefail](./doc/pokefail.png) +![pokefail](./img/tutorials/dapp-pokefail.png) -My Kukai wallet is giving me back the error from the smart contract +The Kukai wallet is giving me back the error from the smart contract -![kukaifail](./doc/kukaifail.png) +![kukaifail](./img/tutorials/dapp-kukaifail.png) -Ok, so let's authorize some :sparkler: minting on my user and try again to poke +Ok, so let's authorize some minting on my user and try again to poke -We add a new button for minting on a specific contract, replace the full content of `App.tsx` with : +3. Add a new button for minting on a specific contract, replace the full content of `App.tsx` with : ```typescript import { NetworkType } from "@airgap/beacon-types"; @@ -629,36 +624,34 @@ function App() { export default App; ``` -> Note : You have maybe noticed, but we use the full typed generated taquito classes for the storage access, now. It will improve maintenance in case you contract storage has changed. +> Note : You maybe have noticed, but the full typed generated Taquito class is used for the storage access now. It improves maintenance in case you contract storage has changed. -Refresh the page, now you have the Mint button +4. Refresh the page, now that you have the Mint button -Mint a ticket on this contract +5. Mint a ticket on this contract -![mint](./doc/mint.png) +![mint](./img/tutorials/dapp-mint.png) -Wait for the Tx popup confirmation and then try to poke again, it should succeed now +6. Wait for the Tx popup confirmation and then try to poke again, it should succeed now -![success](./doc/success.png) +![success](./img/tutorials/dapp-success.png) -Wait for the Tx popup confirmation and try to poke again, you should be out of tickets and it should fail +7. Wait for the Tx popup confirmation and try to poke again, you should be out of tickets and it should fail -![kukaifail](./doc/kukaifail.png) +![kukaifail](./img/tutorials/dapp-kukaifail.png) -:confetti_ball: Congratulation, you know how to use tickets now and avoid DUP errors +Congratulation, you know how to use tickets and avoid DUP errors > Takeaways : > > - you can go further and improve the code like consuming one 1 ticket quantity at a time and manage it the right way -> - you can also implement different type of AUTHZ, not only `can poke` claim +> - you can also implement different type of Authorization mechanism, not only `can poke` claim > - You can also try to base your ticket on some duration time like JSON token can do, not using the data field as a string but as bytes and store a timestamp on it. -# :palm_tree: Conclusion :sun_with_face: +## Summary Now, you are able to understand ticket. If you want to learn more about tickets, read this great article [here](https://www.marigold.dev/post/tickets-for-dummies) -On next training, we will learn hot to upgrade deployed contracts - -[:arrow_right: NEXT (HTML version)](https://marigold-dev.github.io/training-dapp-4) +On next training, you will learn how to upgrade smart contracts -[:arrow_right: NEXT (Github version)](https://github.com/marigold-dev/training-dapp-4) +When you are ready, continue to [Part 4: Smart contract upgrades](./part-4). diff --git a/solution/.taq/config.json b/solution/.taq/config.json index b07a0bc..75f9c7a 100644 --- a/solution/.taq/config.json +++ b/solution/.taq/config.json @@ -59,15 +59,15 @@ }, { "type": "npm", - "name": "@taqueria/plugin-octez-client" + "name": "@taqueria/plugin-contract-types" }, { "type": "npm", - "name": "@taqueria/plugin-taquito" + "name": "@taqueria/plugin-octez-client" }, { "type": "npm", - "name": "@taqueria/plugin-contract-types" + "name": "@taqueria/plugin-taquito" } ] } \ No newline at end of file diff --git a/solution/.taq/development-state.json b/solution/.taq/development-state.json index 908251e..f196232 100644 --- a/solution/.taq/development-state.json +++ b/solution/.taq/development-state.json @@ -12,10 +12,10 @@ } ] }, - "@taqueria/plugin-ligo.compile.1695974447083": { + "@taqueria/plugin-ligo.compile.1695980240600": { "task": "compile", "plugin": "@taqueria/plugin-ligo", - "time": 1695974447083, + "time": 1695980240601, "output": [ { "source": "pokeGame.jsligo", @@ -23,43 +23,43 @@ } ] }, - "@taqueria/plugin-ligo.test.1695978469011": { - "task": "test", + "@taqueria/plugin-ligo.compile.1695980266300": { + "task": "compile", "plugin": "@taqueria/plugin-ligo", - "time": 1695978469011, + "time": 1695980266300, "output": [ { - "contract": "mutation_pokeGame.jsligo", - "testResults": "Some tests failed :(" + "source": "pokeGame.jsligo", + "artifact": "artifacts/pokeGame.tz\nartifacts/pokeGame.default_storage.tz\nNo parameter expressions found" } ] }, - "@taqueria/plugin-ligo.test.1695978576844": { + "@taqueria/plugin-ligo.test.1695980609790": { "task": "test", "plugin": "@taqueria/plugin-ligo", - "time": 1695978576844, + "time": 1695980609791, "output": [ { - "contract": "mutation_pokeGame.jsligo", - "testResults": "\"Sender 1 has balance : \"\n3800000000000mutez\n\"contract deployed with values : \"\nKT1L8mCbuTJXKq3CDoHDxqfH5aj5sEgAdx9C(None)\nSuccess (1330n)\n{feedback = \"kiss\" ; pokeTraces = [tz1hkMbkLPkvhxyqsQoBoLPqb1mruSzZx3zy -> {feedback = \"\" ; receiver = KT1L8mCbuTJXKq3CDoHDxqfH5aj5sEgAdx9C}]}\n\"Sender 1 has balance : \"\n3800000000000mutez\nEverything at the top-level was executed.\n- test_mutation exited with value ().\n\n🎉 All tests passed 🎉" + "contract": "unit_pokeGame.jsligo", + "testResults": "Some tests failed :(" } ] }, - "@taqueria/plugin-ligo.compile.1695978929246": { - "task": "compile", + "@taqueria/plugin-ligo.test.1695980691515": { + "task": "test", "plugin": "@taqueria/plugin-ligo", - "time": 1695978929246, + "time": 1695980691515, "output": [ { - "source": "pokeGame.jsligo", - "artifact": "artifacts/pokeGame.tz\nartifacts/pokeGame.default_storage.tz\nNo parameter expressions found" + "contract": "unit_pokeGame.jsligo", + "testResults": "\"Sender 1 has balance : \"\n3800000000000mutez\n\"*** Run test to pass ***\"\n\"contract deployed with values : \"\nKT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo(None)\nSuccess (1858n)\n\"*** Check initial ticket is here ***\"\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = [tz1hkMbkLPkvhxyqsQoBoLPqb1mruSzZx3zy -> (KT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo , (\"can_poke\" , 1n))]}\nSuccess (1024n)\n{feedback = \"kiss\" ; pokeTraces = [tz1hkMbkLPkvhxyqsQoBoLPqb1mruSzZx3zy -> {feedback = \"\" ; receiver = KT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo}] ; ticketOwnership = []}\n\"*** Run test to fail ***\"\n\"contract deployed with values : \"\nKT1HDbqhYiKs8e3LkNAcT9T2MQgvUdxPtbV5(None)\nSuccess (1399n)\n\"*** Check initial ticket is here ***\"\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = []}\nFail (Rejected ((\"User does not have tickets => not allowed\" , KT1HDbqhYiKs8e3LkNAcT9T2MQgvUdxPtbV5)))\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = []}\nEverything at the top-level was executed.\n- testSender1Poke exited with value ().\n- testSender1PokeWithNoTicketsToFail exited with value ().\n\n🎉 All tests passed 🎉" } ] }, - "@taqueria/plugin-ligo.compile.1695980240600": { + "@taqueria/plugin-ligo.compile.1695981005104": { "task": "compile", "plugin": "@taqueria/plugin-ligo", - "time": 1695980240601, + "time": 1695981005104, "output": [ { "source": "pokeGame.jsligo", @@ -67,10 +67,10 @@ } ] }, - "@taqueria/plugin-ligo.compile.1695980266300": { + "@taqueria/plugin-ligo.compile.1695988044952": { "task": "compile", "plugin": "@taqueria/plugin-ligo", - "time": 1695980266300, + "time": 1695988044952, "output": [ { "source": "pokeGame.jsligo", @@ -78,47 +78,47 @@ } ] }, - "@taqueria/plugin-ligo.test.1695980486180": { + "@taqueria/plugin-ligo.test.1695988127841": { "task": "test", "plugin": "@taqueria/plugin-ligo", - "time": 1695980486180, + "time": 1695988127841, "output": [ { "contract": "unit_pokeGame.jsligo", - "testResults": "Some tests failed :(" + "testResults": "\"Sender 1 has balance : \"\n3800000000000mutez\n\"*** Run test to pass ***\"\n\"contract deployed with values : \"\nKT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo(None)\nSuccess (1858n)\n\"*** Check initial ticket is here ***\"\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = [tz1hkMbkLPkvhxyqsQoBoLPqb1mruSzZx3zy -> (KT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo , (\"can_poke\" , 1n))]}\nSuccess (1024n)\n{feedback = \"kiss\" ; pokeTraces = [tz1hkMbkLPkvhxyqsQoBoLPqb1mruSzZx3zy -> {feedback = \"\" ; receiver = KT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo}] ; ticketOwnership = []}\n\"*** Run test to fail ***\"\n\"contract deployed with values : \"\nKT1UU9rgxyKAAjxwnEWc7XqwqUxxfDNg7w6a(None)\nSuccess (1399n)\n\"*** Check initial ticket is here ***\"\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = []}\nFail (Rejected ((\"User does not have tickets => not allowed\" , KT1UU9rgxyKAAjxwnEWc7XqwqUxxfDNg7w6a)))\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = []}\nEverything at the top-level was executed.\n- testSender1Poke exited with value ().\n- testSender1PokeWithNoTicketsToFail exited with value ().\n\n🎉 All tests passed 🎉" } ] }, - "@taqueria/plugin-ligo.test.1695980609790": { + "@taqueria/plugin-ligo.test.1695988180263": { "task": "test", "plugin": "@taqueria/plugin-ligo", - "time": 1695980609791, + "time": 1695988180263, "output": [ { "contract": "unit_pokeGame.jsligo", - "testResults": "Some tests failed :(" + "testResults": "\"Sender 1 has balance : \"\n3800000000000mutez\n\"*** Run test to pass ***\"\n\"contract deployed with values : \"\nKT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo(None)\nSuccess (1858n)\n\"*** Check initial ticket is here ***\"\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = [tz1hkMbkLPkvhxyqsQoBoLPqb1mruSzZx3zy -> (KT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo , (\"can_poke\" , 1n))]}\nSuccess (1024n)\n{feedback = \"kiss\" ; pokeTraces = [tz1hkMbkLPkvhxyqsQoBoLPqb1mruSzZx3zy -> {feedback = \"\" ; receiver = KT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo}] ; ticketOwnership = []}\n\"*** Run test to fail ***\"\n\"contract deployed with values : \"\nKT1NvBx6PVSsZ2YFuQSgkZctYZ7naba9ACTE(None)\nSuccess (1399n)\n\"*** Check initial ticket is here ***\"\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = []}\nFail (Rejected ((\"User does not have tickets => not allowed\" , KT1NvBx6PVSsZ2YFuQSgkZctYZ7naba9ACTE)))\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = []}\nEverything at the top-level was executed.\n- testSender1Poke exited with value ().\n- testSender1PokeWithNoTicketsToFail exited with value ().\n\n🎉 All tests passed 🎉" } ] }, - "@taqueria/plugin-ligo.test.1695980691515": { + "@taqueria/plugin-ligo.test.1695988226514": { "task": "test", "plugin": "@taqueria/plugin-ligo", - "time": 1695980691515, + "time": 1695988226514, "output": [ { "contract": "unit_pokeGame.jsligo", - "testResults": "\"Sender 1 has balance : \"\n3800000000000mutez\n\"*** Run test to pass ***\"\n\"contract deployed with values : \"\nKT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo(None)\nSuccess (1858n)\n\"*** Check initial ticket is here ***\"\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = [tz1hkMbkLPkvhxyqsQoBoLPqb1mruSzZx3zy -> (KT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo , (\"can_poke\" , 1n))]}\nSuccess (1024n)\n{feedback = \"kiss\" ; pokeTraces = [tz1hkMbkLPkvhxyqsQoBoLPqb1mruSzZx3zy -> {feedback = \"\" ; receiver = KT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo}] ; ticketOwnership = []}\n\"*** Run test to fail ***\"\n\"contract deployed with values : \"\nKT1HDbqhYiKs8e3LkNAcT9T2MQgvUdxPtbV5(None)\nSuccess (1399n)\n\"*** Check initial ticket is here ***\"\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = []}\nFail (Rejected ((\"User does not have tickets => not allowed\" , KT1HDbqhYiKs8e3LkNAcT9T2MQgvUdxPtbV5)))\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = []}\nEverything at the top-level was executed.\n- testSender1Poke exited with value ().\n- testSender1PokeWithNoTicketsToFail exited with value ().\n\n🎉 All tests passed 🎉" + "testResults": "\"Sender 1 has balance : \"\n3800000000000mutez\n\"*** Run test to pass ***\"\n\"contract deployed with values : \"\nKT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo(None)\nSuccess (1858n)\n\"*** Check initial ticket is here ***\"\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = [tz1hkMbkLPkvhxyqsQoBoLPqb1mruSzZx3zy -> (KT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo , (\"can_poke\" , 1n))]}\nSuccess (1024n)\n{feedback = \"kiss\" ; pokeTraces = [tz1hkMbkLPkvhxyqsQoBoLPqb1mruSzZx3zy -> {feedback = \"\" ; receiver = KT1HeEVF74BLi3fYCpr1tpkDGmruFBNjMATo}] ; ticketOwnership = []}\n\"*** Run test to fail ***\"\n\"contract deployed with values : \"\nKT1J4jPPzMJjVn78oSNqdkRh16p7YpeJ1jse(None)\nSuccess (1399n)\n\"*** Check initial ticket is here ***\"\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = []}\nFail (Rejected ((\"User does not have tickets => not allowed\" , KT1J4jPPzMJjVn78oSNqdkRh16p7YpeJ1jse)))\n{feedback = \"kiss\" ; pokeTraces = [] ; ticketOwnership = []}\nEverything at the top-level was executed.\n- testSender1Poke exited with value ().\n- testSender1PokeWithNoTicketsToFail exited with value ().\n\n🎉 All tests passed 🎉" } ] }, - "@taqueria/plugin-ligo.compile.1695981005104": { + "@taqueria/plugin-ligo.compile.1701255487917": { "task": "compile", "plugin": "@taqueria/plugin-ligo", - "time": 1695981005104, + "time": 1701255487917, "output": [ { "source": "pokeGame.jsligo", - "artifact": "artifacts/pokeGame.tz\nartifacts/pokeGame.default_storage.tz\nNo parameter expressions found" + "artifact": "artifacts/pokeGame.tz\nartifacts/pokeGame.default_storage.tz" } ] } diff --git a/solution/.taq/state.json b/solution/.taq/state.json index 80df6fa..04a189c 100644 --- a/solution/.taq/state.json +++ b/solution/.taq/state.json @@ -1,7 +1,7 @@ // WARNING: This file is autogenerated and should NOT be modified { - "build": "dcdfa46", - "configHash": "3aa88081c59dc91dd5912be9d00b5886946e795b60f88d1305803161e9917e4d", + "build": "4443226", + "configHash": "7ed977435439338833dd2cf62d426961bebe0f1ddca67fa057ac5c26b06d9d63", "tasks": { "ligo": { "type": "npm", @@ -39,6 +39,10 @@ } ] }, + "generate types": { + "type": "npm", + "name": "@taqueria/plugin-contract-types" + }, "client": { "type": "npm", "name": "@taqueria/plugin-octez-client" @@ -70,10 +74,6 @@ "instantiate-account": { "type": "npm", "name": "@taqueria/plugin-taquito" - }, - "generate types": { - "type": "npm", - "name": "@taqueria/plugin-contract-types" } }, "operations": {}, @@ -89,7 +89,7 @@ "version": "0.1", "schema": "1.0", "alias": "ligo", - "postInstall": "node /home/zamrokk/training-dapp-3/solution/node_modules/@taqueria/plugin-ligo/postinstall.js", + "postInstall": "node /home/zamrokk/training-dapp-3/solution/node_modules/@taqueria/lib-ligo/postinstall.js", "tasks": [ { "task": "ligo", @@ -185,6 +185,44 @@ } ] }, + { + "name": "@taqueria/plugin-contract-types", + "version": "0.1", + "schema": "1.0", + "alias": "contract-types", + "tasks": [ + { + "task": "generate types", + "command": "generate types [typescriptDir]", + "aliases": [ + "gen types", + "gentypes" + ], + "description": "Generate types for a contract to be used with taquito", + "handler": "proxy", + "options": [ + { + "shortFlag": "t", + "flag": "typeAliasMode", + "description": "The type aliases used in the generated types", + "choices": [ + "file", + "simple" + ] + } + ], + "positionals": [ + { + "placeholder": "typescriptDir", + "description": "The output directory for the generated type files", + "defaultValue": "types" + } + ] + } + ], + "operations": [], + "templates": [] + }, { "name": "@taqueria/plugin-octez-client", "version": "0.1", @@ -384,44 +422,6 @@ ], "operations": [], "templates": [] - }, - { - "name": "@taqueria/plugin-contract-types", - "version": "0.1", - "schema": "1.0", - "alias": "contract-types", - "tasks": [ - { - "task": "generate types", - "command": "generate types [typescriptDir]", - "aliases": [ - "gen types", - "gentypes" - ], - "description": "Generate types for a contract to be used with taquito", - "handler": "proxy", - "options": [ - { - "shortFlag": "t", - "flag": "typeAliasMode", - "description": "The type aliases used in the generated types", - "choices": [ - "file", - "simple" - ] - } - ], - "positionals": [ - { - "placeholder": "typescriptDir", - "description": "The output directory for the generated type files", - "defaultValue": "types" - } - ] - } - ], - "operations": [], - "templates": [] } ] } \ No newline at end of file diff --git a/solution/package-lock.json b/solution/package-lock.json index fd1c7dc..dd3ff59 100644 --- a/solution/package-lock.json +++ b/solution/package-lock.json @@ -9,16 +9,16 @@ "version": "1.0.0", "license": "ISC", "devDependencies": { - "@taqueria/plugin-contract-types": "^0.40.0", - "@taqueria/plugin-ligo": "^0.40.0", - "@taqueria/plugin-octez-client": "^0.40.0", - "@taqueria/plugin-taquito": "^0.40.0" + "@taqueria/plugin-contract-types": "^0.45.0", + "@taqueria/plugin-ligo": "^0.45.0", + "@taqueria/plugin-octez-client": "^0.45.0", + "@taqueria/plugin-taquito": "^0.45.0" } }, "node_modules/@babel/runtime": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", - "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", + "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -27,6 +27,18 @@ "node": ">=6.9.0" } }, + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -63,14 +75,14 @@ } }, "node_modules/@peculiar/asn1-schema": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz", - "integrity": "sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz", + "integrity": "sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==", "dev": true, "dependencies": { "asn1js": "^3.0.5", - "pvtsutils": "^1.3.2", - "tslib": "^2.4.0" + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" } }, "node_modules/@peculiar/json-schema": { @@ -271,19 +283,30 @@ "@stablelib/wipe": "^1.0.1" } }, + "node_modules/@taqueria/lib-ligo": { + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/@taqueria/lib-ligo/-/lib-ligo-0.45.0.tgz", + "integrity": "sha512-CnrXZHyleEfzdhJ6KyWhhpAPq61LFUZKT59TO3pMYB51VWvYLWmj9wRY4XP1Yl7nxXBrR+DSl/b6kOZYebXMuw==", + "dev": true, + "dependencies": { + "@taqueria/node-sdk": "^0.45.0", + "fast-glob": "^3.3.1" + } + }, "node_modules/@taqueria/node-sdk": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@taqueria/node-sdk/-/node-sdk-0.40.0.tgz", - "integrity": "sha512-oikiFN774OZTwpppxkdde6Kaj3T05zvSZZG2Cya0yjN+G06W7llnIZ+H8QD6gFEFfWnEKEADQDzkoXwz2z4IWg==", + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/@taqueria/node-sdk/-/node-sdk-0.45.0.tgz", + "integrity": "sha512-nEUXtfXklhxyKLo8hIIq3+fGLf6djhKABm4ccWNB+qv8G6SXQT3Z/yPpM8dKmocSoRzxY6c0inBWjAebgLCgCw==", "dev": true, "dependencies": { - "@taqueria/protocol": "^0.40.0", + "@taqueria/protocol": "^0.45.0", "@taquito/signer": "^17.3.1", "@taquito/taquito": "^17.3.1", "@taquito/utils": "^17.3.1", "i18next": "^23.5.1", "node-fetch": "^3.3.2", "rambda": "^8.3.0", + "shell-quote": "^1.8.1", "stacktrace-js": "^2.0.2", "ts-pattern": "^5.0.5", "why-is-node-running": "^2.2.2", @@ -292,36 +315,239 @@ } }, "node_modules/@taqueria/plugin-contract-types": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@taqueria/plugin-contract-types/-/plugin-contract-types-0.40.0.tgz", - "integrity": "sha512-JOj8SF3/1SZzksV+mAdRWWrhVhqwh9ayd3PStFQiDuEE5g9iGx2n8mB8t/eBiOIjOp944l5K80C+Q385QpIlrw==", + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/@taqueria/plugin-contract-types/-/plugin-contract-types-0.45.0.tgz", + "integrity": "sha512-21nFu4HHmUyU+oYDH0bJjLcdb52nCfppA09ecPf4ApdfiIjmD4NGNriVI2nqGn2hzn5pZDm8utQhiFQ21umyUQ==", "dev": true, "dependencies": { - "@taqueria/node-sdk": "^0.40.0", - "@taquito/michel-codec": "^17.3.1", - "@taquito/signer": "^17.3.1", - "@taquito/taquito": "^17.3.1", + "@taqueria/node-sdk": "^0.45.0", + "@taquito/michel-codec": "^18.0.0-RC.0", + "@taquito/signer": "^18.0.0-RC.0", + "@taquito/taquito": "^18.0.0-RC.0", "bignumber.js": "^9.1.2", "fast-glob": "^3.3.1" } }, + "node_modules/@taqueria/plugin-contract-types/node_modules/@taquito/core": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/core/-/core-18.0.0-RC.0.tgz", + "integrity": "sha512-10TMPmBJ60ibsJCipnsDSgd9e+qk2sCmOYO9prabHXtpfw/OAHjBX5R4rAkUVAhm7YBODePesSdvppv7TaEpeA==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/@taquito/http-utils": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-18.0.0-RC.0.tgz", + "integrity": "sha512-KhSlw2FWdD1u4Kz8DKLtwWAu0ihbKE0KoO48dvYkfBIGCAXsHz/g/JAudGhMCGbLlP4ddF49UKO567DJkXyBeQ==", + "dev": true, + "dependencies": { + "@taquito/core": "^18.0.0-RC.0", + "axios": "0.26.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/@taquito/local-forging": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/local-forging/-/local-forging-18.0.0-RC.0.tgz", + "integrity": "sha512-trCCK5fBLSb3g7j3HEJ+93LQ3FlU9QUfQU3DAL4DOC9tyFxzamXECrVrtRxvdVVPo1HYBUvFJb5WBZer17fuJQ==", + "dev": true, + "dependencies": { + "@taquito/core": "^18.0.0-RC.0", + "@taquito/utils": "^18.0.0-RC.0", + "bignumber.js": "^9.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/@taquito/michel-codec": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-18.0.0-RC.0.tgz", + "integrity": "sha512-5FzMU+C8ERpQ0e5WrRsB+o5OggO/1TyL2MVmfQmqel4jn1OEbBUEQ31QqxhZBp0fqCX9n5FYOjznXafutFzK2Q==", + "dev": true, + "dependencies": { + "@taquito/core": "^18.0.0-RC.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/@taquito/michelson-encoder": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-18.0.0-RC.0.tgz", + "integrity": "sha512-PeXU18uCMWwayfAFe31zhclsZrdW4+f6+PdRi5hsSYWlJ7pEPo2xambKC5gCL8jVTjqcj64BzR5crCH3xsN49Q==", + "dev": true, + "dependencies": { + "@taquito/core": "^18.0.0-RC.0", + "@taquito/rpc": "^18.0.0-RC.0", + "@taquito/utils": "^18.0.0-RC.0", + "bignumber.js": "^9.1.0", + "fast-json-stable-stringify": "^2.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/@taquito/rpc": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-18.0.0-RC.0.tgz", + "integrity": "sha512-JNvWlYHH5/kKaHoYrBmYqRuPafvars97ena1x9y4cksrapg4ZgvkAWudaVfJ9L8ahfY+IoPdmNP3G2FQ3WkeMg==", + "dev": true, + "dependencies": { + "@taquito/core": "^18.0.0-RC.0", + "@taquito/http-utils": "^18.0.0-RC.0", + "@taquito/utils": "^18.0.0-RC.0", + "bignumber.js": "^9.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/@taquito/signer": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/signer/-/signer-18.0.0-RC.0.tgz", + "integrity": "sha512-nUSNlyIne5PWcA2V/m06txudMGcGmlL1IfKV29kQ5UaS4iXFXB5Qgv7DRKp2GGoaY61bJKedbbd01+QEJ0bDQQ==", + "dev": true, + "dependencies": { + "@stablelib/blake2b": "^1.0.1", + "@stablelib/ed25519": "^1.0.3", + "@stablelib/hmac": "^1.0.1", + "@stablelib/nacl": "^1.0.4", + "@stablelib/pbkdf2": "^1.0.1", + "@stablelib/sha512": "^1.0.1", + "@taquito/core": "^18.0.0-RC.0", + "@taquito/taquito": "^18.0.0-RC.0", + "@taquito/utils": "^18.0.0-RC.0", + "@types/bn.js": "^5.1.1", + "bip39": "3.0.4", + "elliptic": "^6.5.4", + "pbkdf2": "^3.1.2", + "typedarray-to-buffer": "^4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/@taquito/taquito": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-18.0.0-RC.0.tgz", + "integrity": "sha512-+TJSAqBmEElmLMwlNpA5UzhBtOyGYRdjqhA+A5+KvUFGXte8r/jEOlCtBHSgcZ3p+ckUVcrareaD2vUHvTnzyw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@taquito/core": "^18.0.0-RC.0", + "@taquito/http-utils": "^18.0.0-RC.0", + "@taquito/local-forging": "^18.0.0-RC.0", + "@taquito/michel-codec": "^18.0.0-RC.0", + "@taquito/michelson-encoder": "^18.0.0-RC.0", + "@taquito/rpc": "^18.0.0-RC.0", + "@taquito/utils": "^18.0.0-RC.0", + "bignumber.js": "^9.1.0", + "rxjs": "^7.8.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/@taquito/utils": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-18.0.0-RC.0.tgz", + "integrity": "sha512-rn/wQ6BHpfMskOp06C4Re2mqMkM1d4PtQlJT602nWNAnpEoEnIWXrJ4Dxsy3xQZxL+Jx1YTtGag9iibYcu89Zw==", + "dev": true, + "dependencies": { + "@stablelib/blake2b": "^1.0.1", + "@stablelib/ed25519": "^1.0.3", + "@taquito/core": "^18.0.0-RC.0", + "@types/bs58check": "^2.1.0", + "bignumber.js": "^9.1.0", + "blakejs": "^1.2.1", + "bs58check": "^2.1.2", + "buffer": "^6.0.3", + "elliptic": "^6.5.4", + "typedarray-to-buffer": "^4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", + "dev": true + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/axios": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", + "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/bip39": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", + "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", + "dev": true, + "dependencies": { + "@types/node": "11.11.6", + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@taqueria/plugin-contract-types/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, "node_modules/@taqueria/plugin-ligo": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@taqueria/plugin-ligo/-/plugin-ligo-0.40.0.tgz", - "integrity": "sha512-nFR+88vl1aG+hPlqjfwURccHJYQ7BcTs12w4mV8mSxYxSY7ISvo6H98Y/4Rf48PaYdnUlFXLuB692OHpg1AdQQ==", + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/@taqueria/plugin-ligo/-/plugin-ligo-0.45.0.tgz", + "integrity": "sha512-3Isnj2wuMaqlSWwLdPcrgJvzhERdRz+PJObuZEgciOH/nD+xOgIm6SYrH2Y0cbqPPjq10PDfJXRE8NZtqjADaA==", "dev": true, "dependencies": { - "@taqueria/node-sdk": "^0.40.0", + "@taqueria/lib-ligo": "^0.45.0", + "@taqueria/node-sdk": "^0.45.0", "fast-glob": "^3.3.1" } }, "node_modules/@taqueria/plugin-octez-client": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@taqueria/plugin-octez-client/-/plugin-octez-client-0.40.0.tgz", - "integrity": "sha512-/1Egm3a/V28kMGz+zf+rw/TndnUijnHzp97ELDc6wqFujtcEOBAi2omhEaPQRFk9qD2y0SnMiElXl75Mprc2Kg==", + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/@taqueria/plugin-octez-client/-/plugin-octez-client-0.45.0.tgz", + "integrity": "sha512-LbYJjbsYzSJeUrTEOY6kG6ACqhMJ9L+TjOJDs8UxRQ1s4JMIDvitHLRB2EKG/ozxcBVMCNV92JyEt5KOMY/ssg==", "dev": true, "dependencies": { - "@taqueria/node-sdk": "^0.40.0", + "@taqueria/node-sdk": "^0.45.0", "fast-glob": "^3.3.1" }, "engines": { @@ -329,15 +555,15 @@ } }, "node_modules/@taqueria/plugin-taquito": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@taqueria/plugin-taquito/-/plugin-taquito-0.40.0.tgz", - "integrity": "sha512-ecqctFHjcQlZGQJxz+Fx3BtgpzVqtf/lsFo6tQ6EAKNE9pPRFGKELYMRjhGpO/mbhFPHbt9kcKtD36yBV0fRlQ==", + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/@taqueria/plugin-taquito/-/plugin-taquito-0.45.0.tgz", + "integrity": "sha512-Go7ZzAj00TJ8b/7odcTbKn2fNPWqinKUjOTHL+vUs/u++IwfDjaM3xV6ZTU0EfxYumidnOzREupT+6dqG5r8Lw==", "dev": true, "dependencies": { - "@taqueria/node-sdk": "^0.40.0", - "@taquito/michel-codec": "^17.3.1", - "@taquito/signer": "^17.3.1", - "@taquito/taquito": "^17.3.1", + "@taqueria/node-sdk": "^0.45.0", + "@taquito/michel-codec": "^18.0.0-RC.0", + "@taquito/signer": "^18.0.0-RC.0", + "@taquito/taquito": "^18.0.0-RC.0", "fast-glob": "^3.3.1", "wtfnode": "^0.9.1" }, @@ -345,10 +571,212 @@ "node": ">=16" } }, + "node_modules/@taqueria/plugin-taquito/node_modules/@taquito/core": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/core/-/core-18.0.0-RC.0.tgz", + "integrity": "sha512-10TMPmBJ60ibsJCipnsDSgd9e+qk2sCmOYO9prabHXtpfw/OAHjBX5R4rAkUVAhm7YBODePesSdvppv7TaEpeA==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/@taquito/http-utils": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-18.0.0-RC.0.tgz", + "integrity": "sha512-KhSlw2FWdD1u4Kz8DKLtwWAu0ihbKE0KoO48dvYkfBIGCAXsHz/g/JAudGhMCGbLlP4ddF49UKO567DJkXyBeQ==", + "dev": true, + "dependencies": { + "@taquito/core": "^18.0.0-RC.0", + "axios": "0.26.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/@taquito/local-forging": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/local-forging/-/local-forging-18.0.0-RC.0.tgz", + "integrity": "sha512-trCCK5fBLSb3g7j3HEJ+93LQ3FlU9QUfQU3DAL4DOC9tyFxzamXECrVrtRxvdVVPo1HYBUvFJb5WBZer17fuJQ==", + "dev": true, + "dependencies": { + "@taquito/core": "^18.0.0-RC.0", + "@taquito/utils": "^18.0.0-RC.0", + "bignumber.js": "^9.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/@taquito/michel-codec": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-18.0.0-RC.0.tgz", + "integrity": "sha512-5FzMU+C8ERpQ0e5WrRsB+o5OggO/1TyL2MVmfQmqel4jn1OEbBUEQ31QqxhZBp0fqCX9n5FYOjznXafutFzK2Q==", + "dev": true, + "dependencies": { + "@taquito/core": "^18.0.0-RC.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/@taquito/michelson-encoder": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-18.0.0-RC.0.tgz", + "integrity": "sha512-PeXU18uCMWwayfAFe31zhclsZrdW4+f6+PdRi5hsSYWlJ7pEPo2xambKC5gCL8jVTjqcj64BzR5crCH3xsN49Q==", + "dev": true, + "dependencies": { + "@taquito/core": "^18.0.0-RC.0", + "@taquito/rpc": "^18.0.0-RC.0", + "@taquito/utils": "^18.0.0-RC.0", + "bignumber.js": "^9.1.0", + "fast-json-stable-stringify": "^2.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/@taquito/rpc": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-18.0.0-RC.0.tgz", + "integrity": "sha512-JNvWlYHH5/kKaHoYrBmYqRuPafvars97ena1x9y4cksrapg4ZgvkAWudaVfJ9L8ahfY+IoPdmNP3G2FQ3WkeMg==", + "dev": true, + "dependencies": { + "@taquito/core": "^18.0.0-RC.0", + "@taquito/http-utils": "^18.0.0-RC.0", + "@taquito/utils": "^18.0.0-RC.0", + "bignumber.js": "^9.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/@taquito/signer": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/signer/-/signer-18.0.0-RC.0.tgz", + "integrity": "sha512-nUSNlyIne5PWcA2V/m06txudMGcGmlL1IfKV29kQ5UaS4iXFXB5Qgv7DRKp2GGoaY61bJKedbbd01+QEJ0bDQQ==", + "dev": true, + "dependencies": { + "@stablelib/blake2b": "^1.0.1", + "@stablelib/ed25519": "^1.0.3", + "@stablelib/hmac": "^1.0.1", + "@stablelib/nacl": "^1.0.4", + "@stablelib/pbkdf2": "^1.0.1", + "@stablelib/sha512": "^1.0.1", + "@taquito/core": "^18.0.0-RC.0", + "@taquito/taquito": "^18.0.0-RC.0", + "@taquito/utils": "^18.0.0-RC.0", + "@types/bn.js": "^5.1.1", + "bip39": "3.0.4", + "elliptic": "^6.5.4", + "pbkdf2": "^3.1.2", + "typedarray-to-buffer": "^4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/@taquito/taquito": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-18.0.0-RC.0.tgz", + "integrity": "sha512-+TJSAqBmEElmLMwlNpA5UzhBtOyGYRdjqhA+A5+KvUFGXte8r/jEOlCtBHSgcZ3p+ckUVcrareaD2vUHvTnzyw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@taquito/core": "^18.0.0-RC.0", + "@taquito/http-utils": "^18.0.0-RC.0", + "@taquito/local-forging": "^18.0.0-RC.0", + "@taquito/michel-codec": "^18.0.0-RC.0", + "@taquito/michelson-encoder": "^18.0.0-RC.0", + "@taquito/rpc": "^18.0.0-RC.0", + "@taquito/utils": "^18.0.0-RC.0", + "bignumber.js": "^9.1.0", + "rxjs": "^7.8.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/@taquito/utils": { + "version": "18.0.0-RC.0", + "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-18.0.0-RC.0.tgz", + "integrity": "sha512-rn/wQ6BHpfMskOp06C4Re2mqMkM1d4PtQlJT602nWNAnpEoEnIWXrJ4Dxsy3xQZxL+Jx1YTtGag9iibYcu89Zw==", + "dev": true, + "dependencies": { + "@stablelib/blake2b": "^1.0.1", + "@stablelib/ed25519": "^1.0.3", + "@taquito/core": "^18.0.0-RC.0", + "@types/bs58check": "^2.1.0", + "bignumber.js": "^9.1.0", + "blakejs": "^1.2.1", + "bs58check": "^2.1.2", + "buffer": "^6.0.3", + "elliptic": "^6.5.4", + "typedarray-to-buffer": "^4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", + "dev": true + }, + "node_modules/@taqueria/plugin-taquito/node_modules/axios": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", + "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/bip39": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", + "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", + "dev": true, + "dependencies": { + "@types/node": "11.11.6", + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@taqueria/plugin-taquito/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, "node_modules/@taqueria/protocol": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@taqueria/protocol/-/protocol-0.40.0.tgz", - "integrity": "sha512-IDCWf1WkYRTrDN08pg0w0AhRsgDS7yu7szH8H5mZAMESxOnOUPwAnjdpVD1Olgv8xqKgeGOMM5wjlsLglyOjWg==", + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/@taqueria/protocol/-/protocol-0.45.0.tgz", + "integrity": "sha512-oq8oGEn0oFpns23JFmgHCATy597Dpk6Eqj4I8fvkcYlaiGXYV0syaboux1CybjxOEMGq5SdnT2hTm1P3iLh8BA==", "dev": true, "dependencies": { "@peculiar/webcrypto": "^1.4.3", @@ -361,87 +789,91 @@ } }, "node_modules/@taquito/core": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/@taquito/core/-/core-17.3.1.tgz", - "integrity": "sha512-dk8ZXuZktfoIV5ESUx3mPkJxLBVL7o3CXLsaVoiPIu2nyd4I/VNkPh+aIOrhxHSVPBib3sVYN0Pc2a8ZO+0gsg==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@taquito/core/-/core-17.4.0.tgz", + "integrity": "sha512-Zg5Q7cvBcZzo1F7UeKkwLdm+cRy6r/psnxhOI5YGZM5omIhFA7iLpQyXYV04SrjMSZkG1VA8uAQRM2p7sT5yCw==", "dev": true, + "dependencies": { + "json-stringify-safe": "^5.0.1" + }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@taquito/http-utils": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-17.3.1.tgz", - "integrity": "sha512-lHwkNM1sx1HmzJHuxQy3lxaksZH/Jqxq5cYEPJAeCzEj68TD4T4X2rcVPpa0b6Qka5mQgLITCbyFE+RUg+orgA==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-17.4.0.tgz", + "integrity": "sha512-TV+8x2ZhPPkbz7YMMKZThdIgyyNrA7oRfOBD8gw7kaQic7j5ghjCW6Ck+KmZ3MSiZ72PSA1POosH7eyZownuBw==", "dev": true, "dependencies": { - "@taquito/core": "^17.3.1", - "axios": "0.26.0" + "@taquito/core": "^17.4.0", + "axios": "^0.27.2" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@taquito/local-forging": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/@taquito/local-forging/-/local-forging-17.3.1.tgz", - "integrity": "sha512-1pBbN8g2Jhq7bxWW3diRC+llL5TA1/m9W2za75IAl2sv5oo8ttXVla4XY8yapLu/yeOWrb5ta7yvfEZ5x2ZeOw==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@taquito/local-forging/-/local-forging-17.4.0.tgz", + "integrity": "sha512-izO2XeIY1czIigCmPcxNucKkmxy58K1m2H3FTLSUyKZaFxZ8j9GUi6l2ftB+gcmRGjMjri5aKVmUPnl779Razw==", "dev": true, "dependencies": { - "@taquito/core": "^17.3.1", - "@taquito/utils": "^17.3.1", - "bignumber.js": "^9.1.0" + "@taquito/core": "^17.4.0", + "@taquito/utils": "^17.4.0", + "bignumber.js": "^9.1.2" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@taquito/michel-codec": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-17.3.1.tgz", - "integrity": "sha512-dxhrqn+/VBzkhL+bhLO9bVb1r/NKdvSYEoXRWgszNT+enVlokkFBM4kXcvGlFUZklaSiw0dQYd1Zk0sDMkr1sw==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-17.4.0.tgz", + "integrity": "sha512-AsPGCSrBSvVYKjUoVCfqN3S5HYzWUaf1zkYqt/dWWxI80+0PE2Py7iA+++ZP4t8ET6edqmrMYnys1K/tNgWwnA==", "dev": true, "dependencies": { - "@taquito/core": "^17.3.1" + "@taquito/core": "^17.4.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@taquito/michelson-encoder": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-17.3.1.tgz", - "integrity": "sha512-PaJYlZnjqDwjvK2qC4j9icqcGLoHHQygnGLs9lPV1quAV1v9yWPe6ABK+miuq2vv4WDMFH6amaXBtLimgPDcuQ==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-17.4.0.tgz", + "integrity": "sha512-7kpmaFeY4XeS3wsZbMLFIgKMmy5pqCkd3QF2IY5ncuZ+LLKB9h0w8vIfouHmrSkanswNFKk3Kq0SHjClVK2U7Q==", "dev": true, "dependencies": { - "@taquito/rpc": "^17.3.1", - "@taquito/utils": "^17.3.1", - "bignumber.js": "^9.1.0", + "@taquito/core": "^17.4.0", + "@taquito/rpc": "^17.4.0", + "@taquito/utils": "^17.4.0", + "bignumber.js": "^9.1.2", "fast-json-stable-stringify": "^2.1.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@taquito/rpc": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-17.3.1.tgz", - "integrity": "sha512-VHY5qgUVT4RDXDv7H8DQrrMk1tfnJ6m+BFHmJxYCe7WQCCr8u2TlN0X2N95QhM+LG0LXL/LFlzhQLRBOxLnxsw==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-17.4.0.tgz", + "integrity": "sha512-QrxjG6Er/5RctuDjXU1gIICLeacKHN5pNtHwxegSmVqlCETven9cXAis0RE713J1M1yMhEb4hvjjbtYQwh/iQw==", "dev": true, "dependencies": { - "@taquito/core": "^17.3.1", - "@taquito/http-utils": "^17.3.1", - "@taquito/utils": "^17.3.1", - "bignumber.js": "^9.1.0" + "@taquito/core": "^17.4.0", + "@taquito/http-utils": "^17.4.0", + "@taquito/utils": "^17.4.0", + "bignumber.js": "^9.1.2" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@taquito/signer": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/@taquito/signer/-/signer-17.3.1.tgz", - "integrity": "sha512-9fwUuL8vEtzRAc0wX2rYNTkCd4Rhgp2JPrQ7aLz6QWZg0qa43TwjQ1f5o862ryp8PkmJBcA/z9pbD/XHizXfOQ==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@taquito/signer/-/signer-17.4.0.tgz", + "integrity": "sha512-3Rxi3TbHNk/KIqZBzYP9FPXP3CbHiNNR8efok/Yh0rwo1UGPFDuYsxH9G1zj6A07QyG38HbLgmTJx0lQTty+jA==", "dev": true, "dependencies": { "@stablelib/blake2b": "^1.0.1", @@ -450,83 +882,87 @@ "@stablelib/nacl": "^1.0.4", "@stablelib/pbkdf2": "^1.0.1", "@stablelib/sha512": "^1.0.1", - "@taquito/taquito": "^17.3.1", - "@taquito/utils": "^17.3.1", - "@types/bn.js": "^5.1.1", - "bip39": "3.0.4", + "@taquito/core": "^17.4.0", + "@taquito/taquito": "^17.4.0", + "@taquito/utils": "^17.4.0", + "@types/bn.js": "^5.1.2", + "bip39": "3.1.0", "elliptic": "^6.5.4", "pbkdf2": "^3.1.2", "typedarray-to-buffer": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@taquito/taquito": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-17.3.1.tgz", - "integrity": "sha512-9CnIJv5z6KmYYhycOSTpSh51hH818yzXMjr5iR4Q2raWEtWQHYeXoDcVec1dkI+IITm9cQpLp5Gm++smSBElOA==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-17.4.0.tgz", + "integrity": "sha512-2BsQQRXvIRvDUfk7R5oOXPP4wppInHUyACTp9NnWLHnyNpXPO7XZMxWdIt8Dpx1Li9anwVzh471fh5WiDJ/G9A==", "dev": true, "hasInstallScript": true, "dependencies": { - "@taquito/core": "^17.3.1", - "@taquito/http-utils": "^17.3.1", - "@taquito/local-forging": "^17.3.1", - "@taquito/michel-codec": "^17.3.1", - "@taquito/michelson-encoder": "^17.3.1", - "@taquito/rpc": "^17.3.1", - "@taquito/utils": "^17.3.1", - "bignumber.js": "^9.1.0", + "@taquito/core": "^17.4.0", + "@taquito/http-utils": "^17.4.0", + "@taquito/local-forging": "^17.4.0", + "@taquito/michel-codec": "^17.4.0", + "@taquito/michelson-encoder": "^17.4.0", + "@taquito/rpc": "^17.4.0", + "@taquito/utils": "^17.4.0", + "bignumber.js": "^9.1.2", "rxjs": "^7.8.1" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@taquito/utils": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-17.3.1.tgz", - "integrity": "sha512-NLSFOaZbbs5L7aSV+vgCxj6celHBYLkzwmGvPiCm/mDSj1a1i4bgt8fJ6DbtwDiAmiA9tXPmRileRC4iPEaewg==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-17.4.0.tgz", + "integrity": "sha512-1hpl40kSmf4sOLtGYLfMjMz5eCb332m/uqplahBHOJZFpZGaIFsqqolSn4/SXFlWLyWu7+Odxi8MUeVyKu470w==", "dev": true, "dependencies": { "@stablelib/blake2b": "^1.0.1", "@stablelib/ed25519": "^1.0.3", - "@taquito/core": "^17.3.1", + "@taquito/core": "^17.4.0", "@types/bs58check": "^2.1.0", - "bignumber.js": "^9.1.0", + "bignumber.js": "^9.1.2", "blakejs": "^1.2.1", - "bs58check": "^2.1.2", + "bs58check": "^3.0.1", "buffer": "^6.0.3", "elliptic": "^6.5.4", "typedarray-to-buffer": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@types/bn.js": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.2.tgz", - "integrity": "sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/bs58check": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/bs58check/-/bs58check-2.1.0.tgz", - "integrity": "sha512-OxsysnJQh82vy9DRbOcw9m2j/WiyqZLn0YBhKxdQ+aCwoHj+tWzyCgpwAkr79IfDXZKxc6h7k89T9pwS78CqTQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-xpXaQlOIY1KoXlA/ytHGHpEIU87PJt+g9SH7nC6HdCgaBwT2IEZIwBMHbjuX6BpnfbiUMlmwqurdLDwXpcdmSA==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/node": { - "version": "20.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz", - "integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==", - "dev": true + "version": "20.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", + "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/ansi-regex": { "version": "5.0.1", @@ -566,23 +1002,27 @@ "node": ">=12.0.0" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, "node_modules/axios": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", - "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.8" + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" } }, "node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", + "dev": true }, "node_modules/base64-js": { "version": "1.5.1", @@ -623,23 +1063,14 @@ } }, "node_modules/bip39": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", - "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", + "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", "dev": true, "dependencies": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" + "@noble/hashes": "^1.2.0" } }, - "node_modules/bip39/node_modules/@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", - "dev": true - }, "node_modules/blakejs": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", @@ -671,23 +1102,22 @@ "dev": true }, "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", "dev": true, "dependencies": { - "base-x": "^3.0.2" + "base-x": "^4.0.0" } }, "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz", + "integrity": "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==", "dev": true, "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" + "@noble/hashes": "^1.2.0", + "bs58": "^5.0.0" } }, "node_modules/buffer": { @@ -756,6 +1186,18 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -792,6 +1234,15 @@ "node": ">= 12" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -832,9 +1283,9 @@ } }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -930,6 +1381,20 @@ } } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", @@ -999,9 +1464,9 @@ } }, "node_modules/i18next": { - "version": "23.5.1", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.5.1.tgz", - "integrity": "sha512-JelYzcaCoFDaa+Ysbfz2JsGAKkrHiMG6S61+HLBUEIPaF40WMwW9hCPymlQGrP+wWawKxKPuSuD71WZscCsWHg==", + "version": "23.7.7", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.7.7.tgz", + "integrity": "sha512-peTvdT+Lma+o0LfLFD7IC2M37N9DJ04dH0IJYOyOHRhDfLo6nK36v7LkrQH35C2l8NHiiXZqGirhKESlEb/5PA==", "dev": true, "funding": [ { @@ -1018,7 +1483,7 @@ } ], "dependencies": { - "@babel/runtime": "^7.22.5" + "@babel/runtime": "^7.23.2" } }, "node_modules/ieee754": { @@ -1086,6 +1551,12 @@ "node": ">=0.12.0" } }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -1119,6 +1590,27 @@ "node": ">=8.6" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -1235,9 +1727,9 @@ ] }, "node_modules/rambda": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/rambda/-/rambda-8.4.0.tgz", - "integrity": "sha512-HSbOiyvCQgHKPcKO8Sknjj341vVUmetRwOh+4h0t/DVmAfQS3v3HMtWHtu3l2Awdxu9B4iJP2uAJTwp7eLB7zw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-8.6.0.tgz", + "integrity": "sha512-Ax+/bAcV2h4wINXx6wm0792G5uXZAl78rzhei+FqmHezg45vbeTUyDAmDNbSdjNOL6LGN8AUEvzaYD7oO5eYrw==", "dev": true }, "node_modules/rambdax": { @@ -1381,6 +1873,15 @@ "sha.js": "bin.js" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", @@ -1517,6 +2018,12 @@ } ] }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -1624,9 +2131,9 @@ } }, "node_modules/zod": { - "version": "3.22.2", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.2.tgz", - "integrity": "sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==", + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", "dev": true, "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/solution/package.json b/solution/package.json index 8372769..415fd6a 100644 --- a/solution/package.json +++ b/solution/package.json @@ -10,9 +10,9 @@ "author": "", "license": "ISC", "devDependencies": { - "@taqueria/plugin-contract-types": "^0.40.0", - "@taqueria/plugin-ligo": "^0.40.0", - "@taqueria/plugin-octez-client": "^0.40.0", - "@taqueria/plugin-taquito": "^0.40.0" + "@taqueria/plugin-contract-types": "^0.45.0", + "@taqueria/plugin-ligo": "^0.45.0", + "@taqueria/plugin-octez-client": "^0.45.0", + "@taqueria/plugin-taquito": "^0.45.0" } }