Skip to content

Commit daaae34

Browse files
add initial changesets config (namehash#226)
Co-authored-by: lightwalker.eth <[email protected]>
1 parent c119d06 commit daaae34

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+657
-112
lines changed

.changeset/config.json

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
3+
"changelog": "@changesets/cli/changelog",
4+
"commit": false,
5+
"fixed": [],
6+
"linked": [],
7+
"access": "public",
8+
"baseBranch": "main",
9+
"updateInternalDependencies": "patch",
10+
"ignore": [
11+
"ensnode",
12+
"@ensnode/ensrainbow",
13+
"@ensnode/utils",
14+
"@docs/ensnode",
15+
"@docs/ensrainbow"
16+
]
17+
}

apps/ensnode/.env.local.example

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ DATABASE_SCHEMA=ens
3535
DATABASE_URL=postgresql://dbuser:abcd1234@localhost:5432/my_database
3636

3737
# Deployment Configuration
38-
# Identify which ENS Deployment to target (see `@namehash/ens-deployments` for available deployments)
38+
# Identify which ENS Deployment to target (see `@ensnode/ens-deployments` for available deployments)
3939
ENS_DEPLOYMENT_CHAIN=mainnet
4040

4141
# Plugin Configuration

apps/ensnode/package.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,19 @@
2323
},
2424
"dependencies": {
2525
"@ensdomains/ensjs": "^4.0.2",
26-
"@namehash/ens-deployments": "workspace:*",
27-
"ensnode-utils": "workspace:*",
28-
"ensrainbow-sdk": "workspace:*",
26+
"@ensnode/ens-deployments": "workspace:*",
27+
"@ensnode/utils": "workspace:*",
28+
"@ensnode/ensrainbow-sdk": "workspace:*",
2929
"hono": "catalog:",
3030
"ponder": "catalog:",
31-
"ponder-schema": "workspace:*",
32-
"ponder-subgraph-api": "workspace:*",
31+
"@ensnode/ponder-schema": "workspace:*",
32+
"@ensnode/ponder-subgraph": "workspace:*",
3333
"ts-deepmerge": "^7.0.2",
3434
"viem": "catalog:"
3535
},
3636
"devDependencies": {
3737
"@biomejs/biome": "catalog:",
38-
"@namehash/shared-configs": "workspace:",
38+
"@ensnode/shared-configs": "workspace:",
3939
"@types/node": "catalog:",
4040
"typescript": "catalog:",
4141
"vitest": "catalog:"

apps/ensnode/ponder.schema.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
// export the shared ponder schema
2-
export * from "ponder-schema";
2+
export * from "@ensnode/ponder-schema";

apps/ensnode/src/api/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { db } from "ponder:api";
22
import schema from "ponder:schema";
3+
import { graphql as subgraphGraphQL } from "@ensnode/ponder-subgraph/middleware";
34
import { Hono } from "hono";
45
import { client, graphql as ponderGraphQL } from "ponder";
5-
import { graphql as subgraphGraphQL } from "ponder-subgraph-api/middleware";
66

77
const app = new Hono();
88

apps/ensnode/src/handlers/NameWrapper.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { type Context } from "ponder:registry";
22
import schema from "ponder:schema";
33
import { checkPccBurned } from "@ensdomains/ensjs/utils";
4-
import { decodeDNSPacketBytes, uint256ToHex32 } from "ensnode-utils/subname-helpers";
5-
import type { Node } from "ensnode-utils/types";
4+
import { decodeDNSPacketBytes, uint256ToHex32 } from "@ensnode/utils/subname-helpers";
5+
import type { Node } from "@ensnode/utils/types";
66
import { type Address, type Hex, hexToBytes, namehash } from "viem";
77
import { createSharedEventValues, upsertAccount } from "../lib/db-helpers";
88
import { makeEventId } from "../lib/ids";

apps/ensnode/src/handlers/Registrar.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { type Context } from "ponder:registry";
22
import schema from "ponder:schema";
3-
import { isLabelIndexable, makeSubnodeNamehash } from "ensnode-utils/subname-helpers";
4-
import type { Labelhash } from "ensnode-utils/types";
3+
import { isLabelIndexable, makeSubnodeNamehash } from "@ensnode/utils/subname-helpers";
4+
import type { Labelhash } from "@ensnode/utils/types";
55
import { type Hex, labelhash as _labelhash, namehash } from "viem";
66
import { createSharedEventValues, upsertAccount, upsertRegistration } from "../lib/db-helpers";
77
import { labelByHash } from "../lib/graphnode-helpers";

apps/ensnode/src/handlers/Registry.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Context } from "ponder:registry";
22
import schema from "ponder:schema";
33
import { encodeLabelhash } from "@ensdomains/ensjs/utils";
4-
import { ROOT_NODE, isLabelIndexable, makeSubnodeNamehash } from "ensnode-utils/subname-helpers";
5-
import type { Labelhash, Node } from "ensnode-utils/types";
4+
import { ROOT_NODE, isLabelIndexable, makeSubnodeNamehash } from "@ensnode/utils/subname-helpers";
5+
import type { Labelhash, Node } from "@ensnode/utils/types";
66
import { type Hex, zeroAddress } from "viem";
77
import { createSharedEventValues, upsertAccount, upsertResolver } from "../lib/db-helpers";
88
import { labelByHash } from "../lib/graphnode-helpers";

apps/ensnode/src/handlers/Resolver.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { type Context } from "ponder:registry";
22
import schema from "ponder:schema";
3-
import type { Node } from "ensnode-utils/types";
3+
import type { Node } from "@ensnode/utils/types";
44
import { Hex } from "viem";
55
import { createSharedEventValues, upsertAccount, upsertResolver } from "../lib/db-helpers";
66
import { makeResolverId } from "../lib/ids";

apps/ensnode/src/lib/globals.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
* Additionally, we specify the global start/end block range that is currently helpful for development.
99
*/
1010

11-
import DeploymentConfigs from "@namehash/ens-deployments";
11+
import DeploymentConfigs from "@ensnode/ens-deployments";
12+
import type { ContractConfig } from "ponder";
1213
import { getEnsDeploymentChain } from "./ponder-helpers";
1314

1415
export const SELECTED_DEPLOYMENT_CONFIG = DeploymentConfigs[getEnsDeploymentChain()];

apps/ensnode/src/lib/graphnode-helpers.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { Labelhash } from "ensnode-utils/types";
2-
import { EnsRainbowApiClient } from "ensrainbow-sdk/client";
3-
import { ErrorCode, StatusCode } from "ensrainbow-sdk/consts";
1+
import { EnsRainbowApiClient } from "@ensnode/ensrainbow-sdk/client";
2+
import { ErrorCode, StatusCode } from "@ensnode/ensrainbow-sdk/consts";
3+
import type { Labelhash } from "@ensnode/utils/types";
44
import { ensRainbowEndpointUrl } from "./ponder-helpers";
55

66
const ensRainbowApiClient = new EnsRainbowApiClient({

apps/ensnode/src/lib/ids.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Labelhash, Node } from "ensnode-utils/types";
1+
import type { Labelhash, Node } from "@ensnode/utils/types";
22
import type { Address, Hex } from "viem";
33

44
// NOTE: subgraph uses lowercase address here, viem provides us checksummed, so we lowercase it

apps/ensnode/src/lib/plugin-helpers.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { SubregistryContractConfig } from "@namehash/ens-deployments";
1+
import type { SubregistryContractConfig } from "@ensnode/ens-deployments";
22
import type { NetworkConfig } from "ponder";
33
import { http, Chain } from "viem";
44
import { END_BLOCK, START_BLOCK } from "./globals";
@@ -134,7 +134,11 @@ export function getActivePlugins<T extends { pluginName: PluginName }>(
134134

135135
if (unavailablePlugins.length) {
136136
throw new Error(
137-
`Requested plugins are not available in the ${getEnsDeploymentChain()} deployment: ${unavailablePlugins.join(", ")}. Available plugins in the ${getEnsDeploymentChain()} are: ${availablePluginNames.join(", ")}`,
137+
`Requested plugins are not available in the ${getEnsDeploymentChain()} deployment: ${unavailablePlugins.join(
138+
", ",
139+
)}. Available plugins in the ${getEnsDeploymentChain()} are: ${availablePluginNames.join(
140+
", ",
141+
)}`,
138142
);
139143
}
140144

apps/ensnode/src/lib/ponder-helpers.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { Event } from "ponder:registry";
2-
import DeploymentConfigs, { ENSDeploymentChain } from "@namehash/ens-deployments";
3-
import { DEFAULT_ENSRAINBOW_URL } from "ensrainbow-sdk/consts";
2+
import DeploymentConfigs, { ENSDeploymentChain } from "@ensnode/ens-deployments";
3+
import { DEFAULT_ENSRAINBOW_URL } from "@ensnode/ensrainbow-sdk/consts";
44
import { merge as tsDeepMerge } from "ts-deepmerge";
55

66
export type EventWithArgs<ARGS extends Record<string, unknown> = {}> = Omit<Event, "args"> & {

apps/ensnode/src/lib/types.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export type OwnedName = string;
1212
* In this project we use the notion of 'plugins' to describe which registries and subregistries
1313
* of a given ENS deployment are being indexed by ponder. In this project, a plugin's name is the
1414
* name of the subregistry it indexes. Note that this type definition is 1:1 with that of
15-
* @namehash/ens-deployments SubregistryName, simplifying the relationship between an ENSDeploymentConfig
15+
* @ensnode/ens-deployments SubregistryName, simplifying the relationship between an ENSDeploymentConfig
1616
* and the plugins in this project.
1717
*/
1818
export type PluginName = "eth" | "base" | "linea";

apps/ensnode/src/plugins/base/handlers/Registrar.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ponder } from "ponder:registry";
22
import schema from "ponder:schema";
3-
import { makeSubnodeNamehash, uint256ToHex32 } from "ensnode-utils/subname-helpers";
4-
import type { Labelhash } from "ensnode-utils/types";
3+
import { makeSubnodeNamehash, uint256ToHex32 } from "@ensnode/utils/subname-helpers";
4+
import type { Labelhash } from "@ensnode/utils/types";
55
import { zeroAddress } from "viem";
66
import { makeRegistrarHandlers } from "../../../handlers/Registrar";
77
import { upsertAccount } from "../../../lib/db-helpers";

apps/ensnode/src/plugins/eth/handlers/EthRegistrar.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ponder } from "ponder:registry";
2-
import { uint256ToHex32 } from "ensnode-utils/subname-helpers";
3-
import type { Labelhash } from "ensnode-utils/types";
2+
import { uint256ToHex32 } from "@ensnode/utils/subname-helpers";
3+
import type { Labelhash } from "@ensnode/utils/types";
44
import { makeRegistrarHandlers } from "../../../handlers/Registrar";
55
import { PonderENSPluginHandlerArgs } from "../../../lib/plugin-helpers";
66

apps/ensnode/src/plugins/eth/handlers/Registry.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { type Context, ponder } from "ponder:registry";
22
import schema from "ponder:schema";
3-
import { ROOT_NODE, makeSubnodeNamehash } from "ensnode-utils/subname-helpers";
3+
import { ROOT_NODE, makeSubnodeNamehash } from "@ensnode/utils/subname-helpers";
44
import { type Hex } from "viem";
55
import { makeRegistryHandlers, setupRootNode } from "../../../handlers/Registry";
66
import { PonderENSPluginHandlerArgs } from "../../../lib/plugin-helpers";

apps/ensnode/src/plugins/linea/handlers/EthRegistrar.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ponder } from "ponder:registry";
22
import schema from "ponder:schema";
3-
import { makeSubnodeNamehash, uint256ToHex32 } from "ensnode-utils/subname-helpers";
4-
import type { Labelhash } from "ensnode-utils/types";
3+
import { makeSubnodeNamehash, uint256ToHex32 } from "@ensnode/utils/subname-helpers";
4+
import type { Labelhash } from "@ensnode/utils/types";
55
import { zeroAddress } from "viem";
66
import { makeRegistrarHandlers } from "../../../handlers/Registrar";
77
import { upsertAccount } from "../../../lib/db-helpers";

apps/ensnode/test/graphnode-helpers.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { describe, expect, it } from "vitest";
22

3-
import type { Labelhash } from "ensnode-utils/types";
3+
import type { Labelhash } from "@ensnode/utils/types";
44
import { labelByHash } from "../src/lib/graphnode-helpers";
55

66
describe("labelByHash", () => {

apps/ensnode/test/ponder-helpers.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { DEFAULT_ENSRAINBOW_URL } from "ensrainbow-sdk/consts";
1+
import { DEFAULT_ENSRAINBOW_URL } from "@ensnode/ensrainbow-sdk/consts";
22
import { describe, expect, it } from "vitest";
33
import {
44
DEFAULT_RPC_RATE_LIMIT,

apps/ensnode/tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"extends": "@namehash/shared-configs/tsconfig.ponder.json",
2+
"extends": "@ensnode/shared-configs/tsconfig.ponder.json",
33
"include": ["./**/*.ts"],
44
"exclude": ["node_modules"]
55
}

apps/ensrainbow/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "@namehash/ensrainbow",
2+
"name": "@ensnode/ensrainbow",
33
"version": "0.1.0",
44
"private": true,
55
"type": "module",
@@ -27,15 +27,15 @@
2727
"@hono/node-server": "^1.4.1",
2828
"bun": "^1.2.2",
2929
"classic-level": "^1.4.1",
30-
"ensnode-utils": "workspace:*",
31-
"ensrainbow-sdk": "workspace:*",
30+
"@ensnode/utils": "workspace:*",
31+
"@ensnode/ensrainbow-sdk": "workspace:*",
3232
"hono": "catalog:",
3333
"progress": "^2.0.3",
3434
"viem": "catalog:",
3535
"yargs": "^17.7.2"
3636
},
3737
"devDependencies": {
38-
"@namehash/shared-configs": "workspace:*",
38+
"@ensnode/shared-configs": "workspace:*",
3939
"@types/node": "^20.17.14",
4040
"@types/progress": "^2.0.7",
4141
"@types/supertest": "^6.0.2",

apps/ensrainbow/src/commands/server-command.test.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
import { promises as fs } from "fs";
2+
import { ErrorCode, StatusCode } from "@ensnode/ensrainbow-sdk/consts";
3+
import { labelHashToBytes } from "@ensnode/ensrainbow-sdk/label-utils";
4+
import type {
5+
CountResponse,
6+
HealError,
7+
HealResponse,
8+
HealSuccess,
9+
} from "@ensnode/ensrainbow-sdk/types";
210
import { serve } from "@hono/node-server";
3-
import { ErrorCode, StatusCode } from "ensrainbow-sdk/consts";
4-
import { labelHashToBytes } from "ensrainbow-sdk/label-utils";
5-
import type { CountResponse, HealError, HealResponse, HealSuccess } from "ensrainbow-sdk/types";
611
import { labelhash } from "viem";
712
/// <reference types="vitest" />
813
import { afterAll, beforeAll, beforeEach, describe, expect, it } from "vitest";

apps/ensrainbow/src/commands/server-command.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import type { HealthResponse } from "@ensnode/ensrainbow-sdk/types";
12
import { serve } from "@hono/node-server";
2-
import type { HealthResponse } from "ensrainbow-sdk/types";
33
import { Hono } from "hono";
44
import type { Context as HonoContext } from "hono";
55
import { ENSRainbowDB, exitIfIncompleteIngestion, openDatabase } from "../lib/database";

apps/ensrainbow/src/commands/validate-command.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { tmpdir } from "os";
22
import { join } from "path";
3-
import { labelHashToBytes } from "ensrainbow-sdk/label-utils";
3+
import { labelHashToBytes } from "@ensnode/ensrainbow-sdk/label-utils";
44
import { mkdtemp, rm } from "fs/promises";
55
import { labelhash } from "viem";
66
import { afterEach, beforeEach, describe, expect, it } from "vitest";

apps/ensrainbow/src/lib/database.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { tmpdir } from "os";
22
import { join } from "path";
3-
import { labelHashToBytes } from "ensrainbow-sdk/label-utils";
3+
import { labelHashToBytes } from "@ensnode/ensrainbow-sdk/label-utils";
44
import { mkdtemp, rm } from "fs/promises";
55
import { labelhash } from "viem";
66
import { afterEach, beforeEach, describe, expect, it } from "vitest";

apps/ensrainbow/src/lib/database.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { join } from "path";
2+
import { labelHashToBytes } from "@ensnode/ensrainbow-sdk/label-utils";
23
import { ClassicLevel } from "classic-level";
3-
import { labelHashToBytes } from "ensrainbow-sdk/label-utils";
44
import { ByteArray, labelhash } from "viem";
55

66
import { byteArraysEqual } from "../utils/byte-utils";
@@ -218,7 +218,9 @@ export async function validate(db: ENSRainbowDB, logger: Logger): Promise<boolea
218218
const computedHash = labelHashToBytes(labelhash(value));
219219
if (!byteArraysEqual(computedHash, key)) {
220220
logger.error(
221-
`Hash mismatch for label "${value}": stored=${keyHex}, computed=0x${Buffer.from(computedHash).toString("hex")}`,
221+
`Hash mismatch for label "${value}": stored=${keyHex}, computed=0x${Buffer.from(
222+
computedHash,
223+
).toString("hex")}`,
222224
);
223225
hashMismatches++;
224226
}

apps/ensrainbow/src/lib/server.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { ErrorCode, StatusCode } from "ensrainbow-sdk/consts";
2-
import { labelHashToBytes } from "ensrainbow-sdk/label-utils";
1+
import { ErrorCode, StatusCode } from "@ensnode/ensrainbow-sdk/consts";
2+
import { labelHashToBytes } from "@ensnode/ensrainbow-sdk/label-utils";
33
import {
44
CountError,
55
CountResponse,
66
CountSuccess,
77
HealError,
88
HealResponse,
99
HealSuccess,
10-
} from "ensrainbow-sdk/types";
10+
} from "@ensnode/ensrainbow-sdk/types";
1111
import { ByteArray } from "viem";
1212
import { LogLevel, Logger, createLogger } from "../utils/logger";
1313
import { parseNonNegativeInteger } from "../utils/number-utils";

apps/ensrainbow/src/utils/rainbow-record.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import type { Labelhash } from "ensnode-utils/types";
2-
import { labelHashToBytes } from "ensrainbow-sdk/label-utils";
1+
import { labelHashToBytes } from "@ensnode/ensrainbow-sdk/label-utils";
2+
import type { Labelhash } from "@ensnode/utils/types";
33
import { labelhash } from "viem";
44
import { describe, expect, it } from "vitest";
55
import { buildRainbowRecord } from "./rainbow-record";

apps/ensrainbow/src/utils/rainbow-record.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import type { Labelhash } from "ensnode-utils/types";
2-
import { labelHashToBytes } from "ensrainbow-sdk/label-utils";
1+
import { labelHashToBytes } from "@ensnode/ensrainbow-sdk/label-utils";
2+
import type { Labelhash } from "@ensnode/utils/types";
33
import { ByteArray } from "viem";
44

55
export interface RainbowRecord {

apps/ensrainbow/tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"extends": "@namehash/shared-configs/tsconfig.lib.json",
2+
"extends": "@ensnode/shared-configs/tsconfig.lib.json",
33
"include": ["src/**/*.ts"],
44
"exclude": ["node_modules", "**/*.test.ts"]
55
}

docs/ensnode/src/content/docs/guides/querying-best-practices.mdx

+1-1
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,4 @@ Therefore, this represents the unindexable label as an "unknown label", encoding
168168

169169
When ENSNode encounters an unindexable label, it will represent it as an unknown label even if the actual label data is available. This is a safety mechanism to ensure data integrity and consistent behavior across the system.
170170

171-
For more detailed information about unindexable labels and their handling, please refer to the [ENSNode utils implementation](https://github.com/namehash/ensnode/blob/main/packages/ensnode-utils/src/subname-helpers.ts#L14-L70).
171+
For more detailed information about unindexable labels and their handling, please refer to the [ENSNode utils implementation](https://github.com/namehash/ensnode/blob/main/packages/@ensnode/utils/src/subname-helpers.ts#L14-L70).

package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
"packageManager": "[email protected]",
66
"scripts": {
77
"lint": "biome check --write .",
8-
"lint:ci": "biome ci"
8+
"lint:ci": "biome ci",
9+
"changeset": "changeset"
910
},
1011
"devDependencies": {
1112
"@biomejs/biome": "^1.9.4",
13+
"@changesets/cli": "^2.27.12",
1214
"typescript": "catalog:"
1315
},
1416
"engines": {

packages/README.md

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Releasing Packages
2+
3+
We use [changesets](https://github.com/changesets/changesets) to manage our NPM releases. If you're changing or adding to `packages/*`, you should create a changeset.
4+
5+
1. Run `pnpm changeset`
6+
2. Choose the packages you want to version
7+
3. Add a summary of the changes
8+
4. Commit the changeset file
9+
5. Open a Pull Request
10+
- This PR should include the changeset file
11+
- Link to any existing issues that may exist
12+
6. Once a PR is merged, a new or existing `Version Packages` PR will be created, or updated
13+
- This will also update the `CHANGELOG.md` for each package
14+
7. Merge the `Version Packages` when you're ready to release a new version (of all packages) to NPM
15+
- The GitHub Action will publish the packages to NPM automatically

0 commit comments

Comments
 (0)