@1delta/data-sdk 0.0.50 → 0.0.51

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/dist/index.js CHANGED
@@ -373,6 +373,17 @@ var resolveTermApiBase = (chainId) => {
373
373
  const cfg = termConfig()?.[chainId]?.apiBaseUrl;
374
374
  return (cfg && cfg.length > 0 ? cfg : "").replace(/\/+$/, "");
375
375
  };
376
+ var TERM_ORDER_STORE_OVERRIDE_KEY = "__1delta_term_order_store_base__";
377
+ var setTermOrderStoreBase = (url) => {
378
+ globalThis[TERM_ORDER_STORE_OVERRIDE_KEY] = url && url.length > 0 ? url : void 0;
379
+ };
380
+ var termOrderStoreBaseOverride = () => globalThis[TERM_ORDER_STORE_OVERRIDE_KEY];
381
+ var resolveTermOrderStoreBase = (chainId) => {
382
+ const override = termOrderStoreBaseOverride();
383
+ if (override) return override.replace(/\/+$/, "");
384
+ const cfg = termConfig()?.[chainId]?.orderStoreUrl;
385
+ return (cfg && cfg.length > 0 ? cfg : "").replace(/\/+$/, "");
386
+ };
376
387
  var termMarkets = () => getGlobalData2()?.termMarkets;
377
388
  var termMarketsByChain = (chainId) => getGlobalData2()?.termMarkets?.[String(chainId)] ?? [];
378
389
  var termMarketById = (chainId, termRepoId) => {
@@ -955,12 +966,15 @@ var parseFraxlendPairKey = (lender) => {
955
966
 
956
967
  // src/remoteCache.ts
957
968
  var FRESH_TTL_MS = 5 * 60 * 1e3;
969
+ var STALE_WHILE_REVALIDATE_MS = 12 * 60 * 60 * 1e3;
958
970
  var REMOTE_CACHE_STORE_TTL_S = 7 * 24 * 60 * 60;
959
971
  var STATE_KEY = "__1delta_remote_cache__";
960
972
  function getState() {
961
973
  const g = globalThis;
962
- if (!g[STATE_KEY]) g[STATE_KEY] = { memo: /* @__PURE__ */ new Map(), inflight: /* @__PURE__ */ new Map() };
963
- return g[STATE_KEY];
974
+ if (!g[STATE_KEY]) g[STATE_KEY] = { memo: /* @__PURE__ */ new Map(), inflight: /* @__PURE__ */ new Map(), revalidating: /* @__PURE__ */ new Set() };
975
+ const state = g[STATE_KEY];
976
+ if (!state.revalidating) state.revalidating = /* @__PURE__ */ new Set();
977
+ return state;
964
978
  }
965
979
  function setRemoteCacheStore(next) {
966
980
  getState().store = next;
@@ -1038,7 +1052,7 @@ async function writeStore(key, entry) {
1038
1052
  }
1039
1053
  }
1040
1054
  async function loadCached(key, load, isValid) {
1041
- const { memo, inflight } = getState();
1055
+ const { memo, inflight, revalidating } = getState();
1042
1056
  const cached = memo.get(key);
1043
1057
  if (cached && Date.now() - cached.at < FRESH_TTL_MS) return cached.value;
1044
1058
  const pending = inflight.get(key);
@@ -1049,6 +1063,24 @@ async function loadCached(key, load, isValid) {
1049
1063
  memo.set(key, stored);
1050
1064
  return stored.value;
1051
1065
  }
1066
+ if (stored && Date.now() - stored.at < STALE_WHILE_REVALIDATE_MS) {
1067
+ memo.set(key, stored);
1068
+ if (revalidating.has(key)) return stored.value;
1069
+ revalidating.add(key);
1070
+ void (async () => {
1071
+ try {
1072
+ const value = await load();
1073
+ const entry = { at: Date.now(), value };
1074
+ const current = memo.get(key);
1075
+ if (!current || current.at <= entry.at) memo.set(key, entry);
1076
+ await writeStore(key, entry);
1077
+ } catch {
1078
+ } finally {
1079
+ revalidating.delete(key);
1080
+ }
1081
+ })();
1082
+ return stored.value;
1083
+ }
1052
1084
  try {
1053
1085
  const value = await load();
1054
1086
  const entry = { at: Date.now(), value };
@@ -1264,6 +1296,7 @@ exports.parseSiloV3LenderKey = parseSiloV3LenderKey;
1264
1296
  exports.parseTermMaxLenderKey = parseTermMaxLenderKey;
1265
1297
  exports.resolveMidnightApiBase = resolveMidnightApiBase;
1266
1298
  exports.resolveTermApiBase = resolveTermApiBase;
1299
+ exports.resolveTermOrderStoreBase = resolveTermOrderStoreBase;
1267
1300
  exports.resupplyConfig = resupplyConfig;
1268
1301
  exports.resupplyConfigFor = resupplyConfigFor;
1269
1302
  exports.resupplyLendersByChain = resupplyLendersByChain;
@@ -1277,6 +1310,7 @@ exports.setMidnightApiBase = setMidnightApiBase;
1277
1310
  exports.setRemoteCacheGithubToken = setRemoteCacheGithubToken;
1278
1311
  exports.setRemoteCacheStore = setRemoteCacheStore;
1279
1312
  exports.setTermApiBase = setTermApiBase;
1313
+ exports.setTermOrderStoreBase = setTermOrderStoreBase;
1280
1314
  exports.siloMarkets = siloMarkets;
1281
1315
  exports.siloMarketsV3 = siloMarketsV3;
1282
1316
  exports.siloPeripherals = siloPeripherals;
@@ -1303,6 +1337,7 @@ exports.termMaxChainIds = termMaxChainIds;
1303
1337
  exports.termMaxConfig = termMaxConfig;
1304
1338
  exports.termMaxConfigByChain = termMaxConfigByChain;
1305
1339
  exports.termMaxLenderKey = termMaxLenderKey;
1340
+ exports.termOrderStoreBaseOverride = termOrderStoreBaseOverride;
1306
1341
  exports.twyneBaseKey = twyneBaseKey;
1307
1342
  exports.twyneBeaconFor = twyneBeaconFor;
1308
1343
  exports.twyneChainData = twyneChainData;
package/dist/index.mjs CHANGED
@@ -371,6 +371,17 @@ var resolveTermApiBase = (chainId) => {
371
371
  const cfg = termConfig()?.[chainId]?.apiBaseUrl;
372
372
  return (cfg && cfg.length > 0 ? cfg : "").replace(/\/+$/, "");
373
373
  };
374
+ var TERM_ORDER_STORE_OVERRIDE_KEY = "__1delta_term_order_store_base__";
375
+ var setTermOrderStoreBase = (url) => {
376
+ globalThis[TERM_ORDER_STORE_OVERRIDE_KEY] = url && url.length > 0 ? url : void 0;
377
+ };
378
+ var termOrderStoreBaseOverride = () => globalThis[TERM_ORDER_STORE_OVERRIDE_KEY];
379
+ var resolveTermOrderStoreBase = (chainId) => {
380
+ const override = termOrderStoreBaseOverride();
381
+ if (override) return override.replace(/\/+$/, "");
382
+ const cfg = termConfig()?.[chainId]?.orderStoreUrl;
383
+ return (cfg && cfg.length > 0 ? cfg : "").replace(/\/+$/, "");
384
+ };
374
385
  var termMarkets = () => getGlobalData2()?.termMarkets;
375
386
  var termMarketsByChain = (chainId) => getGlobalData2()?.termMarkets?.[String(chainId)] ?? [];
376
387
  var termMarketById = (chainId, termRepoId) => {
@@ -953,12 +964,15 @@ var parseFraxlendPairKey = (lender) => {
953
964
 
954
965
  // src/remoteCache.ts
955
966
  var FRESH_TTL_MS = 5 * 60 * 1e3;
967
+ var STALE_WHILE_REVALIDATE_MS = 12 * 60 * 60 * 1e3;
956
968
  var REMOTE_CACHE_STORE_TTL_S = 7 * 24 * 60 * 60;
957
969
  var STATE_KEY = "__1delta_remote_cache__";
958
970
  function getState() {
959
971
  const g = globalThis;
960
- if (!g[STATE_KEY]) g[STATE_KEY] = { memo: /* @__PURE__ */ new Map(), inflight: /* @__PURE__ */ new Map() };
961
- return g[STATE_KEY];
972
+ if (!g[STATE_KEY]) g[STATE_KEY] = { memo: /* @__PURE__ */ new Map(), inflight: /* @__PURE__ */ new Map(), revalidating: /* @__PURE__ */ new Set() };
973
+ const state = g[STATE_KEY];
974
+ if (!state.revalidating) state.revalidating = /* @__PURE__ */ new Set();
975
+ return state;
962
976
  }
963
977
  function setRemoteCacheStore(next) {
964
978
  getState().store = next;
@@ -1036,7 +1050,7 @@ async function writeStore(key, entry) {
1036
1050
  }
1037
1051
  }
1038
1052
  async function loadCached(key, load, isValid) {
1039
- const { memo, inflight } = getState();
1053
+ const { memo, inflight, revalidating } = getState();
1040
1054
  const cached = memo.get(key);
1041
1055
  if (cached && Date.now() - cached.at < FRESH_TTL_MS) return cached.value;
1042
1056
  const pending = inflight.get(key);
@@ -1047,6 +1061,24 @@ async function loadCached(key, load, isValid) {
1047
1061
  memo.set(key, stored);
1048
1062
  return stored.value;
1049
1063
  }
1064
+ if (stored && Date.now() - stored.at < STALE_WHILE_REVALIDATE_MS) {
1065
+ memo.set(key, stored);
1066
+ if (revalidating.has(key)) return stored.value;
1067
+ revalidating.add(key);
1068
+ void (async () => {
1069
+ try {
1070
+ const value = await load();
1071
+ const entry = { at: Date.now(), value };
1072
+ const current = memo.get(key);
1073
+ if (!current || current.at <= entry.at) memo.set(key, entry);
1074
+ await writeStore(key, entry);
1075
+ } catch {
1076
+ } finally {
1077
+ revalidating.delete(key);
1078
+ }
1079
+ })();
1080
+ return stored.value;
1081
+ }
1050
1082
  try {
1051
1083
  const value = await load();
1052
1084
  const entry = { at: Date.now(), value };
@@ -1113,4 +1145,4 @@ async function fetchMainTokensMap() {
1113
1145
  }
1114
1146
  }
1115
1147
 
1116
- export { COOLER_ETHEREUM_CONFIG, CURVANCE_MONAD_CONFIG, FRAXLEND_ETHEREUM_CONFIG, GEARBOX_ACCOUNT_COMPRESSOR_V310, REMOTE_CACHE_STORE_TTL_S, RESUPPLY_ETHEREUM_CONFIG, RemoteFetchError, aaveOracles, aaveOraclesConfig, aavePools, aaveReserves, aaveTokens, aaveV4Oracles, aaveV4Peripherals, aaveV4SpokeLenderKey, aaveV4Spokes, aaveWethGateway, assertTwyneKeysUnique, chainLogoURI, chains, clearRemoteCache, compoundV2Oracles, compoundV2OraclesConfig, compoundV2Pools, compoundV2Reserves, compoundV2TokenArray, compoundV2Tokens, compoundV3BaseData, compoundV3Bulker, compoundV3OraclesData, compoundV3Pools, compoundV3Reserves, coolerConfig, coolerConfigFor, coolerLendersByChain, curvanceConfig, curvanceConfigFor, curvanceLendersByChain, curvancePositionManager, curvancePositionManagersFor, dolomiteChains, dolomiteConfigs, dolomiteEmode, dolomiteMarketIdByToken, dssChainData, dssConfigFor, dssDebtJoin, dssDebtToken, dssMarketByIlk, eulerConfigs, eulerVaults, exactlyConfig, exactlyMarketByAddress, exactlyMarketByAsset, exactlyMarkets, exactlyMarketsByChain, fetchMainTokensMap, fetchRemoteJson, fetchTokenList, fetchTokenListFile, fetchTokenLists, findAaveV4PositionManager, fluidChains, fluidResolvers, fluidVaultEntries, fluidVaults, frankencoinChainData, frankencoinConfig, frankencoinConfigFor, frankencoinLendersByChain, frankencoinMarketByPosition, frankencoinMarkets, fraxlendConfig, fraxlendConfigFor, fraxlendLendersByChain, fraxlendPairKey, fraxlendPairsFor, gearboxAccountCompressor, gearboxAddressProviderV310, gearboxBotListV3, gearboxChains, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxResolvers, gearboxV3LenderKey, getAaveV4GatewayAddresses, getAaveV4PositionManagers, getAaveV4SpokeAccess, getAaveV4SpokeEntry, getAaveV4SpokePeripherals, getChainEntries, getSiloV2MarketEntry, getSiloV3MarketEntry, initConfig, initializeChainData, initializeLenderData, inverseChainData, inverseConfig, inverseConfigFor, inverseLendersByChain, inverseMarketByAddress, inverseMarkets, isAaveV4OperationRestricted, isListaSmartLpAsset, liquityBranchByIndex, liquityBranchByTroveManager, liquityBranchesByChain, liquityConfig, liquityConfigFor, liquityLendersByChain, liquityMarkets, listaCollateralProvider, listaCollateralProviders, listaNativeProvider, listaSmartLpByCollateral, llamaLendApiBaseUrl, llamaLendChainData, llamaLendConfig, llamaLendConfigFor, llamaLendLenderKey, llamaLendLendersByChain, llamaLendLeverageZap, llamaLendMarketByController, llamaLendMarketByVault, llamaLendMarkets, llamaLendSupportsDelegation, llamaLendSupportsLeverage, loadCached, loadCachedJson, midnightApiBaseOverride, midnightConfig, midnightMarketById, midnightMarkets, midnightMarketsByChain, morphoBundler3, morphoOracles, morphoPools, morphoTypeMarkets, morphoTypeOracles, morphoTypeVaults, parseAaveV4SpokeLenderKey, parseFraxlendPairKey, parseGearboxV3LenderKey, parseLlamaLendLenderKey, parseSiloV2LenderKey, parseSiloV3LenderKey, parseTermMaxLenderKey, resolveMidnightApiBase, resolveTermApiBase, resupplyConfig, resupplyConfigFor, resupplyLendersByChain, riverChainData, riverConfig, riverConfigFor, riverLendersByChain, riverMarketByIndex, riverMarkets, setMidnightApiBase, setRemoteCacheGithubToken, setRemoteCacheStore, setTermApiBase, siloMarkets, siloMarketsV3, siloPeripherals, siloPeripheralsV3, siloV2LenderKey, siloV3LenderKey, skyChainData, skyConfig, skyConfigFor, skyLendersByChain, skyMarkets, tellerConfig, tellerConfigByChain, tellerPoolByAddress, tellerPools, tellerPoolsByChain, termApiBaseOverride, termConfig, termMarketById, termMarkets, termMarketsByChain, termMaxApiBaseUrl, termMaxChainIds, termMaxConfig, termMaxConfigByChain, termMaxLenderKey, twyneBaseKey, twyneBeaconFor, twyneChainData, twyneConfig, twyneConfigFor, twyneLendersByChain, twyneMarketByKey, twyneMarketFor, twyneMarketKey, twyneMarkets, twyneMarketsForIntermediateVault, twyneOperator, usddChainData, usddConfig, usddConfigFor, usddLendersByChain, usddMarketByIlk, usddMarkets };
1148
+ export { COOLER_ETHEREUM_CONFIG, CURVANCE_MONAD_CONFIG, FRAXLEND_ETHEREUM_CONFIG, GEARBOX_ACCOUNT_COMPRESSOR_V310, REMOTE_CACHE_STORE_TTL_S, RESUPPLY_ETHEREUM_CONFIG, RemoteFetchError, aaveOracles, aaveOraclesConfig, aavePools, aaveReserves, aaveTokens, aaveV4Oracles, aaveV4Peripherals, aaveV4SpokeLenderKey, aaveV4Spokes, aaveWethGateway, assertTwyneKeysUnique, chainLogoURI, chains, clearRemoteCache, compoundV2Oracles, compoundV2OraclesConfig, compoundV2Pools, compoundV2Reserves, compoundV2TokenArray, compoundV2Tokens, compoundV3BaseData, compoundV3Bulker, compoundV3OraclesData, compoundV3Pools, compoundV3Reserves, coolerConfig, coolerConfigFor, coolerLendersByChain, curvanceConfig, curvanceConfigFor, curvanceLendersByChain, curvancePositionManager, curvancePositionManagersFor, dolomiteChains, dolomiteConfigs, dolomiteEmode, dolomiteMarketIdByToken, dssChainData, dssConfigFor, dssDebtJoin, dssDebtToken, dssMarketByIlk, eulerConfigs, eulerVaults, exactlyConfig, exactlyMarketByAddress, exactlyMarketByAsset, exactlyMarkets, exactlyMarketsByChain, fetchMainTokensMap, fetchRemoteJson, fetchTokenList, fetchTokenListFile, fetchTokenLists, findAaveV4PositionManager, fluidChains, fluidResolvers, fluidVaultEntries, fluidVaults, frankencoinChainData, frankencoinConfig, frankencoinConfigFor, frankencoinLendersByChain, frankencoinMarketByPosition, frankencoinMarkets, fraxlendConfig, fraxlendConfigFor, fraxlendLendersByChain, fraxlendPairKey, fraxlendPairsFor, gearboxAccountCompressor, gearboxAddressProviderV310, gearboxBotListV3, gearboxChains, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxResolvers, gearboxV3LenderKey, getAaveV4GatewayAddresses, getAaveV4PositionManagers, getAaveV4SpokeAccess, getAaveV4SpokeEntry, getAaveV4SpokePeripherals, getChainEntries, getSiloV2MarketEntry, getSiloV3MarketEntry, initConfig, initializeChainData, initializeLenderData, inverseChainData, inverseConfig, inverseConfigFor, inverseLendersByChain, inverseMarketByAddress, inverseMarkets, isAaveV4OperationRestricted, isListaSmartLpAsset, liquityBranchByIndex, liquityBranchByTroveManager, liquityBranchesByChain, liquityConfig, liquityConfigFor, liquityLendersByChain, liquityMarkets, listaCollateralProvider, listaCollateralProviders, listaNativeProvider, listaSmartLpByCollateral, llamaLendApiBaseUrl, llamaLendChainData, llamaLendConfig, llamaLendConfigFor, llamaLendLenderKey, llamaLendLendersByChain, llamaLendLeverageZap, llamaLendMarketByController, llamaLendMarketByVault, llamaLendMarkets, llamaLendSupportsDelegation, llamaLendSupportsLeverage, loadCached, loadCachedJson, midnightApiBaseOverride, midnightConfig, midnightMarketById, midnightMarkets, midnightMarketsByChain, morphoBundler3, morphoOracles, morphoPools, morphoTypeMarkets, morphoTypeOracles, morphoTypeVaults, parseAaveV4SpokeLenderKey, parseFraxlendPairKey, parseGearboxV3LenderKey, parseLlamaLendLenderKey, parseSiloV2LenderKey, parseSiloV3LenderKey, parseTermMaxLenderKey, resolveMidnightApiBase, resolveTermApiBase, resolveTermOrderStoreBase, resupplyConfig, resupplyConfigFor, resupplyLendersByChain, riverChainData, riverConfig, riverConfigFor, riverLendersByChain, riverMarketByIndex, riverMarkets, setMidnightApiBase, setRemoteCacheGithubToken, setRemoteCacheStore, setTermApiBase, setTermOrderStoreBase, siloMarkets, siloMarketsV3, siloPeripherals, siloPeripheralsV3, siloV2LenderKey, siloV3LenderKey, skyChainData, skyConfig, skyConfigFor, skyLendersByChain, skyMarkets, tellerConfig, tellerConfigByChain, tellerPoolByAddress, tellerPools, tellerPoolsByChain, termApiBaseOverride, termConfig, termMarketById, termMarkets, termMarketsByChain, termMaxApiBaseUrl, termMaxChainIds, termMaxConfig, termMaxConfigByChain, termMaxLenderKey, termOrderStoreBaseOverride, twyneBaseKey, twyneBeaconFor, twyneChainData, twyneConfig, twyneConfigFor, twyneLendersByChain, twyneMarketByKey, twyneMarketFor, twyneMarketKey, twyneMarkets, twyneMarketsForIntermediateVault, twyneOperator, usddChainData, usddConfig, usddConfigFor, usddLendersByChain, usddMarketByIlk, usddMarkets };
@@ -14,6 +14,14 @@ export type TermConfigChain = {
14
14
  priceOracle?: string | null;
15
15
  /** Term data endpoint base (subgraph/HTTP) for listings + auction state. */
16
16
  apiBaseUrl?: string | null;
17
+ /** Terminal 1 order-store REST base (fill-now limit orders). */
18
+ orderStoreUrl?: string | null;
19
+ /** Terminal 1 intent diamond override. Normally resolved LIVE from the
20
+ * subgraph (`termDiamonds`) — the diamond is upgradeable and per-chain, so a
21
+ * pin can go stale; this field exists for tests/emergencies only. */
22
+ intentDiamond?: string | null;
23
+ /** EIP-712 domain version of the Terminal 1 diamond (order signing). */
24
+ eip712DomainVersion?: string | null;
17
25
  };
18
26
  export type TermConfigType = {
19
27
  [chainId: string]: TermConfigChain;
@@ -75,6 +83,15 @@ export declare const termApiBaseOverride: () => string | undefined;
75
83
  * source configured" and callers fall back to static config / on-chain reads.
76
84
  */
77
85
  export declare const resolveTermApiBase: (chainId: string) => string;
86
+ export declare const setTermOrderStoreBase: (url: string | undefined | null) => void;
87
+ export declare const termOrderStoreBaseOverride: () => string | undefined;
88
+ /**
89
+ * Resolve the Terminal 1 order-store base for a chain: override → config → ''.
90
+ * Unlike the subgraph base, consumers fall back to the public hosted store
91
+ * (`https://api.global.termfinance.io/protocol`) when this is empty — the
92
+ * constant lives with the fetcher (margin-fetcher / worker-api), not here.
93
+ */
94
+ export declare const resolveTermOrderStoreBase: (chainId: string) => string;
78
95
  export declare const termMarkets: () => TermMarketsType;
79
96
  /** All Term Finance market configs on a chain (empty array if none/unloaded). */
80
97
  export declare const termMarketsByChain: (chainId: string | number) => TermMarketConfig[];
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "0.0.50",
7
+ "version": "0.0.51",
8
8
  "description": "Hold and initialize lending protocol data across a stack",
9
9
  "files": [
10
10
  "dist"