sablier 3.12.1 → 3.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/cjs/evm/chains/builder.js +1 -1
- package/dist/cjs/evm/chains/builder.js.map +1 -1
- package/dist/cjs/evm/chains/custom.js +9 -9
- package/dist/cjs/evm/chains/custom.js.map +1 -1
- package/dist/cjs/evm/contracts/queries.js +1 -1
- package/dist/cjs/evm/contracts/queries.js.map +1 -1
- package/dist/cjs/evm/releases/lockup/v2.0/deployments.js +1 -1
- package/dist/cjs/evm/releases/lockup/v2.0/deployments.js.map +1 -1
- package/dist/cjs/evm/releases/resolvers.js +14 -22
- package/dist/cjs/evm/releases/resolvers.js.map +1 -1
- package/dist/cjs/internal/factories/chains.js +5 -15
- package/dist/cjs/internal/factories/chains.js.map +1 -1
- package/dist/cjs/internal/factories/queries.js +3 -9
- package/dist/cjs/internal/factories/queries.js.map +1 -1
- package/dist/cjs/internal/utils/object-path.js +3 -3
- package/dist/cjs/internal/utils/object-path.js.map +1 -1
- package/dist/cjs/sablier.js +2 -6
- package/dist/cjs/sablier.js.map +1 -1
- package/dist/cjs/solana/chains/chains.js +13 -13
- package/dist/cjs/solana/chains/chains.js.map +1 -1
- package/dist/cjs/solana/programs/catalog.js +1 -1
- package/dist/cjs/solana/programs/catalog.js.map +1 -1
- package/dist/cjs/solana/programs/queries.js +1 -1
- package/dist/cjs/solana/programs/queries.js.map +1 -1
- package/dist/cjs/solana/releases/resolvers.js +5 -6
- package/dist/cjs/solana/releases/resolvers.js.map +1 -1
- package/dist/esm/evm/chains/builder.js +1 -1
- package/dist/esm/evm/chains/builder.js.map +1 -1
- package/dist/esm/evm/chains/custom.js +9 -9
- package/dist/esm/evm/chains/custom.js.map +1 -1
- package/dist/esm/evm/contracts/queries.js +1 -1
- package/dist/esm/evm/contracts/queries.js.map +1 -1
- package/dist/esm/evm/releases/lockup/v2.0/deployments.js +1 -1
- package/dist/esm/evm/releases/lockup/v2.0/deployments.js.map +1 -1
- package/dist/esm/evm/releases/resolvers.js +14 -22
- package/dist/esm/evm/releases/resolvers.js.map +1 -1
- package/dist/esm/internal/factories/chains.js +5 -15
- package/dist/esm/internal/factories/chains.js.map +1 -1
- package/dist/esm/internal/factories/queries.js +3 -9
- package/dist/esm/internal/factories/queries.js.map +1 -1
- package/dist/esm/internal/utils/object-path.js +3 -3
- package/dist/esm/internal/utils/object-path.js.map +1 -1
- package/dist/esm/sablier.js +2 -6
- package/dist/esm/sablier.js.map +1 -1
- package/dist/esm/solana/chains/chains.js +13 -13
- package/dist/esm/solana/chains/chains.js.map +1 -1
- package/dist/esm/solana/programs/catalog.js +1 -1
- package/dist/esm/solana/programs/catalog.js.map +1 -1
- package/dist/esm/solana/programs/queries.js +1 -1
- package/dist/esm/solana/programs/queries.js.map +1 -1
- package/dist/esm/solana/releases/resolvers.js +5 -6
- package/dist/esm/solana/releases/resolvers.js.map +1 -1
- package/dist/types/evm/chains/custom.d.ts +9 -0
- package/dist/types/evm/chains/custom.d.ts.map +1 -1
- package/dist/types/evm/chains/specs.d.ts +244 -20
- package/dist/types/evm/chains/specs.d.ts.map +1 -1
- package/dist/types/evm/releases/resolvers.d.ts.map +1 -1
- package/dist/types/internal/factories/chains.d.ts.map +1 -1
- package/dist/types/internal/factories/queries.d.ts.map +1 -1
- package/dist/types/sablier.d.ts.map +1 -1
- package/dist/types/solana/releases/resolvers.d.ts.map +1 -1
- package/package.json +63 -63
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../../src/evm/releases/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,gCAAgC,GACjC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAIxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AA0CtD,MAAM,cAAc,GAAG,oBAAoB,CAKzC,aAAa,CAAC,CAAC;AAEjB,MAAM,0BAA0B,GAAG,gCAAgC,CAMjE,cAAc,EAAE,WAAW,CAAC,CAAC;AAS/B,SAAS,wBAAwB,CAC/B,MAAgC;IAEhC,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;IAG9C,MAAM,eAAe,GAAG,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;IAC1E,MAAM,UAAU,GAAG,0BAA0B,CAAC;QAC5C,GAAG,UAAU;QACb,WAAW,EAAE,eAAe;KAC7B,CAAoC,CAAC;IAGtC,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/D,UAAU,CAAC,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAEzE,OAAO,UAAU,CAAC;AACpB,CAAC;AAMD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU,EAAE;QAIV,QAAQ,EAAE,CAAC,MAAgC,EAAmC,EAAE
|
|
1
|
+
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../../src/evm/releases/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,gCAAgC,GACjC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAIxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AA0CtD,MAAM,cAAc,GAAG,oBAAoB,CAKzC,aAAa,CAAC,CAAC;AAEjB,MAAM,0BAA0B,GAAG,gCAAgC,CAMjE,cAAc,EAAE,WAAW,CAAC,CAAC;AAS/B,SAAS,wBAAwB,CAC/B,MAAgC;IAEhC,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;IAG9C,MAAM,eAAe,GAAG,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;IAC1E,MAAM,UAAU,GAAG,0BAA0B,CAAC;QAC5C,GAAG,UAAU;QACb,WAAW,EAAE,eAAe;KAC7B,CAAoC,CAAC;IAGtC,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/D,UAAU,CAAC,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAEzE,OAAO,UAAU,CAAC;AACpB,CAAC;AAMD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU,EAAE;QAIV,QAAQ,EAAE,CAAC,MAAgC,EAAmC,EAAE,CAC9E,wBAAwB,CAAC,MAAM,CAAC;QAKlC,QAAQ,EAAE,CAAC,MAAgC,EAA0B,EAAE,CACrE,0BAA0B,CAAC,MAAM,CAAC;KACrC;IAED,OAAO,EAAE;QAIP,QAAQ,EAAE,CAIR,MAGC,EACyB,EAAE,CAAC,CAAC;YAC9B,GAAG,MAAM;YACT,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC/C,QAAQ,EAAE,qBAAqB,CAAiB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;YAChF,IAAI,EAAE,UAAU;SACjB,CAAC;QAKF,QAAQ,EAAE,CAKR,MAGC,EACoC,EAAE,CAAC,CAAC;YACzC,GAAG,MAAM;YACT,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC/C,QAAQ,EAAE,qBAAqB,CAAY,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;YAC3E,IAAI,EAAE,UAAU;SACjB,CAAC;KACH;CACF,CAAC","sourcesContent":["import { chainsQueries } from \"@/src/evm/chains/queries.js\";\nimport {\n createContractMapper,\n createStandardDeploymentResolver,\n} from \"@/src/internal/factories/resolver.js\";\nimport { getNestedValues } from \"@/src/internal/utils/nested-values.js\";\nimport type { AliasMap } from \"@/src/shared/types.js\";\nimport type { Sablier } from \"@/src/types.js\";\nimport type { EvmReleaseVersionByProtocol, ReleaseFeaturesForProtocol } from \"./features.js\";\nimport { getEvmReleaseFeatures } from \"./features.js\";\n\n/* -------------------------------------------------------------------------- */\n/* TYPES */\n/* -------------------------------------------------------------------------- */\n\ntype DeploymentBaseParams = {\n protocol: Sablier.EVM.Protocol;\n version: Sablier.EVM.Version;\n chainId: number;\n aliasMap: AliasMap;\n};\n\ntype DeploymentLockupV1Params = DeploymentBaseParams & {\n contractMap: {\n core: Sablier.EVM.ContractMap;\n periphery: Sablier.EVM.ContractMap;\n };\n};\n\ntype DeploymentStandardParams = DeploymentBaseParams & {\n contractMap: Sablier.EVM.ContractMap;\n};\n\ntype ReleaseParams<T> = Omit<T, \"kind\" | \"contractNames\" | \"features\" | \"protocol\" | \"version\">;\n\ntype StandardRelease<\n TProtocol extends keyof EvmReleaseVersionByProtocol,\n TAbiMap extends Sablier.EVM.AbiMap,\n> = Sablier.EVM.Release.Standard<TAbiMap, ReleaseFeaturesForProtocol<TProtocol>>;\n\ntype LockupProtocol = Extract<keyof EvmReleaseVersionByProtocol, \"lockup\">;\n\ntype LockupV1Release<TAbiMap extends Sablier.EVM.AbiMap> = Sablier.EVM.Release.LockupV1<\n TAbiMap,\n ReleaseFeaturesForProtocol<LockupProtocol>\n>;\n\n/* -------------------------------------------------------------------------- */\n/* PLATFORM SETUP */\n/* -------------------------------------------------------------------------- */\n\nconst contractMapper = createContractMapper<\n Sablier.EVM.Contract,\n Sablier.EVM.Protocol,\n Sablier.EVM.Version,\n Sablier.EVM.Address\n>(chainsQueries);\n\nconst standardDeploymentResolver = createStandardDeploymentResolver<\n Sablier.EVM.Deployment,\n Sablier.EVM.Contract,\n Sablier.EVM.Protocol,\n Sablier.EVM.Version,\n Sablier.EVM.Address\n>(contractMapper, \"contracts\");\n\n/* -------------------------------------------------------------------------- */\n/* EVM-SPECIFIC RESOLVERS */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Creates a LockupV1 deployment with separate core and periphery contracts\n */\nfunction createLockupV1Deployment(\n params: DeploymentLockupV1Params\n): Sablier.EVM.Deployment.LockupV1 {\n const { contractMap, ...baseParams } = params;\n\n // Create standard deployment with merged contracts\n const mergedContracts = { ...contractMap.core, ...contractMap.periphery };\n const deployment = standardDeploymentResolver({\n ...baseParams,\n contractMap: mergedContracts,\n }) as Sablier.EVM.Deployment.LockupV1;\n\n // Add separated core and periphery contracts\n deployment.core = contractMapper(contractMap.core, baseParams);\n deployment.periphery = contractMapper(contractMap.periphery, baseParams);\n\n return deployment;\n}\n\n/* -------------------------------------------------------------------------- */\n/* RESOLVERS */\n/* -------------------------------------------------------------------------- */\n\nexport const resolvers = {\n deployment: {\n /**\n * Creates a LockupV1 deployment with separate core and periphery contracts\n */\n lockupV1: (params: DeploymentLockupV1Params): Sablier.EVM.Deployment.LockupV1 =>\n createLockupV1Deployment(params),\n\n /**\n * Creates a standard deployment with all contracts in a single array\n */\n standard: (params: DeploymentStandardParams): Sablier.EVM.Deployment =>\n standardDeploymentResolver(params),\n },\n\n release: {\n /**\n * Creates a LockupV1 release with contract names extracted from manifest\n */\n lockupV1: <\n TAbiMap extends Sablier.EVM.AbiMap,\n TVersion extends EvmReleaseVersionByProtocol[LockupProtocol],\n >(\n params: ReleaseParams<LockupV1Release<TAbiMap>> & {\n protocol: LockupProtocol;\n version: TVersion;\n }\n ): LockupV1Release<TAbiMap> => ({\n ...params,\n contractNames: getNestedValues(params.manifest),\n features: getEvmReleaseFeatures<LockupProtocol>(params.protocol, params.version),\n kind: \"lockupV1\",\n }),\n\n /**\n * Creates a standard release with contract names extracted from manifest\n */\n standard: <\n TProtocol extends keyof EvmReleaseVersionByProtocol,\n TAbiMap extends Sablier.EVM.AbiMap,\n TVersion extends EvmReleaseVersionByProtocol[TProtocol],\n >(\n params: ReleaseParams<StandardRelease<TProtocol, TAbiMap>> & {\n protocol: TProtocol;\n version: TVersion;\n }\n ): StandardRelease<TProtocol, TAbiMap> => ({\n ...params,\n contractNames: getNestedValues(params.manifest),\n features: getEvmReleaseFeatures<TProtocol>(params.protocol, params.version),\n kind: \"standard\",\n }),\n },\n};\n"]}
|
|
@@ -2,18 +2,10 @@ import { sortChains } from "../../internal/utils/sort-chains.js";
|
|
|
2
2
|
export function createChainQueries(chains) {
|
|
3
3
|
const chainValues = Object.values(chains);
|
|
4
4
|
return {
|
|
5
|
-
get: (chainId) =>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return sortChains(chainValues);
|
|
10
|
-
},
|
|
11
|
-
getBySlug: (slug) => {
|
|
12
|
-
return chainValues.find((c) => c.slug === slug);
|
|
13
|
-
},
|
|
14
|
-
getMainnets: () => {
|
|
15
|
-
return sortChains(chainValues.filter((c) => !c.isTestnet));
|
|
16
|
-
},
|
|
5
|
+
get: (chainId) => chainValues.find((c) => c.id === chainId),
|
|
6
|
+
getAll: () => sortChains(chainValues),
|
|
7
|
+
getBySlug: (slug) => chainValues.find((c) => c.slug === slug),
|
|
8
|
+
getMainnets: () => sortChains(chainValues.filter((c) => !c.isTestnet)),
|
|
17
9
|
getOrThrow: (chainId) => {
|
|
18
10
|
const chain = chainValues.find((c) => c.id === chainId);
|
|
19
11
|
if (!chain) {
|
|
@@ -21,9 +13,7 @@ export function createChainQueries(chains) {
|
|
|
21
13
|
}
|
|
22
14
|
return chain;
|
|
23
15
|
},
|
|
24
|
-
getTestnets: () =>
|
|
25
|
-
return sortChains(chainValues.filter((c) => c.isTestnet));
|
|
26
|
-
},
|
|
16
|
+
getTestnets: () => sortChains(chainValues.filter((c) => c.isTestnet)),
|
|
27
17
|
};
|
|
28
18
|
}
|
|
29
19
|
//# sourceMappingURL=chains.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../../src/internal/factories/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAgBjE,MAAM,UAAU,kBAAkB,CAAyB,MAAyB;IAClF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO;QAOL,GAAG,EAAE,CAAC,OAAe,EAAiB,EAAE
|
|
1
|
+
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../../src/internal/factories/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAgBjE,MAAM,UAAU,kBAAkB,CAAyB,MAAyB;IAClF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO;QAOL,GAAG,EAAE,CAAC,OAAe,EAAiB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC;QAOlF,MAAM,EAAE,GAAQ,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAQ1C,SAAS,EAAE,CAAC,IAAY,EAAiB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QAOpF,WAAW,EAAE,GAAQ,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAS3E,UAAU,EAAE,CAAC,OAAe,EAAK,EAAE;YACjC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YACxD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,YAAY,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAOD,WAAW,EAAE,GAAQ,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;KAC3E,CAAC;AACJ,CAAC","sourcesContent":["import { sortChains } from \"@/src/internal/utils/sort-chains.js\";\nimport type { Shared } from \"@/src/shared/types.js\";\n\n/**\n * Generic factory function to create type-safe chain query objects.\n *\n * @template T - Chain type extending ChainCommon constraint\n * @param chains - Record of chain definitions keyed by chain identifier\n * @returns Query object with type-safe methods for chain operations\n *\n * @example\n * ```typescript\n * const evmQueries = createChainQueries<Sablier.EVM.Chain>(evmChains);\n * const solanaQueries = createChainQueries<Sablier.Solana.Chain>(solanaChains);\n * ```\n */\nexport function createChainQueries<T extends Shared.Chain>(chains: Record<string, T>) {\n const chainValues = Object.values(chains);\n\n return {\n /**\n * Find a chain by its numeric ID.\n *\n * @param chainId - The numeric chain identifier\n * @returns The chain if found, undefined otherwise\n */\n get: (chainId: number): T | undefined => chainValues.find((c) => c.id === chainId),\n\n /**\n * Get all chains sorted by name.\n *\n * @returns Array of all chains sorted alphabetically\n */\n getAll: (): T[] => sortChains(chainValues),\n\n /**\n * Find a chain by its slug identifier.\n *\n * @param slug - The chain slug (e.g., \"ethereum\", \"solana-mainnet\")\n * @returns The chain if found, undefined otherwise\n */\n getBySlug: (slug: string): T | undefined => chainValues.find((c) => c.slug === slug),\n\n /**\n * Get all mainnet chains sorted by name.\n *\n * @returns Array of mainnet chains sorted alphabetically\n */\n getMainnets: (): T[] => sortChains(chainValues.filter((c) => !c.isTestnet)),\n\n /**\n * Find a chain by its numeric ID, throwing an error if not found.\n *\n * @param chainId - The numeric chain identifier\n * @returns The chain\n * @throws Error if chain with the given ID is not found\n */\n getOrThrow: (chainId: number): T => {\n const chain = chainValues.find((c) => c.id === chainId);\n if (!chain) {\n throw new Error(`Sablier SDK: Chain with ID ${chainId} not found`);\n }\n return chain;\n },\n\n /**\n * Get all testnet chains sorted by name.\n *\n * @returns Array of testnet chains sorted alphabetically\n */\n getTestnets: (): T[] => sortChains(chainValues.filter((c) => c.isTestnet)),\n };\n}\n"]}
|
|
@@ -43,15 +43,9 @@ export function createContractsQueries(config) {
|
|
|
43
43
|
const dep = release.deployments.find((d) => d.chainId === chainId);
|
|
44
44
|
return getItems(dep);
|
|
45
45
|
};
|
|
46
|
-
const findByName = (release, chainId, name) =>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const findByAddress = (release, chainId, address) => {
|
|
50
|
-
return getDeploymentItems(release, chainId).find((c) => normalizeAddress(c.address) === address);
|
|
51
|
-
};
|
|
52
|
-
const releaseHasAddress = (release, chainId, address) => {
|
|
53
|
-
return getDeploymentItems(release, chainId).some((c) => normalizeAddress(c.address) === address);
|
|
54
|
-
};
|
|
46
|
+
const findByName = (release, chainId, name) => getDeploymentItems(release, chainId).find((c) => c.name === name);
|
|
47
|
+
const findByAddress = (release, chainId, address) => getDeploymentItems(release, chainId).find((c) => normalizeAddress(c.address) === address);
|
|
48
|
+
const releaseHasAddress = (release, chainId, address) => getDeploymentItems(release, chainId).some((c) => normalizeAddress(c.address) === address);
|
|
55
49
|
const searchCatalog = (chainId, address) => {
|
|
56
50
|
for (const p of protocols) {
|
|
57
51
|
const contract = getPath(catalog, [p, chainId, address]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/internal/factories/queries.ts"],"names":[],"mappings":"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","sourcesContent":["import { getPath } from \"@/src/internal/utils/object-path.js\";\n\n/**\n * Factory function to create releases queries with platform-specific configuration.\n * This eliminates code duplication between EVM and Solana implementations.\n */\nexport function createReleasesQueries<\n TProtocol extends string,\n TVersion extends string,\n TRelease extends {\n version: TVersion;\n deployments: Array<{ chainId: number }>;\n isLatest?: boolean;\n },\n>(config: {\n releases: Record<TProtocol, Record<string, TRelease>>;\n ProtocolEnum: Record<string, TProtocol>;\n}) {\n const { releases, ProtocolEnum } = config;\n\n return {\n get: (opts: { protocol: TProtocol; version: TVersion }): TRelease | undefined => {\n const { protocol, version } = opts;\n return getPath<TRelease>(releases, [protocol, version]);\n },\n /**\n * Get all releases for a protocol.\n * - {} ⇒ all releases for all protocols\n * - {protocol} ⇒ all releases for that protocol\n */\n getAll: (opts?: { protocol?: TProtocol }): TRelease[] => {\n const { protocol } = opts || {};\n if (protocol) {\n return Object.values(releases[protocol]) as TRelease[];\n }\n // Recursively get all releases from all protocols in the enum\n return Object.values(ProtocolEnum).flatMap((protocolName) =>\n Object.values(releases[protocolName])\n ) as TRelease[];\n },\n /**\n * Get the first release:\n * - {protocol} ⇒ first overall\n * - {protocol,chainId} ⇒ first on that chain\n */\n getFirst: (opts: { protocol: TProtocol; chainId?: number }): TRelease | undefined => {\n const { protocol, chainId } = opts;\n const list = Object.values(releases[protocol]) as TRelease[];\n\n if (chainId) {\n return list.find((r) => r.deployments.some((d) => d.chainId === chainId));\n }\n\n return list[0];\n },\n /**\n * Get the latest release for a protocol.\n * - {protocol}\n */\n getLatest: (opts: { protocol: TProtocol }): TRelease => {\n const list = Object.values(releases[opts.protocol]) as TRelease[];\n const latest = list.at(-1);\n if (!latest?.isLatest) {\n throw new Error(\n `Sablier SDK: No latest release found for Sablier ${opts.protocol}. Please report on GitHub.`\n );\n }\n return latest;\n },\n };\n}\n\n/**\n * Factory function to create contract queries with platform-specific configuration.\n * This eliminates code duplication between EVM and Solana implementations.\n *\n * @template TProtocol - The protocol type\n * @template TContract - The contract/program type with name and address fields\n * @template TDeployment - The deployment type containing contracts or programs\n * @template TRelease - The release type\n * @template TCatalog - The catalog type for reverse lookups\n * @template TAliasCatalog - The alias catalog type for alias-based lookups\n */\nexport function createContractsQueries<\n TProtocol extends string,\n TContract extends { name: string; address: string; alias?: string },\n TDeployment extends { chainId: number; contracts?: TContract[]; programs?: TContract[] },\n TRelease extends { version: string; deployments: TDeployment[] },\n TCatalog,\n TAliasCatalog = undefined,\n>(config: {\n getAliasCatalog?: () => TAliasCatalog;\n catalog: TCatalog;\n releasesQueries: {\n getAll: (opts?: { protocol?: TProtocol }) => TRelease[];\n getLatest: (opts: { protocol: TProtocol }) => TRelease;\n };\n protocols: TProtocol[];\n normalizeAddress: (address: string) => string;\n /** Field name for contracts (e.g., 'contracts' for EVM, 'programs' for Solana) */\n contractsField: \"contracts\" | \"programs\";\n}) {\n const { getAliasCatalog, catalog, releasesQueries, protocols, normalizeAddress, contractsField } =\n config;\n\n // Helper to safely get contracts/programs from deployment\n const getItems = (deployment: TDeployment | undefined): TContract[] => {\n if (!deployment) {\n return [];\n }\n return (deployment[contractsField] as TContract[]) || [];\n };\n\n // Helper to find deployment by chainId and get its contracts\n const getDeploymentItems = (release: TRelease, chainId: number): TContract[] => {\n const dep = release.deployments.find((d) => d.chainId === chainId) as TDeployment | undefined;\n return getItems(dep);\n };\n\n // Helper to find contract by name in a release\n const findByName = (release: TRelease, chainId: number, name: string): TContract | undefined => {\n return getDeploymentItems(release, chainId).find((c) => c.name === name);\n };\n\n // Helper to find contract by address in a release\n const findByAddress = (\n release: TRelease,\n chainId: number,\n address: string\n ): TContract | undefined => {\n return getDeploymentItems(release, chainId).find(\n (c) => normalizeAddress(c.address) === address\n );\n };\n\n // Helper to check if release contains address on chain\n const releaseHasAddress = (release: TRelease, chainId: number, address: string): boolean => {\n return getDeploymentItems(release, chainId).some(\n (c) => normalizeAddress(c.address) === address\n );\n };\n\n // Helper to search catalog across all protocols\n const searchCatalog = (chainId: number, address: string): TContract | undefined => {\n for (const p of protocols) {\n const contract = getPath<TContract>(catalog, [p, chainId, address]);\n if (contract) {\n return contract;\n }\n }\n return undefined;\n };\n\n // Helper to find contract by address scoped to protocol (with duplicate check)\n const findByAddressInProtocol = (\n protocol: TProtocol,\n chainId: number,\n address: string,\n originalAddress: string\n ): TContract | undefined => {\n const releases = releasesQueries.getAll({ protocol });\n const matches = releases.filter((rel) => releaseHasAddress(rel, chainId, address));\n\n if (matches.length > 1) {\n const versions = matches.map((r) => r.version).join(\", \");\n throw new Error(\n `Sablier SDK: Contract ${originalAddress} exists in multiple releases (${versions}) for \"${protocol}\". ` +\n \"Specify release: { chainId, contractAddress, release }\"\n );\n }\n\n return getPath<TContract>(catalog, [protocol, chainId, address]);\n };\n\n // Helper to filter deployments by chainId and extract contracts\n const filterDeploymentsAndGetItems = (\n deployments: TDeployment[],\n chainId?: number\n ): TContract[] | undefined => {\n const filtered = chainId ? deployments.filter((d) => d.chainId === chainId) : deployments;\n if (chainId && filtered.length === 0) {\n return undefined;\n }\n return filtered.flatMap(getItems);\n };\n\n return {\n /**\n * Get a single contract using the following options:\n *\n * - { chainId, contractName, release }\n * - { chainId, contractAddress, protocol }\n * - { chainId, contractAddress, release }\n * - { chainId, contractAddress, protocol, release }\n *\n * Note: If a contract address exists in multiple releases for the same protocol, you must specify the release.\n */\n get: (opts: {\n chainId: number;\n contractAddress?: string;\n contractName?: string;\n protocol?: TProtocol;\n release?: TRelease;\n }): TContract | undefined => {\n const { chainId, contractAddress, contractName, protocol, release } = opts;\n\n // Validation\n if (contractAddress && contractName) {\n throw new Error(\"Sablier SDK: Cannot specify both contractAddress and contractName\");\n }\n\n // Query by name requires release\n if (contractName) {\n if (!release) {\n throw new Error(\"Sablier SDK: contractName requires release to be specified\");\n }\n return findByName(release, chainId, contractName);\n }\n\n // Query by address\n if (!contractAddress) {\n return undefined;\n }\n\n const address = normalizeAddress(contractAddress);\n\n // Scoped to specific release\n if (release) {\n return findByAddress(release, chainId, address);\n }\n\n // Scoped to protocol - check for duplicates across releases\n if (protocol) {\n return findByAddressInProtocol(protocol, chainId, address, contractAddress);\n }\n\n // Fallback: search all protocols\n return searchCatalog(chainId, address);\n },\n\n /**\n * Get many contracts.\n * - no options ⇒ all\n * - { chainId } ⇒ all for that chain\n * - { protocol } ⇒ all for that protocol\n * - { protocol, chainId } ⇒ all for that protocol and chain\n * - { release } ⇒ all deployments of that release\n * - { release, chainId } ⇒ all for that release and chain\n */\n getAll: (opts?: {\n chainId?: number;\n protocol?: TProtocol;\n release?: TRelease;\n }): TContract[] | undefined => {\n const { protocol, chainId, release } = opts || {};\n\n if (protocol && release) {\n throw new Error(\"Sablier SDK: Cannot specify both protocol and release as query options\");\n }\n\n // by protocol\n if (protocol) {\n const releases = releasesQueries.getAll({ protocol });\n const deployments = releases.flatMap((r) => r.deployments);\n return filterDeploymentsAndGetItems(deployments, chainId);\n }\n\n // by explicit release\n if (release) {\n return filterDeploymentsAndGetItems(release.deployments, chainId);\n }\n\n // by chain id or no filters\n const deployments = releasesQueries.getAll().flatMap((r) => r.deployments);\n return filterDeploymentsAndGetItems(deployments, chainId);\n },\n\n /**\n * Get a contract by its alias.\n * Aliases are version-specific (e.g., LK = Lockup v2.0, LK2 = Lockup v3.0, LK3 = Lockup v4.0).\n *\n * @example\n * contractsQueries.getByAlias({ alias: \"LK2\", chainId: 1 })\n * contractsQueries.getByAlias({ alias: \"FL3\", chainId: 137, protocol: \"flow\" })\n */\n getByAlias: (opts: {\n alias: string;\n chainId: number;\n protocol?: TProtocol;\n }): TContract | undefined => {\n const { alias, chainId, protocol } = opts;\n\n if (!getAliasCatalog) {\n return undefined;\n }\n\n const aliasCatalog = getAliasCatalog();\n if (!aliasCatalog) {\n return undefined;\n }\n\n if (protocol) {\n return getPath<TContract>(aliasCatalog, [protocol, chainId, alias]);\n }\n\n // Search all protocols\n for (const p of protocols) {\n const contract = getPath<TContract>(aliasCatalog, [p, chainId, alias]);\n if (contract) {\n return contract;\n }\n }\n return undefined;\n },\n\n /**\n * Get the latest contract by name for a protocol.\n * - { chainId, contractName, protocol }\n */\n getLatestByName: (opts: {\n chainId: number;\n contractName: string;\n protocol: TProtocol;\n }): TContract | undefined => {\n const { chainId, contractName, protocol } = opts;\n const release = releasesQueries.getLatest({ protocol });\n const dep = release.deployments.find((d) => d.chainId === chainId) as TDeployment | undefined;\n const items = getItems(dep);\n return items.find((c) => c.name === contractName);\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/internal/factories/queries.ts"],"names":[],"mappings":"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","sourcesContent":["import { getPath } from \"@/src/internal/utils/object-path.js\";\n\n/**\n * Factory function to create releases queries with platform-specific configuration.\n * This eliminates code duplication between EVM and Solana implementations.\n */\nexport function createReleasesQueries<\n TProtocol extends string,\n TVersion extends string,\n TRelease extends {\n version: TVersion;\n deployments: Array<{ chainId: number }>;\n isLatest?: boolean;\n },\n>(config: {\n releases: Record<TProtocol, Record<string, TRelease>>;\n ProtocolEnum: Record<string, TProtocol>;\n}) {\n const { releases, ProtocolEnum } = config;\n\n return {\n get: (opts: { protocol: TProtocol; version: TVersion }): TRelease | undefined => {\n const { protocol, version } = opts;\n return getPath<TRelease>(releases, [protocol, version]);\n },\n /**\n * Get all releases for a protocol.\n * - {} ⇒ all releases for all protocols\n * - {protocol} ⇒ all releases for that protocol\n */\n getAll: (opts?: { protocol?: TProtocol }): TRelease[] => {\n const { protocol } = opts || {};\n if (protocol) {\n return Object.values(releases[protocol]) as TRelease[];\n }\n // Recursively get all releases from all protocols in the enum\n return Object.values(ProtocolEnum).flatMap((protocolName) =>\n Object.values(releases[protocolName])\n ) as TRelease[];\n },\n /**\n * Get the first release:\n * - {protocol} ⇒ first overall\n * - {protocol,chainId} ⇒ first on that chain\n */\n getFirst: (opts: { protocol: TProtocol; chainId?: number }): TRelease | undefined => {\n const { protocol, chainId } = opts;\n const list = Object.values(releases[protocol]) as TRelease[];\n\n if (chainId) {\n return list.find((r) => r.deployments.some((d) => d.chainId === chainId));\n }\n\n return list[0];\n },\n /**\n * Get the latest release for a protocol.\n * - {protocol}\n */\n getLatest: (opts: { protocol: TProtocol }): TRelease => {\n const list = Object.values(releases[opts.protocol]) as TRelease[];\n const latest = list.at(-1);\n if (!latest?.isLatest) {\n throw new Error(\n `Sablier SDK: No latest release found for Sablier ${opts.protocol}. Please report on GitHub.`\n );\n }\n return latest;\n },\n };\n}\n\n/**\n * Factory function to create contract queries with platform-specific configuration.\n * This eliminates code duplication between EVM and Solana implementations.\n *\n * @template TProtocol - The protocol type\n * @template TContract - The contract/program type with name and address fields\n * @template TDeployment - The deployment type containing contracts or programs\n * @template TRelease - The release type\n * @template TCatalog - The catalog type for reverse lookups\n * @template TAliasCatalog - The alias catalog type for alias-based lookups\n */\nexport function createContractsQueries<\n TProtocol extends string,\n TContract extends { name: string; address: string; alias?: string },\n TDeployment extends { chainId: number; contracts?: TContract[]; programs?: TContract[] },\n TRelease extends { version: string; deployments: TDeployment[] },\n TCatalog,\n TAliasCatalog = undefined,\n>(config: {\n getAliasCatalog?: () => TAliasCatalog;\n catalog: TCatalog;\n releasesQueries: {\n getAll: (opts?: { protocol?: TProtocol }) => TRelease[];\n getLatest: (opts: { protocol: TProtocol }) => TRelease;\n };\n protocols: TProtocol[];\n normalizeAddress: (address: string) => string;\n /** Field name for contracts (e.g., 'contracts' for EVM, 'programs' for Solana) */\n contractsField: \"contracts\" | \"programs\";\n}) {\n const { getAliasCatalog, catalog, releasesQueries, protocols, normalizeAddress, contractsField } =\n config;\n\n // Helper to safely get contracts/programs from deployment\n const getItems = (deployment: TDeployment | undefined): TContract[] => {\n if (!deployment) {\n return [];\n }\n return (deployment[contractsField] as TContract[]) || [];\n };\n\n // Helper to find deployment by chainId and get its contracts\n const getDeploymentItems = (release: TRelease, chainId: number): TContract[] => {\n const dep = release.deployments.find((d) => d.chainId === chainId) as TDeployment | undefined;\n return getItems(dep);\n };\n\n // Helper to find contract by name in a release\n const findByName = (release: TRelease, chainId: number, name: string): TContract | undefined =>\n getDeploymentItems(release, chainId).find((c) => c.name === name);\n\n // Helper to find contract by address in a release\n const findByAddress = (\n release: TRelease,\n chainId: number,\n address: string\n ): TContract | undefined =>\n getDeploymentItems(release, chainId).find((c) => normalizeAddress(c.address) === address);\n\n // Helper to check if release contains address on chain\n const releaseHasAddress = (release: TRelease, chainId: number, address: string): boolean =>\n getDeploymentItems(release, chainId).some((c) => normalizeAddress(c.address) === address);\n\n // Helper to search catalog across all protocols\n const searchCatalog = (chainId: number, address: string): TContract | undefined => {\n for (const p of protocols) {\n const contract = getPath<TContract>(catalog, [p, chainId, address]);\n if (contract) {\n return contract;\n }\n }\n return undefined;\n };\n\n // Helper to find contract by address scoped to protocol (with duplicate check)\n const findByAddressInProtocol = (\n protocol: TProtocol,\n chainId: number,\n address: string,\n originalAddress: string\n ): TContract | undefined => {\n const releases = releasesQueries.getAll({ protocol });\n const matches = releases.filter((rel) => releaseHasAddress(rel, chainId, address));\n\n if (matches.length > 1) {\n const versions = matches.map((r) => r.version).join(\", \");\n throw new Error(\n `Sablier SDK: Contract ${originalAddress} exists in multiple releases (${versions}) for \"${protocol}\". ` +\n \"Specify release: { chainId, contractAddress, release }\"\n );\n }\n\n return getPath<TContract>(catalog, [protocol, chainId, address]);\n };\n\n // Helper to filter deployments by chainId and extract contracts\n const filterDeploymentsAndGetItems = (\n deployments: TDeployment[],\n chainId?: number\n ): TContract[] | undefined => {\n const filtered = chainId ? deployments.filter((d) => d.chainId === chainId) : deployments;\n if (chainId && filtered.length === 0) {\n return undefined;\n }\n return filtered.flatMap(getItems);\n };\n\n return {\n /**\n * Get a single contract using the following options:\n *\n * - { chainId, contractName, release }\n * - { chainId, contractAddress, protocol }\n * - { chainId, contractAddress, release }\n * - { chainId, contractAddress, protocol, release }\n *\n * Note: If a contract address exists in multiple releases for the same protocol, you must specify the release.\n */\n get: (opts: {\n chainId: number;\n contractAddress?: string;\n contractName?: string;\n protocol?: TProtocol;\n release?: TRelease;\n }): TContract | undefined => {\n const { chainId, contractAddress, contractName, protocol, release } = opts;\n\n // Validation\n if (contractAddress && contractName) {\n throw new Error(\"Sablier SDK: Cannot specify both contractAddress and contractName\");\n }\n\n // Query by name requires release\n if (contractName) {\n if (!release) {\n throw new Error(\"Sablier SDK: contractName requires release to be specified\");\n }\n return findByName(release, chainId, contractName);\n }\n\n // Query by address\n if (!contractAddress) {\n return undefined;\n }\n\n const address = normalizeAddress(contractAddress);\n\n // Scoped to specific release\n if (release) {\n return findByAddress(release, chainId, address);\n }\n\n // Scoped to protocol - check for duplicates across releases\n if (protocol) {\n return findByAddressInProtocol(protocol, chainId, address, contractAddress);\n }\n\n // Fallback: search all protocols\n return searchCatalog(chainId, address);\n },\n\n /**\n * Get many contracts.\n * - no options ⇒ all\n * - { chainId } ⇒ all for that chain\n * - { protocol } ⇒ all for that protocol\n * - { protocol, chainId } ⇒ all for that protocol and chain\n * - { release } ⇒ all deployments of that release\n * - { release, chainId } ⇒ all for that release and chain\n */\n getAll: (opts?: {\n chainId?: number;\n protocol?: TProtocol;\n release?: TRelease;\n }): TContract[] | undefined => {\n const { protocol, chainId, release } = opts || {};\n\n if (protocol && release) {\n throw new Error(\"Sablier SDK: Cannot specify both protocol and release as query options\");\n }\n\n // by protocol\n if (protocol) {\n const releases = releasesQueries.getAll({ protocol });\n const deployments = releases.flatMap((r) => r.deployments);\n return filterDeploymentsAndGetItems(deployments, chainId);\n }\n\n // by explicit release\n if (release) {\n return filterDeploymentsAndGetItems(release.deployments, chainId);\n }\n\n // by chain id or no filters\n const deployments = releasesQueries.getAll().flatMap((r) => r.deployments);\n return filterDeploymentsAndGetItems(deployments, chainId);\n },\n\n /**\n * Get a contract by its alias.\n * Aliases are version-specific (e.g., LK = Lockup v2.0, LK2 = Lockup v3.0, LK3 = Lockup v4.0).\n *\n * @example\n * contractsQueries.getByAlias({ alias: \"LK2\", chainId: 1 })\n * contractsQueries.getByAlias({ alias: \"FL3\", chainId: 137, protocol: \"flow\" })\n */\n getByAlias: (opts: {\n alias: string;\n chainId: number;\n protocol?: TProtocol;\n }): TContract | undefined => {\n const { alias, chainId, protocol } = opts;\n\n if (!getAliasCatalog) {\n return undefined;\n }\n\n const aliasCatalog = getAliasCatalog();\n if (!aliasCatalog) {\n return undefined;\n }\n\n if (protocol) {\n return getPath<TContract>(aliasCatalog, [protocol, chainId, alias]);\n }\n\n // Search all protocols\n for (const p of protocols) {\n const contract = getPath<TContract>(aliasCatalog, [p, chainId, alias]);\n if (contract) {\n return contract;\n }\n }\n return undefined;\n },\n\n /**\n * Get the latest contract by name for a protocol.\n * - { chainId, contractName, protocol }\n */\n getLatestByName: (opts: {\n chainId: number;\n contractName: string;\n protocol: TProtocol;\n }): TContract | undefined => {\n const { chainId, contractName, protocol } = opts;\n const release = releasesQueries.getLatest({ protocol });\n const dep = release.deployments.find((d) => d.chainId === chainId) as TDeployment | undefined;\n const items = getItems(dep);\n return items.find((c) => c.name === contractName);\n },\n };\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export function getPath(obj, path) {
|
|
2
2
|
let result = obj;
|
|
3
3
|
for (const key of path) {
|
|
4
|
-
if (result
|
|
4
|
+
if (result === null || result === undefined) {
|
|
5
5
|
return undefined;
|
|
6
6
|
}
|
|
7
7
|
result = result[key];
|
|
@@ -13,9 +13,9 @@ export function setPath(obj, path, value) {
|
|
|
13
13
|
return obj;
|
|
14
14
|
}
|
|
15
15
|
let current = obj;
|
|
16
|
-
for (let i = 0; i < path.length - 1; i
|
|
16
|
+
for (let i = 0; i < path.length - 1; i += 1) {
|
|
17
17
|
const key = path[i];
|
|
18
|
-
if (current[key]
|
|
18
|
+
if (current[key] === null || current[key] === undefined) {
|
|
19
19
|
current[key] = {};
|
|
20
20
|
}
|
|
21
21
|
current = current[key];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-path.js","sourceRoot":"","sources":["../../../../src/internal/utils/object-path.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,OAAO,CAAI,GAAY,EAAE,IAAkC;IACzE,IAAI,MAAM,GAAY,GAAG,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"object-path.js","sourceRoot":"","sources":["../../../../src/internal/utils/object-path.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,OAAO,CAAI,GAAY,EAAE,IAAkC;IACzE,IAAI,MAAM,GAAY,GAAG,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,GAAI,MAA2C,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAuB,CAAC;AACjC,CAAC;AAQD,MAAM,UAAU,OAAO,CACrB,GAAM,EACN,IAAkC,EAClC,KAAc;IAEd,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,OAAO,GAAqC,GAAuC,CAAC;IACxF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAqC,CAAC;IAC7D,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IACzB,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["/**\n * Get a nested value from an object by path.\n * @example\n * getPath(obj, [\"a\", \"b\", \"c\"]) // obj.a.b.c\n */\nexport function getPath<T>(obj: unknown, path: readonly (string | number)[]): T | undefined {\n let result: unknown = obj;\n for (const key of path) {\n if (result === null || result === undefined) {\n return undefined;\n }\n result = (result as Record<string | number, unknown>)[key];\n }\n return result as T | undefined;\n}\n\n/**\n * Set a nested value in an object by path, creating intermediate objects as needed.\n * Mutates and returns the original object.\n * @example\n * setPath(obj, [\"a\", \"b\", \"c\"], value) // obj.a.b.c = value\n */\nexport function setPath<T extends object>(\n obj: T,\n path: readonly (string | number)[],\n value: unknown\n): T {\n if (path.length === 0) {\n return obj;\n }\n let current: Record<string | number, unknown> = obj as Record<string | number, unknown>;\n for (let i = 0; i < path.length - 1; i += 1) {\n const key = path[i];\n if (current[key] === null || current[key] === undefined) {\n current[key] = {};\n }\n current = current[key] as Record<string | number, unknown>;\n }\n const lastKey = path.at(-1);\n if (lastKey === undefined) {\n return obj;\n }\n current[lastKey] = value;\n return obj;\n}\n"]}
|
package/dist/esm/sablier.js
CHANGED
|
@@ -10,18 +10,14 @@ const evmDeploymentsQueries = {
|
|
|
10
10
|
const { release, chainId } = opts || {};
|
|
11
11
|
return release.deployments.find((d) => d.chainId === chainId);
|
|
12
12
|
},
|
|
13
|
-
getAll: () =>
|
|
14
|
-
return evmReleasesQueries.getAll().flatMap((r) => r.deployments);
|
|
15
|
-
},
|
|
13
|
+
getAll: () => evmReleasesQueries.getAll().flatMap((r) => r.deployments),
|
|
16
14
|
};
|
|
17
15
|
const solanaDeploymentsQueries = {
|
|
18
16
|
get: (opts) => {
|
|
19
17
|
const { release, chainId } = opts || {};
|
|
20
18
|
return release.deployments.find((d) => d.chainId === chainId);
|
|
21
19
|
},
|
|
22
|
-
getAll: () =>
|
|
23
|
-
return solanaReleasesQueries.getAll().flatMap((r) => r.deployments);
|
|
24
|
-
},
|
|
20
|
+
getAll: () => solanaReleasesQueries.getAll().flatMap((r) => r.deployments),
|
|
25
21
|
};
|
|
26
22
|
const evm = {
|
|
27
23
|
chains: evmChainsQueries,
|
package/dist/esm/sablier.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sablier.js","sourceRoot":"","sources":["../../src/sablier.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAMxF,MAAM,qBAAqB,GAAG;IAM5B,GAAG,EAAE,CAAC,IAGL,EAAsC,EAAE;
|
|
1
|
+
{"version":3,"file":"sablier.js","sourceRoot":"","sources":["../../src/sablier.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAMxF,MAAM,qBAAqB,GAAG;IAM5B,GAAG,EAAE,CAAC,IAGL,EAAsC,EAAE;QAEvC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,EAAE,GAA6B,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;CAClG,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAM/B,GAAG,EAAE,CAAC,IAGL,EAAyC,EAAE;QAE1C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,EAAE,GAAgC,EAAE,CACxC,qBAAqB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;CAC/D,CAAC;AAEF,MAAM,GAAG,GAAG;IACV,MAAM,EAAE,gBAAgB;IACxB,WAAW,EAAE,kBAAkB;IAC/B,SAAS,EAAE,mBAAmB;IAC9B,WAAW,EAAE,qBAAqB;IAClC,QAAQ,EAAE,kBAAkB;CAC7B,CAAC;AAEF,MAAM,MAAM,GAAG;IACb,MAAM,EAAE,mBAAmB;IAC3B,WAAW,EAAE,wBAAwB;IACrC,QAAQ,EAAE,qBAAqB;IAC/B,QAAQ,EAAE,qBAAqB;CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,GAAG,GAAG;IACN,GAAG;IACH,MAAM;CACP,CAAC","sourcesContent":["/**\n * @file This file exports the Sablier object, singleton that contains the queries for the\n * chains, contracts, and releases for both evm and solana compatible chains.\n *\n * @example\n * ```typescript\n * import { sablier } from \"sablier\";\n *\n * // EVM\n * const lockupRelease = sablier.evm.releases.getLatest({ protocol: \"lockup\" });\n * let lockupContract = sablier.evm.contracts.get({\n * chainId: mainnet.id,\n * contractName: \"SablierLockup\",\n * release: lockupRelease,\n * });\n *\n * // Can also be accessed like this:\n * lockupContract = sablier.contracts.get({\n * chainId: mainnet.id,\n * contractName: \"SablierLockup\",\n * release: lockupRelease,\n * });\n * const { address } = lockupContract;\n * ```\n */\n\nimport { chainsQueries as evmChainsQueries } from \"./evm/chains/queries.js\";\nimport { comptrollerQueries } from \"./evm/comptroller/queries.js\";\nimport { contractsQueries as evmContractsQueries } from \"./evm/contracts/queries.js\";\nimport { releasesQueries as evmReleasesQueries } from \"./evm/releases/queries.js\";\nimport { chainsQueries as solanaChainsQueries } from \"./solana/chains/queries.js\";\nimport { programsQueries as solanaProgramsQueries } from \"./solana/programs/queries.js\";\nimport { releasesQueries as solanaReleasesQueries } from \"./solana/releases/queries.js\";\nimport type { Sablier } from \"./types.js\";\n\n/**\n * Has to be defined here to avoid circular dependencies.\n */\nconst evmDeploymentsQueries = {\n /**\n * Get many deployments.\n * - default ⇒ all across all releases\n * - release ⇒ that release's deployments\n */\n get: (opts: {\n chainId: number;\n release: Sablier.EVM.Release;\n }): Sablier.EVM.Deployment | undefined => {\n // biome-ignore lint/suspicious/noUnnecessaryConditions: defensive fallback for untyped JS callers at this public API boundary\n const { release, chainId } = opts || {};\n return release.deployments.find((d) => d.chainId === chainId);\n },\n getAll: (): Sablier.EVM.Deployment[] => evmReleasesQueries.getAll().flatMap((r) => r.deployments),\n};\n\nconst solanaDeploymentsQueries = {\n /**\n * Get many deployments.\n * - default ⇒ all across all releases\n * - release ⇒ that release's deployments\n */\n get: (opts: {\n chainId: number;\n release: Sablier.Solana.Release;\n }): Sablier.Solana.Deployment | undefined => {\n // biome-ignore lint/suspicious/noUnnecessaryConditions: defensive fallback for untyped JS callers at this public API boundary\n const { release, chainId } = opts || {};\n return release.deployments.find((d) => d.chainId === chainId);\n },\n getAll: (): Sablier.Solana.Deployment[] =>\n solanaReleasesQueries.getAll().flatMap((r) => r.deployments),\n};\n\nconst evm = {\n chains: evmChainsQueries,\n comptroller: comptrollerQueries,\n contracts: evmContractsQueries,\n deployments: evmDeploymentsQueries,\n releases: evmReleasesQueries,\n};\n\nconst solana = {\n chains: solanaChainsQueries,\n deployments: solanaDeploymentsQueries,\n programs: solanaProgramsQueries,\n releases: solanaReleasesQueries,\n};\n\nexport const sablier = {\n ...evm, // re-exporting for pre-v1.7 backward compatibility\n evm,\n solana,\n};\n"]}
|
|
@@ -2,6 +2,12 @@ export const CHAIN_ID_SOLANA_MAINNET_BETA = 900_000_010;
|
|
|
2
2
|
export const CHAIN_ID_SOLANA_DEVNET = 900_000_020;
|
|
3
3
|
export const SOLANA_CHAIN_IDS = new Set([CHAIN_ID_SOLANA_MAINNET_BETA, CHAIN_ID_SOLANA_DEVNET]);
|
|
4
4
|
export const solanaDevnet = {
|
|
5
|
+
contracts: {},
|
|
6
|
+
id: CHAIN_ID_SOLANA_DEVNET,
|
|
7
|
+
isSupportedByUI: true,
|
|
8
|
+
isTestnet: true,
|
|
9
|
+
name: "Devnet",
|
|
10
|
+
slug: "solana-devnet",
|
|
5
11
|
blockExplorers: {
|
|
6
12
|
default: { name: "Orb", url: "https://orb.helius.dev?cluster=devnet" },
|
|
7
13
|
solanaFm: { name: "Solana FM", url: "https://solana.fm?cluster=devnet-alpha" },
|
|
@@ -11,16 +17,11 @@ export const solanaDevnet = {
|
|
|
11
17
|
feed: "99B2bTijsU6f1GCT73HmdR7HCFFjGMBcPZY6jZ96ynrR",
|
|
12
18
|
program: "HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny",
|
|
13
19
|
},
|
|
14
|
-
contracts: {},
|
|
15
20
|
definition: {
|
|
16
21
|
chainCode: "SOLDEV",
|
|
17
22
|
chainId: CHAIN_ID_SOLANA_DEVNET,
|
|
18
23
|
cluster: "devnet",
|
|
19
24
|
},
|
|
20
|
-
id: CHAIN_ID_SOLANA_DEVNET,
|
|
21
|
-
isSupportedByUI: true,
|
|
22
|
-
isTestnet: true,
|
|
23
|
-
name: "Devnet",
|
|
24
25
|
nativeCurrency: {
|
|
25
26
|
coinGeckoId: "solana",
|
|
26
27
|
decimals: 9,
|
|
@@ -36,9 +37,15 @@ export const solanaDevnet = {
|
|
|
36
37
|
http: ["https://api.devnet-beta.solana.com/"],
|
|
37
38
|
},
|
|
38
39
|
},
|
|
39
|
-
slug: "solana-devnet",
|
|
40
40
|
};
|
|
41
41
|
export const solanaMainnetBeta = {
|
|
42
|
+
coinGeckoPlatformId: "solana",
|
|
43
|
+
contracts: {},
|
|
44
|
+
id: CHAIN_ID_SOLANA_MAINNET_BETA,
|
|
45
|
+
isSupportedByUI: true,
|
|
46
|
+
isTestnet: false,
|
|
47
|
+
name: "Solana",
|
|
48
|
+
slug: "solana-mainnet-beta",
|
|
42
49
|
blockExplorers: {
|
|
43
50
|
default: { name: "Orb", url: "https://orb.helius.dev" },
|
|
44
51
|
solanaFm: { name: "Solana FM", url: "https://solana.fm" },
|
|
@@ -48,17 +55,11 @@ export const solanaMainnetBeta = {
|
|
|
48
55
|
feed: "99B2bTijsU6f1GCT73HmdR7HCFFjGMBcPZY6jZ96ynrR",
|
|
49
56
|
program: "HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny",
|
|
50
57
|
},
|
|
51
|
-
coinGeckoPlatformId: "solana",
|
|
52
|
-
contracts: {},
|
|
53
58
|
definition: {
|
|
54
59
|
chainCode: "SOL",
|
|
55
60
|
chainId: CHAIN_ID_SOLANA_MAINNET_BETA,
|
|
56
61
|
cluster: "mainnet-beta",
|
|
57
62
|
},
|
|
58
|
-
id: CHAIN_ID_SOLANA_MAINNET_BETA,
|
|
59
|
-
isSupportedByUI: true,
|
|
60
|
-
isTestnet: false,
|
|
61
|
-
name: "Solana",
|
|
62
63
|
nativeCurrency: {
|
|
63
64
|
coinGeckoId: "solana",
|
|
64
65
|
decimals: 9,
|
|
@@ -74,6 +75,5 @@ export const solanaMainnetBeta = {
|
|
|
74
75
|
http: ["https://api.mainnet-beta.solana.com/"],
|
|
75
76
|
},
|
|
76
77
|
},
|
|
77
|
-
slug: "solana-mainnet-beta",
|
|
78
78
|
};
|
|
79
79
|
//# sourceMappingURL=chains.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../../src/solana/chains/chains.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAC;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,4BAA4B,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAEhG,MAAM,CAAC,MAAM,YAAY,GAAyB;IAChD,cAAc,EAAE;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,uCAAuC,EAAE;QACtE,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,wCAAwC,EAAE;QAC9E,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,mCAAmC,EAAE;KACvE;IACD,SAAS,EAAE;QACT,IAAI,EAAE,8CAA8C;QACpD,OAAO,EAAE,8CAA8C;KACxD;IACD,
|
|
1
|
+
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../../src/solana/chains/chains.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAC;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,4BAA4B,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAEhG,MAAM,CAAC,MAAM,YAAY,GAAyB;IAChD,SAAS,EAAE,EAAE;IACb,EAAE,EAAE,sBAAsB;IAC1B,eAAe,EAAE,IAAI;IACrB,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,eAAe;IACrB,cAAc,EAAE;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,uCAAuC,EAAE;QACtE,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,wCAAwC,EAAE;QAC9E,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,mCAAmC,EAAE;KACvE;IACD,SAAS,EAAE;QACT,IAAI,EAAE,8CAA8C;QACpD,OAAO,EAAE,8CAA8C;KACxD;IACD,UAAU,EAAE;QACV,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,sBAAsB;QAC/B,OAAO,EAAE,QAAQ;KAClB;IACD,cAAc,EAAE;QACd,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;KACd;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,CAAC,qCAAqC,CAAC;QACjD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,0CAA0C,GAAG,EAAE;KACjE;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,qCAAqC,CAAC;SAC9C;KACF;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAyB;IACrD,mBAAmB,EAAE,QAAQ;IAC7B,SAAS,EAAE,EAAE;IACb,EAAE,EAAE,4BAA4B;IAChC,eAAe,EAAE,IAAI;IACrB,SAAS,EAAE,KAAK;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,qBAAqB;IAC3B,cAAc,EAAE;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,wBAAwB,EAAE;QACvD,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,mBAAmB,EAAE;QACzD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oBAAoB,EAAE;KACxD;IACD,SAAS,EAAE;QACT,IAAI,EAAE,8CAA8C;QACpD,OAAO,EAAE,8CAA8C;KACxD;IACD,UAAU,EAAE;QACV,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,4BAA4B;QACrC,OAAO,EAAE,cAAc;KACxB;IACD,cAAc,EAAE;QACd,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;KACd;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,CAAC,sCAAsC,CAAC;QAClD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,2CAA2C,GAAG,EAAE;KAClE;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,sCAAsC,CAAC;SAC/C;KACF;CACO,CAAC","sourcesContent":["import type { Sablier } from \"@/src/types.js\";\n\n/**\n * Solana does not have chain IDs. These are made-up numbers so that we can use the same type for EVM and Solana chains.\n */\nexport const CHAIN_ID_SOLANA_MAINNET_BETA = 900_000_010;\nexport const CHAIN_ID_SOLANA_DEVNET = 900_000_020;\n\nexport const SOLANA_CHAIN_IDS = new Set([CHAIN_ID_SOLANA_MAINNET_BETA, CHAIN_ID_SOLANA_DEVNET]);\n\nexport const solanaDevnet: Sablier.Solana.Chain = {\n contracts: {},\n id: CHAIN_ID_SOLANA_DEVNET,\n isSupportedByUI: true,\n isTestnet: true,\n name: \"Devnet\",\n slug: \"solana-devnet\",\n blockExplorers: {\n default: { name: \"Orb\", url: \"https://orb.helius.dev?cluster=devnet\" },\n solanaFm: { name: \"Solana FM\", url: \"https://solana.fm?cluster=devnet-alpha\" },\n solscan: { name: \"Solscan\", url: \"https://solscan.io?cluster=devnet\" },\n },\n chainlink: {\n feed: \"99B2bTijsU6f1GCT73HmdR7HCFFjGMBcPZY6jZ96ynrR\",\n program: \"HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny\",\n },\n definition: {\n chainCode: \"SOLDEV\",\n chainId: CHAIN_ID_SOLANA_DEVNET,\n cluster: \"devnet\",\n },\n nativeCurrency: {\n coinGeckoId: \"solana\",\n decimals: 9,\n name: \"Solana\",\n symbol: \"SOL\",\n },\n rpc: {\n defaults: [\"https://api.devnet-beta.solana.com/\"],\n helius: (key) => `https://devnet.helius-rpc.com/?api-key=${key}`,\n },\n rpcUrls: {\n default: {\n http: [\"https://api.devnet-beta.solana.com/\"],\n },\n },\n} as const;\n\nexport const solanaMainnetBeta: Sablier.Solana.Chain = {\n coinGeckoPlatformId: \"solana\",\n contracts: {},\n id: CHAIN_ID_SOLANA_MAINNET_BETA,\n isSupportedByUI: true,\n isTestnet: false,\n name: \"Solana\",\n slug: \"solana-mainnet-beta\",\n blockExplorers: {\n default: { name: \"Orb\", url: \"https://orb.helius.dev\" },\n solanaFm: { name: \"Solana FM\", url: \"https://solana.fm\" },\n solscan: { name: \"Solscan\", url: \"https://solscan.io\" },\n },\n chainlink: {\n feed: \"99B2bTijsU6f1GCT73HmdR7HCFFjGMBcPZY6jZ96ynrR\",\n program: \"HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny\",\n },\n definition: {\n chainCode: \"SOL\",\n chainId: CHAIN_ID_SOLANA_MAINNET_BETA,\n cluster: \"mainnet-beta\",\n },\n nativeCurrency: {\n coinGeckoId: \"solana\",\n decimals: 9,\n name: \"Solana\",\n symbol: \"SOL\",\n },\n rpc: {\n defaults: [\"https://api.mainnet-beta.solana.com/\"],\n helius: (key) => `https://mainnet.helius-rpc.com/?api-key=${key}`,\n },\n rpcUrls: {\n default: {\n http: [\"https://api.mainnet-beta.solana.com/\"],\n },\n },\n} as const;\n"]}
|
|
@@ -15,7 +15,7 @@ function getCatalog() {
|
|
|
15
15
|
for (const deployment of deployments) {
|
|
16
16
|
const { chainId, programs } = deployment;
|
|
17
17
|
for (const contract of programs) {
|
|
18
|
-
const address = contract
|
|
18
|
+
const { address } = contract;
|
|
19
19
|
const entry = { ...contract, protocol, version };
|
|
20
20
|
setPath(_catalog, [protocol, chainId, address], entry);
|
|
21
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../../src/solana/programs/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,IAAI,QAAmD,CAAC;AAExD,SAAS,UAAU;IACjB,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,QAAQ,GAAG;QACT,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE;QACvB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE;KACtB,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/C,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAEnD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;YAEzC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,QAAQ,CAAC
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../../src/solana/programs/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,IAAI,QAAmD,CAAC;AAExD,SAAS,UAAU;IACjB,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,QAAQ,GAAG;QACT,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE;QACvB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE;KACtB,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/C,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAEnD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;YAEzC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAChC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;gBAC7B,MAAM,KAAK,GAAG,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;gBACjD,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAWD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,EAAmC,EAAE;IAEpE,GAAG,CAAC,CAAC,EAAE,IAAI;QACT,OAAO,UAAU,EAAE,CAAC,IAA2C,CAAC,CAAC;IACnE,CAAC;IAGD,wBAAwB,CAAC,CAAC,EAAE,IAAI;QAC9B,OAAO,MAAM,CAAC,wBAAwB,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAGD,OAAO;QACL,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACvC,CAAC;CACF,CAAC,CAAC","sourcesContent":["import { setPath } from \"@/src/internal/utils/object-path.js\";\nimport { Protocol } from \"@/src/solana/enums.js\";\nimport { releasesQueries } from \"@/src/solana/releases/queries.js\";\nimport type { Sablier } from \"@/src/types.js\";\n\nlet _catalog: Sablier.Solana.ProgramCatalog | undefined;\n\nfunction getCatalog(): Sablier.Solana.ProgramCatalog {\n if (_catalog) {\n return _catalog;\n }\n\n _catalog = {\n [Protocol.Airdrops]: {},\n [Protocol.Lockup]: {},\n };\n\n for (const release of releasesQueries.getAll()) {\n const { protocol, version, deployments } = release;\n\n for (const deployment of deployments) {\n const { chainId, programs } = deployment;\n\n for (const contract of programs) {\n const { address } = contract;\n const entry = { ...contract, protocol, version };\n setPath(_catalog, [protocol, chainId, address], entry);\n }\n }\n }\n return _catalog;\n}\n\n/**\n * Lazily initialized catalog for reverse address lookups.\n *\n * Uses an ES6 Proxy object to defer getCatalog() execution until the catalog is actually accessed.\n * The Proxy intercepts property access and forwards it to the real catalog, which is built on first use.\n * This avoids iterating all releases at module load time.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy\n */\nexport const catalog = new Proxy({} as Sablier.Solana.ProgramCatalog, {\n // Intercept property access (e.g., catalog.lockup)\n get(_, prop) {\n return getCatalog()[prop as keyof Sablier.Solana.ProgramCatalog];\n },\n // Required for Object.keys(), JSON.stringify(), spread operator\n // Returns property descriptor (writable, enumerable, etc.) for a key\n getOwnPropertyDescriptor(_, prop) {\n return Object.getOwnPropertyDescriptor(getCatalog(), prop);\n },\n // Required for Object.keys(), for...in, Object.getOwnPropertyNames()\n // Returns all property keys (strings and symbols) of the target\n ownKeys() {\n return Reflect.ownKeys(getCatalog());\n },\n});\n"]}
|
|
@@ -7,8 +7,8 @@ export const programsQueries = createContractsQueries({
|
|
|
7
7
|
catalog,
|
|
8
8
|
contractsField: "programs",
|
|
9
9
|
getAliasCatalog,
|
|
10
|
-
normalizeAddress: (address) => address,
|
|
11
10
|
protocols: [Protocol.Airdrops, Protocol.Lockup],
|
|
11
|
+
normalizeAddress: (address) => address,
|
|
12
12
|
releasesQueries,
|
|
13
13
|
});
|
|
14
14
|
//# sourceMappingURL=queries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/solana/programs/queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAOnD;IACA,OAAO;IACP,cAAc,EAAE,UAAU;IAC1B,eAAe;IACf,
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/solana/programs/queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAOnD;IACA,OAAO;IACP,cAAc,EAAE,UAAU;IAC1B,eAAe;IACf,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;IAC/C,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO;IACtC,eAAe;CAChB,CAAC,CAAC","sourcesContent":["import { createContractsQueries } from \"@/src/internal/factories/queries.js\";\nimport { Protocol } from \"@/src/solana/enums.js\";\nimport { releasesQueries } from \"@/src/solana/releases/queries.js\";\nimport type { Sablier } from \"@/src/types.js\";\nimport { getAliasCatalog } from \"./alias-catalog.js\";\nimport { catalog } from \"./catalog.js\";\n\nexport const programsQueries = createContractsQueries<\n Sablier.Solana.Protocol,\n Sablier.Solana.Program,\n Sablier.Solana.Deployment,\n Sablier.Solana.Release,\n Sablier.Solana.ProgramCatalog,\n Sablier.Solana.AliasCatalog\n>({\n catalog,\n contractsField: \"programs\",\n getAliasCatalog,\n protocols: [Protocol.Airdrops, Protocol.Lockup],\n normalizeAddress: (address) => address, // Solana addresses are case-sensitive\n releasesQueries,\n});\n"]}
|
|
@@ -5,14 +5,13 @@ const contractMapper = createContractMapper(chainsQueries);
|
|
|
5
5
|
const standardDeploymentResolver = createStandardDeploymentResolver(contractMapper, "programs");
|
|
6
6
|
export const resolvers = {
|
|
7
7
|
deployment: {
|
|
8
|
-
standard: (params) =>
|
|
9
|
-
return standardDeploymentResolver(params);
|
|
10
|
-
},
|
|
8
|
+
standard: (params) => standardDeploymentResolver(params),
|
|
11
9
|
},
|
|
12
10
|
release: {
|
|
13
|
-
standard: (params) => {
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
standard: (params) => ({
|
|
12
|
+
...params,
|
|
13
|
+
programNames: getNestedValues(params.manifest),
|
|
14
|
+
}),
|
|
16
15
|
},
|
|
17
16
|
};
|
|
18
17
|
//# sourceMappingURL=resolvers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../../src/solana/releases/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,gCAAgC,GACjC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAqB/D,MAAM,cAAc,GAAG,oBAAoB,CAKzC,aAAa,CAAC,CAAC;AAEjB,MAAM,0BAA0B,GAAG,gCAAgC,CAMjE,cAAc,EAAE,UAAU,CAAC,CAAC;AAM9B,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU,EAAE;QAIV,QAAQ,EAAE,CAAC,MAAwB,EAA6B,EAAE
|
|
1
|
+
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../../src/solana/releases/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,gCAAgC,GACjC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAqB/D,MAAM,cAAc,GAAG,oBAAoB,CAKzC,aAAa,CAAC,CAAC;AAEjB,MAAM,0BAA0B,GAAG,gCAAgC,CAMjE,cAAc,EAAE,UAAU,CAAC,CAAC;AAM9B,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU,EAAE;QAIV,QAAQ,EAAE,CAAC,MAAwB,EAA6B,EAAE,CAChE,0BAA0B,CAAC,MAAM,CAAC;KACrC;IAED,OAAO,EAAE;QAIP,QAAQ,EAAE,CAAC,MAAqB,EAA0B,EAAE,CAAC,CAAC;YAC5D,GAAG,MAAM;YACT,YAAY,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;SAC/C,CAAC;KACH;CACF,CAAC","sourcesContent":["import {\n createContractMapper,\n createStandardDeploymentResolver,\n} from \"@/src/internal/factories/resolver.js\";\nimport { getNestedValues } from \"@/src/internal/utils/nested-values.js\";\nimport type { AliasMap } from \"@/src/shared/types.js\";\nimport { chainsQueries } from \"@/src/solana/chains/queries.js\";\nimport type { Sablier } from \"@/src/types.js\";\n\n/* -------------------------------------------------------------------------- */\n/* TYPES */\n/* -------------------------------------------------------------------------- */\n\ntype DeploymentParams = {\n protocol: Sablier.Solana.Protocol;\n version: Sablier.Solana.Version;\n chainId: number;\n aliasMap: AliasMap;\n contractMap: Sablier.Solana.ProgramMap;\n};\n\ntype ReleaseParams = Omit<Sablier.Solana.Release, \"programNames\">;\n\n/* -------------------------------------------------------------------------- */\n/* PLATFORM SETUP */\n/* -------------------------------------------------------------------------- */\n\nconst contractMapper = createContractMapper<\n Sablier.Solana.Program,\n Sablier.Solana.Protocol,\n Sablier.Solana.Version,\n Sablier.Solana.Address\n>(chainsQueries);\n\nconst standardDeploymentResolver = createStandardDeploymentResolver<\n Sablier.Solana.Deployment,\n Sablier.Solana.Program,\n Sablier.Solana.Protocol,\n Sablier.Solana.Version,\n Sablier.Solana.Address\n>(contractMapper, \"programs\");\n\n/* -------------------------------------------------------------------------- */\n/* RESOLVERS */\n/* -------------------------------------------------------------------------- */\n\nexport const resolvers = {\n deployment: {\n /**\n * Creates a standard Solana deployment\n */\n standard: (params: DeploymentParams): Sablier.Solana.Deployment =>\n standardDeploymentResolver(params),\n },\n\n release: {\n /**\n * Creates a Solana release with contract names extracted from manifest\n */\n standard: (params: ReleaseParams): Sablier.Solana.Release => ({\n ...params,\n programNames: getNestedValues(params.manifest),\n }),\n },\n};\n"]}
|
|
@@ -30,14 +30,17 @@ export declare const denergy: {
|
|
|
30
30
|
};
|
|
31
31
|
};
|
|
32
32
|
sourceId?: number | undefined | undefined;
|
|
33
|
+
supportsTransactionReplacementDetection?: boolean | undefined | undefined;
|
|
33
34
|
testnet: false;
|
|
34
35
|
custom?: Record<string, unknown> | undefined;
|
|
35
36
|
extendSchema?: Record<string, unknown> | undefined;
|
|
36
37
|
fees?: import("viem").ChainFees<undefined> | undefined;
|
|
37
38
|
formatters?: undefined;
|
|
38
39
|
prepareTransactionRequest?: ((args: import("viem").PrepareTransactionRequestParameters, options: {
|
|
40
|
+
client: import("viem").Client;
|
|
39
41
|
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
40
42
|
}) => Promise<import("viem").PrepareTransactionRequestParameters>) | [fn: ((args: import("viem").PrepareTransactionRequestParameters, options: {
|
|
43
|
+
client: import("viem").Client;
|
|
41
44
|
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
42
45
|
}) => Promise<import("viem").PrepareTransactionRequestParameters>) | undefined, options: {
|
|
43
46
|
runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
|
|
@@ -78,14 +81,17 @@ export declare const robinhood: {
|
|
|
78
81
|
};
|
|
79
82
|
};
|
|
80
83
|
sourceId?: number | undefined | undefined;
|
|
84
|
+
supportsTransactionReplacementDetection?: boolean | undefined | undefined;
|
|
81
85
|
testnet: false;
|
|
82
86
|
custom?: Record<string, unknown> | undefined;
|
|
83
87
|
extendSchema?: Record<string, unknown> | undefined;
|
|
84
88
|
fees?: import("viem").ChainFees<undefined> | undefined;
|
|
85
89
|
formatters?: undefined;
|
|
86
90
|
prepareTransactionRequest?: ((args: import("viem").PrepareTransactionRequestParameters, options: {
|
|
91
|
+
client: import("viem").Client;
|
|
87
92
|
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
88
93
|
}) => Promise<import("viem").PrepareTransactionRequestParameters>) | [fn: ((args: import("viem").PrepareTransactionRequestParameters, options: {
|
|
94
|
+
client: import("viem").Client;
|
|
89
95
|
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
90
96
|
}) => Promise<import("viem").PrepareTransactionRequestParameters>) | undefined, options: {
|
|
91
97
|
runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
|
|
@@ -122,14 +128,17 @@ export declare const tangle: {
|
|
|
122
128
|
};
|
|
123
129
|
};
|
|
124
130
|
sourceId?: number | undefined | undefined;
|
|
131
|
+
supportsTransactionReplacementDetection?: boolean | undefined | undefined;
|
|
125
132
|
testnet: false;
|
|
126
133
|
custom?: Record<string, unknown> | undefined;
|
|
127
134
|
extendSchema?: Record<string, unknown> | undefined;
|
|
128
135
|
fees?: import("viem").ChainFees<undefined> | undefined;
|
|
129
136
|
formatters?: undefined;
|
|
130
137
|
prepareTransactionRequest?: ((args: import("viem").PrepareTransactionRequestParameters, options: {
|
|
138
|
+
client: import("viem").Client;
|
|
131
139
|
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
132
140
|
}) => Promise<import("viem").PrepareTransactionRequestParameters>) | [fn: ((args: import("viem").PrepareTransactionRequestParameters, options: {
|
|
141
|
+
client: import("viem").Client;
|
|
133
142
|
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
134
143
|
}) => Promise<import("viem").PrepareTransactionRequestParameters>) | undefined, options: {
|
|
135
144
|
runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../../src/evm/chains/custom.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../../src/evm/chains/custom.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBlB,CAAC;AAEH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBpB,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBjB,CAAC"}
|