From 8ce1c14ce28b1f7e3ab1308ea04de0124c4a4d68 Mon Sep 17 00:00:00 2001 From: Mike MacCana Date: Thu, 4 Jun 2026 15:15:47 -0400 Subject: [PATCH 1/4] Add CHANGELOG --- CHANGELOG.md | 25 +++++++++++++++++++++++++ README.md | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..b53215c6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,25 @@ +# Changelog + +All notable changes to this repository are documented here. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). + +## [2026-04-08] — Quicknode fork modernization (Mike MacCana) + +Mike MacCana led the Quicknode fork of the [Solana Foundation program examples](https://github.com/solana-developers/program-examples) from late 2025. The first commits on this repository lineage are dated **8 April 2026**; the summary below covers that work through the initial merge. + +### What changed (high level) + +**Toolchain and frameworks.** The tree had accumulated examples from several years of Solana development (including Anchor releases going back to the ~0.26 era in 2022 and many intermediate versions). The fork brought the Anchor examples up to **Anchor 1.0.0** stable (from 1.0.0-rc.5), refreshed Agave/Solana CLI pins, standardized on **pnpm**, and added parallel implementations in **[Quasar](https://quasar-lang.com/docs)**, **Pinocchio**, **Native Rust**, and **ASM** where applicable. Token-2022 examples were renamed to **`token-extensions`**. + +**Testing.** Replaced the old pattern of local validators, Bankrun, and scattered TypeScript `anchor test` flows with **LiteSVM in-process tests** for most Anchor programs — matching current Anchor defaults (`cargo test` wired through `Anchor.toml` / `pnpm test`). Fixed broken or flaky tests across Native, Pinocchio, and Anchor; added missing harnesses (e.g. block-list Pinocchio). CI was reworked for a repo this size: path filtering, caching, matrix sharding, and reliable detection of framework roots. + +**Programs and layout.** Broke large monolithic `lib.rs` files into **instruction handler modules**; adopted **`InitSpace`** and explicit PDA bumps instead of magic account sizes; corrected several logic bugs (escrow, token swap invariant, counter authority checks, compression Bubblegum program id, and more). Expanded finance and token-extension coverage; reorganized transfer-hook examples (including block-list under Pinocchio). + +**Documentation.** Rewrote the root README (framework badges, clearer example blurbs, ASM links), ran a style and **truth audit** on READMEs, and linked canonical [Solana terminology](https://solana.com/docs/references/terminology) on first mention. Added this changelog, `CONTRIBUTING.md` (aligned with LiteSVM testing), a README template and per-example Anchor READMEs, fixed Husky for GUI git clients, and removed unused maintainer scripts (`sync-package-json`, `cicd.sh`, local-validator helpers for the allow/block-list UI). + +**Removed / deferred.** Dropped duplicate or WIP trees (duplicate block-list Pinocchio copy, Quasar metadata example blocked on `sol_realloc`, root `yarn.lock`). Some examples remain excluded from CI via `.ghaignore` until they build cleanly again (compression, escrow, pyth, and others — see that file for the live list). + +## Before June 2026 + +There was **no changelog** before June 2026. Older history lives in git only. \ No newline at end of file diff --git a/README.md b/README.md index 93263dea..4564857e 100644 --- a/README.md +++ b/README.md @@ -339,4 +339,4 @@ Work with Metaplex compressed NFTs. --- -**PRs welcome!** Follow the [contributing guidelines](./CONTRIBUTING.md) to keep things consistent. +**PRs welcome!** Follow the [contributing guidelines](./CONTRIBUTING.md) and see [CHANGELOG.md](./CHANGELOG.md) for release history. From ee5939c5e70454497bcd455aafa46208d5f7b77d Mon Sep 17 00:00:00 2001 From: Mike MacCana Date: Thu, 4 Jun 2026 15:25:53 -0400 Subject: [PATCH 2/4] Add missing Quasar READMEs --- CHANGELOG.md | 2 +- basics/account-data/quasar/README.md | 34 ++ basics/checking-accounts/quasar/README.md | 34 ++ basics/close-account/quasar/README.md | 34 ++ basics/counter/quasar/README.md | 34 ++ basics/create-account/quasar/README.md | 34 ++ basics/favorites/quasar/README.md | 34 ++ basics/hello-solana/quasar/README.md | 34 ++ basics/pda-rent-payer/quasar/README.md | 34 ++ .../processing-instructions/quasar/README.md | 34 ++ .../quasar/README.md | 34 ++ basics/pyth/quasar/README.md | 34 ++ basics/realloc/quasar/README.md | 34 ++ basics/rent/quasar/README.md | 34 ++ basics/repository-layout/quasar/README.md | 34 ++ basics/transfer-sol/quasar/README.md | 34 ++ compression/cnft-burn/quasar/README.md | 34 ++ compression/cnft-vault/quasar/README.md | 34 ++ compression/cutils/quasar/README.md | 34 ++ finance/escrow/quasar/README.md | 34 ++ finance/token-fundraiser/quasar/README.md | 34 ++ finance/token-swap/quasar/README.md | 34 ++ scripts/generate-quasar-readmes.mjs | 341 ++++++++++++++++++ tokens/create-token/quasar/README.md | 34 ++ .../quasar/README.md | 34 ++ tokens/nft-minter/quasar/README.md | 34 ++ tokens/nft-operations/quasar/README.md | 34 ++ tokens/pda-mint-authority/quasar/README.md | 34 ++ .../default-account-state/quasar/README.md | 3 + tokens/token-2022/metadata/quasar/README.md | 3 + .../token-extensions/basics/quasar/README.md | 34 ++ .../cpi-guard/quasar/README.md | 33 ++ .../default-account-state/quasar/README.md | 33 ++ .../token-extensions/group/quasar/README.md | 33 ++ .../immutable-owner/quasar/README.md | 33 ++ .../interest-bearing/quasar/README.md | 33 ++ .../memo-transfer/quasar/README.md | 33 ++ .../mint-close-authority/quasar/README.md | 33 ++ .../non-transferable/quasar/README.md | 33 ++ .../permanent-delegate/quasar/README.md | 33 ++ .../transfer-fee/quasar/README.md | 33 ++ .../account-data-as-seed/quasar/README.md | 34 ++ .../allow-block-list-token/quasar/README.md | 34 ++ .../transfer-hook/counter/quasar/README.md | 34 ++ .../hello-world/quasar/README.md | 34 ++ .../transfer-cost/quasar/README.md | 34 ++ .../transfer-switch/quasar/README.md | 34 ++ .../transfer-hook/whitelist/quasar/README.md | 34 ++ tokens/token-minter/quasar/README.md | 34 ++ tokens/transfer-tokens/quasar/README.md | 34 ++ 50 files changed, 1902 insertions(+), 1 deletion(-) create mode 100644 basics/account-data/quasar/README.md create mode 100644 basics/checking-accounts/quasar/README.md create mode 100644 basics/close-account/quasar/README.md create mode 100644 basics/counter/quasar/README.md create mode 100644 basics/create-account/quasar/README.md create mode 100644 basics/favorites/quasar/README.md create mode 100644 basics/hello-solana/quasar/README.md create mode 100644 basics/pda-rent-payer/quasar/README.md create mode 100644 basics/processing-instructions/quasar/README.md create mode 100644 basics/program-derived-addresses/quasar/README.md create mode 100644 basics/pyth/quasar/README.md create mode 100644 basics/realloc/quasar/README.md create mode 100644 basics/rent/quasar/README.md create mode 100644 basics/repository-layout/quasar/README.md create mode 100644 basics/transfer-sol/quasar/README.md create mode 100644 compression/cnft-burn/quasar/README.md create mode 100644 compression/cnft-vault/quasar/README.md create mode 100644 compression/cutils/quasar/README.md create mode 100644 finance/escrow/quasar/README.md create mode 100644 finance/token-fundraiser/quasar/README.md create mode 100644 finance/token-swap/quasar/README.md create mode 100644 scripts/generate-quasar-readmes.mjs create mode 100644 tokens/create-token/quasar/README.md create mode 100644 tokens/external-delegate-token-master/quasar/README.md create mode 100644 tokens/nft-minter/quasar/README.md create mode 100644 tokens/nft-operations/quasar/README.md create mode 100644 tokens/pda-mint-authority/quasar/README.md create mode 100644 tokens/token-2022/default-account-state/quasar/README.md create mode 100644 tokens/token-2022/metadata/quasar/README.md create mode 100644 tokens/token-extensions/basics/quasar/README.md create mode 100644 tokens/token-extensions/cpi-guard/quasar/README.md create mode 100644 tokens/token-extensions/default-account-state/quasar/README.md create mode 100644 tokens/token-extensions/group/quasar/README.md create mode 100644 tokens/token-extensions/immutable-owner/quasar/README.md create mode 100644 tokens/token-extensions/interest-bearing/quasar/README.md create mode 100644 tokens/token-extensions/memo-transfer/quasar/README.md create mode 100644 tokens/token-extensions/mint-close-authority/quasar/README.md create mode 100644 tokens/token-extensions/non-transferable/quasar/README.md create mode 100644 tokens/token-extensions/permanent-delegate/quasar/README.md create mode 100644 tokens/token-extensions/transfer-fee/quasar/README.md create mode 100644 tokens/token-extensions/transfer-hook/account-data-as-seed/quasar/README.md create mode 100644 tokens/token-extensions/transfer-hook/allow-block-list-token/quasar/README.md create mode 100644 tokens/token-extensions/transfer-hook/counter/quasar/README.md create mode 100644 tokens/token-extensions/transfer-hook/hello-world/quasar/README.md create mode 100644 tokens/token-extensions/transfer-hook/transfer-cost/quasar/README.md create mode 100644 tokens/token-extensions/transfer-hook/transfer-switch/quasar/README.md create mode 100644 tokens/token-extensions/transfer-hook/whitelist/quasar/README.md create mode 100644 tokens/token-minter/quasar/README.md create mode 100644 tokens/transfer-tokens/quasar/README.md diff --git a/CHANGELOG.md b/CHANGELOG.md index b53215c6..136c0305 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,7 @@ Mike MacCana led the Quicknode fork of the [Solana Foundation program examples]( **Programs and layout.** Broke large monolithic `lib.rs` files into **instruction handler modules**; adopted **`InitSpace`** and explicit PDA bumps instead of magic account sizes; corrected several logic bugs (escrow, token swap invariant, counter authority checks, compression Bubblegum program id, and more). Expanded finance and token-extension coverage; reorganized transfer-hook examples (including block-list under Pinocchio). -**Documentation.** Rewrote the root README (framework badges, clearer example blurbs, ASM links), ran a style and **truth audit** on READMEs, and linked canonical [Solana terminology](https://solana.com/docs/references/terminology) on first mention. Added this changelog, `CONTRIBUTING.md` (aligned with LiteSVM testing), a README template and per-example Anchor READMEs, fixed Husky for GUI git clients, and removed unused maintainer scripts (`sync-package-json`, `cicd.sh`, local-validator helpers for the allow/block-list UI). +**Documentation.** Rewrote the root README (framework badges, clearer example blurbs, ASM links), ran a style and **truth audit** on READMEs, and linked canonical [Solana terminology](https://solana.com/docs/references/terminology) on first mention. Added this changelog, `CONTRIBUTING.md` (aligned with LiteSVM testing), README templates, per-example Anchor and Quasar READMEs, fixed Husky for GUI git clients, removed unused maintainer scripts (`sync-package-json`, `cicd.sh`, local-validator helpers for the allow/block-list UI), dropped the orphan `tokens/spl-token-minter/` tree, and removed legacy root `package.json` dependencies (web3.js, Bankrun, chai). **Removed / deferred.** Dropped duplicate or WIP trees (duplicate block-list Pinocchio copy, Quasar metadata example blocked on `sol_realloc`, root `yarn.lock`). Some examples remain excluded from CI via `.ghaignore` until they build cleanly again (compression, escrow, pyth, and others — see that file for the live list). diff --git a/basics/account-data/quasar/README.md b/basics/account-data/quasar/README.md new file mode 100644 index 00000000..e7162dac --- /dev/null +++ b/basics/account-data/quasar/README.md @@ -0,0 +1,34 @@ +# Account Data (Quasar) + +Store and retrieve data in a [program](https://solana.com/docs/terminology#program)-owned [account](https://solana.com/docs/terminology#account). + +See also: the [repository catalog](../../../README.md). + +## Major concepts + +- Account layout and serialization +- Quasar account views + +## Setup + +From `basics/account-data/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/checking-accounts/quasar/README.md b/basics/checking-accounts/quasar/README.md new file mode 100644 index 00000000..69e919f3 --- /dev/null +++ b/basics/checking-accounts/quasar/README.md @@ -0,0 +1,34 @@ +# Checking Accounts (Quasar) + +Validate signers, owners, and addresses on incoming [instructions](https://solana.com/docs/terminology#instruction). + +See also: [Checking Accounts overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- Compile-time account checks +- Signer and mut constraints + +## Setup + +From `basics/checking-accounts/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/close-account/quasar/README.md b/basics/close-account/quasar/README.md new file mode 100644 index 00000000..6989dfeb --- /dev/null +++ b/basics/close-account/quasar/README.md @@ -0,0 +1,34 @@ +# Close Account (Quasar) + +Create a PDA [account](https://solana.com/docs/terminology#account), then close it and return [rent](https://solana.com/docs/terminology#rent) to the user. + +See also: the [repository catalog](../../../README.md). + +## Major concepts + +- PDA init and close +- Rent reclamation + +## Setup + +From `basics/close-account/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/counter/quasar/README.md b/basics/counter/quasar/README.md new file mode 100644 index 00000000..3d9e0bb3 --- /dev/null +++ b/basics/counter/quasar/README.md @@ -0,0 +1,34 @@ +# Counter (Quasar) + +Global counter in a [PDA](https://solana.com/docs/terminology#program-derived-address-pda) with initialize and increment handlers. + +See also: [Counter overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- PDA state +- Handler dispatch + +## Setup + +From `basics/counter/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/create-account/quasar/README.md b/basics/create-account/quasar/README.md new file mode 100644 index 00000000..f6f26b6b --- /dev/null +++ b/basics/create-account/quasar/README.md @@ -0,0 +1,34 @@ +# Create Account (Quasar) + +Create and fund rent-exempt accounts via the System Program. + +See also: [Create Account overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- System Program CPI +- Rent-exempt lamports + +## Setup + +From `basics/create-account/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/favorites/quasar/README.md b/basics/favorites/quasar/README.md new file mode 100644 index 00000000..aaf4e0b0 --- /dev/null +++ b/basics/favorites/quasar/README.md @@ -0,0 +1,34 @@ +# Favorites (Quasar) + +Per-user favorites in a PDA; only the owner can update their data. + +See also: the [repository catalog](../../../README.md). + +## Major concepts + +- Per-user PDA +- Authority checks + +## Setup + +From `basics/favorites/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/hello-solana/quasar/README.md b/basics/hello-solana/quasar/README.md new file mode 100644 index 00000000..d3157bcf --- /dev/null +++ b/basics/hello-solana/quasar/README.md @@ -0,0 +1,34 @@ +# Hello Solana (Quasar) + +Minimal program that logs a greeting. + +See also: [Hello Solana overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- Program entrypoint +- Instruction data + +## Setup + +From `basics/hello-solana/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/pda-rent-payer/quasar/README.md b/basics/pda-rent-payer/quasar/README.md new file mode 100644 index 00000000..03595c90 --- /dev/null +++ b/basics/pda-rent-payer/quasar/README.md @@ -0,0 +1,34 @@ +# PDA Rent Payer (Quasar) + +A [PDA](https://solana.com/docs/terminology#program-derived-address-pda) pays [rent](https://solana.com/docs/terminology#rent) when creating another account. + +See also: [Pda Rent Payer overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- PDA signer +- Rent payer pattern + +## Setup + +From `basics/pda-rent-payer/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/processing-instructions/quasar/README.md b/basics/processing-instructions/quasar/README.md new file mode 100644 index 00000000..b63db717 --- /dev/null +++ b/basics/processing-instructions/quasar/README.md @@ -0,0 +1,34 @@ +# Processing Instructions (Quasar) + +Pass arguments into an [instruction handler](https://solana.com/docs/terminology#instruction-handler). + +See also: [Processing Instructions overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- Instruction data +- Handler parameters + +## Setup + +From `basics/processing-instructions/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/program-derived-addresses/quasar/README.md b/basics/program-derived-addresses/quasar/README.md new file mode 100644 index 00000000..5fb66eac --- /dev/null +++ b/basics/program-derived-addresses/quasar/README.md @@ -0,0 +1,34 @@ +# Program Derived Addresses (Quasar) + +Derive and use PDAs for deterministic program-owned addresses. + +See also: the [repository catalog](../../../README.md). + +## Major concepts + +- Seed derivation +- PDA-owned state + +## Setup + +From `basics/program-derived-addresses/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/pyth/quasar/README.md b/basics/pyth/quasar/README.md new file mode 100644 index 00000000..4b7fba4f --- /dev/null +++ b/basics/pyth/quasar/README.md @@ -0,0 +1,34 @@ +# Pyth Price Feeds (Quasar) + +Read a Pyth price feed and use oracle data in program logic. + +See also: [Pyth overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- Oracle accounts +- Price feed layout + +## Setup + +From `basics/pyth/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/realloc/quasar/README.md b/basics/realloc/quasar/README.md new file mode 100644 index 00000000..bb084856 --- /dev/null +++ b/basics/realloc/quasar/README.md @@ -0,0 +1,34 @@ +# Realloc (Quasar) + +Grow or shrink account data when storage needs change. + +See also: [Realloc overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- Account reallocation +- Rent on resize + +## Setup + +From `basics/realloc/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/rent/quasar/README.md b/basics/rent/quasar/README.md new file mode 100644 index 00000000..e5c358dc --- /dev/null +++ b/basics/rent/quasar/README.md @@ -0,0 +1,34 @@ +# Rent (Quasar) + +Compute account size and minimum rent-exempt [lamports](https://solana.com/docs/terminology#lamport). + +See also: [Rent overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- Rent-exempt balance +- Space planning + +## Setup + +From `basics/rent/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/repository-layout/quasar/README.md b/basics/repository-layout/quasar/README.md new file mode 100644 index 00000000..af19e187 --- /dev/null +++ b/basics/repository-layout/quasar/README.md @@ -0,0 +1,34 @@ +# Repository Layout (Quasar) + +Organize a program across modules (state, handlers, errors). + +See also: [Repository Layout overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- Multi-file layout +- Separation of concerns + +## Setup + +From `basics/repository-layout/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/basics/transfer-sol/quasar/README.md b/basics/transfer-sol/quasar/README.md new file mode 100644 index 00000000..26ff05fb --- /dev/null +++ b/basics/transfer-sol/quasar/README.md @@ -0,0 +1,34 @@ +# Transfer SOL (Quasar) + +Transfer native SOL via the System Program. + +See also: [Transfer Sol overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- System transfer CPI +- Signer-funded lamports + +## Setup + +From `basics/transfer-sol/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/compression/cnft-burn/quasar/README.md b/compression/cnft-burn/quasar/README.md new file mode 100644 index 00000000..97bd2e3a --- /dev/null +++ b/compression/cnft-burn/quasar/README.md @@ -0,0 +1,34 @@ +# cNFT Burn (Quasar) + +Burn compressed NFTs via Metaplex Bubblegum CPIs. + +See also: the [repository catalog](../../../README.md). + +## Major concepts + +- Compressed NFTs +- Bubblegum CPI + +## Setup + +From `compression/cnft-burn/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/compression/cnft-vault/quasar/README.md b/compression/cnft-vault/quasar/README.md new file mode 100644 index 00000000..2d3fdd4d --- /dev/null +++ b/compression/cnft-vault/quasar/README.md @@ -0,0 +1,34 @@ +# cNFT Vault (Quasar) + +Deposit and withdraw compressed NFTs from a PDA vault. + +See also: the [repository catalog](../../../README.md). + +## Major concepts + +- cNFT transfers +- PDA vault + +## Setup + +From `compression/cnft-vault/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/compression/cutils/quasar/README.md b/compression/cutils/quasar/README.md new file mode 100644 index 00000000..9c30e4c5 --- /dev/null +++ b/compression/cutils/quasar/README.md @@ -0,0 +1,34 @@ +# Compression Utilities (Quasar) + +Helpers for working with Metaplex compressed NFTs in a program. + +See also: the [repository catalog](../../../README.md). + +## Major concepts + +- Compression proofs +- Merkle tree accounts + +## Setup + +From `compression/cutils/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/finance/escrow/quasar/README.md b/finance/escrow/quasar/README.md new file mode 100644 index 00000000..b4f5ec1a --- /dev/null +++ b/finance/escrow/quasar/README.md @@ -0,0 +1,34 @@ +# Escrow (Quasar) + +Atomic token swap escrow between maker and taker. + +See also: the [repository catalog](../../../README.md). + +## Major concepts + +- Escrow PDA +- See [Anchor variant](../anchor/README.md) for the full walkthrough + +## Setup + +From `finance/escrow/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/finance/token-fundraiser/quasar/README.md b/finance/token-fundraiser/quasar/README.md new file mode 100644 index 00000000..c0d47666 --- /dev/null +++ b/finance/token-fundraiser/quasar/README.md @@ -0,0 +1,34 @@ +# Token Fundraiser (Quasar) + +Onchain crowdfunding toward a target amount in a chosen token. + +See also: the [repository catalog](../../../README.md). + +## Major concepts + +- Fundraiser PDA +- Contributor deposits + +## Setup + +From `finance/token-fundraiser/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/finance/token-swap/quasar/README.md b/finance/token-swap/quasar/README.md new file mode 100644 index 00000000..00936b0d --- /dev/null +++ b/finance/token-swap/quasar/README.md @@ -0,0 +1,34 @@ +# Token Swap (AMM) (Quasar) + +Constant-product AMM: pools, liquidity, swaps with slippage guards. + +See also: [Token Swap overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- Pool PDA and LP tokens +- See [finance/token-swap/README.md](../token-swap/README.md) + +## Setup + +From `finance/token-swap/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/scripts/generate-quasar-readmes.mjs b/scripts/generate-quasar-readmes.mjs new file mode 100644 index 00000000..6214fae9 --- /dev/null +++ b/scripts/generate-quasar-readmes.mjs @@ -0,0 +1,341 @@ +#!/usr/bin/env node +/** + * Generate Quasar README.md files. Run: node scripts/generate-quasar-readmes.mjs + */ +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const root = path.join(path.dirname(fileURLToPath(import.meta.url)), ".."); + +/** @type {Record} */ +const examples = { + "basics/account-data/quasar": { + title: "Account Data", + purpose: + "Store and retrieve data in a [program](https://solana.com/docs/terminology#program)-owned [account](https://solana.com/docs/terminology#account).", + concepts: ["Account layout and serialization", "Quasar account views"], + }, + "basics/checking-accounts/quasar": { + title: "Checking Accounts", + purpose: + "Validate signers, owners, and addresses on incoming [instructions](https://solana.com/docs/terminology#instruction).", + concepts: ["Compile-time account checks", "Signer and mut constraints"], + }, + "basics/close-account/quasar": { + title: "Close Account", + purpose: + "Create a PDA [account](https://solana.com/docs/terminology#account), then close it and return [rent](https://solana.com/docs/terminology#rent) to the user.", + concepts: ["PDA init and close", "Rent reclamation"], + }, + "basics/counter/quasar": { + title: "Counter", + purpose: + "Global counter in a [PDA](https://solana.com/docs/terminology#program-derived-address-pda) with initialize and increment handlers.", + concepts: ["PDA state", "Handler dispatch"], + }, + "basics/create-account/quasar": { + title: "Create Account", + purpose: "Create and fund rent-exempt accounts via the System Program.", + concepts: ["System Program CPI", "Rent-exempt lamports"], + }, + "basics/favorites/quasar": { + title: "Favorites", + purpose: "Per-user favorites in a PDA; only the owner can update their data.", + concepts: ["Per-user PDA", "Authority checks"], + }, + "basics/hello-solana/quasar": { + title: "Hello Solana", + purpose: "Minimal program that logs a greeting.", + concepts: ["Program entrypoint", "Instruction data"], + }, + "basics/pda-rent-payer/quasar": { + title: "PDA Rent Payer", + purpose: + "A [PDA](https://solana.com/docs/terminology#program-derived-address-pda) pays [rent](https://solana.com/docs/terminology#rent) when creating another account.", + concepts: ["PDA signer", "Rent payer pattern"], + }, + "basics/processing-instructions/quasar": { + title: "Processing Instructions", + purpose: "Pass arguments into an [instruction handler](https://solana.com/docs/terminology#instruction-handler).", + concepts: ["Instruction data", "Handler parameters"], + }, + "basics/program-derived-addresses/quasar": { + title: "Program Derived Addresses", + purpose: "Derive and use PDAs for deterministic program-owned addresses.", + concepts: ["Seed derivation", "PDA-owned state"], + }, + "basics/pyth/quasar": { + title: "Pyth Price Feeds", + purpose: "Read a Pyth price feed and use oracle data in program logic.", + concepts: ["Oracle accounts", "Price feed layout"], + }, + "basics/realloc/quasar": { + title: "Realloc", + purpose: "Grow or shrink account data when storage needs change.", + concepts: ["Account reallocation", "Rent on resize"], + }, + "basics/rent/quasar": { + title: "Rent", + purpose: "Compute account size and minimum rent-exempt [lamports](https://solana.com/docs/terminology#lamport).", + concepts: ["Rent-exempt balance", "Space planning"], + }, + "basics/repository-layout/quasar": { + title: "Repository Layout", + purpose: "Organize a program across modules (state, handlers, errors).", + concepts: ["Multi-file layout", "Separation of concerns"], + }, + "basics/transfer-sol/quasar": { + title: "Transfer SOL", + purpose: "Transfer native SOL via the System Program.", + concepts: ["System transfer CPI", "Signer-funded lamports"], + }, + "compression/cnft-burn/quasar": { + title: "cNFT Burn", + purpose: "Burn compressed NFTs via Metaplex Bubblegum CPIs.", + concepts: ["Compressed NFTs", "Bubblegum CPI"], + }, + "compression/cnft-vault/quasar": { + title: "cNFT Vault", + purpose: "Deposit and withdraw compressed NFTs from a PDA vault.", + concepts: ["cNFT transfers", "PDA vault"], + }, + "compression/cutils/quasar": { + title: "Compression Utilities", + purpose: "Helpers for working with Metaplex compressed NFTs in a program.", + concepts: ["Compression proofs", "Merkle tree accounts"], + }, + "finance/escrow/quasar": { + title: "Escrow", + purpose: "Atomic token swap escrow between maker and taker.", + concepts: ["Escrow PDA", "See [Anchor variant](../anchor/README.md) for the full walkthrough"], + }, + "finance/token-fundraiser/quasar": { + title: "Token Fundraiser", + purpose: "Onchain crowdfunding toward a target amount in a chosen token.", + concepts: ["Fundraiser PDA", "Contributor deposits"], + }, + "finance/token-swap/quasar": { + title: "Token Swap (AMM)", + purpose: "Constant-product AMM: pools, liquidity, swaps with slippage guards.", + concepts: ["Pool PDA and LP tokens", "See [finance/token-swap/README.md](../token-swap/README.md)"], + }, + "tokens/create-token/quasar": { + title: "Create Token", + purpose: "Create a mint with metadata using Token and Metaplex programs.", + concepts: ["Mint + metadata CPI", "See [tokens/create-token/README.md](../create-token/README.md)"], + }, + "tokens/external-delegate-token-master/quasar": { + title: "External Delegate Token Master", + purpose: "Token transfers authorized by an external secp256k1 signature.", + concepts: ["Delegate approval", "Signature verification"], + }, + "tokens/nft-minter/quasar": { + title: "NFT Minter", + purpose: "Mint an NFT from inside your program.", + concepts: ["NFT mint", "Metadata CPI"], + }, + "tokens/nft-operations/quasar": { + title: "NFT Operations", + purpose: "Collection mint, NFT mint, and collection verification via Metaplex.", + concepts: ["Collection NFTs", "Verification CPI"], + }, + "tokens/pda-mint-authority/quasar": { + title: "PDA Mint Authority", + purpose: "Mint with a PDA as mint authority.", + concepts: ["PDA mint authority", "mint_to CPI"], + }, + "tokens/token-minter/quasar": { + title: "Token Minter", + purpose: "Mint tokens using the [Classic Token Program](https://solana.com/docs/terminology#token-program).", + concepts: ["Mint authority", "Token account init"], + }, + "tokens/transfer-tokens/quasar": { + title: "Transfer Tokens", + purpose: "Transfer tokens between accounts via CPI.", + concepts: ["Token transfer CPI", "Associated token accounts"], + }, + "tokens/token-extensions/basics/quasar": { + title: "Token Extensions — Basics", + purpose: + "Mint and transfer with the [Token Extensions Program](https://solana.com/docs/terminology#token-extensions-program).", + concepts: ["Extension mints", "Token Extensions CPI"], + }, + "tokens/token-extensions/cpi-guard/quasar": { + title: "Token Extensions — CPI Guard", + purpose: "Block certain token actions inside CPI contexts.", + concepts: ["CPI Guard extension"], + }, + "tokens/token-extensions/default-account-state/quasar": { + title: "Token Extensions — Default Account State", + purpose: "New token accounts frozen by default until thawed.", + concepts: ["Default account state extension"], + }, + "tokens/token-extensions/group/quasar": { + title: "Token Extensions — Group Pointer", + purpose: "Link mints to a group via Group Pointer.", + concepts: ["Group pointer extension"], + }, + "tokens/token-extensions/immutable-owner/quasar": { + title: "Token Extensions — Immutable Owner", + purpose: "Token accounts with an immutable owner field.", + concepts: ["Immutable owner extension"], + }, + "tokens/token-extensions/interest-bearing/quasar": { + title: "Token Extensions — Interest Bearing", + purpose: "Balances that reflect accrued interest over time.", + concepts: ["Interest bearing extension"], + }, + "tokens/token-extensions/memo-transfer/quasar": { + title: "Token Extensions — Memo Transfer", + purpose: "Require a memo on every transfer.", + concepts: ["Memo transfer extension"], + }, + "tokens/token-extensions/mint-close-authority/quasar": { + title: "Token Extensions — Mint Close Authority", + purpose: "Designated account may close the mint.", + concepts: ["Mint close authority extension"], + }, + "tokens/token-extensions/non-transferable/quasar": { + title: "Token Extensions — Non-Transferable", + purpose: "Tokens that cannot be transferred.", + concepts: ["Non-transferable extension"], + }, + "tokens/token-extensions/permanent-delegate/quasar": { + title: "Token Extensions — Permanent Delegate", + purpose: "Permanent delegate retains transfer rights.", + concepts: ["Permanent delegate extension"], + }, + "tokens/token-extensions/transfer-fee/quasar": { + title: "Token Extensions — Transfer Fee", + purpose: "Fee charged on each transfer at the mint.", + concepts: ["Transfer fee extension"], + }, + "tokens/token-extensions/transfer-hook/account-data-as-seed/quasar": { + title: "Transfer Hook — Account Data as Seed", + purpose: "Derive extra accounts from token account data in a transfer hook.", + concepts: ["Transfer hook", "Extra account metas"], + }, + "tokens/token-extensions/transfer-hook/allow-block-list-token/quasar": { + title: "Transfer Hook — Allow/Block List", + purpose: "Allow/block list enforced by a transfer hook program.", + concepts: ["Transfer hook", "List authority"], + }, + "tokens/token-extensions/transfer-hook/counter/quasar": { + title: "Transfer Hook — Counter", + purpose: "Count transfers in hook-side state.", + concepts: ["Transfer hook", "Counter PDA"], + }, + "tokens/token-extensions/transfer-hook/hello-world/quasar": { + title: "Transfer Hook — Hello World", + purpose: "Minimal transfer hook executed on each transfer.", + concepts: ["Transfer hook", "Extra account meta list"], + }, + "tokens/token-extensions/transfer-hook/transfer-cost/quasar": { + title: "Transfer Hook — Transfer Cost", + purpose: "Additional fee on each transfer via the hook.", + concepts: ["Transfer hook", "Fee collection"], + }, + "tokens/token-extensions/transfer-hook/transfer-switch/quasar": { + title: "Transfer Hook — Transfer Switch", + purpose: "Globally enable or disable transfers.", + concepts: ["Transfer hook", "Admin switch"], + }, + "tokens/token-extensions/transfer-hook/whitelist/quasar": { + title: "Transfer Hook — Whitelist", + purpose: "Only whitelisted accounts may receive tokens.", + concepts: ["Transfer hook", "Whitelist PDA"], + }, +}; + +const redirects = { + "tokens/token-2022/default-account-state/quasar": "tokens/token-extensions/default-account-state/quasar", + "tokens/token-2022/metadata/quasar": "tokens/token-extensions/metadata/anchor", +}; + +function titleCase(segment) { + return segment + .split("-") + .map((w) => w.charAt(0).toUpperCase() + w.slice(1)) + .join(" "); +} + +function parentOverviewRel(quasarRel) { + const parent = path.dirname(quasarRel); + const readme = path.join(root, parent, "README.md"); + if (fs.existsSync(readme)) { + return `See also: [${titleCase(path.basename(parent))} overview](../README.md) and the [repository catalog](${"../".repeat(quasarRel.split("/").length)}README.md).`; + } + const depth = quasarRel.split("/").length; + return `See also: the [repository catalog](${"../".repeat(depth)}README.md).`; +} + +function render(quasarRel, meta) { + const concepts = meta.concepts.map((c) => `- ${c}`).join("\n"); + return `# ${meta.title} (Quasar) + +${meta.purpose} + +${parentOverviewRel(quasarRel)} + +## Major concepts + +${concepts} + +## Setup + +From \`${quasarRel}/\`: + +\`\`\`bash +quasar build +\`\`\` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see \`Quasar.toml\`). + +## Testing + +In-process tests via **Quasar SVM** (\`quasar-svm\` in \`Quasar.toml\`): + +\`\`\`bash +cargo test +\`\`\` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read \`src/\` and \`Quasar.toml\`. Compare with the [Anchor](../anchor/) variant in the same example where present. +`; +} + +function renderRedirect(fromRel, toRel) { + const fromDir = path.join(root, fromRel); + const toReadme = path.join(root, toRel, "README.md"); + let link = path.relative(fromDir, toReadme).replace(/\\/g, "/"); + if (!link.startsWith(".")) link = `./${link}`; + return `# Deprecated path + +This tree is a leftover \`token-2022\` path. Use [\`${toRel}\`](${link}) instead. +`; +} + +let written = 0; +for (const [rel, meta] of Object.entries(examples)) { + const readmePath = path.join(root, rel, "README.md"); + if (fs.existsSync(readmePath)) continue; + fs.mkdirSync(path.dirname(readmePath), { recursive: true }); + fs.writeFileSync(readmePath, render(rel, meta)); + written++; + console.log("wrote", rel); +} + +for (const [rel, to] of Object.entries(redirects)) { + const readmePath = path.join(root, rel, "README.md"); + if (fs.existsSync(readmePath)) continue; + fs.mkdirSync(path.dirname(readmePath), { recursive: true }); + fs.writeFileSync(readmePath, renderRedirect(rel, to)); + written++; + console.log("redirect", rel); +} + +console.log(`Done. ${written} README(s) created.`); diff --git a/tokens/create-token/quasar/README.md b/tokens/create-token/quasar/README.md new file mode 100644 index 00000000..80960c39 --- /dev/null +++ b/tokens/create-token/quasar/README.md @@ -0,0 +1,34 @@ +# Create Token (Quasar) + +Create a mint with metadata using Token and Metaplex programs. + +See also: [Create Token overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- Mint + metadata CPI +- See [tokens/create-token/README.md](../create-token/README.md) + +## Setup + +From `tokens/create-token/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/external-delegate-token-master/quasar/README.md b/tokens/external-delegate-token-master/quasar/README.md new file mode 100644 index 00000000..706dacb6 --- /dev/null +++ b/tokens/external-delegate-token-master/quasar/README.md @@ -0,0 +1,34 @@ +# External Delegate Token Master (Quasar) + +Token transfers authorized by an external secp256k1 signature. + +See also: the [repository catalog](../../../README.md). + +## Major concepts + +- Delegate approval +- Signature verification + +## Setup + +From `tokens/external-delegate-token-master/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/nft-minter/quasar/README.md b/tokens/nft-minter/quasar/README.md new file mode 100644 index 00000000..92d27cb7 --- /dev/null +++ b/tokens/nft-minter/quasar/README.md @@ -0,0 +1,34 @@ +# NFT Minter (Quasar) + +Mint an NFT from inside your program. + +See also: [Nft Minter overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- NFT mint +- Metadata CPI + +## Setup + +From `tokens/nft-minter/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/nft-operations/quasar/README.md b/tokens/nft-operations/quasar/README.md new file mode 100644 index 00000000..bc17d65f --- /dev/null +++ b/tokens/nft-operations/quasar/README.md @@ -0,0 +1,34 @@ +# NFT Operations (Quasar) + +Collection mint, NFT mint, and collection verification via Metaplex. + +See also: the [repository catalog](../../../README.md). + +## Major concepts + +- Collection NFTs +- Verification CPI + +## Setup + +From `tokens/nft-operations/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/pda-mint-authority/quasar/README.md b/tokens/pda-mint-authority/quasar/README.md new file mode 100644 index 00000000..092416af --- /dev/null +++ b/tokens/pda-mint-authority/quasar/README.md @@ -0,0 +1,34 @@ +# PDA Mint Authority (Quasar) + +Mint with a PDA as mint authority. + +See also: [Pda Mint Authority overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- PDA mint authority +- mint_to CPI + +## Setup + +From `tokens/pda-mint-authority/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-2022/default-account-state/quasar/README.md b/tokens/token-2022/default-account-state/quasar/README.md new file mode 100644 index 00000000..ca74b447 --- /dev/null +++ b/tokens/token-2022/default-account-state/quasar/README.md @@ -0,0 +1,3 @@ +# Deprecated path + +This tree is a leftover `token-2022` path. Use [`tokens/token-extensions/default-account-state/quasar`](../../../token-extensions/default-account-state/quasar/README.md) instead. diff --git a/tokens/token-2022/metadata/quasar/README.md b/tokens/token-2022/metadata/quasar/README.md new file mode 100644 index 00000000..a01ef4b3 --- /dev/null +++ b/tokens/token-2022/metadata/quasar/README.md @@ -0,0 +1,3 @@ +# Deprecated path + +This tree is a leftover `token-2022` path. Use [`tokens/token-extensions/metadata/anchor`](../../../token-extensions/metadata/anchor/README.md) instead. diff --git a/tokens/token-extensions/basics/quasar/README.md b/tokens/token-extensions/basics/quasar/README.md new file mode 100644 index 00000000..fec9c267 --- /dev/null +++ b/tokens/token-extensions/basics/quasar/README.md @@ -0,0 +1,34 @@ +# Token Extensions — Basics (Quasar) + +Mint and transfer with the [Token Extensions Program](https://solana.com/docs/terminology#token-extensions-program). + +See also: the [repository catalog](../../../../README.md). + +## Major concepts + +- Extension mints +- Token Extensions CPI + +## Setup + +From `tokens/token-extensions/basics/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/cpi-guard/quasar/README.md b/tokens/token-extensions/cpi-guard/quasar/README.md new file mode 100644 index 00000000..1715b8cd --- /dev/null +++ b/tokens/token-extensions/cpi-guard/quasar/README.md @@ -0,0 +1,33 @@ +# Token Extensions — CPI Guard (Quasar) + +Block certain token actions inside CPI contexts. + +See also: the [repository catalog](../../../../README.md). + +## Major concepts + +- CPI Guard extension + +## Setup + +From `tokens/token-extensions/cpi-guard/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/default-account-state/quasar/README.md b/tokens/token-extensions/default-account-state/quasar/README.md new file mode 100644 index 00000000..88d3bd04 --- /dev/null +++ b/tokens/token-extensions/default-account-state/quasar/README.md @@ -0,0 +1,33 @@ +# Token Extensions — Default Account State (Quasar) + +New token accounts frozen by default until thawed. + +See also: the [repository catalog](../../../../README.md). + +## Major concepts + +- Default account state extension + +## Setup + +From `tokens/token-extensions/default-account-state/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/group/quasar/README.md b/tokens/token-extensions/group/quasar/README.md new file mode 100644 index 00000000..91ca9a79 --- /dev/null +++ b/tokens/token-extensions/group/quasar/README.md @@ -0,0 +1,33 @@ +# Token Extensions — Group Pointer (Quasar) + +Link mints to a group via Group Pointer. + +See also: the [repository catalog](../../../../README.md). + +## Major concepts + +- Group pointer extension + +## Setup + +From `tokens/token-extensions/group/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/immutable-owner/quasar/README.md b/tokens/token-extensions/immutable-owner/quasar/README.md new file mode 100644 index 00000000..b951799c --- /dev/null +++ b/tokens/token-extensions/immutable-owner/quasar/README.md @@ -0,0 +1,33 @@ +# Token Extensions — Immutable Owner (Quasar) + +Token accounts with an immutable owner field. + +See also: the [repository catalog](../../../../README.md). + +## Major concepts + +- Immutable owner extension + +## Setup + +From `tokens/token-extensions/immutable-owner/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/interest-bearing/quasar/README.md b/tokens/token-extensions/interest-bearing/quasar/README.md new file mode 100644 index 00000000..a1e340ce --- /dev/null +++ b/tokens/token-extensions/interest-bearing/quasar/README.md @@ -0,0 +1,33 @@ +# Token Extensions — Interest Bearing (Quasar) + +Balances that reflect accrued interest over time. + +See also: the [repository catalog](../../../../README.md). + +## Major concepts + +- Interest bearing extension + +## Setup + +From `tokens/token-extensions/interest-bearing/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/memo-transfer/quasar/README.md b/tokens/token-extensions/memo-transfer/quasar/README.md new file mode 100644 index 00000000..f21b2106 --- /dev/null +++ b/tokens/token-extensions/memo-transfer/quasar/README.md @@ -0,0 +1,33 @@ +# Token Extensions — Memo Transfer (Quasar) + +Require a memo on every transfer. + +See also: the [repository catalog](../../../../README.md). + +## Major concepts + +- Memo transfer extension + +## Setup + +From `tokens/token-extensions/memo-transfer/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/mint-close-authority/quasar/README.md b/tokens/token-extensions/mint-close-authority/quasar/README.md new file mode 100644 index 00000000..beab3875 --- /dev/null +++ b/tokens/token-extensions/mint-close-authority/quasar/README.md @@ -0,0 +1,33 @@ +# Token Extensions — Mint Close Authority (Quasar) + +Designated account may close the mint. + +See also: the [repository catalog](../../../../README.md). + +## Major concepts + +- Mint close authority extension + +## Setup + +From `tokens/token-extensions/mint-close-authority/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/non-transferable/quasar/README.md b/tokens/token-extensions/non-transferable/quasar/README.md new file mode 100644 index 00000000..87d9c370 --- /dev/null +++ b/tokens/token-extensions/non-transferable/quasar/README.md @@ -0,0 +1,33 @@ +# Token Extensions — Non-Transferable (Quasar) + +Tokens that cannot be transferred. + +See also: the [repository catalog](../../../../README.md). + +## Major concepts + +- Non-transferable extension + +## Setup + +From `tokens/token-extensions/non-transferable/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/permanent-delegate/quasar/README.md b/tokens/token-extensions/permanent-delegate/quasar/README.md new file mode 100644 index 00000000..6c518f6b --- /dev/null +++ b/tokens/token-extensions/permanent-delegate/quasar/README.md @@ -0,0 +1,33 @@ +# Token Extensions — Permanent Delegate (Quasar) + +Permanent delegate retains transfer rights. + +See also: the [repository catalog](../../../../README.md). + +## Major concepts + +- Permanent delegate extension + +## Setup + +From `tokens/token-extensions/permanent-delegate/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/transfer-fee/quasar/README.md b/tokens/token-extensions/transfer-fee/quasar/README.md new file mode 100644 index 00000000..7c51c8c2 --- /dev/null +++ b/tokens/token-extensions/transfer-fee/quasar/README.md @@ -0,0 +1,33 @@ +# Token Extensions — Transfer Fee (Quasar) + +Fee charged on each transfer at the mint. + +See also: the [repository catalog](../../../../README.md). + +## Major concepts + +- Transfer fee extension + +## Setup + +From `tokens/token-extensions/transfer-fee/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/transfer-hook/account-data-as-seed/quasar/README.md b/tokens/token-extensions/transfer-hook/account-data-as-seed/quasar/README.md new file mode 100644 index 00000000..8e4fdb29 --- /dev/null +++ b/tokens/token-extensions/transfer-hook/account-data-as-seed/quasar/README.md @@ -0,0 +1,34 @@ +# Transfer Hook — Account Data as Seed (Quasar) + +Derive extra accounts from token account data in a transfer hook. + +See also: the [repository catalog](../../../../../README.md). + +## Major concepts + +- Transfer hook +- Extra account metas + +## Setup + +From `tokens/token-extensions/transfer-hook/account-data-as-seed/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/transfer-hook/allow-block-list-token/quasar/README.md b/tokens/token-extensions/transfer-hook/allow-block-list-token/quasar/README.md new file mode 100644 index 00000000..3c829adb --- /dev/null +++ b/tokens/token-extensions/transfer-hook/allow-block-list-token/quasar/README.md @@ -0,0 +1,34 @@ +# Transfer Hook — Allow/Block List (Quasar) + +Allow/block list enforced by a transfer hook program. + +See also: [Allow Block List Token overview](../README.md) and the [repository catalog](../../../../../README.md). + +## Major concepts + +- Transfer hook +- List authority + +## Setup + +From `tokens/token-extensions/transfer-hook/allow-block-list-token/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/transfer-hook/counter/quasar/README.md b/tokens/token-extensions/transfer-hook/counter/quasar/README.md new file mode 100644 index 00000000..11c23c10 --- /dev/null +++ b/tokens/token-extensions/transfer-hook/counter/quasar/README.md @@ -0,0 +1,34 @@ +# Transfer Hook — Counter (Quasar) + +Count transfers in hook-side state. + +See also: the [repository catalog](../../../../../README.md). + +## Major concepts + +- Transfer hook +- Counter PDA + +## Setup + +From `tokens/token-extensions/transfer-hook/counter/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/transfer-hook/hello-world/quasar/README.md b/tokens/token-extensions/transfer-hook/hello-world/quasar/README.md new file mode 100644 index 00000000..c0341cae --- /dev/null +++ b/tokens/token-extensions/transfer-hook/hello-world/quasar/README.md @@ -0,0 +1,34 @@ +# Transfer Hook — Hello World (Quasar) + +Minimal transfer hook executed on each transfer. + +See also: the [repository catalog](../../../../../README.md). + +## Major concepts + +- Transfer hook +- Extra account meta list + +## Setup + +From `tokens/token-extensions/transfer-hook/hello-world/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/transfer-hook/transfer-cost/quasar/README.md b/tokens/token-extensions/transfer-hook/transfer-cost/quasar/README.md new file mode 100644 index 00000000..54bee20d --- /dev/null +++ b/tokens/token-extensions/transfer-hook/transfer-cost/quasar/README.md @@ -0,0 +1,34 @@ +# Transfer Hook — Transfer Cost (Quasar) + +Additional fee on each transfer via the hook. + +See also: the [repository catalog](../../../../../README.md). + +## Major concepts + +- Transfer hook +- Fee collection + +## Setup + +From `tokens/token-extensions/transfer-hook/transfer-cost/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/transfer-hook/transfer-switch/quasar/README.md b/tokens/token-extensions/transfer-hook/transfer-switch/quasar/README.md new file mode 100644 index 00000000..7f33b4d7 --- /dev/null +++ b/tokens/token-extensions/transfer-hook/transfer-switch/quasar/README.md @@ -0,0 +1,34 @@ +# Transfer Hook — Transfer Switch (Quasar) + +Globally enable or disable transfers. + +See also: the [repository catalog](../../../../../README.md). + +## Major concepts + +- Transfer hook +- Admin switch + +## Setup + +From `tokens/token-extensions/transfer-hook/transfer-switch/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-extensions/transfer-hook/whitelist/quasar/README.md b/tokens/token-extensions/transfer-hook/whitelist/quasar/README.md new file mode 100644 index 00000000..cbc37121 --- /dev/null +++ b/tokens/token-extensions/transfer-hook/whitelist/quasar/README.md @@ -0,0 +1,34 @@ +# Transfer Hook — Whitelist (Quasar) + +Only whitelisted accounts may receive tokens. + +See also: the [repository catalog](../../../../../README.md). + +## Major concepts + +- Transfer hook +- Whitelist PDA + +## Setup + +From `tokens/token-extensions/transfer-hook/whitelist/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/token-minter/quasar/README.md b/tokens/token-minter/quasar/README.md new file mode 100644 index 00000000..206340b0 --- /dev/null +++ b/tokens/token-minter/quasar/README.md @@ -0,0 +1,34 @@ +# Token Minter (Quasar) + +Mint tokens using the [Classic Token Program](https://solana.com/docs/terminology#token-program). + +See also: [Token Minter overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- Mint authority +- Token account init + +## Setup + +From `tokens/token-minter/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. diff --git a/tokens/transfer-tokens/quasar/README.md b/tokens/transfer-tokens/quasar/README.md new file mode 100644 index 00000000..61d03915 --- /dev/null +++ b/tokens/transfer-tokens/quasar/README.md @@ -0,0 +1,34 @@ +# Transfer Tokens (Quasar) + +Transfer tokens between accounts via CPI. + +See also: [Transfer Tokens overview](../README.md) and the [repository catalog](../../../README.md). + +## Major concepts + +- Token transfer CPI +- Associated token accounts + +## Setup + +From `tokens/transfer-tokens/quasar/`: + +```bash +quasar build +``` + +Prerequisites: [Quasar](https://quasar-lang.com/docs) CLI and [Agave](https://docs.anza.xyz/) toolchain (see `Quasar.toml`). + +## Testing + +In-process tests via **Quasar SVM** (`quasar-svm` in `Quasar.toml`): + +```bash +cargo test +``` + +Tests invoke instruction handlers and assert onchain state. No local validator. + +## Usage + +Read `src/` and `Quasar.toml`. Compare with the [Anchor](../anchor/) variant in the same example where present. From efdb93c5d971c18e6bd0e627b1609fe24a531f94 Mon Sep 17 00:00:00 2001 From: Mike MacCana Date: Thu, 4 Jun 2026 15:26:43 -0400 Subject: [PATCH 3/4] Remove deprecated frontend packages --- package.json | 7 - pnpm-lock.yaml | 702 ------------------------------------------------- 2 files changed, 709 deletions(-) diff --git a/package.json b/package.json index 49befcc2..2fd29427 100644 --- a/package.json +++ b/package.json @@ -25,12 +25,5 @@ "husky": "^9.0.11", "lint-staged": "^15.4.3", "typescript": "^5.2.2" - }, - "dependencies": { - "@anchor-lang/core": "1.0.0", - "@solana/web3.js": "^1.98.4", - "anchor-bankrun": "^0.4.0", - "chai": "^5.1.1", - "solana-bankrun": "^0.3.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bfb4a4a6..6c73d748 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,22 +7,6 @@ settings: importers: .: - dependencies: - '@anchor-lang/core': - specifier: 1.0.0 - version: 1.0.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10) - '@solana/web3.js': - specifier: ^1.98.4 - version: 1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10) - anchor-bankrun: - specifier: ^0.4.0 - version: 0.4.0(@coral-xyz/anchor@0.32.1(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10))(solana-bankrun@0.3.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)) - chai: - specifier: ^5.1.1 - version: 5.1.1 - solana-bankrun: - specifier: ^0.3.0 - version: 0.3.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10) devDependencies: '@biomejs/biome': specifier: 2.4.10 @@ -42,24 +26,6 @@ importers: packages: - '@anchor-lang/borsh@1.0.0': - resolution: {integrity: sha512-kiUd4S/iGKZ4aZvHtX07vNiNnHa/mI/IHmw+0y0sWlvGpPsAWsLXXMrohII5vNCdgZrw+5vVXH9kt836yP9YmQ==} - engines: {node: '>=10'} - peerDependencies: - '@solana/web3.js': ^1.69.0 - - '@anchor-lang/core@1.0.0': - resolution: {integrity: sha512-YHJQCJNQwF1M1M5VNNOj1DuR7B9v7f/6I9NkFYty7HAbpb3+1HpuDD7nOqI+X3CafXzteWGWZE2kn+Ts7PBKNQ==} - engines: {node: '>=17'} - - '@anchor-lang/errors@1.0.0': - resolution: {integrity: sha512-j3ymePewd9Bi6OcXATViRS0IPdPBT8qW4LVM3/hNePH/rZdgi8qDkToiDGuR1fFccfn7t+BrNGudHvcs6JWCFQ==} - engines: {node: '>=10'} - - '@babel/runtime@7.25.0': - resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} - engines: {node: '>=6.9.0'} - '@biomejs/biome@2.4.10': resolution: {integrity: sha512-xxA3AphFQ1geij4JTHXv4EeSTda1IFn22ye9LdyVPoJU19fNVl0uzfEuhsfQ4Yue/0FaLs2/ccVi4UDiE7R30w==} engines: {node: '>=14.21.3'} @@ -117,94 +83,9 @@ packages: cpu: [x64] os: [win32] - '@coral-xyz/anchor-errors@0.31.1': - resolution: {integrity: sha512-NhNEku4F3zzUSBtrYz84FzYWm48+9OvmT1Hhnwr6GnPQry2dsEqH/ti/7ASjjpoFTWRnPXrjAIT1qM6Isop+LQ==} - engines: {node: '>=10'} - - '@coral-xyz/anchor@0.32.1': - resolution: {integrity: sha512-zAyxFtfeje2FbMA1wzgcdVs7Hng/MijPKpRijoySPCicnvcTQs/+dnPZ/cR+LcXM9v9UYSyW81uRNYZtN5G4yg==} - engines: {node: '>=17'} - - '@coral-xyz/borsh@0.31.1': - resolution: {integrity: sha512-9N8AU9F0ubriKfNE3g1WF0/4dtlGXoBN/hd1PvbNBamBNwRgHxH4P+o3Zt7rSEloW1HUs6LfZEchlx9fW7POYw==} - engines: {node: '>=10'} - peerDependencies: - '@solana/web3.js': ^1.69.0 - - '@noble/curves@1.4.2': - resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} - - '@noble/hashes@1.4.0': - resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} - engines: {node: '>= 16'} - - '@noble/hashes@1.8.0': - resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} - engines: {node: ^14.21.3 || >=16} - - '@solana/buffer-layout@4.0.1': - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} - - '@solana/codecs-core@2.3.0': - resolution: {integrity: sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - - '@solana/codecs-numbers@2.3.0': - resolution: {integrity: sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==} - engines: {node: '>=20.18.0'} - peerDependencies: - typescript: '>=5.3.3' - - '@solana/errors@2.3.0': - resolution: {integrity: sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==} - engines: {node: '>=20.18.0'} - hasBin: true - peerDependencies: - typescript: '>=5.3.3' - - '@solana/web3.js@1.98.4': - resolution: {integrity: sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==} - - '@swc/helpers@0.5.12': - resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@20.14.2': resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - - '@types/ws@7.4.7': - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - anchor-bankrun@0.4.0: - resolution: {integrity: sha512-s+K7E0IGAlmkhuo8nbiqVsQf2yJ+3l9GjNQJSmkRDe25dQj4Yef9rJh77FH6EQ5H6yQYfzuhgm/5GD6JMjdTZg==} - engines: {node: '>= 10'} - peerDependencies: - '@coral-xyz/anchor': ^0.30.0 - '@solana/web3.js': ^1.78.4 - solana-bankrun: ^0.2.0 - ansi-escapes@7.3.0: resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} engines: {node: '>=18'} @@ -217,56 +98,14 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bn.js@5.2.2: - resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} - - borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - - buffer-layout@1.2.2: - resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} - engines: {node: '>=4.5'} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - chai@5.1.1: - resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} - engines: {node: '>=12'} - chalk@5.6.2: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -282,16 +121,6 @@ packages: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} - commander@14.0.3: - resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} - engines: {node: '>=20'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - cross-fetch@3.2.0: - resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -305,14 +134,6 @@ packages: supports-color: optional: true - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -320,15 +141,6 @@ packages: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} - es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - - es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -336,13 +148,6 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - - fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -351,9 +156,6 @@ packages: resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} engines: {node: '>=18'} - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -362,17 +164,11 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - husky@9.0.11: resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} engines: {node: '>=18'} hasBin: true - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} @@ -392,23 +188,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isomorphic-ws@4.0.1: - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - - jayson@4.1.1: - resolution: {integrity: sha512-5ZWm4Q/0DHPyeMfAsrwViwUS2DMVsQgWh8bEEIVTkfb3DzHZ2L3G5WUnF+AKmGjjM9r1uAv73SaqC1/U4RL45w==} - engines: {node: '>=8'} - hasBin: true - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -426,9 +205,6 @@ packages: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} - loupe@3.1.1: - resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -447,19 +223,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp-build@4.8.1: - resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} - hasBin: true - npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -472,9 +235,6 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - pako@2.1.0: - resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -483,10 +243,6 @@ packages: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - picomatch@2.3.2: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} @@ -496,9 +252,6 @@ packages: engines: {node: '>=0.10'} hasBin: true - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -506,12 +259,6 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rpc-websockets@9.0.2: - resolution: {integrity: sha512-YzggvfItxMY3Lwuax5rC18inhbjJv9Py7JXRHxTIi94JOLrqBsSsUUc5bbl5W6c11tXhdfpDPK0KzBhoGe8jjw==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -532,41 +279,6 @@ packages: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} - solana-bankrun-darwin-arm64@0.3.0: - resolution: {integrity: sha512-+NbDncf0U6l3knuacRBiqpjZ2DSp+5lZaAU518gH7/x6qubbui/d000STaIBK+uNTPBS/AL/bCN+7PkXqmA3lA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - solana-bankrun-darwin-universal@0.3.0: - resolution: {integrity: sha512-1/F0xdMa4qvc5o6z16FCCbZ5jbdvKvxpx5kyPcMWRiRPwyvi+zltMxciPAYMlg3wslQqGz88uFhrBEzq2eTumQ==} - engines: {node: '>= 10'} - os: [darwin] - - solana-bankrun-darwin-x64@0.3.0: - resolution: {integrity: sha512-U6CANjkmMl+lgNA7UH0GKs5V7LtVIUDzJBZefGGqLfqUNv3EjA/PrrToM0hAOWJgkxSwdz6zW+p5sw5FmnbXtg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - solana-bankrun-linux-x64-gnu@0.3.0: - resolution: {integrity: sha512-qJSkCFs0k2n4XtTnyxGMiZsuqO2TiqTYgWjQ+3mZhGNUAMys/Vq8bd7/SyBm6RR7EfVuRXRxZvh+F8oKZ77V4w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - - solana-bankrun-linux-x64-musl@0.3.0: - resolution: {integrity: sha512-xsS2CS2xb1Sw4ivNXM0gPz/qpW9BX0neSvt/pnok5L330Nu9xlTnKAY8FhzzqOP9P9sJlGRM787Y6d0yYwt6xQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - - solana-bankrun@0.3.0: - resolution: {integrity: sha512-YkH7sa8TB/AoRPzG17CXJtYsRIQHEkEqGLz1Vwc13taXhDBkjO7z6NI5JYw7n0ybRymDHwMYTc7sd+5J40TyVQ==} - engines: {node: '>= 10'} - string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -583,32 +295,10 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - superstruct@0.15.5: - resolution: {integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==} - - superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - - text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toml@3.0.0: - resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} @@ -617,20 +307,6 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -640,30 +316,6 @@ packages: resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - yaml@2.9.0: resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} @@ -671,39 +323,6 @@ packages: snapshots: - '@anchor-lang/borsh@1.0.0(@solana/web3.js@1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10) - bn.js: 5.2.2 - buffer-layout: 1.2.2 - - '@anchor-lang/core@1.0.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)': - dependencies: - '@anchor-lang/borsh': 1.0.0(@solana/web3.js@1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)) - '@anchor-lang/errors': 1.0.0 - '@noble/hashes': 1.8.0 - '@solana/web3.js': 1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10) - bn.js: 5.2.2 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.2.0 - eventemitter3: 4.0.7 - pako: 2.1.0 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - '@anchor-lang/errors@1.0.0': {} - - '@babel/runtime@7.25.0': - dependencies: - regenerator-runtime: 0.14.1 - '@biomejs/biome@2.4.10': optionalDependencies: '@biomejs/cli-darwin-arm64': 2.4.10 @@ -739,126 +358,10 @@ snapshots: '@biomejs/cli-win32-x64@2.4.10': optional: true - '@coral-xyz/anchor-errors@0.31.1': {} - - '@coral-xyz/anchor@0.32.1(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor-errors': 0.31.1 - '@coral-xyz/borsh': 0.31.1(@solana/web3.js@1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)) - '@noble/hashes': 1.8.0 - '@solana/web3.js': 1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10) - bn.js: 5.2.2 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.2.0 - eventemitter3: 4.0.7 - pako: 2.1.0 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - '@coral-xyz/borsh@0.31.1(@solana/web3.js@1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10) - bn.js: 5.2.2 - buffer-layout: 1.2.2 - - '@noble/curves@1.4.2': - dependencies: - '@noble/hashes': 1.4.0 - - '@noble/hashes@1.4.0': {} - - '@noble/hashes@1.8.0': {} - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/codecs-core@2.3.0(typescript@5.4.5)': - dependencies: - '@solana/errors': 2.3.0(typescript@5.4.5) - typescript: 5.4.5 - - '@solana/codecs-numbers@2.3.0(typescript@5.4.5)': - dependencies: - '@solana/codecs-core': 2.3.0(typescript@5.4.5) - '@solana/errors': 2.3.0(typescript@5.4.5) - typescript: 5.4.5 - - '@solana/errors@2.3.0(typescript@5.4.5)': - dependencies: - chalk: 5.6.2 - commander: 14.0.3 - typescript: 5.4.5 - - '@solana/web3.js@1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.25.0 - '@noble/curves': 1.4.2 - '@noble/hashes': 1.8.0 - '@solana/buffer-layout': 4.0.1 - '@solana/codecs-numbers': 2.3.0(typescript@5.4.5) - agentkeepalive: 4.5.0 - bn.js: 5.2.2 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.2 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - - '@swc/helpers@0.5.12': - dependencies: - tslib: 2.6.3 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 20.14.2 - - '@types/node@12.20.55': {} - '@types/node@20.14.2': dependencies: undici-types: 5.26.5 - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 20.14.2 - - '@types/ws@8.5.12': - dependencies: - '@types/node': 20.14.2 - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - anchor-bankrun@0.4.0(@coral-xyz/anchor@0.32.1(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10))(solana-bankrun@0.3.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)): - dependencies: - '@coral-xyz/anchor': 0.32.1(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10) - solana-bankrun: 0.3.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10) - ansi-escapes@7.3.0: dependencies: environment: 1.1.0 @@ -867,56 +370,12 @@ snapshots: ansi-styles@6.2.3: {} - assertion-error@2.0.1: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base64-js@1.5.1: {} - - bn.js@5.2.2: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.2 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - braces@3.0.3: dependencies: fill-range: 7.1.1 - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - buffer-layout@1.2.2: {} - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.1 - optional: true - - camelcase@6.3.0: {} - - chai@5.1.1: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.1 - pathval: 2.0.0 - chalk@5.6.2: {} - check-error@2.1.1: {} - cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 @@ -930,16 +389,6 @@ snapshots: commander@13.1.0: {} - commander@14.0.3: {} - - commander@2.20.3: {} - - cross-fetch@3.2.0: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -950,22 +399,10 @@ snapshots: dependencies: ms: 2.1.3 - deep-eql@5.0.2: {} - - delay@5.0.0: {} - emoji-regex@10.6.0: {} environment@1.1.0: {} - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - eventemitter3@4.0.7: {} - eventemitter3@5.0.1: {} execa@8.0.1: @@ -980,30 +417,18 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - eyes@0.1.8: {} - - fast-stable-stringify@1.0.0: {} - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 get-east-asian-width@1.6.0: {} - get-func-name@2.0.2: {} - get-stream@8.0.1: {} human-signals@5.0.0: {} - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - husky@9.0.11: {} - ieee754@1.2.1: {} - is-fullwidth-code-point@4.0.0: {} is-fullwidth-code-point@5.1.0: @@ -1016,32 +441,6 @@ snapshots: isexe@2.0.0: {} - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jayson@4.1.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - json-stringify-safe@5.0.1: {} - - jsonparse@1.3.1: {} - lilconfig@3.1.3: {} lint-staged@15.5.2: @@ -1076,10 +475,6 @@ snapshots: strip-ansi: 7.2.0 wrap-ansi: 9.0.2 - loupe@3.1.1: - dependencies: - get-func-name: 2.0.2 - merge-stream@2.0.0: {} micromatch@4.0.8: @@ -1093,13 +488,6 @@ snapshots: ms@2.1.3: {} - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.1: - optional: true - npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -1112,20 +500,14 @@ snapshots: dependencies: mimic-function: 5.0.1 - pako@2.1.0: {} - path-key@3.1.1: {} path-key@4.0.0: {} - pathval@2.0.0: {} - picomatch@2.3.2: {} pidtree@0.6.0: {} - regenerator-runtime@0.14.1: {} - restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -1133,21 +515,6 @@ snapshots: rfdc@1.4.1: {} - rpc-websockets@9.0.2: - dependencies: - '@swc/helpers': 0.5.12 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.12 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - safe-buffer@5.2.1: {} - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -1166,37 +533,6 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 - solana-bankrun-darwin-arm64@0.3.0: - optional: true - - solana-bankrun-darwin-universal@0.3.0: - optional: true - - solana-bankrun-darwin-x64@0.3.0: - optional: true - - solana-bankrun-linux-x64-gnu@0.3.0: - optional: true - - solana-bankrun-linux-x64-musl@0.3.0: - optional: true - - solana-bankrun@0.3.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10): - dependencies: - '@solana/web3.js': 1.98.4(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10) - bs58: 4.0.1 - optionalDependencies: - solana-bankrun-darwin-arm64: 0.3.0 - solana-bankrun-darwin-universal: 0.3.0 - solana-bankrun-darwin-x64: 0.3.0 - solana-bankrun-linux-x64-gnu: 0.3.0 - solana-bankrun-linux-x64-musl: 0.3.0 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - string-argv@0.3.2: {} string-width@7.2.0: @@ -1211,42 +547,14 @@ snapshots: strip-final-newline@3.0.0: {} - superstruct@0.15.5: {} - - superstruct@2.0.2: {} - - text-encoding-utf-8@1.0.2: {} - - through@2.3.8: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - toml@3.0.0: {} - - tr46@0.0.3: {} - - tslib@2.6.3: {} - typescript@5.4.5: {} undici-types@5.26.5: {} - utf-8-validate@5.0.10: - dependencies: - node-gyp-build: 4.8.1 - optional: true - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which@2.0.2: dependencies: isexe: 2.0.0 @@ -1257,14 +565,4 @@ snapshots: string-width: 7.2.0 strip-ansi: 7.2.0 - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - yaml@2.9.0: {} From df95cf703064f1a775036799853c6287d78defaa Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 5 Jun 2026 15:03:53 +0000 Subject: [PATCH 4/4] Remove stray token-2022 quasar READMEs that broke CI These README files created empty quasar/ directories with no Quasar.toml. The Quasar workflow discovers projects via 'find -type d -name quasar' and ran 'quasar build' on them, failing with 'Quasar.toml not found'. --- tokens/token-2022/default-account-state/quasar/README.md | 3 --- tokens/token-2022/metadata/quasar/README.md | 3 --- 2 files changed, 6 deletions(-) delete mode 100644 tokens/token-2022/default-account-state/quasar/README.md delete mode 100644 tokens/token-2022/metadata/quasar/README.md diff --git a/tokens/token-2022/default-account-state/quasar/README.md b/tokens/token-2022/default-account-state/quasar/README.md deleted file mode 100644 index ca74b447..00000000 --- a/tokens/token-2022/default-account-state/quasar/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Deprecated path - -This tree is a leftover `token-2022` path. Use [`tokens/token-extensions/default-account-state/quasar`](../../../token-extensions/default-account-state/quasar/README.md) instead. diff --git a/tokens/token-2022/metadata/quasar/README.md b/tokens/token-2022/metadata/quasar/README.md deleted file mode 100644 index a01ef4b3..00000000 --- a/tokens/token-2022/metadata/quasar/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Deprecated path - -This tree is a leftover `token-2022` path. Use [`tokens/token-extensions/metadata/anchor`](../../../token-extensions/metadata/anchor/README.md) instead.