Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge master into develop #1741

Merged
merged 3 commits into from
Jan 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 5 additions & 23 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,17 @@ env:
NODE_ENV: test

jobs:
mangrove-js:
check:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

# == verify changelog has been updated ==
- name: Check changelog updated
uses: mangrovedao/.github/.github/actions/changelog-updated@master

- name: Yarn setup (caching yarn dependencies)
uses: actions/setup-node@v4
with:
Expand Down Expand Up @@ -81,25 +85,3 @@ jobs:
path-to-lcov: ./coverage/lcov.info
base-path: .
flag-name: js

# ==== final "check" job, using alls-green to have one single job to check for green workflow ====
# see https://github.com/re-actors/alls-green

check:
# NB: We're experimenting with using `!cancelled()` instead of `always()` in an attempt to avoid
# cancelled workflow runs blocking dependabot PR's from merging.
# Workflow runs are often cancelled automatically when a newer run is triggered.
# The problem appears to be that the `check` job runs and fails if the workflow is cancelled.
# if: always()
if: ${{ !cancelled() }}

needs:
- mangrove-js

runs-on: ubuntu-latest

steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Next version

# 2.0.4

- Upgrade to @mangrovedao/mangrove-deployments v2.0.0
- feat: Updated CI to check `CHANGELOG.md` is updated with each PR
- fix: Able to handle backticks in changelog when releasing.

# 2.0.3

- fix: Fix various issues in TypeDoc comments wrt @see vs @link.
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mangrovedao/mangrove.js",
"version": "2.0.3",
"version": "2.0.4",
"author": "Mangrove DAO",
"description": "A Typescript SDK for the Mangrove Protocol.",
"license": "MIT",
Expand Down Expand Up @@ -63,7 +63,7 @@
"@ethersproject/experimental": "^5.7.0",
"@mangrovedao/context-addresses": "^1.0.1",
"@mangrovedao/mangrove-core": "^2.0.3",
"@mangrovedao/mangrove-deployments": "^1.0.3",
"@mangrovedao/mangrove-deployments": "^2.0.0",
"@mangrovedao/mangrove-strats": "^1.0.2",
"@mangrovedao/reliable-event-subscriber": "1.1.29",
"@types/object-inspect": "^1.8.1",
Expand Down
79 changes: 27 additions & 52 deletions src/configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import * as contextAddresses from "@mangrovedao/context-addresses";
import * as eth from "./eth";
import clone from "just-clone";
import deepmerge from "deepmerge";
import semver from "semver";

// Make keys optional at all levels of T
export type RecursivePartial<T> = {
Expand Down Expand Up @@ -653,66 +652,42 @@ export function resetConfiguration(): void {

function readMangroveDeploymentAddresses() {
// Note: Consider how to expose other deployments than the primary
const mgvCoreVersionPattern = createContractVersionPattern(
const mgvCoreVersionPattern = mgvDeployments.createContractVersionPattern(
contractPackageVersions["mangrove-core"],
);
// Note: Make this configurable?
const mgvCoreReleasedFilter = undefined; // undefined => released & unreleased, true => released only, false => unreleased only
const mgvCoreContractsDeployments =
mgvDeployments.getCoreContractsVersionDeployments({
version: mgvCoreVersionPattern,
released: mgvCoreReleasedFilter,
});
readVersionDeploymentsAddresses(mgvCoreContractsDeployments);

const mgvStratsVersionPattern = createContractVersionPattern(
const mgvCoreDeploymentsFilter = {
version: mgvCoreVersionPattern,
released: mgvCoreReleasedFilter,
};
const latestCoreDeployments = mgvDeployments.getLatestCoreContractsPerNetwork(
mgvCoreDeploymentsFilter,
);

const mgvStratsVersionPattern = mgvDeployments.createContractVersionPattern(
contractPackageVersions["mangrove-strats"],
);
// Note: Make this configurable?
const mgvStratsReleasedFilter = undefined; // undefined => released & unreleased, true => released only, false => unreleased only
const mgvStratsContractsDeployments =
mgvDeployments.getStratsContractsVersionDeployments({
version: mgvStratsVersionPattern,
released: mgvStratsReleasedFilter,
});
readVersionDeploymentsAddresses(mgvStratsContractsDeployments);
}

function createContractVersionPattern(contractPackageVersion: string) {
const preleaseComponents = semver.prerelease(contractPackageVersion);
if (preleaseComponents === null) {
// For release versions of contract packages, we match any deployment of the same major version, _excluding_ prereleases.
return `^${semver.major(contractPackageVersion)}.0.0`;
} else {
// For pre-release versions of contract packages, we match any deployment of the same major version, _including_ prereleases.
// This is achieved by replacing the last prelease component by 0 and using the caret '^' pattern.
// This pattern is equivalent to '>= x.y.z-0 < x+1.0.0'.
// Examples:
// 2.0.0-alpha.1 => ^2.0.0-alpha.0
// 2.0.0-4 => ^2.0.0-0
const patternPreleaseComponents = [...preleaseComponents];
patternPreleaseComponents[patternPreleaseComponents.length - 1] = "0";
return `^${semver.major(contractPackageVersion)}.${semver.minor(
contractPackageVersion,
)}.${semver.patch(contractPackageVersion)}-${patternPreleaseComponents.join(
".",
)}`;
}
}
const mgvStratsDeploymentsFilter = {
version: mgvStratsVersionPattern,
released: mgvStratsReleasedFilter,
};
const latestStratsDeployments =
mgvDeployments.getLatestStratContractsPerNetwork(
mgvStratsDeploymentsFilter,
mgvCoreDeploymentsFilter,
);

function readVersionDeploymentsAddresses(
contractsDeployments: mgvDeployments.VersionDeployments[],
) {
for (const contractDeployments of contractsDeployments) {
for (const [networkId, networkDeployments] of Object.entries(
contractDeployments.networkAddresses,
)) {
const networkName = eth.getNetworkName(+networkId);
addressesConfiguration.setAddress(
contractDeployments.deploymentName ?? contractDeployments.contractName,
networkDeployments.primaryAddress,
networkName,
);
for (const [networkName, namedAddresses] of Object.entries(
mgvDeployments.toNamedAddressesPerNamedNetwork(
latestCoreDeployments,
latestStratsDeployments,
),
)) {
for (const { name, address } of namedAddresses) {
addressesConfiguration.setAddress(name, address, networkName);
}
}
}
Expand Down
10 changes: 5 additions & 5 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1259,12 +1259,12 @@ __metadata:
languageName: node
linkType: hard

"@mangrovedao/mangrove-deployments@npm:^1.0.3":
version: 1.0.3
resolution: "@mangrovedao/mangrove-deployments@npm:1.0.3"
"@mangrovedao/mangrove-deployments@npm:^2.0.0":
version: 2.0.0
resolution: "@mangrovedao/mangrove-deployments@npm:2.0.0"
dependencies:
semver: ^7.5.4
checksum: fa31875a93735309913a3fbb597c1f0546ad71216681a8d947e9d1f6316051a0fd8ca930d50c11e3e002db20c0bb595324b6e71b9bfd16a37d9a6e320267bc59
checksum: d64a06a5986d6c11fb1b0757b7d5488441cc0f450936f7dd32fe359d05577630b54553c8bf305fcd6c0169636dd0701fae0bbaf1b38a8f51516e0a7fb462d062
languageName: node
linkType: hard

Expand All @@ -1289,7 +1289,7 @@ __metadata:
"@ethersproject/providers": ^5.7.2
"@mangrovedao/context-addresses": ^1.0.1
"@mangrovedao/mangrove-core": ^2.0.3
"@mangrovedao/mangrove-deployments": ^1.0.3
"@mangrovedao/mangrove-deployments": ^2.0.0
"@mangrovedao/mangrove-strats": ^1.0.2
"@mangrovedao/reliable-event-subscriber": 1.1.29
"@typechain/ethers-v5": ^11.1.2
Expand Down
Loading