@eternl/network-id 0.10.22 → 0.10.24
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/DateId-Bgaw8h3k.d.mts +10 -0
- package/dist/DateId-Bgaw8h3k.d.mts.map +1 -0
- package/dist/DateId-DI1Q0_Pd.d.cts +10 -0
- package/dist/DateId-DI1Q0_Pd.d.cts.map +1 -0
- package/dist/{shelley-DT0SWnc1.mjs → GenesisStore-DtQdwsV9.mjs} +74 -54
- package/dist/GenesisStore-DtQdwsV9.mjs.map +1 -0
- package/dist/{shelley-C52dVk7F.cjs → GenesisStore-bmIOboUV.cjs} +78 -161
- package/dist/GenesisStore-bmIOboUV.cjs.map +1 -0
- package/dist/IEpochParams-CH8-YLax.d.mts +24 -0
- package/dist/IEpochParams-CH8-YLax.d.mts.map +1 -0
- package/dist/IEpochParams-CSxQMaRY.d.cts +24 -0
- package/dist/IEpochParams-CSxQMaRY.d.cts.map +1 -0
- package/dist/IGenesisStore-BsB4xkSW.d.mts +37 -0
- package/dist/IGenesisStore-BsB4xkSW.d.mts.map +1 -0
- package/dist/IGenesisStore-HKK_EuKr.d.cts +37 -0
- package/dist/IGenesisStore-HKK_EuKr.d.cts.map +1 -0
- package/dist/NetworkId-B8rRQja1.d.cts +31 -0
- package/dist/NetworkId-B8rRQja1.d.cts.map +1 -0
- package/dist/NetworkId-BG6nkpb_.d.mts +31 -0
- package/dist/NetworkId-BG6nkpb_.d.mts.map +1 -0
- package/dist/chain-CXEvehB2.d.cts +48 -0
- package/dist/chain-CXEvehB2.d.cts.map +1 -0
- package/dist/chain-q8sBB3TY.d.mts +48 -0
- package/dist/chain-q8sBB3TY.d.mts.map +1 -0
- package/dist/chain.cjs +10 -11
- package/dist/chain.cjs.map +1 -1
- package/dist/chain.d.cts +2 -30
- package/dist/chain.d.mts +2 -30
- package/dist/chain.mjs +2 -3
- package/dist/chain.mjs.map +1 -1
- package/dist/index.cjs +10 -8
- package/dist/index.d.cts +5 -7
- package/dist/index.d.mts +5 -7
- package/dist/index.mjs +5 -3
- package/dist/network/GenesisStore.cjs +3 -46
- package/dist/network/GenesisStore.d.cts +2 -8
- package/dist/network/GenesisStore.d.mts +2 -8
- package/dist/network/GenesisStore.mjs +1 -44
- package/dist/network/IGenesisStore.d.cts +2 -37
- package/dist/network/IGenesisStore.d.mts +2 -37
- package/dist/network/IGenesisStore.mjs +1 -1
- package/dist/types/DateId.d.cts +2 -10
- package/dist/types/DateId.d.mts +2 -10
- package/dist/types/DateId.mjs +1 -1
- package/dist/types/IChainTip.cjs +2 -3
- package/dist/types/IChainTip.cjs.map +1 -1
- package/dist/types/IChainTip.d.cts +2 -20
- package/dist/types/IChainTip.d.mts +2 -20
- package/dist/types/IChainTip.mjs +1 -1
- package/dist/types/IEpochParams.d.cts +2 -24
- package/dist/types/IEpochParams.d.mts +2 -24
- package/dist/types/IEpochParams.mjs +1 -1
- package/dist/types/NetworkId.cjs +2 -3
- package/dist/types/NetworkId.cjs.map +1 -1
- package/dist/types/NetworkId.d.cts +2 -31
- package/dist/types/NetworkId.d.mts +2 -31
- package/dist/types/NetworkId.mjs +1 -1
- package/package.json +2 -2
- package/dist/chain.d.cts.map +0 -1
- package/dist/chain.d.mts.map +0 -1
- package/dist/network/GenesisStore.cjs.map +0 -1
- package/dist/network/GenesisStore.d.cts.map +0 -1
- package/dist/network/GenesisStore.d.mts.map +0 -1
- package/dist/network/GenesisStore.mjs.map +0 -1
- package/dist/network/IGenesisStore.d.cts.map +0 -1
- package/dist/network/IGenesisStore.d.mts.map +0 -1
- package/dist/shelley-C52dVk7F.cjs.map +0 -1
- package/dist/shelley-DT0SWnc1.mjs.map +0 -1
- package/dist/types/DateId.d.cts.map +0 -1
- package/dist/types/DateId.d.mts.map +0 -1
- package/dist/types/IChainTip.d.cts.map +0 -1
- package/dist/types/IChainTip.d.mts.map +0 -1
- package/dist/types/IEpochParams.d.cts.map +0 -1
- package/dist/types/IEpochParams.d.mts.map +0 -1
- package/dist/types/NetworkId.d.cts.map +0 -1
- package/dist/types/NetworkId.d.mts.map +0 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NetworkId } from "@eternl/network-id";
|
|
2
|
+
|
|
3
|
+
//#region src/types/IEpochParams.d.ts
|
|
4
|
+
interface IProtocolVersion {
|
|
5
|
+
major: number;
|
|
6
|
+
minor: number;
|
|
7
|
+
}
|
|
8
|
+
interface IEpochParams {
|
|
9
|
+
networkId: NetworkId;
|
|
10
|
+
protocolVersion: IProtocolVersion;
|
|
11
|
+
utxoCostPerSize: number;
|
|
12
|
+
maxValueSize: number;
|
|
13
|
+
maxTxSize: number;
|
|
14
|
+
txFeePerByte: number;
|
|
15
|
+
txFeeFixed: number;
|
|
16
|
+
stakePoolDeposit: number;
|
|
17
|
+
stakeAddressDeposit: number;
|
|
18
|
+
isAtLeastBabbageEra?: boolean;
|
|
19
|
+
isAtLeastConwayEra?: boolean;
|
|
20
|
+
isAtLeastConwayEra2?: boolean;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { IProtocolVersion as n, IEpochParams as t };
|
|
24
|
+
//# sourceMappingURL=IEpochParams-CSxQMaRY.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IEpochParams-CSxQMaRY.d.cts","names":[],"sources":["../src/types/IEpochParams.ts"],"mappings":";;;UAEiB,gBAAA;EAEf,KAAA;EACA,KAAA;AAAA;AAAA,UAGe,YAAA;EAEf,SAAA,EAA4B,SAAA;EAC5B,eAAA,EAA4B,gBAAA;EAE5B,eAAA;EACA,YAAA;EACA,SAAA;EACA,YAAA;EACA,UAAA;EACA,gBAAA;EACA,mBAAA;EAEA,mBAAA;EACA,kBAAA;EACA,mBAAA;AAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//#region src/network/IGenesisStore.d.ts
|
|
2
|
+
interface IShelley {
|
|
3
|
+
activeSlotsCoeff: number;
|
|
4
|
+
epochLength: number;
|
|
5
|
+
maxKESEvolutions: number;
|
|
6
|
+
maxLovelaceSupply: number;
|
|
7
|
+
networkId: string;
|
|
8
|
+
networkMagic: number;
|
|
9
|
+
securityParam: number;
|
|
10
|
+
slotLength: number;
|
|
11
|
+
slotsPerKESPeriod: number;
|
|
12
|
+
systemStart: string;
|
|
13
|
+
updateQuorum: number;
|
|
14
|
+
}
|
|
15
|
+
interface IBlockVersionData {
|
|
16
|
+
slotDuration: string;
|
|
17
|
+
maxBlockSize: string;
|
|
18
|
+
maxHeaderSize: string;
|
|
19
|
+
maxTxSize: string;
|
|
20
|
+
maxProposalSize: string;
|
|
21
|
+
}
|
|
22
|
+
interface IProtocolConsts {
|
|
23
|
+
k: number;
|
|
24
|
+
protocolMagic: number;
|
|
25
|
+
}
|
|
26
|
+
interface IByron {
|
|
27
|
+
startTime: number;
|
|
28
|
+
blockVersionData: IBlockVersionData;
|
|
29
|
+
protocolConsts: IProtocolConsts;
|
|
30
|
+
}
|
|
31
|
+
interface IGenesisStore {
|
|
32
|
+
shelley: IShelley;
|
|
33
|
+
byron: IByron;
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { IShelley as a, IProtocolConsts as i, IByron as n, IGenesisStore as r, IBlockVersionData as t };
|
|
37
|
+
//# sourceMappingURL=IGenesisStore-BsB4xkSW.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IGenesisStore-BsB4xkSW.d.mts","names":[],"sources":["../src/network/IGenesisStore.ts"],"mappings":";UAsBiB,QAAA;EAEf,gBAAA;EACA,WAAA;EACA,gBAAA;EACA,iBAAA;EACA,SAAA;EACA,YAAA;EAEA,aAAA;EACA,UAAA;EACA,iBAAA;EACA,WAAA;EACA,YAAA;AAAA;AAAA,UAGe,iBAAA;EAEf,YAAA;EACA,YAAA;EACA,aAAA;EACA,SAAA;EACA,eAAA;AAAA;AAAA,UAGe,eAAA;EAEf,CAAA;EACA,aAAA;AAAA;AAAA,UAGe,MAAA;EAEf,SAAA;EACA,gBAAA,EAA4B,iBAAA;EAC5B,cAAA,EAA4B,eAAA;AAAA;AAAA,UAGb,aAAA;EAEf,OAAA,EAA4B,QAAA;EAC5B,KAAA,EAA4B,MAAA;AAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//#region src/network/IGenesisStore.d.ts
|
|
2
|
+
interface IShelley {
|
|
3
|
+
activeSlotsCoeff: number;
|
|
4
|
+
epochLength: number;
|
|
5
|
+
maxKESEvolutions: number;
|
|
6
|
+
maxLovelaceSupply: number;
|
|
7
|
+
networkId: string;
|
|
8
|
+
networkMagic: number;
|
|
9
|
+
securityParam: number;
|
|
10
|
+
slotLength: number;
|
|
11
|
+
slotsPerKESPeriod: number;
|
|
12
|
+
systemStart: string;
|
|
13
|
+
updateQuorum: number;
|
|
14
|
+
}
|
|
15
|
+
interface IBlockVersionData {
|
|
16
|
+
slotDuration: string;
|
|
17
|
+
maxBlockSize: string;
|
|
18
|
+
maxHeaderSize: string;
|
|
19
|
+
maxTxSize: string;
|
|
20
|
+
maxProposalSize: string;
|
|
21
|
+
}
|
|
22
|
+
interface IProtocolConsts {
|
|
23
|
+
k: number;
|
|
24
|
+
protocolMagic: number;
|
|
25
|
+
}
|
|
26
|
+
interface IByron {
|
|
27
|
+
startTime: number;
|
|
28
|
+
blockVersionData: IBlockVersionData;
|
|
29
|
+
protocolConsts: IProtocolConsts;
|
|
30
|
+
}
|
|
31
|
+
interface IGenesisStore {
|
|
32
|
+
shelley: IShelley;
|
|
33
|
+
byron: IByron;
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { IShelley as a, IProtocolConsts as i, IByron as n, IGenesisStore as r, IBlockVersionData as t };
|
|
37
|
+
//# sourceMappingURL=IGenesisStore-HKK_EuKr.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IGenesisStore-HKK_EuKr.d.cts","names":[],"sources":["../src/network/IGenesisStore.ts"],"mappings":";UAsBiB,QAAA;EAEf,gBAAA;EACA,WAAA;EACA,gBAAA;EACA,iBAAA;EACA,SAAA;EACA,YAAA;EAEA,aAAA;EACA,UAAA;EACA,iBAAA;EACA,WAAA;EACA,YAAA;AAAA;AAAA,UAGe,iBAAA;EAEf,YAAA;EACA,YAAA;EACA,aAAA;EACA,SAAA;EACA,eAAA;AAAA;AAAA,UAGe,eAAA;EAEf,CAAA;EACA,aAAA;AAAA;AAAA,UAGe,MAAA;EAEf,SAAA;EACA,gBAAA,EAA4B,iBAAA;EAC5B,cAAA,EAA4B,eAAA;AAAA;AAAA,UAGb,aAAA;EAEf,OAAA,EAA4B,QAAA;EAC5B,KAAA,EAA4B,MAAA;AAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region src/types/NetworkId.d.ts
|
|
2
|
+
declare const NETWORK_ID: {
|
|
3
|
+
readonly MAINNET: "mainnet";
|
|
4
|
+
readonly GUILD: "guild";
|
|
5
|
+
readonly SANCHO: "sancho";
|
|
6
|
+
readonly PREPROD: "preprod";
|
|
7
|
+
readonly PREVIEW: "preview";
|
|
8
|
+
readonly AFVT: "afvt";
|
|
9
|
+
readonly AFVM: "afvm";
|
|
10
|
+
readonly AFPT: "afpt";
|
|
11
|
+
readonly AFPM: "afpm";
|
|
12
|
+
};
|
|
13
|
+
type NetworkId = typeof NETWORK_ID[keyof typeof NETWORK_ID];
|
|
14
|
+
declare const networkIdList: NetworkId[];
|
|
15
|
+
declare const networkIdx: Record<NetworkId, number>;
|
|
16
|
+
declare const networkGroups: Record<string, NetworkId[]>;
|
|
17
|
+
declare const networkShelleyTransitionEpoch: Record<NetworkId, number>;
|
|
18
|
+
declare const networkAddressPrefix: Record<NetworkId, string>;
|
|
19
|
+
declare const networkStakeAddressPrefix: Record<NetworkId, string>;
|
|
20
|
+
declare const networkCurrencyCode: Record<NetworkId, string>;
|
|
21
|
+
declare const networkCurrencySymbol: Record<NetworkId, string>;
|
|
22
|
+
declare const isSupportedNetworkId: (id?: string | null) => id is NetworkId;
|
|
23
|
+
declare const getNetworkId: (id: string) => number;
|
|
24
|
+
declare const getNetworkDecimals: (id: NetworkId) => number;
|
|
25
|
+
declare const isTestnetNetwork: (networkId: NetworkId) => boolean;
|
|
26
|
+
declare const isCustomNetwork: (networkId: NetworkId) => boolean;
|
|
27
|
+
declare const getNetworkCurrencyCode: (id: NetworkId) => string;
|
|
28
|
+
declare const getNetworkCurrencySymbol: (id: NetworkId) => string;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { networkStakeAddressPrefix as _, getNetworkDecimals as a, isSupportedNetworkId as c, networkCurrencyCode as d, networkCurrencySymbol as f, networkShelleyTransitionEpoch as g, networkIdx as h, getNetworkCurrencySymbol as i, isTestnetNetwork as l, networkIdList as m, NetworkId as n, getNetworkId as o, networkGroups as p, getNetworkCurrencyCode as r, isCustomNetwork as s, NETWORK_ID as t, networkAddressPrefix as u };
|
|
31
|
+
//# sourceMappingURL=NetworkId-B8rRQja1.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkId-B8rRQja1.d.cts","names":[],"sources":["../src/types/NetworkId.ts"],"mappings":";cAAa,UAAA;EAAA;;;;;;;;;;KAaD,SAAA,UAA2B,UAAA,cAAwB,UAAA;AAAA,cAElD,aAAA,EAAoB,SAAA;AAAA,cAYpB,UAAA,EAAY,MAAA,CAAO,SAAA;AAAA,cAanB,aAAA,EAAe,MAAA,SAAe,SAAA;AAAA,cAM9B,6BAAA,EAA+B,MAAA,CAAO,SAAA;AAAA,cAatC,oBAAA,EAAsB,MAAA,CAAO,SAAA;AAAA,cAa7B,yBAAA,EAA2B,MAAA,CAAO,SAAA;AAAA,cAalC,mBAAA,EAAqB,MAAA,CAAO,SAAA;AAAA,cAa5B,qBAAA,EAAuB,MAAA,CAAO,SAAA;AAAA,cAa9B,oBAAA,GAA4B,EAAA,qBAAqB,EAAA,IAAM,SAAA;AAAA,cAEvD,YAAA,GAA4B,EAAA;AAAA,cAkB5B,kBAAA,GAA4B,EAAA,EAAI,SAAA;AAAA,cAShC,gBAAA,GAA4B,SAAA,EAAW,SAAA;AAAA,cAkBvC,eAAA,GAA4B,SAAA,EAAW,SAAA;AAAA,cAEvC,sBAAA,GAA4B,EAAA,EAAI,SAAA;AAAA,cAChC,wBAAA,GAA4B,EAAA,EAAI,SAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region src/types/NetworkId.d.ts
|
|
2
|
+
declare const NETWORK_ID: {
|
|
3
|
+
readonly MAINNET: "mainnet";
|
|
4
|
+
readonly GUILD: "guild";
|
|
5
|
+
readonly SANCHO: "sancho";
|
|
6
|
+
readonly PREPROD: "preprod";
|
|
7
|
+
readonly PREVIEW: "preview";
|
|
8
|
+
readonly AFVT: "afvt";
|
|
9
|
+
readonly AFVM: "afvm";
|
|
10
|
+
readonly AFPT: "afpt";
|
|
11
|
+
readonly AFPM: "afpm";
|
|
12
|
+
};
|
|
13
|
+
type NetworkId = typeof NETWORK_ID[keyof typeof NETWORK_ID];
|
|
14
|
+
declare const networkIdList: NetworkId[];
|
|
15
|
+
declare const networkIdx: Record<NetworkId, number>;
|
|
16
|
+
declare const networkGroups: Record<string, NetworkId[]>;
|
|
17
|
+
declare const networkShelleyTransitionEpoch: Record<NetworkId, number>;
|
|
18
|
+
declare const networkAddressPrefix: Record<NetworkId, string>;
|
|
19
|
+
declare const networkStakeAddressPrefix: Record<NetworkId, string>;
|
|
20
|
+
declare const networkCurrencyCode: Record<NetworkId, string>;
|
|
21
|
+
declare const networkCurrencySymbol: Record<NetworkId, string>;
|
|
22
|
+
declare const isSupportedNetworkId: (id?: string | null) => id is NetworkId;
|
|
23
|
+
declare const getNetworkId: (id: string) => number;
|
|
24
|
+
declare const getNetworkDecimals: (id: NetworkId) => number;
|
|
25
|
+
declare const isTestnetNetwork: (networkId: NetworkId) => boolean;
|
|
26
|
+
declare const isCustomNetwork: (networkId: NetworkId) => boolean;
|
|
27
|
+
declare const getNetworkCurrencyCode: (id: NetworkId) => string;
|
|
28
|
+
declare const getNetworkCurrencySymbol: (id: NetworkId) => string;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { networkStakeAddressPrefix as _, getNetworkDecimals as a, isSupportedNetworkId as c, networkCurrencyCode as d, networkCurrencySymbol as f, networkShelleyTransitionEpoch as g, networkIdx as h, getNetworkCurrencySymbol as i, isTestnetNetwork as l, networkIdList as m, NetworkId as n, getNetworkId as o, networkGroups as p, getNetworkCurrencyCode as r, isCustomNetwork as s, NETWORK_ID as t, networkAddressPrefix as u };
|
|
31
|
+
//# sourceMappingURL=NetworkId-BG6nkpb_.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkId-BG6nkpb_.d.mts","names":[],"sources":["../src/types/NetworkId.ts"],"mappings":";cAAa,UAAA;EAAA;;;;;;;;;;KAaD,SAAA,UAA2B,UAAA,cAAwB,UAAA;AAAA,cAElD,aAAA,EAAoB,SAAA;AAAA,cAYpB,UAAA,EAAY,MAAA,CAAO,SAAA;AAAA,cAanB,aAAA,EAAe,MAAA,SAAe,SAAA;AAAA,cAM9B,6BAAA,EAA+B,MAAA,CAAO,SAAA;AAAA,cAatC,oBAAA,EAAsB,MAAA,CAAO,SAAA;AAAA,cAa7B,yBAAA,EAA2B,MAAA,CAAO,SAAA;AAAA,cAalC,mBAAA,EAAqB,MAAA,CAAO,SAAA;AAAA,cAa5B,qBAAA,EAAuB,MAAA,CAAO,SAAA;AAAA,cAa9B,oBAAA,GAA4B,EAAA,qBAAqB,EAAA,IAAM,SAAA;AAAA,cAEvD,YAAA,GAA4B,EAAA;AAAA,cAkB5B,kBAAA,GAA4B,EAAA,EAAI,SAAA;AAAA,cAShC,gBAAA,GAA4B,SAAA,EAAW,SAAA;AAAA,cAkBvC,eAAA,GAA4B,SAAA,EAAW,SAAA;AAAA,cAEvC,sBAAA,GAA4B,EAAA,EAAI,SAAA;AAAA,cAChC,wBAAA,GAA4B,EAAA,EAAI,SAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { a as IShelley, n as IByron, r as IGenesisStore } from "./IGenesisStore-HKK_EuKr.cjs";
|
|
2
|
+
import { t as DateId } from "./DateId-DI1Q0_Pd.cjs";
|
|
3
|
+
import { n as NetworkId } from "./NetworkId-B8rRQja1.cjs";
|
|
4
|
+
|
|
5
|
+
//#region src/network/GenesisStore.d.ts
|
|
6
|
+
declare const GenesisStore: Record<NetworkId, IGenesisStore>;
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/types/IChainTip.d.ts
|
|
9
|
+
interface IChainTip {
|
|
10
|
+
networkId: NetworkId | null;
|
|
11
|
+
network: NetworkId | null;
|
|
12
|
+
blockNo: number;
|
|
13
|
+
slotNo: number;
|
|
14
|
+
epochNo: number;
|
|
15
|
+
epochSlot: number;
|
|
16
|
+
epochSlots: number;
|
|
17
|
+
epochPercent: number;
|
|
18
|
+
syncProgress: number;
|
|
19
|
+
onTip: boolean;
|
|
20
|
+
serverTime: number;
|
|
21
|
+
}
|
|
22
|
+
declare const createIChainTip: (networkId: NetworkId | null) => IChainTip;
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region src/chain.d.ts
|
|
25
|
+
declare const getGenesis: (networkId: NetworkId) => IGenesisStore;
|
|
26
|
+
declare const getByron: (networkId: NetworkId) => IByron;
|
|
27
|
+
declare const getShelley: (networkId: NetworkId) => IShelley;
|
|
28
|
+
declare const getNetworkMagic: (networkId: NetworkId) => number;
|
|
29
|
+
declare const getEpochLength: (networkId: NetworkId) => number;
|
|
30
|
+
declare const getNumEpochBlocks: (networkId: NetworkId) => number;
|
|
31
|
+
declare const getCalculatedChainTip: (networkId: NetworkId) => number;
|
|
32
|
+
declare const getTimestampFromSlot: (networkId: NetworkId, slotNo: number) => number;
|
|
33
|
+
declare const getEpochFromSlot: (networkId: NetworkId, slotNo: number) => number;
|
|
34
|
+
declare const getCalculatedSlotFromBlockTime: (networkId: NetworkId, timestamp: any) => number;
|
|
35
|
+
declare const getCalculatedEpochSlot: (networkId: NetworkId) => number;
|
|
36
|
+
declare const getCalculatedEpoch: (id: NetworkId) => number;
|
|
37
|
+
declare const getLastSlotOfEpoch: (id: NetworkId, epochNo: number) => number;
|
|
38
|
+
declare const getEpochStart: (id: NetworkId, epochNo: number) => {
|
|
39
|
+
slotNumber: number;
|
|
40
|
+
timestamp: number;
|
|
41
|
+
};
|
|
42
|
+
declare const updateChainTip: (id: NetworkId, chainTip: IChainTip, data: IChainTip) => IChainTip;
|
|
43
|
+
declare const getDateIdFromSlot: (networkId: NetworkId, slotNo: number, userSelectedTimezone: string) => DateId;
|
|
44
|
+
declare const getDateIdFromTimestamp: (timeStamp: number, userSelectedTimezone: string) => DateId;
|
|
45
|
+
declare const getSlotFromDateId: (networkId: NetworkId, dateId: Pick<DateId, "year" | "month" | "day" | "timezone">, calcEnd?: boolean) => number;
|
|
46
|
+
//#endregion
|
|
47
|
+
export { getTimestampFromSlot as _, getCalculatedSlotFromBlockTime as a, createIChainTip as b, getEpochFromSlot as c, getGenesis as d, getLastSlotOfEpoch as f, getSlotFromDateId as g, getShelley as h, getCalculatedEpochSlot as i, getEpochLength as l, getNumEpochBlocks as m, getCalculatedChainTip as n, getDateIdFromSlot as o, getNetworkMagic as p, getCalculatedEpoch as r, getDateIdFromTimestamp as s, getByron as t, getEpochStart as u, updateChainTip as v, GenesisStore as x, IChainTip as y };
|
|
48
|
+
//# sourceMappingURL=chain-CXEvehB2.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-CXEvehB2.d.cts","names":[],"sources":["../src/network/GenesisStore.ts","../src/types/IChainTip.ts","../src/chain.ts"],"mappings":";;;;;cAqBa,YAAA,EAAc,MAAA,CAAO,SAAA,EAAW,aAAA;;;UCnB5B,SAAA;EAEf,SAAA,EAA4B,SAAA;EAC5B,OAAA,EAA4B,SAAA;EAE5B,OAAA;EACA,MAAA;EAEA,OAAA;EACA,SAAA;EACA,UAAA;EACA,YAAA;EAEA,YAAA;EACA,KAAA;EACA,UAAA;AAAA;AAAA,cAGW,eAAA,GAAmB,SAAA,EAAW,SAAA,YAAmB,SAAA;;;cCIjD,UAAA,GAAoB,SAAA,EAAW,SAAA,KAAY,aAAA;AAAA,cAC3C,QAAA,GAAoB,SAAA,EAAW,SAAA,KAAY,MAAA;AAAA,cAC3C,UAAA,GAAoB,SAAA,EAAW,SAAA,KAAY,QAAA;AAAA,cAC3C,eAAA,GAAoB,SAAA,EAAW,SAAA;AAAA,cAC/B,cAAA,GAAoB,SAAA,EAAW,SAAA;AAAA,cAC/B,iBAAA,GAAoB,SAAA,EAAW,SAAA;AAAA,cAuB/B,qBAAA,GAAyB,SAAA,EAAW,SAAA;AAAA,cAiBpC,oBAAA,GAAwB,SAAA,EAAW,SAAA,EAAW,MAAA;AAAA,cAc9C,gBAAA,GAAoB,SAAA,EAAW,SAAA,EAAW,MAAA;AAAA,cA6B1C,8BAAA,GAAkC,SAAA,EAAW,SAAA,EAAW,SAAA;AAAA,cAmBxD,sBAAA,GAA0B,SAAA,EAAW,SAAA;AAAA,cAWrC,kBAAA,GAAsB,EAAA,EAAI,SAAA;AAAA,cAmB1B,kBAAA,GAAsB,EAAA,EAAI,SAAA,EAAW,OAAA;AAAA,cAerC,aAAA,GAAoB,EAAA,EAAI,SAAA,EAAW,OAAA;EAE9C,UAAA;EACA,SAAA;AAAA;AAAA,cA4BW,cAAA,GAAoB,EAAA,EAAI,SAAA,EAAW,QAAA,EAAU,SAAA,EAAW,IAAA,EAAM,SAAA,KAAY,SAAA;AAAA,cAoB1E,iBAAA,GAAqB,SAAA,EAAW,SAAA,EAAW,MAAA,UAAgB,oBAAA,aAA+B,MAAA;AAAA,cAO1F,sBAAA,GAA0B,SAAA,UAAmB,oBAAA,aAA+B,MAAA;AAAA,cAsC5E,iBAAA,GACX,SAAA,EAAW,SAAA,EACX,MAAA,EAAQ,IAAA,CAAK,MAAA,0CACb,OAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { a as IShelley, n as IByron, r as IGenesisStore } from "./IGenesisStore-BsB4xkSW.mjs";
|
|
2
|
+
import { t as DateId } from "./DateId-Bgaw8h3k.mjs";
|
|
3
|
+
import { n as NetworkId } from "./NetworkId-BG6nkpb_.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/network/GenesisStore.d.ts
|
|
6
|
+
declare const GenesisStore: Record<NetworkId, IGenesisStore>;
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/types/IChainTip.d.ts
|
|
9
|
+
interface IChainTip {
|
|
10
|
+
networkId: NetworkId | null;
|
|
11
|
+
network: NetworkId | null;
|
|
12
|
+
blockNo: number;
|
|
13
|
+
slotNo: number;
|
|
14
|
+
epochNo: number;
|
|
15
|
+
epochSlot: number;
|
|
16
|
+
epochSlots: number;
|
|
17
|
+
epochPercent: number;
|
|
18
|
+
syncProgress: number;
|
|
19
|
+
onTip: boolean;
|
|
20
|
+
serverTime: number;
|
|
21
|
+
}
|
|
22
|
+
declare const createIChainTip: (networkId: NetworkId | null) => IChainTip;
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region src/chain.d.ts
|
|
25
|
+
declare const getGenesis: (networkId: NetworkId) => IGenesisStore;
|
|
26
|
+
declare const getByron: (networkId: NetworkId) => IByron;
|
|
27
|
+
declare const getShelley: (networkId: NetworkId) => IShelley;
|
|
28
|
+
declare const getNetworkMagic: (networkId: NetworkId) => number;
|
|
29
|
+
declare const getEpochLength: (networkId: NetworkId) => number;
|
|
30
|
+
declare const getNumEpochBlocks: (networkId: NetworkId) => number;
|
|
31
|
+
declare const getCalculatedChainTip: (networkId: NetworkId) => number;
|
|
32
|
+
declare const getTimestampFromSlot: (networkId: NetworkId, slotNo: number) => number;
|
|
33
|
+
declare const getEpochFromSlot: (networkId: NetworkId, slotNo: number) => number;
|
|
34
|
+
declare const getCalculatedSlotFromBlockTime: (networkId: NetworkId, timestamp: any) => number;
|
|
35
|
+
declare const getCalculatedEpochSlot: (networkId: NetworkId) => number;
|
|
36
|
+
declare const getCalculatedEpoch: (id: NetworkId) => number;
|
|
37
|
+
declare const getLastSlotOfEpoch: (id: NetworkId, epochNo: number) => number;
|
|
38
|
+
declare const getEpochStart: (id: NetworkId, epochNo: number) => {
|
|
39
|
+
slotNumber: number;
|
|
40
|
+
timestamp: number;
|
|
41
|
+
};
|
|
42
|
+
declare const updateChainTip: (id: NetworkId, chainTip: IChainTip, data: IChainTip) => IChainTip;
|
|
43
|
+
declare const getDateIdFromSlot: (networkId: NetworkId, slotNo: number, userSelectedTimezone: string) => DateId;
|
|
44
|
+
declare const getDateIdFromTimestamp: (timeStamp: number, userSelectedTimezone: string) => DateId;
|
|
45
|
+
declare const getSlotFromDateId: (networkId: NetworkId, dateId: Pick<DateId, "year" | "month" | "day" | "timezone">, calcEnd?: boolean) => number;
|
|
46
|
+
//#endregion
|
|
47
|
+
export { getTimestampFromSlot as _, getCalculatedSlotFromBlockTime as a, createIChainTip as b, getEpochFromSlot as c, getGenesis as d, getLastSlotOfEpoch as f, getSlotFromDateId as g, getShelley as h, getCalculatedEpochSlot as i, getEpochLength as l, getNumEpochBlocks as m, getCalculatedChainTip as n, getDateIdFromSlot as o, getNetworkMagic as p, getCalculatedEpoch as r, getDateIdFromTimestamp as s, getByron as t, getEpochStart as u, updateChainTip as v, GenesisStore as x, IChainTip as y };
|
|
48
|
+
//# sourceMappingURL=chain-q8sBB3TY.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-q8sBB3TY.d.mts","names":[],"sources":["../src/network/GenesisStore.ts","../src/types/IChainTip.ts","../src/chain.ts"],"mappings":";;;;;cAqBa,YAAA,EAAc,MAAA,CAAO,SAAA,EAAW,aAAA;;;UCnB5B,SAAA;EAEf,SAAA,EAA4B,SAAA;EAC5B,OAAA,EAA4B,SAAA;EAE5B,OAAA;EACA,MAAA;EAEA,OAAA;EACA,SAAA;EACA,UAAA;EACA,YAAA;EAEA,YAAA;EACA,KAAA;EACA,UAAA;AAAA;AAAA,cAGW,eAAA,GAAmB,SAAA,EAAW,SAAA,YAAmB,SAAA;;;cCIjD,UAAA,GAAoB,SAAA,EAAW,SAAA,KAAY,aAAA;AAAA,cAC3C,QAAA,GAAoB,SAAA,EAAW,SAAA,KAAY,MAAA;AAAA,cAC3C,UAAA,GAAoB,SAAA,EAAW,SAAA,KAAY,QAAA;AAAA,cAC3C,eAAA,GAAoB,SAAA,EAAW,SAAA;AAAA,cAC/B,cAAA,GAAoB,SAAA,EAAW,SAAA;AAAA,cAC/B,iBAAA,GAAoB,SAAA,EAAW,SAAA;AAAA,cAuB/B,qBAAA,GAAyB,SAAA,EAAW,SAAA;AAAA,cAiBpC,oBAAA,GAAwB,SAAA,EAAW,SAAA,EAAW,MAAA;AAAA,cAc9C,gBAAA,GAAoB,SAAA,EAAW,SAAA,EAAW,MAAA;AAAA,cA6B1C,8BAAA,GAAkC,SAAA,EAAW,SAAA,EAAW,SAAA;AAAA,cAmBxD,sBAAA,GAA0B,SAAA,EAAW,SAAA;AAAA,cAWrC,kBAAA,GAAsB,EAAA,EAAI,SAAA;AAAA,cAmB1B,kBAAA,GAAsB,EAAA,EAAI,SAAA,EAAW,OAAA;AAAA,cAerC,aAAA,GAAoB,EAAA,EAAI,SAAA,EAAW,OAAA;EAE9C,UAAA;EACA,SAAA;AAAA;AAAA,cA4BW,cAAA,GAAoB,EAAA,EAAI,SAAA,EAAW,QAAA,EAAU,SAAA,EAAW,IAAA,EAAM,SAAA,KAAY,SAAA;AAAA,cAoB1E,iBAAA,GAAqB,SAAA,EAAW,SAAA,EAAW,MAAA,UAAgB,oBAAA,aAA+B,MAAA;AAAA,cAO1F,sBAAA,GAA0B,SAAA,UAAmB,oBAAA,aAA+B,MAAA;AAAA,cAsC5E,iBAAA,GACX,SAAA,EAAW,SAAA,EACX,MAAA,EAAQ,IAAA,CAAK,MAAA,0CACb,OAAA"}
|
package/dist/chain.cjs
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
const
|
|
3
|
-
const require_types_NetworkId = require(
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_GenesisStore = require("./GenesisStore-bmIOboUV.cjs");
|
|
3
|
+
const require_types_NetworkId = require("./types/NetworkId.cjs");
|
|
4
4
|
let _eternl_tools = require("@eternl/tools");
|
|
5
|
-
|
|
6
5
|
//#region src/chain.ts
|
|
7
6
|
const dateIdCache = /* @__PURE__ */ new Map();
|
|
8
7
|
const formatterCache = /* @__PURE__ */ new Map();
|
|
9
|
-
const getGenesis = (networkId) =>
|
|
10
|
-
const getByron = (networkId) =>
|
|
11
|
-
const getShelley = (networkId) =>
|
|
12
|
-
const getNetworkMagic = (networkId) =>
|
|
13
|
-
const getEpochLength = (networkId) =>
|
|
14
|
-
const getNumEpochBlocks = (networkId) => getEpochLength(networkId) *
|
|
8
|
+
const getGenesis = (networkId) => require_GenesisStore.GenesisStore[networkId];
|
|
9
|
+
const getByron = (networkId) => require_GenesisStore.GenesisStore[networkId].byron;
|
|
10
|
+
const getShelley = (networkId) => require_GenesisStore.GenesisStore[networkId].shelley;
|
|
11
|
+
const getNetworkMagic = (networkId) => require_GenesisStore.GenesisStore[networkId].shelley.networkMagic;
|
|
12
|
+
const getEpochLength = (networkId) => require_GenesisStore.GenesisStore[networkId].shelley.epochLength;
|
|
13
|
+
const getNumEpochBlocks = (networkId) => getEpochLength(networkId) * require_GenesisStore.GenesisStore[networkId].shelley.activeSlotsCoeff;
|
|
15
14
|
const getCommonData = (networkId) => {
|
|
16
15
|
const byron = getByron(networkId);
|
|
17
16
|
const currentTimeSec = Math.floor((0, _eternl_tools.now)() / 1e3);
|
|
@@ -151,7 +150,6 @@ const getSlotFromDateId = (networkId, dateId, calcEnd = false) => {
|
|
|
151
150
|
date = (0, _eternl_tools.changeTimezone)(date, dateId.timezone);
|
|
152
151
|
return getCalculatedSlotFromBlockTime(networkId, date.getTime());
|
|
153
152
|
};
|
|
154
|
-
|
|
155
153
|
//#endregion
|
|
156
154
|
exports.getByron = getByron;
|
|
157
155
|
exports.getCalculatedChainTip = getCalculatedChainTip;
|
|
@@ -171,4 +169,5 @@ exports.getShelley = getShelley;
|
|
|
171
169
|
exports.getSlotFromDateId = getSlotFromDateId;
|
|
172
170
|
exports.getTimestampFromSlot = getTimestampFromSlot;
|
|
173
171
|
exports.updateChainTip = updateChainTip;
|
|
172
|
+
|
|
174
173
|
//# sourceMappingURL=chain.cjs.map
|
package/dist/chain.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain.cjs","names":["GenesisStore","networkShelleyTransitionEpoch"],"sources":["../src/chain.ts"],"sourcesContent":["import {\n changeTimezone,\n now,\n} from '@eternl/tools'\n\nimport { GenesisStore } from './network/GenesisStore'\nimport {\n IByron,\n IGenesisStore,\n IShelley,\n} from './network/IGenesisStore'\nimport { DateId } from './types/DateId'\nimport { IChainTip } from './types/IChainTip'\nimport {\n NetworkId,\n networkShelleyTransitionEpoch,\n} from './types/NetworkId'\n\n// Cache for storing calculated DateId results\nconst dateIdCache = new Map<string, DateId>()\n\n// Cache for Intl.DateTimeFormat instances (these are expensive to create)\nconst formatterCache = new Map<string, Intl.DateTimeFormat>()\n\nexport const getGenesis = (networkId: NetworkId): IGenesisStore => GenesisStore[networkId]\nexport const getByron = (networkId: NetworkId): IByron => GenesisStore[networkId].byron\nexport const getShelley = (networkId: NetworkId): IShelley => GenesisStore[networkId].shelley\nexport const getNetworkMagic = (networkId: NetworkId): number => GenesisStore[networkId].shelley.networkMagic\nexport const getEpochLength = (networkId: NetworkId): number => GenesisStore[networkId].shelley.epochLength\nexport const getNumEpochBlocks= (networkId: NetworkId): number => getEpochLength(networkId) * GenesisStore[networkId].shelley.activeSlotsCoeff\n\nconst getCommonData = (networkId: NetworkId): any => {\n\n const byron = getByron(networkId)\n\n const currentTimeSec = Math.floor(now() / 1000)\n const shelleyTransEpoch = networkShelleyTransitionEpoch[networkId]\n const byronEpochLength = byron.protocolConsts.k * 10\n const byronSlots = shelleyTransEpoch * byronEpochLength\n const byronSlotLength = byron.blockVersionData.slotDuration\n const byronEndTime = byron.startTime + Math.floor((shelleyTransEpoch * byronEpochLength * parseInt(byronSlotLength)) / 1000)\n\n return {\n currentTimeSec,\n shelleyTransEpoch,\n byronEpochLength,\n byronSlots,\n byronSlotLength,\n byronEndTime\n }\n}\n\nexport const getCalculatedChainTip = (networkId: NetworkId): number => {\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n if (common.currentTimeSec < common.byronEndTime) {\n\n return Math.floor(\n (common.currentTimeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n }\n\n return common.byronSlots + Math.floor(\n (common.currentTimeSec - common.byronEndTime) / shelley.slotLength)\n}\n\nexport const getTimestampFromSlot = (networkId: NetworkId, slotNo: number): number => {\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n if (slotNo < common.byronSlots) {\n\n return (byron.startTime * 1000 + (slotNo * parseInt(byron.blockVersionData.slotDuration)))\n }\n\n return (common.byronEndTime + (slotNo - common.byronSlots) * shelley.slotLength) * 1000\n}\n\nexport const getEpochFromSlot = (networkId: NetworkId, slotNo: number): number => {\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n let timeSec = 0\n\n if (slotNo < common.byronSlots) {\n\n timeSec = (byron.startTime + (slotNo * parseInt(byron.blockVersionData.slotDuration)))\n\n } else {\n\n timeSec = (common.byronEndTime + (slotNo - common.byronSlots) * shelley.slotLength)\n }\n\n if (timeSec < common.byronEndTime) {\n\n return Math.floor(\n (((timeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n ) / common.byronEpochLength)\n }\n\n return common.shelleyTransEpoch + Math.floor(\n (timeSec - common.byronEndTime) / shelley.slotLength / shelley.epochLength)\n}\n\nexport const getCalculatedSlotFromBlockTime = (networkId: NetworkId, timestamp: any): number => {\n\n const dateTimeSec = Math.floor((new Date(timestamp)).getTime() / 1000)\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n if (dateTimeSec < common.byronEndTime) {\n\n return Math.floor(\n (dateTimeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n }\n\n return common.byronSlots + Math.floor(\n (dateTimeSec - common.byronEndTime) / shelley.slotLength)\n}\n\nexport const getCalculatedEpochSlot = (networkId: NetworkId): number => {\n\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n const tip = getCalculatedChainTip(networkId) - common.byronSlots - (\n (getCalculatedEpoch(networkId) - common.shelleyTransEpoch) * shelley.epochLength)\n\n return Math.floor(tip)\n}\n\nexport const getCalculatedEpoch = (id: NetworkId): number => {\n\n const byron = getByron(id)\n const shelley = getShelley(id)\n\n const common = getCommonData(id)\n\n if (common.currentTimeSec < common.byronEndTime) {\n\n return Math.floor(\n (((common.currentTimeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n ) / common.byronEpochLength)\n }\n\n return common.shelleyTransEpoch + Math.floor(\n (common.currentTimeSec - common.byronEndTime) / shelley.slotLength / shelley.epochLength)\n}\n\nexport const getLastSlotOfEpoch = (id: NetworkId, epochNo: number): number => {\n\n const shelley = getShelley(id)\n\n const common = getCommonData(id)\n\n if (epochNo <= common.shelleyTransEpoch) {\n\n return common.byronEpochLength * epochNo\n }\n\n return (common.byronEpochLength * (common.shelleyTransEpoch - 1)) +\n ((epochNo - common.shelleyTransEpoch + 1) * shelley.epochLength)\n}\n\nexport const getEpochStart = (id: NetworkId, epochNo: number): {\n\n slotNumber: number,\n timestamp: number\n\n} => {\n\n const common = getCommonData(id)\n\n if (epochNo >= common.shelleyTransEpoch) {\n\n const shelley = getShelley(id)\n\n const shelleySlots = (epochNo - common.shelleyTransEpoch) * shelley.epochLength\n\n const slotNumber = common.byronSlots + shelleySlots + 1\n const timestamp = (common.byronEndTime + shelleySlots + 1) * 1000\n\n return { slotNumber, timestamp }\n\n } else {\n\n const byron = getByron(id)\n\n const slotNumber = epochNo * common.byronEpochLength\n const timestamp = (byron.startTime + slotNumber * parseInt(common.byronSlotLength) / 1000) * 1000\n\n return { slotNumber, timestamp }\n }\n}\n\nexport const updateChainTip = (id: NetworkId, chainTip: IChainTip, data: IChainTip): IChainTip => {\n\n const shelley = getShelley(id)\n\n const calcTip = getCalculatedChainTip(id)\n\n chainTip.blockNo = data.blockNo\n chainTip.slotNo = data.slotNo\n\n chainTip.epochNo = data.epochNo\n chainTip.epochSlot = data.epochSlot\n chainTip.epochSlots = shelley.epochLength\n chainTip.epochPercent = parseFloat(((chainTip.epochSlot / chainTip.epochSlots) * 100).toFixed(2))\n chainTip.syncProgress = Math.round((chainTip.slotNo / calcTip) * 10000) / 100\n\n chainTip.onTip = (calcTip - chainTip.slotNo) < 300 // 5 minutes without a block\n\n return chainTip\n}\n\nexport const getDateIdFromSlot = (networkId: NetworkId, slotNo: number, userSelectedTimezone: string): DateId => {\n\n const timeStamp = getTimestampFromSlot(networkId, slotNo)\n\n return getDateIdFromTimestamp(timeStamp, userSelectedTimezone)\n}\n\nexport const getDateIdFromTimestamp = (timeStamp: number, userSelectedTimezone: string): DateId => {\n\n const cacheKey = `${timeStamp}_${userSelectedTimezone}`\n\n const cachedResult = dateIdCache.get(cacheKey)\n\n if (cachedResult) { return cachedResult }\n\n let formatter = formatterCache.get(userSelectedTimezone)\n\n if (!formatter) {\n\n formatter = Intl.DateTimeFormat('de-DE', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n timeZone: userSelectedTimezone,\n })\n\n formatterCache.set(userSelectedTimezone, formatter)\n }\n\n const date = new Date(timeStamp)\n const dateArray = formatter.formatToParts(date)\n\n const result: DateId = {\n\n year: parseInt(dateArray[4]!.value),\n month: parseInt(dateArray[2]!.value),\n day: parseInt(dateArray[0]!.value),\n timezone: userSelectedTimezone\n }\n\n dateIdCache.set(cacheKey, result)\n\n return result\n}\n\nexport const getSlotFromDateId = (\n networkId: NetworkId,\n dateId: Pick<DateId, 'year' | 'month' | 'day' | 'timezone'>,\n calcEnd: boolean = false\n): number => {\n\n const year = dateId.year // e.g. 2023\n const month = dateId.month - 1 // date months start at 0\n\n let date\n\n if (dateId.day === 0 && dateId.month === 0) {\n\n if (calcEnd) {\n\n // up to 31st Dec 23:59:59, it's slot based, which is 1 slot = 1 second\n date = new Date((new Date(year + 1, 0, 1, 0, 0, 0)).getTime() - 1000)\n\n } else {\n\n // from 1st Jan 00:00:00\n date = new Date((new Date(year, 0, 1, 0, 0, 0)).getTime())\n }\n\n } else if (dateId.day === 0) {\n\n if (calcEnd) {\n\n // up to last day of month 23:59:59, it's slot based, which is 1 slot = 1 second\n date = new Date((new Date(year, month + 1, 1, 0, 0, 0)).getTime() - 1000)\n\n } else {\n\n // from 1st day of month 00:00:00\n date = new Date((new Date(year, month, 1, 0, 0, 0)).getTime())\n }\n\n } else {\n\n if (calcEnd) {\n\n // up to 23:59:59\n date = new Date((new Date(year, month, dateId.day, 0, 0, 0)).getTime() + (86400 - 1) * 1000)\n\n } else {\n\n // from 00:00:00\n date = new Date((new Date(year, month, dateId.day, 0, 0, 0)).getTime())\n }\n }\n\n date = changeTimezone(date, dateId.timezone)\n\n return getCalculatedSlotFromBlockTime(networkId, date.getTime())\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chain.cjs","names":["GenesisStore","networkShelleyTransitionEpoch"],"sources":["../src/chain.ts"],"sourcesContent":["import {\n changeTimezone,\n now,\n} from '@eternl/tools'\n\nimport { GenesisStore } from './network/GenesisStore'\nimport {\n IByron,\n IGenesisStore,\n IShelley,\n} from './network/IGenesisStore'\nimport { DateId } from './types/DateId'\nimport { IChainTip } from './types/IChainTip'\nimport {\n NetworkId,\n networkShelleyTransitionEpoch,\n} from './types/NetworkId'\n\n// Cache for storing calculated DateId results\nconst dateIdCache = new Map<string, DateId>()\n\n// Cache for Intl.DateTimeFormat instances (these are expensive to create)\nconst formatterCache = new Map<string, Intl.DateTimeFormat>()\n\nexport const getGenesis = (networkId: NetworkId): IGenesisStore => GenesisStore[networkId]\nexport const getByron = (networkId: NetworkId): IByron => GenesisStore[networkId].byron\nexport const getShelley = (networkId: NetworkId): IShelley => GenesisStore[networkId].shelley\nexport const getNetworkMagic = (networkId: NetworkId): number => GenesisStore[networkId].shelley.networkMagic\nexport const getEpochLength = (networkId: NetworkId): number => GenesisStore[networkId].shelley.epochLength\nexport const getNumEpochBlocks= (networkId: NetworkId): number => getEpochLength(networkId) * GenesisStore[networkId].shelley.activeSlotsCoeff\n\nconst getCommonData = (networkId: NetworkId): any => {\n\n const byron = getByron(networkId)\n\n const currentTimeSec = Math.floor(now() / 1000)\n const shelleyTransEpoch = networkShelleyTransitionEpoch[networkId]\n const byronEpochLength = byron.protocolConsts.k * 10\n const byronSlots = shelleyTransEpoch * byronEpochLength\n const byronSlotLength = byron.blockVersionData.slotDuration\n const byronEndTime = byron.startTime + Math.floor((shelleyTransEpoch * byronEpochLength * parseInt(byronSlotLength)) / 1000)\n\n return {\n currentTimeSec,\n shelleyTransEpoch,\n byronEpochLength,\n byronSlots,\n byronSlotLength,\n byronEndTime\n }\n}\n\nexport const getCalculatedChainTip = (networkId: NetworkId): number => {\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n if (common.currentTimeSec < common.byronEndTime) {\n\n return Math.floor(\n (common.currentTimeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n }\n\n return common.byronSlots + Math.floor(\n (common.currentTimeSec - common.byronEndTime) / shelley.slotLength)\n}\n\nexport const getTimestampFromSlot = (networkId: NetworkId, slotNo: number): number => {\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n if (slotNo < common.byronSlots) {\n\n return (byron.startTime * 1000 + (slotNo * parseInt(byron.blockVersionData.slotDuration)))\n }\n\n return (common.byronEndTime + (slotNo - common.byronSlots) * shelley.slotLength) * 1000\n}\n\nexport const getEpochFromSlot = (networkId: NetworkId, slotNo: number): number => {\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n let timeSec = 0\n\n if (slotNo < common.byronSlots) {\n\n timeSec = (byron.startTime + (slotNo * parseInt(byron.blockVersionData.slotDuration)))\n\n } else {\n\n timeSec = (common.byronEndTime + (slotNo - common.byronSlots) * shelley.slotLength)\n }\n\n if (timeSec < common.byronEndTime) {\n\n return Math.floor(\n (((timeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n ) / common.byronEpochLength)\n }\n\n return common.shelleyTransEpoch + Math.floor(\n (timeSec - common.byronEndTime) / shelley.slotLength / shelley.epochLength)\n}\n\nexport const getCalculatedSlotFromBlockTime = (networkId: NetworkId, timestamp: any): number => {\n\n const dateTimeSec = Math.floor((new Date(timestamp)).getTime() / 1000)\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n if (dateTimeSec < common.byronEndTime) {\n\n return Math.floor(\n (dateTimeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n }\n\n return common.byronSlots + Math.floor(\n (dateTimeSec - common.byronEndTime) / shelley.slotLength)\n}\n\nexport const getCalculatedEpochSlot = (networkId: NetworkId): number => {\n\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n const tip = getCalculatedChainTip(networkId) - common.byronSlots - (\n (getCalculatedEpoch(networkId) - common.shelleyTransEpoch) * shelley.epochLength)\n\n return Math.floor(tip)\n}\n\nexport const getCalculatedEpoch = (id: NetworkId): number => {\n\n const byron = getByron(id)\n const shelley = getShelley(id)\n\n const common = getCommonData(id)\n\n if (common.currentTimeSec < common.byronEndTime) {\n\n return Math.floor(\n (((common.currentTimeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n ) / common.byronEpochLength)\n }\n\n return common.shelleyTransEpoch + Math.floor(\n (common.currentTimeSec - common.byronEndTime) / shelley.slotLength / shelley.epochLength)\n}\n\nexport const getLastSlotOfEpoch = (id: NetworkId, epochNo: number): number => {\n\n const shelley = getShelley(id)\n\n const common = getCommonData(id)\n\n if (epochNo <= common.shelleyTransEpoch) {\n\n return common.byronEpochLength * epochNo\n }\n\n return (common.byronEpochLength * (common.shelleyTransEpoch - 1)) +\n ((epochNo - common.shelleyTransEpoch + 1) * shelley.epochLength)\n}\n\nexport const getEpochStart = (id: NetworkId, epochNo: number): {\n\n slotNumber: number,\n timestamp: number\n\n} => {\n\n const common = getCommonData(id)\n\n if (epochNo >= common.shelleyTransEpoch) {\n\n const shelley = getShelley(id)\n\n const shelleySlots = (epochNo - common.shelleyTransEpoch) * shelley.epochLength\n\n const slotNumber = common.byronSlots + shelleySlots + 1\n const timestamp = (common.byronEndTime + shelleySlots + 1) * 1000\n\n return { slotNumber, timestamp }\n\n } else {\n\n const byron = getByron(id)\n\n const slotNumber = epochNo * common.byronEpochLength\n const timestamp = (byron.startTime + slotNumber * parseInt(common.byronSlotLength) / 1000) * 1000\n\n return { slotNumber, timestamp }\n }\n}\n\nexport const updateChainTip = (id: NetworkId, chainTip: IChainTip, data: IChainTip): IChainTip => {\n\n const shelley = getShelley(id)\n\n const calcTip = getCalculatedChainTip(id)\n\n chainTip.blockNo = data.blockNo\n chainTip.slotNo = data.slotNo\n\n chainTip.epochNo = data.epochNo\n chainTip.epochSlot = data.epochSlot\n chainTip.epochSlots = shelley.epochLength\n chainTip.epochPercent = parseFloat(((chainTip.epochSlot / chainTip.epochSlots) * 100).toFixed(2))\n chainTip.syncProgress = Math.round((chainTip.slotNo / calcTip) * 10000) / 100\n\n chainTip.onTip = (calcTip - chainTip.slotNo) < 300 // 5 minutes without a block\n\n return chainTip\n}\n\nexport const getDateIdFromSlot = (networkId: NetworkId, slotNo: number, userSelectedTimezone: string): DateId => {\n\n const timeStamp = getTimestampFromSlot(networkId, slotNo)\n\n return getDateIdFromTimestamp(timeStamp, userSelectedTimezone)\n}\n\nexport const getDateIdFromTimestamp = (timeStamp: number, userSelectedTimezone: string): DateId => {\n\n const cacheKey = `${timeStamp}_${userSelectedTimezone}`\n\n const cachedResult = dateIdCache.get(cacheKey)\n\n if (cachedResult) { return cachedResult }\n\n let formatter = formatterCache.get(userSelectedTimezone)\n\n if (!formatter) {\n\n formatter = Intl.DateTimeFormat('de-DE', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n timeZone: userSelectedTimezone,\n })\n\n formatterCache.set(userSelectedTimezone, formatter)\n }\n\n const date = new Date(timeStamp)\n const dateArray = formatter.formatToParts(date)\n\n const result: DateId = {\n\n year: parseInt(dateArray[4]!.value),\n month: parseInt(dateArray[2]!.value),\n day: parseInt(dateArray[0]!.value),\n timezone: userSelectedTimezone\n }\n\n dateIdCache.set(cacheKey, result)\n\n return result\n}\n\nexport const getSlotFromDateId = (\n networkId: NetworkId,\n dateId: Pick<DateId, 'year' | 'month' | 'day' | 'timezone'>,\n calcEnd: boolean = false\n): number => {\n\n const year = dateId.year // e.g. 2023\n const month = dateId.month - 1 // date months start at 0\n\n let date\n\n if (dateId.day === 0 && dateId.month === 0) {\n\n if (calcEnd) {\n\n // up to 31st Dec 23:59:59, it's slot based, which is 1 slot = 1 second\n date = new Date((new Date(year + 1, 0, 1, 0, 0, 0)).getTime() - 1000)\n\n } else {\n\n // from 1st Jan 00:00:00\n date = new Date((new Date(year, 0, 1, 0, 0, 0)).getTime())\n }\n\n } else if (dateId.day === 0) {\n\n if (calcEnd) {\n\n // up to last day of month 23:59:59, it's slot based, which is 1 slot = 1 second\n date = new Date((new Date(year, month + 1, 1, 0, 0, 0)).getTime() - 1000)\n\n } else {\n\n // from 1st day of month 00:00:00\n date = new Date((new Date(year, month, 1, 0, 0, 0)).getTime())\n }\n\n } else {\n\n if (calcEnd) {\n\n // up to 23:59:59\n date = new Date((new Date(year, month, dateId.day, 0, 0, 0)).getTime() + (86400 - 1) * 1000)\n\n } else {\n\n // from 00:00:00\n date = new Date((new Date(year, month, dateId.day, 0, 0, 0)).getTime())\n }\n }\n\n date = changeTimezone(date, dateId.timezone)\n\n return getCalculatedSlotFromBlockTime(networkId, date.getTime())\n}\n"],"mappings":"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"}
|
package/dist/chain.d.cts
CHANGED
|
@@ -1,30 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { NetworkId } from "./types/NetworkId.cjs";
|
|
4
|
-
import { IChainTip } from "./types/IChainTip.cjs";
|
|
5
|
-
|
|
6
|
-
//#region src/chain.d.ts
|
|
7
|
-
declare const getGenesis: (networkId: NetworkId) => IGenesisStore;
|
|
8
|
-
declare const getByron: (networkId: NetworkId) => IByron;
|
|
9
|
-
declare const getShelley: (networkId: NetworkId) => IShelley;
|
|
10
|
-
declare const getNetworkMagic: (networkId: NetworkId) => number;
|
|
11
|
-
declare const getEpochLength: (networkId: NetworkId) => number;
|
|
12
|
-
declare const getNumEpochBlocks: (networkId: NetworkId) => number;
|
|
13
|
-
declare const getCalculatedChainTip: (networkId: NetworkId) => number;
|
|
14
|
-
declare const getTimestampFromSlot: (networkId: NetworkId, slotNo: number) => number;
|
|
15
|
-
declare const getEpochFromSlot: (networkId: NetworkId, slotNo: number) => number;
|
|
16
|
-
declare const getCalculatedSlotFromBlockTime: (networkId: NetworkId, timestamp: any) => number;
|
|
17
|
-
declare const getCalculatedEpochSlot: (networkId: NetworkId) => number;
|
|
18
|
-
declare const getCalculatedEpoch: (id: NetworkId) => number;
|
|
19
|
-
declare const getLastSlotOfEpoch: (id: NetworkId, epochNo: number) => number;
|
|
20
|
-
declare const getEpochStart: (id: NetworkId, epochNo: number) => {
|
|
21
|
-
slotNumber: number;
|
|
22
|
-
timestamp: number;
|
|
23
|
-
};
|
|
24
|
-
declare const updateChainTip: (id: NetworkId, chainTip: IChainTip, data: IChainTip) => IChainTip;
|
|
25
|
-
declare const getDateIdFromSlot: (networkId: NetworkId, slotNo: number, userSelectedTimezone: string) => DateId;
|
|
26
|
-
declare const getDateIdFromTimestamp: (timeStamp: number, userSelectedTimezone: string) => DateId;
|
|
27
|
-
declare const getSlotFromDateId: (networkId: NetworkId, dateId: Pick<DateId, "year" | "month" | "day" | "timezone">, calcEnd?: boolean) => number;
|
|
28
|
-
//#endregion
|
|
29
|
-
export { getByron, getCalculatedChainTip, getCalculatedEpoch, getCalculatedEpochSlot, getCalculatedSlotFromBlockTime, getDateIdFromSlot, getDateIdFromTimestamp, getEpochFromSlot, getEpochLength, getEpochStart, getGenesis, getLastSlotOfEpoch, getNetworkMagic, getNumEpochBlocks, getShelley, getSlotFromDateId, getTimestampFromSlot, updateChainTip };
|
|
30
|
-
//# sourceMappingURL=chain.d.cts.map
|
|
1
|
+
import { _ as getTimestampFromSlot, a as getCalculatedSlotFromBlockTime, c as getEpochFromSlot, d as getGenesis, f as getLastSlotOfEpoch, g as getSlotFromDateId, h as getShelley, i as getCalculatedEpochSlot, l as getEpochLength, m as getNumEpochBlocks, n as getCalculatedChainTip, o as getDateIdFromSlot, p as getNetworkMagic, r as getCalculatedEpoch, s as getDateIdFromTimestamp, t as getByron, u as getEpochStart, v as updateChainTip } from "./chain-CXEvehB2.cjs";
|
|
2
|
+
export { getByron, getCalculatedChainTip, getCalculatedEpoch, getCalculatedEpochSlot, getCalculatedSlotFromBlockTime, getDateIdFromSlot, getDateIdFromTimestamp, getEpochFromSlot, getEpochLength, getEpochStart, getGenesis, getLastSlotOfEpoch, getNetworkMagic, getNumEpochBlocks, getShelley, getSlotFromDateId, getTimestampFromSlot, updateChainTip };
|
package/dist/chain.d.mts
CHANGED
|
@@ -1,30 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { NetworkId } from "./types/NetworkId.mjs";
|
|
4
|
-
import { IChainTip } from "./types/IChainTip.mjs";
|
|
5
|
-
|
|
6
|
-
//#region src/chain.d.ts
|
|
7
|
-
declare const getGenesis: (networkId: NetworkId) => IGenesisStore;
|
|
8
|
-
declare const getByron: (networkId: NetworkId) => IByron;
|
|
9
|
-
declare const getShelley: (networkId: NetworkId) => IShelley;
|
|
10
|
-
declare const getNetworkMagic: (networkId: NetworkId) => number;
|
|
11
|
-
declare const getEpochLength: (networkId: NetworkId) => number;
|
|
12
|
-
declare const getNumEpochBlocks: (networkId: NetworkId) => number;
|
|
13
|
-
declare const getCalculatedChainTip: (networkId: NetworkId) => number;
|
|
14
|
-
declare const getTimestampFromSlot: (networkId: NetworkId, slotNo: number) => number;
|
|
15
|
-
declare const getEpochFromSlot: (networkId: NetworkId, slotNo: number) => number;
|
|
16
|
-
declare const getCalculatedSlotFromBlockTime: (networkId: NetworkId, timestamp: any) => number;
|
|
17
|
-
declare const getCalculatedEpochSlot: (networkId: NetworkId) => number;
|
|
18
|
-
declare const getCalculatedEpoch: (id: NetworkId) => number;
|
|
19
|
-
declare const getLastSlotOfEpoch: (id: NetworkId, epochNo: number) => number;
|
|
20
|
-
declare const getEpochStart: (id: NetworkId, epochNo: number) => {
|
|
21
|
-
slotNumber: number;
|
|
22
|
-
timestamp: number;
|
|
23
|
-
};
|
|
24
|
-
declare const updateChainTip: (id: NetworkId, chainTip: IChainTip, data: IChainTip) => IChainTip;
|
|
25
|
-
declare const getDateIdFromSlot: (networkId: NetworkId, slotNo: number, userSelectedTimezone: string) => DateId;
|
|
26
|
-
declare const getDateIdFromTimestamp: (timeStamp: number, userSelectedTimezone: string) => DateId;
|
|
27
|
-
declare const getSlotFromDateId: (networkId: NetworkId, dateId: Pick<DateId, "year" | "month" | "day" | "timezone">, calcEnd?: boolean) => number;
|
|
28
|
-
//#endregion
|
|
29
|
-
export { getByron, getCalculatedChainTip, getCalculatedEpoch, getCalculatedEpochSlot, getCalculatedSlotFromBlockTime, getDateIdFromSlot, getDateIdFromTimestamp, getEpochFromSlot, getEpochLength, getEpochStart, getGenesis, getLastSlotOfEpoch, getNetworkMagic, getNumEpochBlocks, getShelley, getSlotFromDateId, getTimestampFromSlot, updateChainTip };
|
|
30
|
-
//# sourceMappingURL=chain.d.mts.map
|
|
1
|
+
import { _ as getTimestampFromSlot, a as getCalculatedSlotFromBlockTime, c as getEpochFromSlot, d as getGenesis, f as getLastSlotOfEpoch, g as getSlotFromDateId, h as getShelley, i as getCalculatedEpochSlot, l as getEpochLength, m as getNumEpochBlocks, n as getCalculatedChainTip, o as getDateIdFromSlot, p as getNetworkMagic, r as getCalculatedEpoch, s as getDateIdFromTimestamp, t as getByron, u as getEpochStart, v as updateChainTip } from "./chain-q8sBB3TY.mjs";
|
|
2
|
+
export { getByron, getCalculatedChainTip, getCalculatedEpoch, getCalculatedEpochSlot, getCalculatedSlotFromBlockTime, getDateIdFromSlot, getDateIdFromTimestamp, getEpochFromSlot, getEpochLength, getEpochStart, getGenesis, getLastSlotOfEpoch, getNetworkMagic, getNumEpochBlocks, getShelley, getSlotFromDateId, getTimestampFromSlot, updateChainTip };
|
package/dist/chain.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { GenesisStore } from "./
|
|
1
|
+
import { t as GenesisStore } from "./GenesisStore-DtQdwsV9.mjs";
|
|
2
2
|
import { networkShelleyTransitionEpoch } from "./types/NetworkId.mjs";
|
|
3
3
|
import { changeTimezone, now } from "@eternl/tools";
|
|
4
|
-
|
|
5
4
|
//#region src/chain.ts
|
|
6
5
|
const dateIdCache = /* @__PURE__ */ new Map();
|
|
7
6
|
const formatterCache = /* @__PURE__ */ new Map();
|
|
@@ -150,7 +149,7 @@ const getSlotFromDateId = (networkId, dateId, calcEnd = false) => {
|
|
|
150
149
|
date = changeTimezone(date, dateId.timezone);
|
|
151
150
|
return getCalculatedSlotFromBlockTime(networkId, date.getTime());
|
|
152
151
|
};
|
|
153
|
-
|
|
154
152
|
//#endregion
|
|
155
153
|
export { getByron, getCalculatedChainTip, getCalculatedEpoch, getCalculatedEpochSlot, getCalculatedSlotFromBlockTime, getDateIdFromSlot, getDateIdFromTimestamp, getEpochFromSlot, getEpochLength, getEpochStart, getGenesis, getLastSlotOfEpoch, getNetworkMagic, getNumEpochBlocks, getShelley, getSlotFromDateId, getTimestampFromSlot, updateChainTip };
|
|
154
|
+
|
|
156
155
|
//# sourceMappingURL=chain.mjs.map
|
package/dist/chain.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain.mjs","names":[],"sources":["../src/chain.ts"],"sourcesContent":["import {\n changeTimezone,\n now,\n} from '@eternl/tools'\n\nimport { GenesisStore } from './network/GenesisStore'\nimport {\n IByron,\n IGenesisStore,\n IShelley,\n} from './network/IGenesisStore'\nimport { DateId } from './types/DateId'\nimport { IChainTip } from './types/IChainTip'\nimport {\n NetworkId,\n networkShelleyTransitionEpoch,\n} from './types/NetworkId'\n\n// Cache for storing calculated DateId results\nconst dateIdCache = new Map<string, DateId>()\n\n// Cache for Intl.DateTimeFormat instances (these are expensive to create)\nconst formatterCache = new Map<string, Intl.DateTimeFormat>()\n\nexport const getGenesis = (networkId: NetworkId): IGenesisStore => GenesisStore[networkId]\nexport const getByron = (networkId: NetworkId): IByron => GenesisStore[networkId].byron\nexport const getShelley = (networkId: NetworkId): IShelley => GenesisStore[networkId].shelley\nexport const getNetworkMagic = (networkId: NetworkId): number => GenesisStore[networkId].shelley.networkMagic\nexport const getEpochLength = (networkId: NetworkId): number => GenesisStore[networkId].shelley.epochLength\nexport const getNumEpochBlocks= (networkId: NetworkId): number => getEpochLength(networkId) * GenesisStore[networkId].shelley.activeSlotsCoeff\n\nconst getCommonData = (networkId: NetworkId): any => {\n\n const byron = getByron(networkId)\n\n const currentTimeSec = Math.floor(now() / 1000)\n const shelleyTransEpoch = networkShelleyTransitionEpoch[networkId]\n const byronEpochLength = byron.protocolConsts.k * 10\n const byronSlots = shelleyTransEpoch * byronEpochLength\n const byronSlotLength = byron.blockVersionData.slotDuration\n const byronEndTime = byron.startTime + Math.floor((shelleyTransEpoch * byronEpochLength * parseInt(byronSlotLength)) / 1000)\n\n return {\n currentTimeSec,\n shelleyTransEpoch,\n byronEpochLength,\n byronSlots,\n byronSlotLength,\n byronEndTime\n }\n}\n\nexport const getCalculatedChainTip = (networkId: NetworkId): number => {\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n if (common.currentTimeSec < common.byronEndTime) {\n\n return Math.floor(\n (common.currentTimeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n }\n\n return common.byronSlots + Math.floor(\n (common.currentTimeSec - common.byronEndTime) / shelley.slotLength)\n}\n\nexport const getTimestampFromSlot = (networkId: NetworkId, slotNo: number): number => {\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n if (slotNo < common.byronSlots) {\n\n return (byron.startTime * 1000 + (slotNo * parseInt(byron.blockVersionData.slotDuration)))\n }\n\n return (common.byronEndTime + (slotNo - common.byronSlots) * shelley.slotLength) * 1000\n}\n\nexport const getEpochFromSlot = (networkId: NetworkId, slotNo: number): number => {\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n let timeSec = 0\n\n if (slotNo < common.byronSlots) {\n\n timeSec = (byron.startTime + (slotNo * parseInt(byron.blockVersionData.slotDuration)))\n\n } else {\n\n timeSec = (common.byronEndTime + (slotNo - common.byronSlots) * shelley.slotLength)\n }\n\n if (timeSec < common.byronEndTime) {\n\n return Math.floor(\n (((timeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n ) / common.byronEpochLength)\n }\n\n return common.shelleyTransEpoch + Math.floor(\n (timeSec - common.byronEndTime) / shelley.slotLength / shelley.epochLength)\n}\n\nexport const getCalculatedSlotFromBlockTime = (networkId: NetworkId, timestamp: any): number => {\n\n const dateTimeSec = Math.floor((new Date(timestamp)).getTime() / 1000)\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n if (dateTimeSec < common.byronEndTime) {\n\n return Math.floor(\n (dateTimeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n }\n\n return common.byronSlots + Math.floor(\n (dateTimeSec - common.byronEndTime) / shelley.slotLength)\n}\n\nexport const getCalculatedEpochSlot = (networkId: NetworkId): number => {\n\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n const tip = getCalculatedChainTip(networkId) - common.byronSlots - (\n (getCalculatedEpoch(networkId) - common.shelleyTransEpoch) * shelley.epochLength)\n\n return Math.floor(tip)\n}\n\nexport const getCalculatedEpoch = (id: NetworkId): number => {\n\n const byron = getByron(id)\n const shelley = getShelley(id)\n\n const common = getCommonData(id)\n\n if (common.currentTimeSec < common.byronEndTime) {\n\n return Math.floor(\n (((common.currentTimeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n ) / common.byronEpochLength)\n }\n\n return common.shelleyTransEpoch + Math.floor(\n (common.currentTimeSec - common.byronEndTime) / shelley.slotLength / shelley.epochLength)\n}\n\nexport const getLastSlotOfEpoch = (id: NetworkId, epochNo: number): number => {\n\n const shelley = getShelley(id)\n\n const common = getCommonData(id)\n\n if (epochNo <= common.shelleyTransEpoch) {\n\n return common.byronEpochLength * epochNo\n }\n\n return (common.byronEpochLength * (common.shelleyTransEpoch - 1)) +\n ((epochNo - common.shelleyTransEpoch + 1) * shelley.epochLength)\n}\n\nexport const getEpochStart = (id: NetworkId, epochNo: number): {\n\n slotNumber: number,\n timestamp: number\n\n} => {\n\n const common = getCommonData(id)\n\n if (epochNo >= common.shelleyTransEpoch) {\n\n const shelley = getShelley(id)\n\n const shelleySlots = (epochNo - common.shelleyTransEpoch) * shelley.epochLength\n\n const slotNumber = common.byronSlots + shelleySlots + 1\n const timestamp = (common.byronEndTime + shelleySlots + 1) * 1000\n\n return { slotNumber, timestamp }\n\n } else {\n\n const byron = getByron(id)\n\n const slotNumber = epochNo * common.byronEpochLength\n const timestamp = (byron.startTime + slotNumber * parseInt(common.byronSlotLength) / 1000) * 1000\n\n return { slotNumber, timestamp }\n }\n}\n\nexport const updateChainTip = (id: NetworkId, chainTip: IChainTip, data: IChainTip): IChainTip => {\n\n const shelley = getShelley(id)\n\n const calcTip = getCalculatedChainTip(id)\n\n chainTip.blockNo = data.blockNo\n chainTip.slotNo = data.slotNo\n\n chainTip.epochNo = data.epochNo\n chainTip.epochSlot = data.epochSlot\n chainTip.epochSlots = shelley.epochLength\n chainTip.epochPercent = parseFloat(((chainTip.epochSlot / chainTip.epochSlots) * 100).toFixed(2))\n chainTip.syncProgress = Math.round((chainTip.slotNo / calcTip) * 10000) / 100\n\n chainTip.onTip = (calcTip - chainTip.slotNo) < 300 // 5 minutes without a block\n\n return chainTip\n}\n\nexport const getDateIdFromSlot = (networkId: NetworkId, slotNo: number, userSelectedTimezone: string): DateId => {\n\n const timeStamp = getTimestampFromSlot(networkId, slotNo)\n\n return getDateIdFromTimestamp(timeStamp, userSelectedTimezone)\n}\n\nexport const getDateIdFromTimestamp = (timeStamp: number, userSelectedTimezone: string): DateId => {\n\n const cacheKey = `${timeStamp}_${userSelectedTimezone}`\n\n const cachedResult = dateIdCache.get(cacheKey)\n\n if (cachedResult) { return cachedResult }\n\n let formatter = formatterCache.get(userSelectedTimezone)\n\n if (!formatter) {\n\n formatter = Intl.DateTimeFormat('de-DE', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n timeZone: userSelectedTimezone,\n })\n\n formatterCache.set(userSelectedTimezone, formatter)\n }\n\n const date = new Date(timeStamp)\n const dateArray = formatter.formatToParts(date)\n\n const result: DateId = {\n\n year: parseInt(dateArray[4]!.value),\n month: parseInt(dateArray[2]!.value),\n day: parseInt(dateArray[0]!.value),\n timezone: userSelectedTimezone\n }\n\n dateIdCache.set(cacheKey, result)\n\n return result\n}\n\nexport const getSlotFromDateId = (\n networkId: NetworkId,\n dateId: Pick<DateId, 'year' | 'month' | 'day' | 'timezone'>,\n calcEnd: boolean = false\n): number => {\n\n const year = dateId.year // e.g. 2023\n const month = dateId.month - 1 // date months start at 0\n\n let date\n\n if (dateId.day === 0 && dateId.month === 0) {\n\n if (calcEnd) {\n\n // up to 31st Dec 23:59:59, it's slot based, which is 1 slot = 1 second\n date = new Date((new Date(year + 1, 0, 1, 0, 0, 0)).getTime() - 1000)\n\n } else {\n\n // from 1st Jan 00:00:00\n date = new Date((new Date(year, 0, 1, 0, 0, 0)).getTime())\n }\n\n } else if (dateId.day === 0) {\n\n if (calcEnd) {\n\n // up to last day of month 23:59:59, it's slot based, which is 1 slot = 1 second\n date = new Date((new Date(year, month + 1, 1, 0, 0, 0)).getTime() - 1000)\n\n } else {\n\n // from 1st day of month 00:00:00\n date = new Date((new Date(year, month, 1, 0, 0, 0)).getTime())\n }\n\n } else {\n\n if (calcEnd) {\n\n // up to 23:59:59\n date = new Date((new Date(year, month, dateId.day, 0, 0, 0)).getTime() + (86400 - 1) * 1000)\n\n } else {\n\n // from 00:00:00\n date = new Date((new Date(year, month, dateId.day, 0, 0, 0)).getTime())\n }\n }\n\n date = changeTimezone(date, dateId.timezone)\n\n return getCalculatedSlotFromBlockTime(networkId, date.getTime())\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chain.mjs","names":[],"sources":["../src/chain.ts"],"sourcesContent":["import {\n changeTimezone,\n now,\n} from '@eternl/tools'\n\nimport { GenesisStore } from './network/GenesisStore'\nimport {\n IByron,\n IGenesisStore,\n IShelley,\n} from './network/IGenesisStore'\nimport { DateId } from './types/DateId'\nimport { IChainTip } from './types/IChainTip'\nimport {\n NetworkId,\n networkShelleyTransitionEpoch,\n} from './types/NetworkId'\n\n// Cache for storing calculated DateId results\nconst dateIdCache = new Map<string, DateId>()\n\n// Cache for Intl.DateTimeFormat instances (these are expensive to create)\nconst formatterCache = new Map<string, Intl.DateTimeFormat>()\n\nexport const getGenesis = (networkId: NetworkId): IGenesisStore => GenesisStore[networkId]\nexport const getByron = (networkId: NetworkId): IByron => GenesisStore[networkId].byron\nexport const getShelley = (networkId: NetworkId): IShelley => GenesisStore[networkId].shelley\nexport const getNetworkMagic = (networkId: NetworkId): number => GenesisStore[networkId].shelley.networkMagic\nexport const getEpochLength = (networkId: NetworkId): number => GenesisStore[networkId].shelley.epochLength\nexport const getNumEpochBlocks= (networkId: NetworkId): number => getEpochLength(networkId) * GenesisStore[networkId].shelley.activeSlotsCoeff\n\nconst getCommonData = (networkId: NetworkId): any => {\n\n const byron = getByron(networkId)\n\n const currentTimeSec = Math.floor(now() / 1000)\n const shelleyTransEpoch = networkShelleyTransitionEpoch[networkId]\n const byronEpochLength = byron.protocolConsts.k * 10\n const byronSlots = shelleyTransEpoch * byronEpochLength\n const byronSlotLength = byron.blockVersionData.slotDuration\n const byronEndTime = byron.startTime + Math.floor((shelleyTransEpoch * byronEpochLength * parseInt(byronSlotLength)) / 1000)\n\n return {\n currentTimeSec,\n shelleyTransEpoch,\n byronEpochLength,\n byronSlots,\n byronSlotLength,\n byronEndTime\n }\n}\n\nexport const getCalculatedChainTip = (networkId: NetworkId): number => {\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n if (common.currentTimeSec < common.byronEndTime) {\n\n return Math.floor(\n (common.currentTimeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n }\n\n return common.byronSlots + Math.floor(\n (common.currentTimeSec - common.byronEndTime) / shelley.slotLength)\n}\n\nexport const getTimestampFromSlot = (networkId: NetworkId, slotNo: number): number => {\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n if (slotNo < common.byronSlots) {\n\n return (byron.startTime * 1000 + (slotNo * parseInt(byron.blockVersionData.slotDuration)))\n }\n\n return (common.byronEndTime + (slotNo - common.byronSlots) * shelley.slotLength) * 1000\n}\n\nexport const getEpochFromSlot = (networkId: NetworkId, slotNo: number): number => {\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n let timeSec = 0\n\n if (slotNo < common.byronSlots) {\n\n timeSec = (byron.startTime + (slotNo * parseInt(byron.blockVersionData.slotDuration)))\n\n } else {\n\n timeSec = (common.byronEndTime + (slotNo - common.byronSlots) * shelley.slotLength)\n }\n\n if (timeSec < common.byronEndTime) {\n\n return Math.floor(\n (((timeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n ) / common.byronEpochLength)\n }\n\n return common.shelleyTransEpoch + Math.floor(\n (timeSec - common.byronEndTime) / shelley.slotLength / shelley.epochLength)\n}\n\nexport const getCalculatedSlotFromBlockTime = (networkId: NetworkId, timestamp: any): number => {\n\n const dateTimeSec = Math.floor((new Date(timestamp)).getTime() / 1000)\n\n const byron = getByron(networkId)\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n if (dateTimeSec < common.byronEndTime) {\n\n return Math.floor(\n (dateTimeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n }\n\n return common.byronSlots + Math.floor(\n (dateTimeSec - common.byronEndTime) / shelley.slotLength)\n}\n\nexport const getCalculatedEpochSlot = (networkId: NetworkId): number => {\n\n const shelley = getShelley(networkId)\n const common = getCommonData(networkId)\n\n const tip = getCalculatedChainTip(networkId) - common.byronSlots - (\n (getCalculatedEpoch(networkId) - common.shelleyTransEpoch) * shelley.epochLength)\n\n return Math.floor(tip)\n}\n\nexport const getCalculatedEpoch = (id: NetworkId): number => {\n\n const byron = getByron(id)\n const shelley = getShelley(id)\n\n const common = getCommonData(id)\n\n if (common.currentTimeSec < common.byronEndTime) {\n\n return Math.floor(\n (((common.currentTimeSec - byron.startTime) * 1000) /\n parseInt(byron.blockVersionData.slotDuration)\n ) / common.byronEpochLength)\n }\n\n return common.shelleyTransEpoch + Math.floor(\n (common.currentTimeSec - common.byronEndTime) / shelley.slotLength / shelley.epochLength)\n}\n\nexport const getLastSlotOfEpoch = (id: NetworkId, epochNo: number): number => {\n\n const shelley = getShelley(id)\n\n const common = getCommonData(id)\n\n if (epochNo <= common.shelleyTransEpoch) {\n\n return common.byronEpochLength * epochNo\n }\n\n return (common.byronEpochLength * (common.shelleyTransEpoch - 1)) +\n ((epochNo - common.shelleyTransEpoch + 1) * shelley.epochLength)\n}\n\nexport const getEpochStart = (id: NetworkId, epochNo: number): {\n\n slotNumber: number,\n timestamp: number\n\n} => {\n\n const common = getCommonData(id)\n\n if (epochNo >= common.shelleyTransEpoch) {\n\n const shelley = getShelley(id)\n\n const shelleySlots = (epochNo - common.shelleyTransEpoch) * shelley.epochLength\n\n const slotNumber = common.byronSlots + shelleySlots + 1\n const timestamp = (common.byronEndTime + shelleySlots + 1) * 1000\n\n return { slotNumber, timestamp }\n\n } else {\n\n const byron = getByron(id)\n\n const slotNumber = epochNo * common.byronEpochLength\n const timestamp = (byron.startTime + slotNumber * parseInt(common.byronSlotLength) / 1000) * 1000\n\n return { slotNumber, timestamp }\n }\n}\n\nexport const updateChainTip = (id: NetworkId, chainTip: IChainTip, data: IChainTip): IChainTip => {\n\n const shelley = getShelley(id)\n\n const calcTip = getCalculatedChainTip(id)\n\n chainTip.blockNo = data.blockNo\n chainTip.slotNo = data.slotNo\n\n chainTip.epochNo = data.epochNo\n chainTip.epochSlot = data.epochSlot\n chainTip.epochSlots = shelley.epochLength\n chainTip.epochPercent = parseFloat(((chainTip.epochSlot / chainTip.epochSlots) * 100).toFixed(2))\n chainTip.syncProgress = Math.round((chainTip.slotNo / calcTip) * 10000) / 100\n\n chainTip.onTip = (calcTip - chainTip.slotNo) < 300 // 5 minutes without a block\n\n return chainTip\n}\n\nexport const getDateIdFromSlot = (networkId: NetworkId, slotNo: number, userSelectedTimezone: string): DateId => {\n\n const timeStamp = getTimestampFromSlot(networkId, slotNo)\n\n return getDateIdFromTimestamp(timeStamp, userSelectedTimezone)\n}\n\nexport const getDateIdFromTimestamp = (timeStamp: number, userSelectedTimezone: string): DateId => {\n\n const cacheKey = `${timeStamp}_${userSelectedTimezone}`\n\n const cachedResult = dateIdCache.get(cacheKey)\n\n if (cachedResult) { return cachedResult }\n\n let formatter = formatterCache.get(userSelectedTimezone)\n\n if (!formatter) {\n\n formatter = Intl.DateTimeFormat('de-DE', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n timeZone: userSelectedTimezone,\n })\n\n formatterCache.set(userSelectedTimezone, formatter)\n }\n\n const date = new Date(timeStamp)\n const dateArray = formatter.formatToParts(date)\n\n const result: DateId = {\n\n year: parseInt(dateArray[4]!.value),\n month: parseInt(dateArray[2]!.value),\n day: parseInt(dateArray[0]!.value),\n timezone: userSelectedTimezone\n }\n\n dateIdCache.set(cacheKey, result)\n\n return result\n}\n\nexport const getSlotFromDateId = (\n networkId: NetworkId,\n dateId: Pick<DateId, 'year' | 'month' | 'day' | 'timezone'>,\n calcEnd: boolean = false\n): number => {\n\n const year = dateId.year // e.g. 2023\n const month = dateId.month - 1 // date months start at 0\n\n let date\n\n if (dateId.day === 0 && dateId.month === 0) {\n\n if (calcEnd) {\n\n // up to 31st Dec 23:59:59, it's slot based, which is 1 slot = 1 second\n date = new Date((new Date(year + 1, 0, 1, 0, 0, 0)).getTime() - 1000)\n\n } else {\n\n // from 1st Jan 00:00:00\n date = new Date((new Date(year, 0, 1, 0, 0, 0)).getTime())\n }\n\n } else if (dateId.day === 0) {\n\n if (calcEnd) {\n\n // up to last day of month 23:59:59, it's slot based, which is 1 slot = 1 second\n date = new Date((new Date(year, month + 1, 1, 0, 0, 0)).getTime() - 1000)\n\n } else {\n\n // from 1st day of month 00:00:00\n date = new Date((new Date(year, month, 1, 0, 0, 0)).getTime())\n }\n\n } else {\n\n if (calcEnd) {\n\n // up to 23:59:59\n date = new Date((new Date(year, month, dateId.day, 0, 0, 0)).getTime() + (86400 - 1) * 1000)\n\n } else {\n\n // from 00:00:00\n date = new Date((new Date(year, month, dateId.day, 0, 0, 0)).getTime())\n }\n }\n\n date = changeTimezone(date, dateId.timezone)\n\n return getCalculatedSlotFromBlockTime(networkId, date.getTime())\n}\n"],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
const
|
|
3
|
-
const require_types_NetworkId = require(
|
|
4
|
-
const require_chain = require(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_GenesisStore = require("./GenesisStore-bmIOboUV.cjs");
|
|
3
|
+
const require_types_NetworkId = require("./types/NetworkId.cjs");
|
|
4
|
+
const require_chain = require("./chain.cjs");
|
|
5
|
+
require("./network/IGenesisStore.cjs");
|
|
6
|
+
const require_types_IChainTip = require("./types/IChainTip.cjs");
|
|
7
|
+
require("./types/IEpochParams.cjs");
|
|
8
|
+
require("./types/DateId.cjs");
|
|
9
|
+
exports.GenesisStore = require_GenesisStore.GenesisStore;
|
|
8
10
|
exports.NETWORK_ID = require_types_NetworkId.NETWORK_ID;
|
|
9
11
|
exports.createIChainTip = require_types_IChainTip.createIChainTip;
|
|
10
12
|
exports.getByron = require_chain.getByron;
|
|
@@ -39,4 +41,4 @@ exports.networkIdList = require_types_NetworkId.networkIdList;
|
|
|
39
41
|
exports.networkIdx = require_types_NetworkId.networkIdx;
|
|
40
42
|
exports.networkShelleyTransitionEpoch = require_types_NetworkId.networkShelleyTransitionEpoch;
|
|
41
43
|
exports.networkStakeAddressPrefix = require_types_NetworkId.networkStakeAddressPrefix;
|
|
42
|
-
exports.updateChainTip = require_chain.updateChainTip;
|
|
44
|
+
exports.updateChainTip = require_chain.updateChainTip;
|