diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index af87978bfd..16419e9c4c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -46,6 +46,9 @@ jobs: - testnet: parisnet testnet_uppercase: PARISNET rpc_url: https://parisnet.ecadinfra.com + - testnet: quebecanet + testnet_uppercase: QUEBECANET + rpc_url: https://quebecanet.ecadinfra.com steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 @@ -63,28 +66,4 @@ jobs: run: npm -w integration-tests run test:${{ matrix.testnet }} -- --maxWorkers=4 env: # Ternary operator workaround - TEZOS_RPC_${{ matrix.testnet_uppercase }}: ${{ github.event.pull_request.head.repo.fork && matrix.rpc_url || null }} - integration-tests-testnet-quebecA-secret-key: - runs-on: ubuntu-latest - continue-on-error: true - strategy: - matrix: - include: - - testnet: betanet - testnet_uppercase: BETANET - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: lts/hydrogen - - run: npm ci - - run: npm run build - - if: ${{ !github.event.pull_request.head.repo.fork }} - name: Tailscale - uses: tailscale/github-action@v1 - with: - authkey: ${{ secrets.TAILSCALE_AUTHKEY }} - version: 1.32.2 - - run: npm -w integration-tests run test:betanet-secret-key - env: - RUN_${{ matrix.testnet_uppercase }}_WITH_SECRET_KEY: true \ No newline at end of file + TEZOS_RPC_${{ matrix.testnet_uppercase }}: ${{ github.event.pull_request.head.repo.fork && matrix.rpc_url || null }} \ No newline at end of file diff --git a/integration-tests/__tests__/contract/estimation-tests.spec.ts b/integration-tests/__tests__/contract/estimation-tests.spec.ts index e82d62dc22..383f14ac40 100644 --- a/integration-tests/__tests__/contract/estimation-tests.spec.ts +++ b/integration-tests/__tests__/contract/estimation-tests.spec.ts @@ -95,14 +95,14 @@ CONFIGS().forEach(({ lib, setup, knownBaker, createAddress, rpc }) => { it('Verify .estimate.transfer for internal transfer to allocated implicit', async () => { const tx = contract.methods.do(MANAGER_LAMBDA.transferImplicit(knownBaker, 5)).toTransferParams(); const estimate = await LowAmountTez.estimate.transfer(tx); - expect(estimate.gasLimit).toEqual(1457); + expect(estimate.gasLimit).toEqual(1456); expect(estimate.storageLimit).toEqual(0); expect(estimate.suggestedFeeMutez).toEqual(394); expect(estimate.burnFeeMutez).toEqual(0); expect(estimate.minimalFeeMutez).toEqual(374); expect(estimate.totalCost).toEqual(374); expect(estimate.usingBaseFeeMutez).toEqual(374); - expect(estimate.consumedMilligas).toEqual(1456056); + expect(estimate.consumedMilligas).toEqual(1455970); }); it('Verify .estimate.transfer for multiple internal transfers to unallocated account', async () => { @@ -119,7 +119,7 @@ CONFIGS().forEach(({ lib, setup, knownBaker, createAddress, rpc }) => { expect(estimate.minimalFeeMutez).toEqual(445); expect(estimate.totalCost).toEqual(133945); expect(estimate.usingBaseFeeMutez).toEqual(445); - expect(estimate.consumedMilligas).toEqual(1570585); + expect(estimate.consumedMilligas).toEqual(1570499); }); it('Verify .estimate.transfer for internal origination', async () => { @@ -132,7 +132,7 @@ CONFIGS().forEach(({ lib, setup, knownBaker, createAddress, rpc }) => { expect(estimate.minimalFeeMutez).toEqual(421); expect(estimate.totalCost).toEqual(84671); expect(estimate.usingBaseFeeMutez).toEqual(421); - expect(estimate.consumedMilligas).toEqual(1866680); + expect(estimate.consumedMilligas).toEqual(1866594); }); it('Verify .estimate.transfer for multiple internal originations', async () => { @@ -145,7 +145,7 @@ CONFIGS().forEach(({ lib, setup, knownBaker, createAddress, rpc }) => { expect(estimate.minimalFeeMutez).toEqual(539); expect(estimate.totalCost).toEqual(164039); expect(estimate.usingBaseFeeMutez).toEqual(539); - expect(estimate.consumedMilligas).toEqual(2391833); + expect(estimate.consumedMilligas).toEqual(2391747); // Do the actual operation const op2 = await contract.methods.do(originate2()).send(); await op2.confirmation(); diff --git a/integration-tests/__tests__/contract/operations/failing-noop.spec.ts b/integration-tests/__tests__/contract/operations/failing-noop.spec.ts index 20a140d370..8eb825cd7e 100644 --- a/integration-tests/__tests__/contract/operations/failing-noop.spec.ts +++ b/integration-tests/__tests__/contract/operations/failing-noop.spec.ts @@ -7,7 +7,7 @@ CONFIGS().forEach(({ setup, rpc, lib }) => { let signerAlice = new InMemorySigner('edsk3QoqBuvdamxouPhin7swCvkQNgq4jP5KZPbwWNnwdZpSpJiEbq') describe(`Test failing_noop through wallet api using: ${rpc}`, () => { - let Tezos = lib + const Tezos = lib beforeAll(async () => { setup(true) if (rpc.includes('paris')) { diff --git a/integration-tests/__tests__/contract/operations/staking.spec.ts b/integration-tests/__tests__/contract/operations/staking.spec.ts index ff720f3065..2033bcb8ea 100644 --- a/integration-tests/__tests__/contract/operations/staking.spec.ts +++ b/integration-tests/__tests__/contract/operations/staking.spec.ts @@ -6,7 +6,7 @@ CONFIGS().forEach(({ lib, rpc, setup, knownBaker }) => { beforeAll(async () => { await setup(true); - // There is no baker accept staking in betanet and weeklylnet hence tests will fail + // There is no baker accept staking in quebecanet and weeklylnet hence tests will fail // Currently TF is a baker that allows staking on parisnet. if (rpc.includes('paris')) { knownBaker = 'tz3Q67aMz7gSMiQRcW729sXSfuMtkyAHYfqc' // TF diff --git a/integration-tests/__tests__/rpc/get-protocol-constants.spec.ts b/integration-tests/__tests__/rpc/get-protocol-constants.spec.ts index 0d44678e83..09fe798292 100644 --- a/integration-tests/__tests__/rpc/get-protocol-constants.spec.ts +++ b/integration-tests/__tests__/rpc/get-protocol-constants.spec.ts @@ -6,7 +6,7 @@ import { ConstantsResponseProto020, ConstantsResponseProto021 } from '@taquito/r CONFIGS().forEach(({ lib, protocol, rpc, networkType }) => { const Tezos = lib; const parisnet = (networkType == NetworkType.TESTNET && protocol === Protocols.PsParisCZ) ? test : test.skip; - const betanet = (networkType == NetworkType.TESTNET && protocol === Protocols.PtBetaaEZ) ? test : test.skip; + const quebecanet = (networkType == NetworkType.TESTNET && protocol === Protocols.PsquebeCa) ? test : test.skip; const weeklynet = (networkType == NetworkType.TESTNET && protocol === Protocols.ProtoALpha) ? test : test.skip; describe('Test fetching constants for all protocols on Mainnet', () => { const rpcUrl = 'https://mainnet.ecadinfra.com/'; @@ -304,7 +304,7 @@ CONFIGS().forEach(({ lib, protocol, rpc, networkType }) => { }); }); - betanet(`should successfully fetch all constants for Betanet + quebecanet(`should successfully fetch all constants for quebecanet using ${rpc}`, async () => { Tezos.setRpcProvider(rpc); const constants: ConstantsResponseProto021 = await Tezos.rpc.getConstants(); @@ -443,7 +443,7 @@ CONFIGS().forEach(({ lib, protocol, rpc, networkType }) => { smart_rollup_riscv_pvm_enable: true, smart_rollup_stake_amount: '32000000', smart_rollup_timeout_period_in_blocks: 781, - testnet_dictator: 'tz1Xf8zdT3DbAX9cHw3c3CXh79rc4nK4gCe8', + testnet_dictator: 'tz1e1TX7KghsqWUBXWmBTAAtPK3W6JTbNc82', vdf_difficulty: new BigNumber(10000000), zk_rollup_enable: true, zk_rollup_max_ticket_payload_size: 2048, diff --git a/integration-tests/__tests__/rpc/nodes.spec.ts b/integration-tests/__tests__/rpc/nodes.spec.ts index af9ae2ae07..1dc077bcc7 100644 --- a/integration-tests/__tests__/rpc/nodes.spec.ts +++ b/integration-tests/__tests__/rpc/nodes.spec.ts @@ -19,8 +19,8 @@ CONFIGS().forEach( knownViewContract, }) => { const Tezos = lib; - const unrestrictedRPCNode = rpc.endsWith("ecadinfra.com") ? test.skip : test; - const betanet = protocol === Protocols.PtBetaaEZ ? test : test.skip; + const unrestrictedRPCNode = rpc.includes("i.ecadinfra.com") ? test : test.skip; + const quebecanet = protocol === Protocols.PsquebeCa ? test : test.skip; let ticketContract: DefaultContractType; beforeAll(async () => { @@ -66,7 +66,7 @@ CONFIGS().forEach( expect(balance).toBeDefined(); }); - betanet(`Verify that rpcClient.getSpendable for knownBaker returns the spendable balance excluding frozen bonds`, async () => { + quebecanet(`Verify that rpcClient.getSpendable for knownBaker returns the spendable balance excluding frozen bonds`, async () => { const balance = await rpcClient.getSpendable(knownBaker); expect(balance).toBeDefined(); }); @@ -76,7 +76,7 @@ CONFIGS().forEach( expect(balance).toBeDefined(); }); - betanet(`Verify that rpcClient.getSpendableAndFrozenBonds for knownBaker returns the full balance`, async () => { + quebecanet(`Verify that rpcClient.getSpendableAndFrozenBonds for knownBaker returns the full balance`, async () => { const balance = await rpcClient.getSpendableAndFrozenBonds(knownBaker); expect(balance).toBeDefined(); }); @@ -165,7 +165,7 @@ CONFIGS().forEach( expect(bigMapValue).toBeDefined(); }); - it(`Verify that rpcClient.getAllDelegates returns all delegates from RPC`, async () => { + unrestrictedRPCNode(`Verify that rpcClient.getAllDelegates returns all delegates from RPC`, async () => { const allDelegates = await rpcClient.getAllDelegates(); expect(allDelegates).toBeDefined(); diff --git a/integration-tests/__tests__/wallet/failing-noop.spec.ts b/integration-tests/__tests__/wallet/failing-noop.spec.ts index 8af97e8216..19d7eba483 100644 --- a/integration-tests/__tests__/wallet/failing-noop.spec.ts +++ b/integration-tests/__tests__/wallet/failing-noop.spec.ts @@ -7,7 +7,7 @@ CONFIGS().forEach(({ setup, rpc, lib }) => { let signerAlice = new InMemorySigner('edsk3QoqBuvdamxouPhin7swCvkQNgq4jP5KZPbwWNnwdZpSpJiEbq') describe(`Test failing_noop through wallet api using: ${rpc}`, () => { - let Tezos = lib + const Tezos = lib beforeAll(async () => { setup(true) if (rpc.includes('paris')) { diff --git a/integration-tests/__tests__/wallet/staking-pseudo-operations.spec.ts b/integration-tests/__tests__/wallet/staking-pseudo-operations.spec.ts index 471b7ebd92..6d4b1502bd 100644 --- a/integration-tests/__tests__/wallet/staking-pseudo-operations.spec.ts +++ b/integration-tests/__tests__/wallet/staking-pseudo-operations.spec.ts @@ -7,7 +7,7 @@ CONFIGS().forEach(({ lib, rpc, setup, knownBaker }) => { beforeAll(async () => { await setup(true); try { - // There is no baker accept staking in betanet and weeklylnet hence tests will fail + // There is no baker accept staking in quebecanet and weeklylnet hence tests will fail // Currently TF is a baker that allows staking on parisnet. if (rpc.includes('paris')) { knownBaker = 'tz3Q67aMz7gSMiQRcW729sXSfuMtkyAHYfqc' // TF diff --git a/integration-tests/config.ts b/integration-tests/config.ts index 35a997d877..32e827fe64 100644 --- a/integration-tests/config.ts +++ b/integration-tests/config.ts @@ -8,7 +8,7 @@ import { KnownContracts } from './known-contracts'; import { knownContractsProtoALph } from './known-contracts-ProtoALph'; import { knownContractsPtGhostnet } from './known-contracts-PtGhostnet'; import { knownContractsPsParisCZ } from './known-contracts-PsParisCZ'; -import { knownContractsPtBetaaEZ } from './known-contracts-PtBetaaEZ'; +import { knownContractsPsquebeCa } from './known-contracts-PsquebeCa'; const nodeCrypto = require('crypto'); @@ -141,14 +141,17 @@ const parisnetEphemeral: Config = const parisnetSecretKey: Config = { ...parisnetEphemeral, ...{ signerConfig: defaultSecretKey }, ...{ defaultRpc: 'https://rpc.pariscnet.teztnets.com/' } }; -const betanetSecretKey: Config = +const quebecanetEphemeral: Config = defaultConfig({ - networkName: 'BETANET', - protocol: Protocols.PtBetaaEZ, - defaultRpc: 'https://rpc.betanet-2024-08-29.teztnets.com', - knownContracts: knownContractsPtBetaaEZ, - signerConfig: defaultSecretKey - }) + networkName: 'QUEBECANET', + protocol: Protocols.PsquebeCa, + defaultRpc: 'https://rpc.quebecanet.teztnets.com/', + knownContracts: knownContractsPsquebeCa, + signerConfig: defaultEphemeralConfig('https://keygen.ecadinfra.com/quebecanet') + }); + +const quebecanetSecretKey: Config = + { ...parisnetEphemeral, ...{ signerConfig: defaultSecretKey }, ...{ defaultRpc: 'https://quebecanet.ecadinfra.com/' } }; const ghostnetEphemeral: Config = defaultConfig({ @@ -160,7 +163,7 @@ const ghostnetEphemeral: Config = }); const ghostnetSecretKey: Config = - { ...ghostnetEphemeral, ...{ signerConfig: defaultSecretKey }, ...{ defaultRpc: 'http://ecad-tezos-ghostnet-rolling-1.i.ecadinfra.com/' } }; + { ...ghostnetEphemeral, ...{ signerConfig: defaultSecretKey }, ...{ defaultRpc: 'https://ghostnet.ecadinfra.com/' } }; const weeklynetEphemeral: Config = defaultConfig({ @@ -182,12 +185,14 @@ if (process.env['RUN_WITH_SECRET_KEY']) { providers.push(parisnetSecretKey); } else if (process.env['RUN_GHOSTNET_WITH_SECRET_KEY']) { providers.push(ghostnetSecretKey); -} else if (process.env['RUN_BETANET_WITH_SECRET_KEY']) { - providers.push(betanetSecretKey); +} else if (process.env['RUN_QUEBECANET_WITH_SECRET_KEY']) { + providers.push(quebecanetSecretKey); } else if (process.env['RUN_WEEKLYNET_WITH_SECRET_KEY']) { providers.push(weeklynetSecretKey); } else if (process.env['PARISNET']) { providers.push(parisnetEphemeral); +} else if (process.env['QUEBECANET']) { + providers.push(quebecanetEphemeral); } else if (process.env['GHOSTNET']) { providers.push(ghostnetEphemeral); } else if (process.env['WEEKLYNET']) { diff --git a/integration-tests/known-contracts-PsquebeCa.ts b/integration-tests/known-contracts-PsquebeCa.ts new file mode 100644 index 0000000000..890208f0e4 --- /dev/null +++ b/integration-tests/known-contracts-PsquebeCa.ts @@ -0,0 +1,8 @@ +import { KnownContracts } from './known-contracts'; +export const knownContractsPsquebeCa: KnownContracts = { + contract: "KT1L88d1qjSZSYKNF1q1sVLZPt2dpXe5SjVB", + bigMapContract: "KT1WJ73jt8rDYm9ga1HuyDXdkANW9U4YDPJH", + tzip12BigMapOffChainContract: "KT1AWk4RroBa1m7aVxcJ2Rguux7K5KtYM87S", + saplingContract: "KT1Mc6xAyxqnC5a6QxswyUGPmQhQRkvvAwx4", + onChainViewContractAddress: "KT1FJhDmrYz8vLiLHNfuKZyWDirkyHzZZUdi", +}; diff --git a/integration-tests/known-contracts-PtBetaaEZ.ts b/integration-tests/known-contracts-PtBetaaEZ.ts deleted file mode 100644 index 217490e7eb..0000000000 --- a/integration-tests/known-contracts-PtBetaaEZ.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { KnownContracts } from './known-contracts'; -export const knownContractsPtBetaaEZ: KnownContracts = { - contract: "KT1XKPeFgUEn2kt4Wg8cEL8DfopiHQQaPpBj", - bigMapContract: "KT1LBaTaYaKUQwDDhud7EG2CYvZjxwQghn81", - tzip12BigMapOffChainContract: "KT1GLrL9dVQQSi6bPv8pePKwcHYjcj8mMTa7", - saplingContract: "KT1ErqDowX2QE29KSp73dsg75oeXBu3fe9qD", - onChainViewContractAddress: "KT1QmK4ffXJRTvRj9ciAjBhFjX1uPSU97kEu", -}; diff --git a/integration-tests/package.json b/integration-tests/package.json index ff88320deb..8f55aafa61 100644 --- a/integration-tests/package.json +++ b/integration-tests/package.json @@ -5,7 +5,8 @@ "test:secret-key": "RUN_WITH_SECRET_KEY=true jest --runInBand", "test:parisnet": "PARISNET=true jest", "test:parisnet-secret-key": "RUN_PARISNET_WITH_SECRET_KEY=true jest --runInBand", - "test:betanet-secret-key": "RUN_BETANET_WITH_SECRET_KEY=true jest --runInBand", + "test:quebecanet": "QUEBECANET=true jest", + "test:quebecanet-secret-key": "RUN_QUEBECANET_WITH_SECRET_KEY=true jest --runInBand", "test:weeklynet": "WEEKLYNET=true jest", "test:weeklynet-secret-key": "RUN_WEEKLYNET_WITH_SECRET_KEY=true jest --runInBand", "test:ghostnet": "GHOSTNET=true jest", diff --git a/packages/taquito-local-forging/src/protocols.ts b/packages/taquito-local-forging/src/protocols.ts index b8243be065..cb6c0fb67b 100644 --- a/packages/taquito-local-forging/src/protocols.ts +++ b/packages/taquito-local-forging/src/protocols.ts @@ -18,7 +18,7 @@ export enum ProtocolsHash { ProxfordY = 'ProxfordYmVfjWnRcgjWH36fW6PArwqykTFzotUxRs6gmTcZDuH', PtParisBx = 'PtParisBxoLz5gzMmn3d9WBQNoPSZakgnkMC2VNuQ3KXfUtUQeZ', PsParisCZ = 'PsParisCZo7KAh1Z1smVd9ZMZ1HHn5gkzbM94V3PLCpknFWhUAi', - PtBetaaEZ = 'PtBetaaEZxGcn9JDpkpAZ6E92Kh7bQb5FDoTCeYhmkfcwNehZcT', + PsquebeCa = 'PsquebeCaYyvBEESCaXL8B8Tn8BcEhps2Zke1xMVtyr7X4qMfxT', ProtoALpha = 'ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK', } @@ -42,7 +42,7 @@ const protoLevel: Record = { ProxfordYmVfjWnRcgjWH36fW6PArwqykTFzotUxRs6gmTcZDuH: 19, PtParisBxoLz5gzMmn3d9WBQNoPSZakgnkMC2VNuQ3KXfUtUQeZ: 20, PsParisCZo7KAh1Z1smVd9ZMZ1HHn5gkzbM94V3PLCpknFWhUAi: 20, - PtBetaaEZxGcn9JDpkpAZ6E92Kh7bQb5FDoTCeYhmkfcwNehZcT: 21, + PsquebeCaYyvBEESCaXL8B8Tn8BcEhps2Zke1xMVtyr7X4qMfxT: 21, ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK: 22, }; diff --git a/packages/taquito-michel-codec/src/michelson-types.ts b/packages/taquito-michel-codec/src/michelson-types.ts index c436fb92a8..f38e62672a 100644 --- a/packages/taquito-michel-codec/src/michelson-types.ts +++ b/packages/taquito-michel-codec/src/michelson-types.ts @@ -406,7 +406,7 @@ export enum Protocol { ProxfordY = 'ProxfordYmVfjWnRcgjWH36fW6PArwqykTFzotUxRs6gmTcZDuH', PtParisBx = 'PtParisBxoLz5gzMmn3d9WBQNoPSZakgnkMC2VNuQ3KXfUtUQeZ', PsParisCZ = 'PsParisCZo7KAh1Z1smVd9ZMZ1HHn5gkzbM94V3PLCpknFWhUAi', - PtBetaaEZ = 'PtBetaaEZxGcn9JDpkpAZ6E92Kh7bQb5FDoTCeYhmkfcwNehZcT', + PsquebeCa = 'PsquebeCaYyvBEESCaXL8B8Tn8BcEhps2Zke1xMVtyr7X4qMfxT', ProtoALpha = 'ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK', // temporary protocol hash } @@ -442,7 +442,7 @@ const protoLevel: Record = { ProxfordYmVfjWnRcgjWH36fW6PArwqykTFzotUxRs6gmTcZDuH: 19, PtParisBxoLz5gzMmn3d9WBQNoPSZakgnkMC2VNuQ3KXfUtUQeZ: 20, PsParisCZo7KAh1Z1smVd9ZMZ1HHn5gkzbM94V3PLCpknFWhUAi: 20, - PtBetaaEZxGcn9JDpkpAZ6E92Kh7bQb5FDoTCeYhmkfcwNehZcT: 21, + PsquebeCaYyvBEESCaXL8B8Tn8BcEhps2Zke1xMVtyr7X4qMfxT: 21, ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK: 22, }; diff --git a/packages/taquito/src/constants.ts b/packages/taquito/src/constants.ts index 57a79517af..89793e9087 100644 --- a/packages/taquito/src/constants.ts +++ b/packages/taquito/src/constants.ts @@ -70,7 +70,7 @@ export enum Protocols { ProxfordY = 'ProxfordYmVfjWnRcgjWH36fW6PArwqykTFzotUxRs6gmTcZDuH', PtParisBx = 'PtParisBxoLz5gzMmn3d9WBQNoPSZakgnkMC2VNuQ3KXfUtUQeZ', PsParisCZ = 'PsParisCZo7KAh1Z1smVd9ZMZ1HHn5gkzbM94V3PLCpknFWhUAi', - PtBetaaEZ = 'PtBetaaEZxGcn9JDpkpAZ6E92Kh7bQb5FDoTCeYhmkfcwNehZcT', + PsquebeCa = 'PsquebeCaYyvBEESCaXL8B8Tn8BcEhps2Zke1xMVtyr7X4qMfxT', ProtoALpha = 'ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK', } @@ -91,7 +91,7 @@ export const protocols = { '017': [Protocols.PtNairobi], '019': [Protocols.ProxfordY], '020': [Protocols.PtParisBx, Protocols.PsParisCZ], - '021': [Protocols.PtBetaaEZ], + '021': [Protocols.PsquebeCa], '022': [Protocols.ProtoALpha], }; @@ -114,7 +114,7 @@ export enum ChainIds { OXFORDNET2 = 'NetXxWsskGahzQB', PARISBNET = 'NetXo8SqH1c38SS', PARISCNET = 'NetXXWAHLEvre9b', - BETANET = 'NetXsTfFgyGbHTz', + QUEBECANET = 'NetXQWuX99cUDUQ', } // A fixed fee reveal operation gasLimit accepted by both simulate and injection endpoint is between 1.2-5 times of actual gas consumption (3.5 fails occasionally with gas exhausted; 4 fails occasionally with fee too low) diff --git a/website/package-lock.json b/website/package-lock.json index 4bbf7a11a6..678be45007 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -11408,9 +11408,9 @@ } }, "node_modules/dompurify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz", - "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.4.tgz", + "integrity": "sha512-l5NNozANzaLPPe0XaAwvg3uZcHtDBnziX/HjsY1UcDj1MxTK8Dd0Kv096jyPK5HRzs/XM5IMj20dW8Fk+HnbUA==", "license": "(MPL-2.0 OR Apache-2.0)" }, "node_modules/domutils": { @@ -11928,7 +11928,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "1.9.0", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -11972,11 +11972,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" - }, "node_modules/express/node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -15889,7 +15884,7 @@ "d3": "^7.4.0", "dagre-d3-es": "7.0.9", "dayjs": "^1.11.7", - "dompurify": "2.4.3", + "dompurify": "2.5.4", "elkjs": "^0.8.2", "khroma": "^2.0.0", "lodash-es": "^4.17.21", @@ -18049,9 +18044,9 @@ } }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "license": "MIT", "dependencies": { "isarray": "0.0.1" @@ -19636,7 +19631,7 @@ "history": "^4.9.0", "hoist-non-react-statics": "^3.1.0", "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", + "path-to-regexp": "^1.9.0", "prop-types": "^15.6.2", "react-is": "^16.6.0", "tiny-invariant": "^1.0.2", @@ -21126,7 +21121,7 @@ "mime-types": "2.1.18", "minimatch": "3.1.2", "path-is-inside": "1.0.2", - "path-to-regexp": "2.2.1", + "path-to-regexp": "^3.3.0", "range-parser": "1.2.0" } }, @@ -21164,9 +21159,9 @@ } }, "node_modules/serve-handler/node_modules/path-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", "license": "MIT" }, "node_modules/serve-index": {