Explorar o código

Fix: all the biome errors and update biome (#86)

Mike MacCana hai 1 ano
pai
achega
2c4cb8f527
Modificáronse 28 ficheiros con 265 adicións e 266 borrados
  1. 3 3
      basics/account-data/native/tests/test.ts
  2. 1 2
      basics/counter/native/ts/instructions/createIncrementInstruction.ts
  3. 0 1
      basics/create-account/anchor/tests/test.ts
  4. 3 3
      basics/cross-program-invocation/native/tests/test.ts
  5. 3 3
      basics/pda-rent-payer/native/tests/test.ts
  6. 3 3
      basics/processing-instructions/native/tests/test.ts
  7. 3 3
      basics/program-derived-addresses/native/tests/test.ts
  8. 3 3
      basics/rent/native/tests/test.ts
  9. 3 3
      basics/repository-layout/native/tests/test.ts
  10. 1 1
      biome.json
  11. 1 1
      compression/cnft-burn/anchor/tests/cnft-burn.ts
  12. 7 5
      compression/cnft-burn/anchor/tests/utils/helpers.ts
  13. 4 3
      compression/cutils/anchor/tests/utils/helpers.ts
  14. 3 3
      package.json
  15. 134 161
      pnpm-lock.yaml
  16. 13 13
      scripts/lib/get-recursive-file-list.ts
  17. 3 3
      tokens/create-token/native/tests/test.ts
  18. 3 3
      tokens/nft-minter/native/tests/instructions.ts
  19. 3 3
      tokens/pda-mint-authority/native/tests/instructions.ts
  20. 3 3
      tokens/spl-token-minter/native/tests/instructions.ts
  21. 3 3
      tokens/token-2022/default-account-state/native/tests/test.ts
  22. 3 3
      tokens/token-2022/mint-close-authority/native/tests/test.ts
  23. 3 3
      tokens/token-2022/multiple-extensions/native/tests/test.ts
  24. 3 2
      tokens/token-2022/nft-meta-data-pointer/anchor-example/app/utils/wrappedConnection.ts
  25. 3 3
      tokens/token-2022/non-transferable/native/tests/test.ts
  26. 3 3
      tokens/token-2022/transfer-fee/native/tests/test.ts
  27. 3 3
      tokens/transfer-tokens/native/tests/instructions.ts
  28. 47 23
      yarn.lock

+ 3 - 3
basics/account-data/native/tests/test.ts

@@ -6,9 +6,9 @@ import { start } from 'solana-bankrun';
 
 class Assignable {
   constructor(properties) {
-    Object.keys(properties).map((key) => {
-      return (this[key] = properties[key]);
-    });
+    for (const [key, value] of Object.entries(properties)) {
+      this[key] = value;
+    }
   }
 }
 

+ 1 - 2
basics/counter/native/ts/instructions/createIncrementInstruction.ts

@@ -4,9 +4,8 @@ import { PROGRAM_ID } from '../';
 export type IncrementInstructionAccounts = {
   counter: PublicKey;
 };
-export type IncrementInstructionArgs = {};
 
-export function createIncrementInstruction(accounts: IncrementInstructionAccounts, args: IncrementInstructionArgs): TransactionInstruction {
+export function createIncrementInstruction(accounts: IncrementInstructionAccounts): TransactionInstruction {
   return new TransactionInstruction({
     programId: PROGRAM_ID,
     keys: [

+ 0 - 1
basics/create-account/anchor/tests/test.ts

@@ -28,7 +28,6 @@ describe('Create a system account', () => {
 
     // Check that the account was created
     const accountInfo = await connection.getAccountInfo(newKeypair.publicKey);
-    assert((accountInfo.owner = SystemProgram.programId));
     assert(accountInfo.lamports === lamports);
   });
 });

+ 3 - 3
basics/cross-program-invocation/native/tests/test.ts

@@ -14,9 +14,9 @@ describe('CPI Example', () => {
 
   class Assignable {
     constructor(properties) {
-      Object.keys(properties).map((key) => {
-        return (this[key] = properties[key]);
-      });
+      for (const [key, value] of Object.entries(properties)) {
+        this[key] = value;
+      }
     }
   }
 

+ 3 - 3
basics/pda-rent-payer/native/tests/test.ts

@@ -12,9 +12,9 @@ describe('PDA Rent-Payer', async () => {
 
   class Assignable {
     constructor(properties) {
-      Object.keys(properties).map((key) => {
-        return (this[key] = properties[key]);
-      });
+      for (const [key, value] of Object.entries(properties)) {
+        this[key] = value;
+      }
     }
   }
 

+ 3 - 3
basics/processing-instructions/native/tests/test.ts

@@ -12,9 +12,9 @@ describe('custom-instruction-data', async () => {
 
   class Assignable {
     constructor(properties) {
-      Object.keys(properties).map((key) => {
-        return (this[key] = properties[key]);
-      });
+      for (const [key, value] of Object.entries(properties)) {
+        this[key] = value;
+      }
     }
   }
 

+ 3 - 3
basics/program-derived-addresses/native/tests/test.ts

@@ -13,9 +13,9 @@ describe('PDAs', async () => {
 
   class Assignable {
     constructor(properties) {
-      Object.keys(properties).map((key) => {
-        return (this[key] = properties[key]);
-      });
+      for (const [key, value] of Object.entries(properties)) {
+        this[key] = value;
+      }
     }
   }
 

+ 3 - 3
basics/rent/native/tests/test.ts

@@ -12,9 +12,9 @@ describe('Create a system account', async () => {
 
   class Assignable {
     constructor(properties) {
-      Object.keys(properties).map((key) => {
-        return (this[key] = properties[key]);
-      });
+      for (const [key, value] of Object.entries(properties)) {
+        this[key] = value;
+      }
     }
   }
 

+ 3 - 3
basics/repository-layout/native/tests/test.ts

@@ -12,9 +12,9 @@ describe('Carnival', async () => {
 
   class Assignable {
     constructor(properties) {
-      Object.keys(properties).map((key) => {
-        return (this[key] = properties[key]);
-      });
+      for (const [key, value] of Object.entries(properties)) {
+        this[key] = value;
+      }
     }
   }
 

+ 1 - 1
biome.json

@@ -35,7 +35,7 @@
     "formatter": {
       "jsxQuoteStyle": "double",
       "quoteProperties": "asNeeded",
-      "trailingComma": "all",
+      "trailingCommas": "all",
       "semicolons": "always",
       "arrowParentheses": "always",
       "bracketSpacing": true,

+ 1 - 1
compression/cnft-burn/anchor/tests/cnft-burn.ts

@@ -9,7 +9,7 @@ import { getAsset, getAssetProof } from './readApi';
 import { decode, mapProof } from './utils';
 
 // Replace this with your custom RPC endpoint that supports cNFT indexing
-export const RPC_PATH = 'https://api.devnet.solana.com';
+const RPC_PATH = 'https://api.devnet.solana.com';
 
 describe('cnft-burn', () => {
   // Configure the client to use the local cluster.

+ 7 - 5
compression/cnft-burn/anchor/tests/utils/helpers.ts

@@ -9,6 +9,7 @@ const DEFAULT_DEMO_DATA_FILE = 'demo.json';
 
 /*
   Load locally stored PublicKey addresses
+  TODO: use the helpers library and delete this function
 */
 export function loadPublicKeysFromFile(absPath = `${DEFAULT_KEY_DIR_NAME}/${DEFAULT_PUBLIC_KEY_FILE}`) {
   try {
@@ -25,7 +26,7 @@ export function loadPublicKeysFromFile(absPath = `${DEFAULT_KEY_DIR_NAME}/${DEFA
 
     return data;
   } catch (err) {
-    // console.warn("Unable to load local file");
+    console.warn('Unable to load local file');
   }
   // always return an object
   return {};
@@ -51,7 +52,7 @@ export function saveDemoDataToFile(name: string, newData: any, absPath = `${DEFA
     return data;
   } catch (err) {
     console.warn('Unable to save to file');
-    // console.warn(err);
+    console.warn(err);
   }
 
   // always return an object
@@ -105,16 +106,17 @@ export function loadKeypairFromFile(absPath: string) {
     const keypair = Keypair.fromSecretKey(new Uint8Array(keyfileBytes));
     return keypair;
   } catch (err) {
-    // return false;
+    console.error('loadKeypairFromFile:', err);
     throw err;
   }
 }
 
 /*
   Save a locally stored JSON keypair file for later importing
+  TODO: delete this function and use the helpers library
 */
-export function saveKeypairToFile(keypair: Keypair, fileName: string, dirName: string = DEFAULT_KEY_DIR_NAME) {
-  fileName = path.join(dirName, `${fileName}.json`);
+export function saveKeypairToFile(keypair: Keypair, relativeFileName: string, dirName: string = DEFAULT_KEY_DIR_NAME) {
+  const fileName = path.join(dirName, `${relativeFileName}.json`);
 
   // create the `dirName` directory, if it does not exists
   if (!fs.existsSync(`./${dirName}/`)) fs.mkdirSync(`./${dirName}/`);

+ 4 - 3
compression/cutils/anchor/tests/utils/helpers.ts

@@ -105,16 +105,17 @@ export function loadKeypairFromFile(absPath: string) {
     const keypair = Keypair.fromSecretKey(new Uint8Array(keyfileBytes));
     return keypair;
   } catch (err) {
-    // return false;
+    console.error('loadKeypairFromFile:', err);
     throw err;
   }
 }
 
 /*
   Save a locally stored JSON keypair file for later importing
+  TODO: delete this function and use the helpers library
 */
-export function saveKeypairToFile(keypair: Keypair, fileName: string, dirName: string = DEFAULT_KEY_DIR_NAME) {
-  fileName = path.join(dirName, `${fileName}.json`);
+export function saveKeypairToFile(keypair: Keypair, relativeFileName: string, dirName: string = DEFAULT_KEY_DIR_NAME) {
+  const fileName = path.join(dirName, `${relativeFileName}.json`);
 
   // create the `dirName` directory, if it does not exists
   if (!fs.existsSync(`./${dirName}/`)) fs.mkdirSync(`./${dirName}/`);

+ 3 - 3
package.json

@@ -5,9 +5,9 @@
   "scripts": {
     "sync-package-json": "ts-node scripts/sync-package-json.ts",
     "format:fix": "pnpx @biomejs/biome format --write ./",
-    "lint:fix": "pnpx @biomejs/biome lint --apply ./",
+    "lint:fix": "pnpx @biomejs/biome lint --write ./",
     "lint": "pnpx @biomejs/biome lint ./",
-    "fix": "pnpx @biomejs/biome check --apply ./",
+    "fix": "pnpx @biomejs/biome check --write ./",
     "check": "pnpx @biomejs/biome check ./",
     "prepare": "husky"
   },
@@ -18,7 +18,7 @@
   "author": "Solana Foundation",
   "license": "MIT",
   "devDependencies": {
-    "@biomejs/biome": "1.7.3",
+    "@biomejs/biome": "1.8.1",
     "@types/node": "^20.9.0",
     "husky": "^9.0.11",
     "picocolors": "^1.0.0",

+ 134 - 161
pnpm-lock.yaml

@@ -1,147 +1,203 @@
-lockfileVersion: '9.0'
+lockfileVersion: '6.0'
 
 settings:
   autoInstallPeers: true
   excludeLinksFromLockfile: false
 
-importers:
-
-  .:
-    devDependencies:
-      '@biomejs/biome':
-        specifier: 1.7.3
-        version: 1.7.3
-      '@types/node':
-        specifier: ^20.9.0
-        version: 20.12.12
-      husky:
-        specifier: ^9.0.11
-        version: 9.0.11
-      picocolors:
-        specifier: ^1.0.0
-        version: 1.0.1
-      ts-node:
-        specifier: ^10.9.1
-        version: 10.9.2(@types/node@20.12.12)(typescript@5.4.5)
-      typescript:
-        specifier: ^5.2.2
-        version: 5.4.5
+devDependencies:
+  '@biomejs/biome':
+    specifier: 1.8.1
+    version: 1.8.1
+  '@types/node':
+    specifier: ^20.9.0
+    version: 20.14.2
+  husky:
+    specifier: ^9.0.11
+    version: 9.0.11
+  picocolors:
+    specifier: ^1.0.0
+    version: 1.0.1
+  ts-node:
+    specifier: ^10.9.1
+    version: 10.9.2(@types/node@20.14.2)(typescript@5.4.5)
+  typescript:
+    specifier: ^5.2.2
+    version: 5.4.5
 
 packages:
 
-  '@biomejs/biome@1.7.3':
-    resolution: {integrity: sha512-ogFQI+fpXftr+tiahA6bIXwZ7CSikygASdqMtH07J2cUzrpjyTMVc9Y97v23c7/tL1xCZhM+W9k4hYIBm7Q6cQ==}
+  /@biomejs/biome@1.8.1:
+    resolution: {integrity: sha512-fQXGfvq6DIXem12dGQCM2tNF+vsNHH1qs3C7WeOu75Pd0trduoTmoO7G4ntLJ2qDs5wuw981H+cxQhi1uHnAtA==}
     engines: {node: '>=14.21.3'}
     hasBin: true
-
-  '@biomejs/cli-darwin-arm64@1.7.3':
-    resolution: {integrity: sha512-eDvLQWmGRqrPIRY7AIrkPHkQ3visEItJKkPYSHCscSDdGvKzYjmBJwG1Gu8+QC5ed6R7eiU63LEC0APFBobmfQ==}
+    requiresBuild: true
+    optionalDependencies:
+      '@biomejs/cli-darwin-arm64': 1.8.1
+      '@biomejs/cli-darwin-x64': 1.8.1
+      '@biomejs/cli-linux-arm64': 1.8.1
+      '@biomejs/cli-linux-arm64-musl': 1.8.1
+      '@biomejs/cli-linux-x64': 1.8.1
+      '@biomejs/cli-linux-x64-musl': 1.8.1
+      '@biomejs/cli-win32-arm64': 1.8.1
+      '@biomejs/cli-win32-x64': 1.8.1
+    dev: true
+
+  /@biomejs/cli-darwin-arm64@1.8.1:
+    resolution: {integrity: sha512-XLiB7Uu6GALIOBWzQ2aMD0ru4Ly5/qSeQF7kk3AabzJ/kwsEWSe33iVySBP/SS2qv25cgqNiLksjGcw2bHT3mw==}
     engines: {node: '>=14.21.3'}
     cpu: [arm64]
     os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
 
-  '@biomejs/cli-darwin-x64@1.7.3':
-    resolution: {integrity: sha512-JXCaIseKRER7dIURsVlAJacnm8SG5I0RpxZ4ya3dudASYUc68WGl4+FEN03ABY3KMIq7hcK1tzsJiWlmXyosZg==}
+  /@biomejs/cli-darwin-x64@1.8.1:
+    resolution: {integrity: sha512-uMTSxVLMfqkBVqyc25hSn83jBbp+wtWjzM/pHFlKXt3htJuw7FErVGW0nmQ9Sxa9vJ7GcqoltLMl28VQRIMYzg==}
     engines: {node: '>=14.21.3'}
     cpu: [x64]
     os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
 
-  '@biomejs/cli-linux-arm64-musl@1.7.3':
-    resolution: {integrity: sha512-c8AlO45PNFZ1BYcwaKzdt46kYbuP6xPGuGQ6h4j3XiEDpyseRRUy/h+6gxj07XovmyxKnSX9GSZ6nVbZvcVUAw==}
+  /@biomejs/cli-linux-arm64-musl@1.8.1:
+    resolution: {integrity: sha512-UQ8Wc01J0wQL+5AYOc7qkJn20B4PZmQL1KrmDZh7ot0DvD6aX4+8mmfd/dG5b6Zjo/44QvCKcvkFGCMRYuhWZA==}
     engines: {node: '>=14.21.3'}
     cpu: [arm64]
     os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
 
-  '@biomejs/cli-linux-arm64@1.7.3':
-    resolution: {integrity: sha512-phNTBpo7joDFastnmZsFjYcDYobLTx4qR4oPvc9tJ486Bd1SfEVPHEvJdNJrMwUQK56T+TRClOQd/8X1nnjA9w==}
+  /@biomejs/cli-linux-arm64@1.8.1:
+    resolution: {integrity: sha512-3SzZRuC/9Oi2P2IBNPsEj0KXxSXUEYRR2kfRF/Ve8QAfGgrt4qnwuWd6QQKKN5R+oYH691qjm+cXBKEcrP1v/Q==}
     engines: {node: '>=14.21.3'}
     cpu: [arm64]
     os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
 
-  '@biomejs/cli-linux-x64-musl@1.7.3':
-    resolution: {integrity: sha512-UdEHKtYGWEX3eDmVWvQeT+z05T9/Sdt2+F/7zmMOFQ7boANeX8pcO6EkJPK3wxMudrApsNEKT26rzqK6sZRTRA==}
+  /@biomejs/cli-linux-x64-musl@1.8.1:
+    resolution: {integrity: sha512-fYbP/kNu/rtZ4kKzWVocIdqZOtBSUEg9qUhZaao3dy3CRzafR6u6KDtBeSCnt47O+iLnks1eOR1TUxzr5+QuqA==}
     engines: {node: '>=14.21.3'}
     cpu: [x64]
     os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
 
-  '@biomejs/cli-linux-x64@1.7.3':
-    resolution: {integrity: sha512-vnedYcd5p4keT3iD48oSKjOIRPYcjSNNbd8MO1bKo9ajg3GwQXZLAH+0Cvlr+eMsO67/HddWmscSQwTFrC/uPA==}
+  /@biomejs/cli-linux-x64@1.8.1:
+    resolution: {integrity: sha512-AeBycVdNrTzsyYKEOtR2R0Ph0hCD0sCshcp2aOnfGP0hCZbtFg09D0SdKLbyzKntisY41HxKVrydYiaApp+2uw==}
     engines: {node: '>=14.21.3'}
     cpu: [x64]
     os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
 
-  '@biomejs/cli-win32-arm64@1.7.3':
-    resolution: {integrity: sha512-unNCDqUKjujYkkSxs7gFIfdasttbDC4+z0kYmcqzRk6yWVoQBL4dNLcCbdnJS+qvVDNdI9rHp2NwpQ0WAdla4Q==}
+  /@biomejs/cli-win32-arm64@1.8.1:
+    resolution: {integrity: sha512-6tEd1H/iFKpgpE3OIB7oNgW5XkjiVMzMRPL8zYoZ036YfuJ5nMYm9eB9H/y81+8Z76vL48fiYzMPotJwukGPqQ==}
     engines: {node: '>=14.21.3'}
     cpu: [arm64]
     os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
 
-  '@biomejs/cli-win32-x64@1.7.3':
-    resolution: {integrity: sha512-ZmByhbrnmz/UUFYB622CECwhKIPjJLLPr5zr3edhu04LzbfcOrz16VYeNq5dpO1ADG70FORhAJkaIGdaVBG00w==}
+  /@biomejs/cli-win32-x64@1.8.1:
+    resolution: {integrity: sha512-g2H31jJzYmS4jkvl6TiyEjEX+Nv79a5km/xn+5DARTp5MBFzC9gwceusSSB2AkJKqZzY131AiACAWjKrVt5Ijw==}
     engines: {node: '>=14.21.3'}
     cpu: [x64]
     os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
 
-  '@cspotcode/source-map-support@0.8.1':
+  /@cspotcode/source-map-support@0.8.1:
     resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
     engines: {node: '>=12'}
+    dependencies:
+      '@jridgewell/trace-mapping': 0.3.9
+    dev: true
 
-  '@jridgewell/resolve-uri@3.1.2':
+  /@jridgewell/resolve-uri@3.1.2:
     resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
     engines: {node: '>=6.0.0'}
+    dev: true
 
-  '@jridgewell/sourcemap-codec@1.4.15':
+  /@jridgewell/sourcemap-codec@1.4.15:
     resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+    dev: true
 
-  '@jridgewell/trace-mapping@0.3.9':
+  /@jridgewell/trace-mapping@0.3.9:
     resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
+    dependencies:
+      '@jridgewell/resolve-uri': 3.1.2
+      '@jridgewell/sourcemap-codec': 1.4.15
+    dev: true
 
-  '@tsconfig/node10@1.0.11':
+  /@tsconfig/node10@1.0.11:
     resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
+    dev: true
 
-  '@tsconfig/node12@1.0.11':
+  /@tsconfig/node12@1.0.11:
     resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
+    dev: true
 
-  '@tsconfig/node14@1.0.3':
+  /@tsconfig/node14@1.0.3:
     resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
+    dev: true
 
-  '@tsconfig/node16@1.0.4':
+  /@tsconfig/node16@1.0.4:
     resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
+    dev: true
 
-  '@types/node@20.12.12':
-    resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==}
+  /@types/node@20.14.2:
+    resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==}
+    dependencies:
+      undici-types: 5.26.5
+    dev: true
 
-  acorn-walk@8.3.2:
+  /acorn-walk@8.3.2:
     resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
     engines: {node: '>=0.4.0'}
+    dev: true
 
-  acorn@8.11.3:
+  /acorn@8.11.3:
     resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
     engines: {node: '>=0.4.0'}
     hasBin: true
+    dev: true
 
-  arg@4.1.3:
+  /arg@4.1.3:
     resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
+    dev: true
 
-  create-require@1.1.1:
+  /create-require@1.1.1:
     resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
+    dev: true
 
-  diff@4.0.2:
+  /diff@4.0.2:
     resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
     engines: {node: '>=0.3.1'}
+    dev: true
 
-  husky@9.0.11:
+  /husky@9.0.11:
     resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==}
     engines: {node: '>=18'}
     hasBin: true
+    dev: true
 
-  make-error@1.3.6:
+  /make-error@1.3.6:
     resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
+    dev: true
 
-  picocolors@1.0.1:
+  /picocolors@1.0.1:
     resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
+    dev: true
 
-  ts-node@10.9.2:
+  /ts-node@10.9.2(@types/node@20.14.2)(typescript@5.4.5):
     resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
     hasBin: true
     peerDependencies:
@@ -154,108 +210,13 @@ packages:
         optional: true
       '@swc/wasm':
         optional: true
-
-  typescript@5.4.5:
-    resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
-    engines: {node: '>=14.17'}
-    hasBin: true
-
-  undici-types@5.26.5:
-    resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
-
-  v8-compile-cache-lib@3.0.1:
-    resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
-
-  yn@3.1.1:
-    resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
-    engines: {node: '>=6'}
-
-snapshots:
-
-  '@biomejs/biome@1.7.3':
-    optionalDependencies:
-      '@biomejs/cli-darwin-arm64': 1.7.3
-      '@biomejs/cli-darwin-x64': 1.7.3
-      '@biomejs/cli-linux-arm64': 1.7.3
-      '@biomejs/cli-linux-arm64-musl': 1.7.3
-      '@biomejs/cli-linux-x64': 1.7.3
-      '@biomejs/cli-linux-x64-musl': 1.7.3
-      '@biomejs/cli-win32-arm64': 1.7.3
-      '@biomejs/cli-win32-x64': 1.7.3
-
-  '@biomejs/cli-darwin-arm64@1.7.3':
-    optional: true
-
-  '@biomejs/cli-darwin-x64@1.7.3':
-    optional: true
-
-  '@biomejs/cli-linux-arm64-musl@1.7.3':
-    optional: true
-
-  '@biomejs/cli-linux-arm64@1.7.3':
-    optional: true
-
-  '@biomejs/cli-linux-x64-musl@1.7.3':
-    optional: true
-
-  '@biomejs/cli-linux-x64@1.7.3':
-    optional: true
-
-  '@biomejs/cli-win32-arm64@1.7.3':
-    optional: true
-
-  '@biomejs/cli-win32-x64@1.7.3':
-    optional: true
-
-  '@cspotcode/source-map-support@0.8.1':
-    dependencies:
-      '@jridgewell/trace-mapping': 0.3.9
-
-  '@jridgewell/resolve-uri@3.1.2': {}
-
-  '@jridgewell/sourcemap-codec@1.4.15': {}
-
-  '@jridgewell/trace-mapping@0.3.9':
-    dependencies:
-      '@jridgewell/resolve-uri': 3.1.2
-      '@jridgewell/sourcemap-codec': 1.4.15
-
-  '@tsconfig/node10@1.0.11': {}
-
-  '@tsconfig/node12@1.0.11': {}
-
-  '@tsconfig/node14@1.0.3': {}
-
-  '@tsconfig/node16@1.0.4': {}
-
-  '@types/node@20.12.12':
-    dependencies:
-      undici-types: 5.26.5
-
-  acorn-walk@8.3.2: {}
-
-  acorn@8.11.3: {}
-
-  arg@4.1.3: {}
-
-  create-require@1.1.1: {}
-
-  diff@4.0.2: {}
-
-  husky@9.0.11: {}
-
-  make-error@1.3.6: {}
-
-  picocolors@1.0.1: {}
-
-  ts-node@10.9.2(@types/node@20.12.12)(typescript@5.4.5):
     dependencies:
       '@cspotcode/source-map-support': 0.8.1
       '@tsconfig/node10': 1.0.11
       '@tsconfig/node12': 1.0.11
       '@tsconfig/node14': 1.0.3
       '@tsconfig/node16': 1.0.4
-      '@types/node': 20.12.12
+      '@types/node': 20.14.2
       acorn: 8.11.3
       acorn-walk: 8.3.2
       arg: 4.1.3
@@ -265,11 +226,23 @@ snapshots:
       typescript: 5.4.5
       v8-compile-cache-lib: 3.0.1
       yn: 3.1.1
+    dev: true
 
-  typescript@5.4.5: {}
+  /typescript@5.4.5:
+    resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
+    engines: {node: '>=14.17'}
+    hasBin: true
+    dev: true
 
-  undici-types@5.26.5: {}
+  /undici-types@5.26.5:
+    resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+    dev: true
 
-  v8-compile-cache-lib@3.0.1: {}
+  /v8-compile-cache-lib@3.0.1:
+    resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
+    dev: true
 
-  yn@3.1.1: {}
+  /yn@3.1.1:
+    resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
+    engines: {node: '>=6'}
+    dev: true

+ 13 - 13
scripts/lib/get-recursive-file-list.ts

@@ -6,20 +6,20 @@ export function getRecursiveFileList(path: string): string[] {
   const files: string[] = [];
 
   const items = readdirSync(path);
-  items.forEach((item) => {
-    if (ignore.includes(item)) {
-      return;
-    }
-    // Check out if it's a directory or a file
-    const isDir = statSync(`${path}/${item}`).isDirectory();
-    if (isDir) {
-      // If it's a directory, recursively call the method
-      files.push(...getRecursiveFileList(`${path}/${item}`));
-    } else {
-      // If it's a file, add it to the array of files
-      files.push(`${path}/${item}`);
+
+  for (const item of items) {
+    if (!ignore.includes(item)) {
+      // Check out if it's a directory or a file
+      const isDir = statSync(`${path}/${item}`).isDirectory();
+      if (isDir) {
+        // If it's a directory, recursively call the method
+        files.push(...getRecursiveFileList(`${path}/${item}`));
+      } else {
+        // If it's a file, add it to the array of files
+        files.push(`${path}/${item}`);
+      }
     }
-  });
+  }
 
   return files.filter((file) => {
     // Remove package.json from the root directory

+ 3 - 3
tokens/create-token/native/tests/test.ts

@@ -19,9 +19,9 @@ function createKeypairFromFile(path: string): Keypair {
 
 class Assignable {
   constructor(properties) {
-    Object.keys(properties).map((key) => {
-      return (this[key] = properties[key]);
-    });
+    for (const [key, value] of Object.entries(properties)) {
+      this[key] = value;
+    }
   }
 }
 

+ 3 - 3
tokens/nft-minter/native/tests/instructions.ts

@@ -2,9 +2,9 @@ import * as borsh from 'borsh';
 
 class Assignable {
   constructor(properties) {
-    Object.keys(properties).map((key) => {
-      return (this[key] = properties[key]);
-    });
+    for (const [key, value] of Object.entries(properties)) {
+      this[key] = value;
+    }
   }
 }
 

+ 3 - 3
tokens/pda-mint-authority/native/tests/instructions.ts

@@ -2,9 +2,9 @@ import * as borsh from 'borsh';
 
 class Assignable {
   constructor(properties) {
-    Object.keys(properties).map((key) => {
-      return (this[key] = properties[key]);
-    });
+    for (const [key, value] of Object.entries(properties)) {
+      this[key] = value;
+    }
   }
 }
 

+ 3 - 3
tokens/spl-token-minter/native/tests/instructions.ts

@@ -2,9 +2,9 @@ import * as borsh from 'borsh';
 
 class Assignable {
   constructor(properties) {
-    Object.keys(properties).map((key) => {
-      return (this[key] = properties[key]);
-    });
+    for (const [key, value] of Object.entries(properties)) {
+      this[key] = value;
+    }
   }
 }
 

+ 3 - 3
tokens/token-2022/default-account-state/native/tests/test.ts

@@ -16,9 +16,9 @@ import { start } from 'solana-bankrun';
 
 class Assignable {
   constructor(properties) {
-    Object.keys(properties).map((key) => {
-      return (this[key] = properties[key]);
-    });
+    for (const [key, value] of Object.entries(properties)) {
+      this[key] = value;
+    }
   }
 }
 

+ 3 - 3
tokens/token-2022/mint-close-authority/native/tests/test.ts

@@ -8,9 +8,9 @@ import { start } from 'solana-bankrun';
 
 class Assignable {
   constructor(properties) {
-    Object.keys(properties).map((key) => {
-      return (this[key] = properties[key]);
-    });
+    for (const [key, value] of Object.entries(properties)) {
+      this[key] = value;
+    }
   }
 }
 

+ 3 - 3
tokens/token-2022/multiple-extensions/native/tests/test.ts

@@ -8,9 +8,9 @@ import { start } from 'solana-bankrun';
 
 class Assignable {
   constructor(properties) {
-    Object.keys(properties).map((key) => {
-      return (this[key] = properties[key]);
-    });
+    for (const [key, value] of Object.entries(properties)) {
+      this[key] = value;
+    }
   }
 }
 

+ 3 - 2
tokens/token-2022/nft-meta-data-pointer/anchor-example/app/utils/wrappedConnection.ts

@@ -101,16 +101,17 @@ export class WrappedConnection extends Connection {
     }
   }
 
-  // This will loop through all pages and return all assets
+  // Loop through all pages and return all assets
   async getAllAssetsByGroup(
     groupKey: string,
     groupValue: string,
     sortBy: any,
     limit: number,
-    page: number,
+    startPage: number,
     before: string,
     after: string,
   ): Promise<any> {
+    let page = startPage;
     try {
       const events = [];
       let response = await axios.post(process.env.NEXT_PUBLIC_RPC ? process.env.NEXT_PUBLIC_RPC : METAPLEX_READAPI, {

+ 3 - 3
tokens/token-2022/non-transferable/native/tests/test.ts

@@ -8,9 +8,9 @@ import { start } from 'solana-bankrun';
 
 class Assignable {
   constructor(properties) {
-    Object.keys(properties).map((key) => {
-      return (this[key] = properties[key]);
-    });
+    for (const [key, value] of Object.entries(properties)) {
+      this[key] = value;
+    }
   }
 }
 

+ 3 - 3
tokens/token-2022/transfer-fee/native/tests/test.ts

@@ -8,9 +8,9 @@ import { start } from 'solana-bankrun';
 
 class Assignable {
   constructor(properties) {
-    Object.keys(properties).map((key) => {
-      return (this[key] = properties[key]);
-    });
+    for (const [key, value] of Object.entries(properties)) {
+      this[key] = value;
+    }
   }
 }
 

+ 3 - 3
tokens/transfer-tokens/native/tests/instructions.ts

@@ -2,9 +2,9 @@ import * as borsh from 'borsh';
 
 class Assignable {
   constructor(properties) {
-    Object.keys(properties).map((key) => {
-      return (this[key] = properties[key]);
-    });
+    for (const [key, value] of Object.entries(properties)) {
+      this[key] = value;
+    }
   }
 }
 

+ 47 - 23
yarn.lock

@@ -2,26 +2,45 @@
 # yarn lockfile v1
 
 
+"@biomejs/biome@1.7.3":
+  version "1.7.3"
+  resolved "https://registry.npmjs.org/@biomejs/biome/-/biome-1.7.3.tgz"
+  integrity sha512-ogFQI+fpXftr+tiahA6bIXwZ7CSikygASdqMtH07J2cUzrpjyTMVc9Y97v23c7/tL1xCZhM+W9k4hYIBm7Q6cQ==
+  optionalDependencies:
+    "@biomejs/cli-darwin-arm64" "1.7.3"
+    "@biomejs/cli-darwin-x64" "1.7.3"
+    "@biomejs/cli-linux-arm64" "1.7.3"
+    "@biomejs/cli-linux-arm64-musl" "1.7.3"
+    "@biomejs/cli-linux-x64" "1.7.3"
+    "@biomejs/cli-linux-x64-musl" "1.7.3"
+    "@biomejs/cli-win32-arm64" "1.7.3"
+    "@biomejs/cli-win32-x64" "1.7.3"
+
+"@biomejs/cli-darwin-arm64@1.7.3":
+  version "1.7.3"
+  resolved "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.7.3.tgz"
+  integrity sha512-eDvLQWmGRqrPIRY7AIrkPHkQ3visEItJKkPYSHCscSDdGvKzYjmBJwG1Gu8+QC5ed6R7eiU63LEC0APFBobmfQ==
+
 "@cspotcode/source-map-support@^0.8.0":
   version "0.8.1"
-  resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
+  resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz"
   integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
   dependencies:
     "@jridgewell/trace-mapping" "0.3.9"
 
 "@jridgewell/resolve-uri@^3.0.3":
   version "3.1.1"
-  resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
+  resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz"
   integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
 
 "@jridgewell/sourcemap-codec@^1.4.10":
   version "1.4.15"
-  resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
+  resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz"
   integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
 
 "@jridgewell/trace-mapping@0.3.9":
   version "0.3.9"
-  resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
+  resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz"
   integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
   dependencies:
     "@jridgewell/resolve-uri" "^3.0.3"
@@ -29,69 +48,74 @@
 
 "@tsconfig/node10@^1.0.7":
   version "1.0.9"
-  resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
+  resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz"
   integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==
 
 "@tsconfig/node12@^1.0.7":
   version "1.0.11"
-  resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
+  resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz"
   integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
 
 "@tsconfig/node14@^1.0.0":
   version "1.0.3"
-  resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
+  resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz"
   integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
 
 "@tsconfig/node16@^1.0.2":
   version "1.0.4"
-  resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
+  resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz"
   integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
 
-"@types/node@^20.9.0":
+"@types/node@*", "@types/node@^20.9.0":
   version "20.9.0"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.0.tgz#bfcdc230583aeb891cf51e73cfdaacdd8deae298"
+  resolved "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz"
   integrity sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==
   dependencies:
     undici-types "~5.26.4"
 
 acorn-walk@^8.1.1:
   version "8.3.0"
-  resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f"
+  resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz"
   integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==
 
 acorn@^8.4.1:
   version "8.11.2"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b"
+  resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz"
   integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
 
 arg@^4.1.0:
   version "4.1.3"
-  resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
+  resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz"
   integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
 
 create-require@^1.1.0:
   version "1.1.1"
-  resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
+  resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz"
   integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
 
 diff@^4.0.1:
   version "4.0.2"
-  resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
+  resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz"
   integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
 
+husky@^9.0.11:
+  version "9.0.11"
+  resolved "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz"
+  integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==
+
 make-error@^1.1.1:
   version "1.3.6"
-  resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
+  resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz"
   integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
 
 picocolors@^1.0.0:
   version "1.0.0"
-  resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+  resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
   integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
 
 ts-node@^10.9.1:
   version "10.9.1"
-  resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
+  resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz"
   integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
   dependencies:
     "@cspotcode/source-map-support" "^0.8.0"
@@ -108,22 +132,22 @@ ts-node@^10.9.1:
     v8-compile-cache-lib "^3.0.1"
     yn "3.1.1"
 
-typescript@^5.2.2:
+typescript@^5.2.2, typescript@>=2.7:
   version "5.2.2"
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78"
+  resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz"
   integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==
 
 undici-types@~5.26.4:
   version "5.26.5"
-  resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
+  resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz"
   integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
 
 v8-compile-cache-lib@^3.0.1:
   version "3.0.1"
-  resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
+  resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz"
   integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
 
 yn@3.1.1:
   version "3.1.1"
-  resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
+  resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz"
   integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==