Skip to content

Commit 7fb6873

Browse files
committed
feat: contract catalog
docs: remove @description tag refactor: delete "version.ts" refactor: rename some types refactor: use string literals instead of Protocol enum refactor: rename resolvers
1 parent 15daae2 commit 7fb6873

File tree

32 files changed

+241
-130
lines changed

32 files changed

+241
-130
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@sablier/deployments",
33
"description": "Keeping track of Sablier deployments",
4-
"version": "1.0.0-alpha.36",
4+
"version": "1.0.0-alpha.37",
55
"author": {
66
"name": "Sablier Labs Ltd",
77
"url": "https://sablier.com"

src/contracts/catalog.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { Protocol } from "@src/enums";
2+
import { releases } from "@src/releases";
3+
import type { Sablier } from "@src/types";
4+
import _ from "lodash";
5+
6+
const catalog: Sablier.ContractCatalog = {
7+
[Protocol.Airdrops]: {},
8+
[Protocol.Flow]: {},
9+
[Protocol.Legacy]: {},
10+
[Protocol.Lockup]: {},
11+
};
12+
13+
for (const release of releases) {
14+
const { protocol, version, deployments } = release;
15+
16+
for (const deployment of deployments) {
17+
const { chainId, contracts } = deployment;
18+
19+
for (const contract of contracts) {
20+
const address = contract.address.toLowerCase(); // lowercase needed for deterministic lookup
21+
const info = {
22+
alias: contract.alias,
23+
name: contract.name,
24+
protocol,
25+
version,
26+
};
27+
_.set(catalog, [protocol, chainId, address], info);
28+
}
29+
}
30+
}
31+
32+
export default catalog;

src/contracts/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
export { default as catalog } from "./catalog";
12
export { default as names } from "./names";

src/contracts/names.ts

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,6 @@ import lockupV2_0 from "@src/releases/lockup/v2.0/manifest";
1212
import type { Sablier } from "@src/types";
1313
import _ from "lodash";
1414

15-
/**
16-
* At runtime: for v1.x, merge `core` + `periphery`; for v2.0, use the top-level record directly.
17-
*/
18-
function flattenNames(manifest: Sablier.Manifest): Record<string, string> {
19-
if ("core" in manifest && "periphery" in manifest) {
20-
const lockupManifest = manifest as Sablier.Manifest.LockupV1;
21-
return { ...lockupManifest.core, ...lockupManifest.periphery };
22-
}
23-
// v2.0 has no core/periphery nesting
24-
return { ...manifest } as Record<string, string>;
25-
}
26-
2715
/**
2816
* Works at compile-time!
2917
*/
@@ -66,8 +54,16 @@ const manifests = [
6654
lockupV1_2,
6755
lockupV2_0,
6856
];
69-
const flattened = manifests.map(flattenNames);
7057

58+
function flattenNames(manifest: Sablier.Manifest): Record<string, string> {
59+
if ("core" in manifest && "periphery" in manifest) {
60+
const lockupManifest = manifest as Sablier.Manifest.LockupV1;
61+
return { ...lockupManifest.core, ...lockupManifest.periphery };
62+
}
63+
return { ...manifest } as Record<string, string>;
64+
}
65+
66+
const flattened = manifests.map(flattenNames);
7167
const names: ContractNames = _.merge({}, ...flattened) as ContractNames;
7268

7369
export default names;

src/version.ts renamed to src/enums.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
/**
2+
* @file The types in {@link file://./types.ts} are generated from these enums.
3+
*/
4+
export const Protocol = {
5+
Airdrops: "airdrops",
6+
Flow: "flow",
7+
Legacy: "legacy",
8+
Lockup: "lockup",
9+
} as const;
10+
111
export const Version = {
212
Airdrops: {
313
V1_1: "v1.1",
@@ -19,5 +29,3 @@ export const Version = {
1929
V2_0: "v2.0",
2030
},
2131
} as const;
22-
23-
export default Version;

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
export * from "./chains";
2+
export * from "./enums";
23
export * from "./helpers";
34
export * from "./indexers";
45
export * from "./releases";
56
export * from "./types";
67
export * as contracts from "./contracts";
78
export * as nativeTokens from "./native-tokens";
8-
export { default as Version } from "./version";

src/indexers/airdrops/envio.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1+
import { Protocol } from "@src/enums";
12
import config from "../config";
23
import { resolveEnvio } from "../helpers";
3-
44
function get(chainId: number) {
5-
return resolveEnvio("airdrops", chainId);
5+
return resolveEnvio(Protocol.Airdrops, chainId);
66
}
77

88
const envio = config.envio.supportedChains.map(get);

src/indexers/airdrops/graph.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import { ChainId } from "@src/chains/ids";
2+
import { Protocol } from "@src/enums";
23
import type { Sablier } from "@src/types";
34
import type { TheGraphCustomChainId } from "../config";
45
import { resolveCustomSubgraph, resolveOfficialSubgraph } from "../helpers";
56

67
function resolveCustom(chainId: TheGraphCustomChainId, name: string): Sablier.Indexer.TheGraph {
7-
return resolveCustomSubgraph("airdrops", chainId, name);
8+
return resolveCustomSubgraph(Protocol.Airdrops, chainId, name);
89
}
910

1011
function resolveOfficial(chainId: number, name: string, id: string): Sablier.Indexer.TheGraph {
11-
return resolveOfficialSubgraph("airdrops", chainId, name, id);
12+
return resolveOfficialSubgraph(Protocol.Airdrops, chainId, name, id);
1213
}
1314

1415
const graph = [

src/indexers/flow/envio.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
import { Protocol } from "@src/enums";
12
import config from "../config";
23
import { resolveEnvio } from "../helpers";
34

45
function get(chainId: number) {
5-
return resolveEnvio("flow", chainId);
6+
return resolveEnvio(Protocol.Flow, chainId);
67
}
78

89
const envio = config.envio.supportedChains.map(get);

src/indexers/flow/graph.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import { ChainId } from "@src/chains/ids";
2+
import { Protocol } from "@src/enums";
23
import type { Sablier } from "@src/types";
34
import type { TheGraphCustomChainId } from "../config";
45
import { resolveCustomSubgraph, resolveOfficialSubgraph } from "../helpers";
56

67
function resolveCustom(chainId: TheGraphCustomChainId, name: string): Sablier.Indexer.TheGraph {
7-
return resolveCustomSubgraph("flow", chainId, name);
8+
return resolveCustomSubgraph(Protocol.Flow, chainId, name);
89
}
910

1011
function resolveOfficial(chainId: number, name: string, id: string): Sablier.Indexer.TheGraph {
11-
return resolveOfficialSubgraph("flow", chainId, name, id);
12+
return resolveOfficialSubgraph(Protocol.Flow, chainId, name, id);
1213
}
1314

1415
const graph = [

0 commit comments

Comments
 (0)