diff --git a/.github/actions/post-test/action.yml b/.github/actions/post-test/action.yml index 1fe599907f9..edd06556b2b 100644 --- a/.github/actions/post-test/action.yml +++ b/.github/actions/post-test/action.yml @@ -48,7 +48,7 @@ runs: fi - name: Upload coverage reports to Codecov if: ${{ github.repository_owner == 'agoric' }} && ${{ steps.coverage-prep.outputs.skip == 'false' }} && (success() || failure()) - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 continue-on-error: true with: token: ${{ inputs.codecov-token }} diff --git a/.github/actions/restore-node/action.yml b/.github/actions/restore-node/action.yml index 9cb37d4e3d1..72c5e9d9da6 100644 --- a/.github/actions/restore-node/action.yml +++ b/.github/actions/restore-node/action.yml @@ -114,6 +114,8 @@ runs: ${{ inputs.path }}/endo-sha.txt - uses: kenchan0130/actions-system-info@master id: system-info + - run: corepack enable + shell: bash - name: restore built files id: built uses: actions/cache@v4 diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 8a0cb0cc1c6..f7a0e08fc83 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -243,9 +243,7 @@ jobs: ignore-endo-branch: 'true' id: restore-node - name: setup a3p-integration - run: | - corepack enable - yarn install + run: yarn install working-directory: a3p-integration - name: verify SDK image didn't change # In the future when we can rebuild the SDK image with resolved endo packages, it would diff --git a/README.md b/README.md index a7f89750cea..1f3ee821d55 100644 --- a/README.md +++ b/README.md @@ -17,10 +17,11 @@ to use. ## Prerequisites * Git -* Node.js LTS (version 16.13.0 or higher) +* Go ^1.20.2 +* Node.js ^18.12 or ^20.9 * we generally support the latest LTS release: use [nvm](https://github.com/nvm-sh/nvm) to keep your local system up-to-date * Yarn (`npm install -g yarn`) -* gcc-10 or newer, or a compiler with `__has_builtin()` +* gcc >=10, clang >=10, or another compiler with `__has_builtin()` Any version of Yarn will do: the `.yarnrc` file should ensure that all commands use the specific checked-in version of Yarn (stored in diff --git a/a3p-integration/package.json b/a3p-integration/package.json index 3882c279d1f..fe183229c7b 100644 --- a/a3p-integration/package.json +++ b/a3p-integration/package.json @@ -12,7 +12,8 @@ "doctor": "yarn synthetic-chain doctor" }, "dependencies": { - "@agoric/synthetic-chain": "^0.0.10" + "@agoric/synthetic-chain": "^0.0.10", + "@types/better-sqlite3": "^7.6.9" }, "packageManager": "yarn@4.1.1", "license": "Apache-2.0" diff --git a/a3p-integration/proposals/a:upgrade-next/priceFeed-follower-auction.test.js b/a3p-integration/proposals/a:upgrade-next/priceFeed-follower-auction.test.js new file mode 100644 index 00000000000..30ae903b075 --- /dev/null +++ b/a3p-integration/proposals/a:upgrade-next/priceFeed-follower-auction.test.js @@ -0,0 +1,8 @@ +import test from 'ava'; +import { getDetailsMatchingVats } from './vatDetails.js'; + +test('new auction vat', async t => { + const details = await getDetailsMatchingVats('auctioneer'); + // This query matches both the auction and its governor, so 2*2 + t.is(Object.keys(details).length, 4); +}); diff --git a/a3p-integration/proposals/a:upgrade-next/vatDetails.js b/a3p-integration/proposals/a:upgrade-next/vatDetails.js new file mode 100644 index 00000000000..ccf24608309 --- /dev/null +++ b/a3p-integration/proposals/a:upgrade-next/vatDetails.js @@ -0,0 +1,100 @@ +import dbOpenAmbient from 'better-sqlite3'; + +const HOME = process.env.HOME; + +/** @type {(val: T | undefined) => T} */ +export const NonNullish = val => { + if (!val) throw Error('required'); + return val; +}; + +/** + * @file look up vat incarnation from kernel DB + * @see {getIncarnation} + */ + +const swingstorePath = `${HOME}/.agoric/data/agoric/swingstore.sqlite`; + +/** + * SQL short-hand + * + * @param {import('better-sqlite3').Database} db + */ +export const dbTool = db => { + const prepare = (strings, ...params) => { + const dml = strings.join('?'); + return { stmt: db.prepare(dml), params }; + }; + const sql = (strings, ...args) => { + const { stmt, params } = prepare(strings, ...args); + return stmt.all(...params); + }; + sql.get = (strings, ...args) => { + const { stmt, params } = prepare(strings, ...args); + return stmt.get(...params); + }; + return sql; +}; + +/** + * @param {import('better-sqlite3').Database} db + */ +const makeSwingstore = db => { + const sql = dbTool(db); + + /** @param {string} key */ + const kvGet = key => sql.get`select * from kvStore where key = ${key}`.value; + /** @param {string} key */ + const kvGetJSON = key => JSON.parse(kvGet(key)); + + /** @param {string} vatID */ + const lookupVat = vatID => { + return Object.freeze({ + source: () => kvGetJSON(`${vatID}.source`), + options: () => kvGetJSON(`${vatID}.options`), + currentSpan: () => + sql.get`select * from transcriptSpans where isCurrent = 1 and vatID = ${vatID}`, + }); + }; + + return Object.freeze({ + /** @param {string} vatName */ + findVat: vatName => { + /** @type {string[]} */ + const dynamicIDs = kvGetJSON('vat.dynamicIDs'); + const targetVat = dynamicIDs.find(vatID => + lookupVat(vatID).options().name.includes(vatName), + ); + if (!targetVat) throw Error(`vat not found: ${vatName}`); + return targetVat; + }, + /** @param {string} vatName */ + findVats: vatName => { + /** @type {string[]} */ + const dynamicIDs = kvGetJSON('vat.dynamicIDs'); + return dynamicIDs.filter(vatID => + lookupVat(vatID).options().name.includes(vatName), + ); + }, + lookupVat, + }); +}; + +/** @param {string} vatName */ +export const getDetailsMatchingVats = async vatName => { + const kStore = makeSwingstore( + dbOpenAmbient(swingstorePath, { readonly: true }), + ); + + const vatIDs = kStore.findVats(vatName); + const infos = []; + for (const vatID of vatIDs) { + const vatInfo = kStore.lookupVat(vatID); + const source = vatInfo.source(); + // @ts-expect-error cast + const { incarnation } = vatInfo.currentSpan(); + infos.push({ vatName, vatID, incarnation, ...source }); + } + + return infos; +}; diff --git a/a3p-integration/yarn.lock b/a3p-integration/yarn.lock index 64be7d6a2ce..43335d20a3f 100644 --- a/a3p-integration/yarn.lock +++ b/a3p-integration/yarn.lock @@ -69,6 +69,24 @@ __metadata: languageName: node linkType: hard +"@types/better-sqlite3@npm:^7.6.9": + version: 7.6.9 + resolution: "@types/better-sqlite3@npm:7.6.9" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/7d77add3993968982374cd73586a100fc5b9c29570a167b5798a415744983041d9ae3dcbdfd83fcf807247b777e3b8dc4e045fb7dae4a3d8484c9366ab371680 + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 20.11.30 + resolution: "@types/node@npm:20.11.30" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/867cfaf969c6d8850d8d7304e7ab739898a50ecb1395b61ff2335644f5f48d7a46fbc4a14cee967aed65ec134b61a746edae70d1f32f11321ccf29165e3bc4e6 + languageName: node + linkType: hard + "abbrev@npm:^2.0.0": version: 2.0.0 resolution: "abbrev@npm:2.0.0" @@ -973,6 +991,7 @@ __metadata: resolution: "root-workspace-0b6124@workspace:." dependencies: "@agoric/synthetic-chain": "npm:^0.0.10" + "@types/better-sqlite3": "npm:^7.6.9" languageName: unknown linkType: soft @@ -1190,6 +1209,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 + languageName: node + linkType: hard + "unique-filename@npm:^3.0.0": version: 3.0.0 resolution: "unique-filename@npm:3.0.0" diff --git a/docs/node-version.md b/docs/node-version.md index 33be5e6ab77..dbb274b0bc8 100644 --- a/docs/node-version.md +++ b/docs/node-version.md @@ -14,3 +14,4 @@ When a new version becomes Active LTS: - [ ] update the .node-version hint to use it - [ ] update Node.js test ranges to remove the EOLed version and add the new LTS - [ ] update package.json engines to allow the two LTS versions +- [ ] update README.md to document the new supported versions diff --git a/golang/cosmos/app/app.go b/golang/cosmos/app/app.go index 5f0c0cb70dd..1d456668cb2 100644 --- a/golang/cosmos/app/app.go +++ b/golang/cosmos/app/app.go @@ -914,6 +914,8 @@ func unreleasedUpgradeHandler(app *GaiaApp, targetUpgrade string) func(sdk.Conte "@agoric/builders/scripts/vats/updateStOsmoPriceFeed.js", "@agoric/builders/scripts/vats/updateStTiaPriceFeed.js", ), + // Add new auction contract. The old one will be retired shortly. + vm.CoreProposalStepForModules( "@agoric/builders/scripts/vats/add-auction.js"), } } diff --git a/golang/cosmos/x/vstorage/keeper/keeper.go b/golang/cosmos/x/vstorage/keeper/keeper.go index ff408ee69ff..28c97646f9e 100644 --- a/golang/cosmos/x/vstorage/keeper/keeper.go +++ b/golang/cosmos/x/vstorage/keeper/keeper.go @@ -52,14 +52,6 @@ var _ ChangeManager = (*BatchingChangeManager)(nil) // 2 ** 256 - 1 var MaxSDKInt = sdk.NewIntFromBigInt(new(big.Int).Sub(new(big.Int).Exp(big.NewInt(2), big.NewInt(256), nil), big.NewInt(1))) -// TODO: Use bytes.CutPrefix once we can rely upon go >= 1.20. -func cutPrefix(s, prefix []byte) (after []byte, found bool) { - if !bytes.HasPrefix(s, prefix) { - return s, false - } - return s[len(prefix):], true -} - // Keeper maintains the link to data storage and exposes getter/setter methods // for the various parts of the state machine type Keeper struct { @@ -164,7 +156,7 @@ func (k Keeper) ExportStorageFromPrefix(ctx sdk.Context, pathPrefix string) []*t if !strings.HasPrefix(path, pathPrefix) { continue } - value, hasPrefix := cutPrefix(rawValue, types.EncodedDataPrefix) + value, hasPrefix := bytes.CutPrefix(rawValue, types.EncodedDataPrefix) if !hasPrefix { panic(fmt.Errorf("value at path %q starts with unexpected prefix", path)) } @@ -266,7 +258,7 @@ func (k Keeper) GetEntry(ctx sdk.Context, path string) agoric.KVEntry { if bytes.Equal(rawValue, types.EncodedNoDataValue) { return agoric.NewKVEntryWithNoValue(path) } - value, hasPrefix := cutPrefix(rawValue, types.EncodedDataPrefix) + value, hasPrefix := bytes.CutPrefix(rawValue, types.EncodedDataPrefix) if !hasPrefix { panic(fmt.Errorf("value at path %q starts with unexpected prefix", path)) } diff --git a/package.json b/package.json index b1ba2aeafc8..11153111813 100644 --- a/package.json +++ b/package.json @@ -34,12 +34,12 @@ "type-coverage": "^2.27.1", "typedoc": "^0.25.13", "typedoc-plugin-markdown": "^3.17.1", - "typescript": "^5.5.0-dev.20240327", - "typescript-eslint": "^7.3.1" + "typescript": "^5.5.0-beta", + "typescript-eslint": "^7.7.1" }, "resolutions": { "**/protobufjs": "^7.2.6", - "**/@typescript-eslint/typescript-estree": "^7.2.0" + "**/@typescript-eslint/typescript-estree": "^7.7.1" }, "engines": { "node": "^18.12 || ^20.9" diff --git a/packages/boot/test/bootstrapTests/test-orchestration.ts b/packages/boot/test/bootstrapTests/test-orchestration.ts index a7d2cff9b55..6c67392d683 100644 --- a/packages/boot/test/bootstrapTests/test-orchestration.ts +++ b/packages/boot/test/bootstrapTests/test-orchestration.ts @@ -4,7 +4,7 @@ import type { TestFn } from 'ava'; import { Fail } from '@agoric/assert'; import { AmountMath } from '@agoric/ertp'; -import type { start as stakeBldStart } from '@agoric/orchestration/src/contracts/stakeBld.contract.js'; +import type { start as stakeBldStart } from '@agoric/orchestration/src/examples/stakeBld.contract.js'; import type { Instance } from '@agoric/zoe/src/zoeService/utils.js'; import { M, matches } from '@endo/patterns'; import { makeWalletFactoryContext } from './walletFactory.ts'; diff --git a/packages/builders/scripts/orchestration/init-stakeAtom.js b/packages/builders/scripts/orchestration/init-stakeAtom.js index 306834f34ab..9d96b937d01 100644 --- a/packages/builders/scripts/orchestration/init-stakeAtom.js +++ b/packages/builders/scripts/orchestration/init-stakeAtom.js @@ -16,9 +16,7 @@ export const defaultProposalBuilder = async ( { installKeys: { stakeAtom: publishRef( - install( - '@agoric/orchestration/src/contracts/stakeAtom.contract.js', - ), + install('@agoric/orchestration/src/examples/stakeAtom.contract.js'), ), }, hostConnectionId, diff --git a/packages/builders/scripts/orchestration/init-stakeBld.js b/packages/builders/scripts/orchestration/init-stakeBld.js index df380830007..cf4999e424d 100644 --- a/packages/builders/scripts/orchestration/init-stakeBld.js +++ b/packages/builders/scripts/orchestration/init-stakeBld.js @@ -10,7 +10,7 @@ export const defaultProposalBuilder = async ({ publishRef, install }) => { installKeys: { stakeBld: publishRef( - install('@agoric/orchestration/src/contracts/stakeBld.contract.js'), + install('@agoric/orchestration/src/examples/stakeBld.contract.js'), ), }, }, diff --git a/packages/builders/scripts/vats/add-auction.js b/packages/builders/scripts/vats/add-auction.js new file mode 100644 index 00000000000..8a248f17d17 --- /dev/null +++ b/packages/builders/scripts/vats/add-auction.js @@ -0,0 +1,14 @@ +import { makeHelpers } from '@agoric/deploy-script-support'; + +/** @type {import('@agoric/deploy-script-support/src/externalTypes.js').ProposalBuilder} */ +export const defaultProposalBuilder = async () => { + return harden({ + sourceSpec: '@agoric/inter-protocol/src/proposals/add-auction.js', + getManifestCall: ['getManifestForAddAuction'], + }); +}; + +export default async (homeP, endowments) => { + const { writeCoreProposal } = await makeHelpers(homeP, endowments); + await writeCoreProposal('add-auction', defaultProposalBuilder); +}; diff --git a/packages/cosmic-proto/package.json b/packages/cosmic-proto/package.json index 9e2db1fea14..36235b41784 100644 --- a/packages/cosmic-proto/package.json +++ b/packages/cosmic-proto/package.json @@ -100,7 +100,7 @@ "ava": "^5.3.1", "rimraf": "^5.0.0", "tsimp": "^2.0.11", - "typescript": "^5.5.0-dev.20240327" + "typescript": "^5.5.0-beta" }, "dependencies": { "@cosmjs/amino": "^0.32.3", diff --git a/packages/inter-protocol/src/proposals/add-auction.js b/packages/inter-protocol/src/proposals/add-auction.js new file mode 100644 index 00000000000..9bc60bcdb5f --- /dev/null +++ b/packages/inter-protocol/src/proposals/add-auction.js @@ -0,0 +1,177 @@ +import { deeplyFulfilledObject, makeTracer } from '@agoric/internal'; +import { makeStorageNodeChild } from '@agoric/internal/src/lib-chainStorage.js'; +import { E } from '@endo/far'; +import { Stable } from '@agoric/internal/src/tokens.js'; +import { makeGovernedTerms as makeGovernedATerms } from '../auction/params.js'; + +const trace = makeTracer('NewAuction', true); + +/** @param {import('./econ-behaviors.js').EconomyBootstrapPowers} powers */ +export const addAuction = async ({ + consume: { + zoe, + board, + chainTimerService, + priceAuthority, + chainStorage, + economicCommitteeCreatorFacet: electorateCreatorFacet, + auctioneerKit: legacyKitP, + }, + produce: { newAuctioneerKit }, + instance: { + consume: { reserve: reserveInstance }, + }, + installation: { + consume: { + auctioneer: auctionInstallation, + contractGovernor: contractGovernorInstallation, + }, + }, + issuer: { + consume: { [Stable.symbol]: stableIssuerP }, + }, +}) => { + trace('addAuction start'); + const STORAGE_PATH = 'auction'; + + const poserInvitationP = E(electorateCreatorFacet).getPoserInvitation(); + + const [ + initialPoserInvitation, + electorateInvitationAmount, + stableIssuer, + legacyKit, + ] = await Promise.all([ + poserInvitationP, + E(E(zoe).getInvitationIssuer()).getAmountOf(poserInvitationP), + stableIssuerP, + legacyKitP, + ]); + + // Each field has an extra layer of type + value: + // AuctionStartDelay: { type: 'relativeTime', value: { relValue: 2n, timerBrand: Object [Alleged: timerBrand] {} } } + /** @type {any} */ + const paramValues = await E(legacyKit.publicFacet).getGovernedParams(); + const params = harden({ + StartFrequency: paramValues.StartFrequency.value, + ClockStep: paramValues.ClockStep.value, + StartingRate: paramValues.StartingRate.value, + LowestRate: paramValues.LowestRate.value, + DiscountStep: paramValues.DiscountStep.value, + AuctionStartDelay: paramValues.AuctionStartDelay.value, + PriceLockPeriod: paramValues.PriceLockPeriod.value, + }); + const timerBrand = await E(chainTimerService).getTimerBrand(); + + const storageNode = await makeStorageNodeChild(chainStorage, STORAGE_PATH); + const marshaller = await E(board).getReadonlyMarshaller(); + + const reservePublicFacet = await E(zoe).getPublicFacet(reserveInstance); + + const auctionTerms = makeGovernedATerms( + { storageNode, marshaller }, + chainTimerService, + priceAuthority, + reservePublicFacet, + { + ...params, + ElectorateInvitationAmount: electorateInvitationAmount, + TimerBrand: timerBrand, + }, + ); + + const governorTerms = await deeplyFulfilledObject( + harden({ + timer: chainTimerService, + governedContractInstallation: auctionInstallation, + governed: { + terms: auctionTerms, + issuerKeywordRecord: { Bid: stableIssuer }, + storageNode, + marshaller, + label: 'auctioneer', + }, + }), + ); + + /** @type {GovernorStartedInstallationKit} */ + const governorStartResult = await E(zoe).startInstance( + contractGovernorInstallation, + undefined, + governorTerms, + harden({ + electorateCreatorFacet, + governed: { + initialPoserInvitation, + storageNode, + marshaller, + }, + }), + 'auctioneer.governor', + ); + + const [governedInstance, governedCreatorFacet, governedPublicFacet] = + await Promise.all([ + E(governorStartResult.creatorFacet).getInstance(), + E(governorStartResult.creatorFacet).getCreatorFacet(), + E(governorStartResult.creatorFacet).getPublicFacet(), + ]); + + const allIssuers = await E(zoe).getIssuers(legacyKit.instance); + const { Bid: _istIssuer, ...auctionIssuers } = allIssuers; + await Promise.all( + Object.keys(auctionIssuers).map(kwd => + E(governedCreatorFacet).addBrand(auctionIssuers[kwd], kwd), + ), + ); + + // don't overwrite auctioneerKit yet + newAuctioneerKit.resolve( + harden({ + label: 'auctioneer', + creatorFacet: governedCreatorFacet, + adminFacet: governorStartResult.adminFacet, + publicFacet: governedPublicFacet, + instance: governedInstance, + + governor: governorStartResult.instance, + governorCreatorFacet: governorStartResult.creatorFacet, + governorAdminFacet: governorStartResult.adminFacet, + }), + ); + // don't replace auction instance yet. +}; + +export const ADD_AUCTION_MANIFEST = harden({ + [addAuction.name]: { + consume: { + zoe: true, + board: true, + chainTimerService: true, + priceAuthority: true, + chainStorage: true, + economicCommitteeCreatorFacet: true, + auctioneerKit: true, + }, + produce: { + newAuctioneerKit: true, + }, + instance: { + consume: { reserve: true }, + }, + installation: { + consume: { + auctioneer: true, + contractGovernor: true, + }, + }, + issuer: { + consume: { [Stable.symbol]: true }, + }, + }, +}); + +/* Add a new auction to a chain that already has one. */ +export const getManifestForAddAuction = async () => { + return { manifest: ADD_AUCTION_MANIFEST }; +}; diff --git a/packages/inter-protocol/src/proposals/econ-behaviors.js b/packages/inter-protocol/src/proposals/econ-behaviors.js index 5b669fd31a4..a63685a9017 100644 --- a/packages/inter-protocol/src/proposals/econ-behaviors.js +++ b/packages/inter-protocol/src/proposals/econ-behaviors.js @@ -64,6 +64,7 @@ export const SECONDS_PER_WEEK = 7n * SECONDS_PER_DAY; * >; * vaultFactoryKit: GovernanceFacetKit; * auctioneerKit: AuctioneerKit; + * newAuctioneerKit: AuctioneerKit; * minInitialDebt: NatValue; * }>} EconomyBootstrapSpace */ diff --git a/packages/orchestration/README.md b/packages/orchestration/README.md index 19d382cd9c2..3050f95c7da 100644 --- a/packages/orchestration/README.md +++ b/packages/orchestration/README.md @@ -1,4 +1,5 @@ # Orchestration +Build feature-rich applications that can orchestrate assets and services across the interchain. -Interface for Cosmos Interchain Accounts [(ICS-27)](https://github.com/cosmos/ibc/blob/main/spec/app/ics-027-interchain-accounts/README.md). +Usage examples can be found under [src/examples](https://github.com/Agoric/agoric-sdk/tree/master/packages/orchestration/src/examples). They are exported for integration testing with other packages. diff --git a/packages/orchestration/src/contracts/stakeAtom.contract.js b/packages/orchestration/src/examples/stakeAtom.contract.js similarity index 92% rename from packages/orchestration/src/contracts/stakeAtom.contract.js rename to packages/orchestration/src/examples/stakeAtom.contract.js index becca5d5919..614061cde5b 100644 --- a/packages/orchestration/src/contracts/stakeAtom.contract.js +++ b/packages/orchestration/src/examples/stakeAtom.contract.js @@ -7,7 +7,7 @@ import { makeDurableZone } from '@agoric/zone/durable.js'; import { V as E } from '@agoric/vat-data/vow.js'; import { M } from '@endo/patterns'; import { prepareRecorderKitMakers } from '@agoric/zoe/src/contractSupport'; -import { prepareStakingAccountHolder } from './stakingAccountHolder.js'; +import { prepareStakingAccountKit } from '../exos/stakingAccountKit.js'; const trace = makeTracer('StakeAtom'); /** @@ -41,7 +41,7 @@ export const start = async (zcf, privateArgs, baggage) => { const { makeRecorderKit } = prepareRecorderKitMakers(baggage, marshaller); - const makeStakingAccountHolder = prepareStakingAccountHolder( + const makeStakingAccountKit = prepareStakingAccountKit( baggage, makeRecorderKit, zcf, @@ -54,7 +54,7 @@ export const start = async (zcf, privateArgs, baggage) => { ); const accountAddress = await E(account).getAccountAddress(); trace('account address', accountAddress); - const { holder, invitationMakers } = makeStakingAccountHolder( + const { holder, invitationMakers } = makeStakingAccountKit( account, storageNode, accountAddress, diff --git a/packages/orchestration/src/contracts/stakeBld.contract.js b/packages/orchestration/src/examples/stakeBld.contract.js similarity index 91% rename from packages/orchestration/src/contracts/stakeBld.contract.js rename to packages/orchestration/src/examples/stakeBld.contract.js index 195f9ae5686..57a37c7ebd2 100644 --- a/packages/orchestration/src/contracts/stakeBld.contract.js +++ b/packages/orchestration/src/examples/stakeBld.contract.js @@ -10,7 +10,7 @@ import { M } from '@endo/patterns'; import { E } from '@endo/far'; import { prepareRecorderKitMakers } from '@agoric/zoe/src/contractSupport/recorder.js'; import { atomicTransfer } from '@agoric/zoe/src/contractSupport/atomicTransfer.js'; -import { prepareAccountHolder } from './localchainAccountHolder.js'; +import { prepareLocalchainAccountKit } from '../exos/localchainAccountKit.js'; const trace = makeTracer('StakeBld'); @@ -35,7 +35,7 @@ export const start = async (zcf, privateArgs, baggage) => { baggage, privateArgs.marshaller, ); - const makeAccountHolderKit = prepareAccountHolder( + const makeLocalchainAccountKit = prepareLocalchainAccountKit( baggage, makeRecorderKit, zcf, @@ -56,7 +56,7 @@ export const start = async (zcf, privateArgs, baggage) => { await E(lcaSeatKit.userSeat).tryExit(); trace('awaiting payouts'); const payouts = await E(lcaSeatKit.userSeat).getPayouts(); - const { holder, invitationMakers } = makeAccountHolderKit( + const { holder, invitationMakers } = makeLocalchainAccountKit( account, privateArgs.storageNode, ); diff --git a/packages/orchestration/src/contracts/swapExample.contract.js b/packages/orchestration/src/examples/swapExample.contract.js similarity index 100% rename from packages/orchestration/src/contracts/swapExample.contract.js rename to packages/orchestration/src/examples/swapExample.contract.js diff --git a/packages/orchestration/src/contracts/unbondExample.contract.js b/packages/orchestration/src/examples/unbondExample.contract.js similarity index 100% rename from packages/orchestration/src/contracts/unbondExample.contract.js rename to packages/orchestration/src/examples/unbondExample.contract.js diff --git a/packages/orchestration/src/contracts/localchainAccountHolder.js b/packages/orchestration/src/exos/localchainAccountKit.js similarity index 96% rename from packages/orchestration/src/contracts/localchainAccountHolder.js rename to packages/orchestration/src/exos/localchainAccountKit.js index e268c38d2d6..7a023a96844 100644 --- a/packages/orchestration/src/contracts/localchainAccountHolder.js +++ b/packages/orchestration/src/exos/localchainAccountKit.js @@ -40,7 +40,7 @@ const PUBLIC_TOPICS = { * @param {import('@agoric/zoe/src/contractSupport/recorder.js').MakeRecorderKit} makeRecorderKit * @param {ZCF} zcf */ -export const prepareAccountHolder = (baggage, makeRecorderKit, zcf) => { +export const prepareLocalchainAccountKit = (baggage, makeRecorderKit, zcf) => { const makeAccountHolderKit = prepareExoClassKit( baggage, 'Account Holder', @@ -152,3 +152,4 @@ export const prepareAccountHolder = (baggage, makeRecorderKit, zcf) => { ); return makeAccountHolderKit; }; +/** @typedef {ReturnType>} LocalchainAccountKit */ diff --git a/packages/orchestration/src/contracts/stakingAccountHolder.js b/packages/orchestration/src/exos/stakingAccountKit.js similarity index 96% rename from packages/orchestration/src/contracts/stakingAccountHolder.js rename to packages/orchestration/src/exos/stakingAccountKit.js index 497a3536b00..3df1c3019b2 100644 --- a/packages/orchestration/src/contracts/stakingAccountHolder.js +++ b/packages/orchestration/src/exos/stakingAccountKit.js @@ -54,8 +54,8 @@ const PUBLIC_TOPICS = { * @param {MakeRecorderKit} makeRecorderKit * @param {ZCF} zcf */ -export const prepareStakingAccountHolder = (baggage, makeRecorderKit, zcf) => { - const makeAccountHolderKit = prepareExoClassKit( +export const prepareStakingAccountKit = (baggage, makeRecorderKit, zcf) => { + const makeStakingAccountKit = prepareExoClassKit( baggage, 'Staking Account Holder', { @@ -193,5 +193,6 @@ export const prepareStakingAccountHolder = (baggage, makeRecorderKit, zcf) => { }, }, ); - return makeAccountHolderKit; + return makeStakingAccountKit; }; +/** @typedef {ReturnType>} StakingAccountKit */ diff --git a/packages/orchestration/src/proposals/start-stakeAtom.js b/packages/orchestration/src/proposals/start-stakeAtom.js index c41e07b486d..13aa78b1580 100644 --- a/packages/orchestration/src/proposals/start-stakeAtom.js +++ b/packages/orchestration/src/proposals/start-stakeAtom.js @@ -3,12 +3,12 @@ import { makeTracer } from '@agoric/internal'; import { makeStorageNodeChild } from '@agoric/internal/src/lib-chainStorage.js'; import { E } from '@endo/far'; -/** @import { StakeAtomSF, StakeAtomTerms} from '../contracts/stakeAtom.contract' */ +/** @import { StakeAtomSF, StakeAtomTerms} from '../examples/stakeAtom.contract' */ const trace = makeTracer('StartStakeAtom', true); /** - * @param {BootstrapPowers & { installation: {consume: {stakeAtom: Installation}}}} powers + * @param {BootstrapPowers & { installation: {consume: {stakeAtom: Installation}}}} powers * @param {{options: StakeAtomTerms }} options */ export const startStakeAtom = async ( diff --git a/packages/orchestration/src/proposals/start-stakeBld.js b/packages/orchestration/src/proposals/start-stakeBld.js index 66a49603c7f..f70a4b12a35 100644 --- a/packages/orchestration/src/proposals/start-stakeBld.js +++ b/packages/orchestration/src/proposals/start-stakeBld.js @@ -6,7 +6,7 @@ import { E } from '@endo/far'; const trace = makeTracer('StartStakeBld', true); /** - * @param {BootstrapPowers & {installation: {consume: {stakeBld: Installation}}}} powers + * @param {BootstrapPowers & {installation: {consume: {stakeBld: Installation}}}} powers */ export const startStakeBld = async ({ consume: { board, chainStorage, localchain, startUpgradable }, @@ -29,7 +29,7 @@ export const startStakeBld = async ({ const marshaller = await E(board).getPublishingMarshaller(); // FIXME this isn't detecting missing privateArgs - /** @type {StartUpgradableOpts} */ + /** @type {StartUpgradableOpts} */ const startOpts = { label: 'stakeBld', installation: stakeBld, diff --git a/packages/orchestration/typedoc.json b/packages/orchestration/typedoc.json index 3d381684efd..866c621516e 100644 --- a/packages/orchestration/typedoc.json +++ b/packages/orchestration/typedoc.json @@ -2,5 +2,7 @@ "extends": [ "../../typedoc.base.json" ], - "entryPoints": [] + "entryPoints": [ + "index.js", + ] } diff --git a/scripts/agd-builder.sh b/scripts/agd-builder.sh index deb173bdbc0..e55a4173c3e 100755 --- a/scripts/agd-builder.sh +++ b/scripts/agd-builder.sh @@ -187,7 +187,7 @@ $do_not_build || ( files=(package.json) while IFS= read -r line; do files+=("$line") - done < <(lazy_yarn -s workspaces info \ + done < <(npm query .workspace \ | sed -ne '/"location":/{ s/.*": "//; s!",.*!/package.json!; p; }') src=$(find "${files[@]}" "${print[@]}" | head -1 || true) diff --git a/scripts/get-packed-versions.sh b/scripts/get-packed-versions.sh index 621109965a6..ecaf970ee8d 100755 --- a/scripts/get-packed-versions.sh +++ b/scripts/get-packed-versions.sh @@ -19,12 +19,13 @@ WORKDIR=${1:-.} cd -- "$WORKDIR" 1>&2 # Install and build the source directory. +corepack enable yarn install 1>&2 yarn build 1>&2 yarn lerna run build:types 1>&2 -yarn --silent workspaces info | jq -r '.[].location' | while read -r dir; do +npm query .workspace | jq -r '.[].location' | while read -r dir; do # Skip private packages. echo "dir=$dir" 1>&2 test "$(jq .private < "$dir/package.json")" != true || continue @@ -36,7 +37,7 @@ yarn --silent workspaces info | jq -r '.[].location' | while read -r dir; do name=$(jq -r .name < package.json) version=$(jq -r .version < package.json) stem=$(echo "$name" | sed -e 's!^@!!; s!/!-!g;') - file="$(pwd)/${stem}-v${version}.tgz" + file="$(pwd)/package.tgz" # Clean up. rm -f "${stem}"-v*.tgz diff --git a/scripts/get-versions.sh b/scripts/get-versions.sh index b91cb8773c0..7495a8035c0 100755 --- a/scripts/get-versions.sh +++ b/scripts/get-versions.sh @@ -5,7 +5,7 @@ set -ueo pipefail WORKDIR=${1:-.} cd -- "$WORKDIR" -yarn workspaces --json info \ - | jq -r '.data | fromjson | .[].location | "\(.)/package.json"' \ +npm query .workspace \ + | jq -r '.[].location | "\(.)/package.json"' \ | xargs jq '{key: .name, value: "^\(.version)"}' \ | jq --slurp from_entries diff --git a/scripts/replace-packages.sh b/scripts/replace-packages.sh index 534647d730c..dc934a93cec 100755 --- a/scripts/replace-packages.sh +++ b/scripts/replace-packages.sh @@ -14,7 +14,7 @@ DSTDIR=${2-$PWD/node_modules} pushd "$SRCDIR" yarn install yarn build -yarn --silent workspaces info | jq -r '.[].location' | while read -r dir; do +npm query .workspace | jq -r '.[].location' | while read -r dir; do # Skip private packages. test "$(jq .private < "$dir/package.json")" != true || continue diff --git a/scripts/set-versions.sh b/scripts/set-versions.sh index a1aa3cdbf01..aa7e395a02e 100755 --- a/scripts/set-versions.sh +++ b/scripts/set-versions.sh @@ -11,8 +11,8 @@ cd -- "${1-"$DIR/.."}" VERSIONSHASH=$(git hash-object -w --stdin) -yarn workspaces --json info \ - | jq -r '.data | fromjson | .[].location | "\(.)/package.json"' \ +npm query .workspace \ + | jq -r '.[].location | "\(.)/package.json"' \ | while read PACKAGEJSON; do PACKAGEJSONHASH=$( jq --slurpfile versions <(git cat-file blob "$VERSIONSHASH") ' diff --git a/yarn.lock b/yarn.lock index b1bd55e8f2c..a06fdbccfad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1857,6 +1857,11 @@ dependencies: eslint-visitor-keys "^3.3.0" +"@eslint-community/regexpp@^4.10.0": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": version "4.6.2" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" @@ -3463,7 +3468,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.11", "@types/json-schema@^7.0.12": +"@types/json-schema@*", "@types/json-schema@^7.0.11", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -3601,6 +3606,11 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== +"@types/semver@^7.5.8": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + "@types/send@*": version "0.17.1" resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" @@ -3661,6 +3671,23 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/eslint-plugin@7.7.1": + version "7.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz#50a9044e3e5fe76b22caf64fb7fc1f97614bdbfd" + integrity sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "7.7.1" + "@typescript-eslint/type-utils" "7.7.1" + "@typescript-eslint/utils" "7.7.1" + "@typescript-eslint/visitor-keys" "7.7.1" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + semver "^7.6.0" + ts-api-utils "^1.3.0" + "@typescript-eslint/parser@7.3.1", "@typescript-eslint/parser@^7.0.1": version "7.3.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.3.1.tgz#c4ba7dc2744318a5e4506596cbc3a0086255c526" @@ -3672,6 +3699,17 @@ "@typescript-eslint/visitor-keys" "7.3.1" debug "^4.3.4" +"@typescript-eslint/parser@7.7.1": + version "7.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.7.1.tgz#f940e9f291cdca40c46cb75916217d3a42d6ceea" + integrity sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw== + dependencies: + "@typescript-eslint/scope-manager" "7.7.1" + "@typescript-eslint/types" "7.7.1" + "@typescript-eslint/typescript-estree" "7.7.1" + "@typescript-eslint/visitor-keys" "7.7.1" + debug "^4.3.4" + "@typescript-eslint/scope-manager@7.3.1": version "7.3.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz#73fd0cb4211a7be23e49e5b6efec8820caa6ec36" @@ -3680,6 +3718,14 @@ "@typescript-eslint/types" "7.3.1" "@typescript-eslint/visitor-keys" "7.3.1" +"@typescript-eslint/scope-manager@7.7.1": + version "7.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz#07fe59686ca843f66e3e2b5c151522bc38effab2" + integrity sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA== + dependencies: + "@typescript-eslint/types" "7.7.1" + "@typescript-eslint/visitor-keys" "7.7.1" + "@typescript-eslint/type-utils@7.3.1": version "7.3.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz#cbf90d3d7e788466aa8a5c0ab3f46103f098aa0d" @@ -3690,29 +3736,39 @@ debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/types@7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.2.0.tgz#0feb685f16de320e8520f13cca30779c8b7c403f" - integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA== +"@typescript-eslint/type-utils@7.7.1": + version "7.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz#2f8094edca3bebdaad009008929df645ed9c8743" + integrity sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q== + dependencies: + "@typescript-eslint/typescript-estree" "7.7.1" + "@typescript-eslint/utils" "7.7.1" + debug "^4.3.4" + ts-api-utils "^1.3.0" "@typescript-eslint/types@7.3.1": version "7.3.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.3.1.tgz#ae104de8efa4227a462c0874d856602c5994413c" integrity sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw== -"@typescript-eslint/typescript-estree@7.3.1", "@typescript-eslint/typescript-estree@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz#5beda2876c4137f8440c5a84b4f0370828682556" - integrity sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA== +"@typescript-eslint/types@7.7.1": + version "7.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.7.1.tgz#f903a651fb004c75add08e4e9e207f169d4b98d7" + integrity sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w== + +"@typescript-eslint/typescript-estree@7.3.1", "@typescript-eslint/typescript-estree@7.7.1", "@typescript-eslint/typescript-estree@^7.7.1": + version "7.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz#5cafde48fe390fe1c1b329b2ce0ba8a73c1e87b2" + integrity sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ== dependencies: - "@typescript-eslint/types" "7.2.0" - "@typescript-eslint/visitor-keys" "7.2.0" + "@typescript-eslint/types" "7.7.1" + "@typescript-eslint/visitor-keys" "7.7.1" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" "@typescript-eslint/utils@7.3.1": version "7.3.1" @@ -3727,13 +3783,18 @@ "@typescript-eslint/typescript-estree" "7.3.1" semver "^7.5.4" -"@typescript-eslint/visitor-keys@7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz#5035f177752538a5750cca1af6044b633610bf9e" - integrity sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A== +"@typescript-eslint/utils@7.7.1": + version "7.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.7.1.tgz#5d161f2b4a55e1bc38b634bebb921e4bd4e4a16e" + integrity sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ== dependencies: - "@typescript-eslint/types" "7.2.0" - eslint-visitor-keys "^3.4.1" + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.15" + "@types/semver" "^7.5.8" + "@typescript-eslint/scope-manager" "7.7.1" + "@typescript-eslint/types" "7.7.1" + "@typescript-eslint/typescript-estree" "7.7.1" + semver "^7.6.0" "@typescript-eslint/visitor-keys@7.3.1": version "7.3.1" @@ -3743,6 +3804,14 @@ "@typescript-eslint/types" "7.3.1" eslint-visitor-keys "^3.4.1" +"@typescript-eslint/visitor-keys@7.7.1": + version "7.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz#da2294796220bb0f3b4add5ecbb1b9c3f4f65798" + integrity sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw== + dependencies: + "@typescript-eslint/types" "7.7.1" + eslint-visitor-keys "^3.4.3" + "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" @@ -7050,6 +7119,11 @@ ignore@^5.0.4, ignore@^5.0.5, ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== +ignore@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -8658,7 +8732,7 @@ minimatch@5.1.0: dependencies: brace-expansion "^2.0.1" -"minimatch@6 || 7 || 8 || 9", minimatch@9.0.3, minimatch@^9.0.1, minimatch@^9.0.3: +"minimatch@6 || 7 || 8 || 9", minimatch@^9.0.1, minimatch@^9.0.3: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== @@ -8679,6 +8753,13 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.4: + version "9.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -11290,6 +11371,11 @@ ts-api-utils@^1.0.1: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.2.1.tgz#f716c7e027494629485b21c0df6180f4d08f5e8b" integrity sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA== +ts-api-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + ts-api-utils@~1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" @@ -11532,15 +11618,24 @@ typescript-eslint@^7.3.1: "@typescript-eslint/eslint-plugin" "7.3.1" "@typescript-eslint/parser" "7.3.1" +typescript-eslint@^7.7.1: + version "7.7.1" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-7.7.1.tgz#16f82e83bb0955af02f258cb7a9de59e1bfb8706" + integrity sha512-ykEBfa3xx3odjZy6GRED4SCPrjo0rgHwstLlEgLX4EMEuv7QeIDSmfV+S6Kk+XkbsYn4BDEcPvsci1X26lRpMQ== + dependencies: + "@typescript-eslint/eslint-plugin" "7.7.1" + "@typescript-eslint/parser" "7.7.1" + "@typescript-eslint/utils" "7.7.1" + "typescript@^3 || ^4": version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== -typescript@^5.5.0-dev.20240327, typescript@~5.5.0-dev.20240327: - version "5.5.0-dev.20240404" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.0-dev.20240404.tgz#4047a68369753dbec926e3fe2db939ca3bc06168" - integrity sha512-Knb9Yx0JJHc0mmqXLEPPKNSwOvPQrtYZEDLQY7Wns7LckkQl82AZ+OGTPG/ofwqx2QeDCHCtKjutZPy1UEiwKA== +typescript@^5.5.0-beta, typescript@~5.5.0-dev.20240327: + version "5.5.0-dev.20240426" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.0-dev.20240426.tgz#e9ba7d0b3cdaa54021faca61d1bc399e4766c93b" + integrity sha512-96cu+y3DrjSNhNSgB3t3nRiesCwBVjZpbjJ6DcQoCgt0crXXPrOMmJQH/E8TZ41U4JzaULD+cB1Z2owh5HANew== uglify-js@^3.1.4: version "3.17.4"