@chainsafe/lodestar 1.22.0-dev.fe6c4acbfc → 1.22.0
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/.git-data.json
CHANGED
|
@@ -1,39 +1,42 @@
|
|
|
1
1
|
import { ssz } from "@lodestar/types";
|
|
2
2
|
import { createBeaconConfig } from "@lodestar/config";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { formatBytes } from "@lodestar/utils";
|
|
4
|
+
import { isWithinWeakSubjectivityPeriod, ensureWithinWeakSubjectivityPeriod, loadState, loadStateAndValidators, } from "@lodestar/state-transition";
|
|
5
|
+
import { checkAndPersistAnchorState, initStateFromEth1, getStateTypeFromBytes, } from "@lodestar/beacon-node";
|
|
5
6
|
import { downloadOrLoadFile, wrapFnError } from "../../util/index.js";
|
|
6
7
|
import { defaultNetwork } from "../../options/globalOptions.js";
|
|
7
8
|
import { fetchWeakSubjectivityState, getCheckpointFromArg, getGenesisFileUrl, getCheckpointFromState, } from "../../networks/index.js";
|
|
8
|
-
async function initAndVerifyWeakSubjectivityState(config, db, logger,
|
|
9
|
+
async function initAndVerifyWeakSubjectivityState(config, db, logger, dbStateBytes, wsStateBytes, wsCheckpoint, opts = {}) {
|
|
10
|
+
const dbState = dbStateBytes.state;
|
|
11
|
+
const wsState = wsStateBytes.state;
|
|
9
12
|
// Check if the store's state and wsState are compatible
|
|
10
|
-
if (
|
|
11
|
-
!ssz.Root.equals(
|
|
13
|
+
if (dbState.genesisTime !== wsState.genesisTime ||
|
|
14
|
+
!ssz.Root.equals(dbState.genesisValidatorsRoot, wsState.genesisValidatorsRoot)) {
|
|
12
15
|
throw new Error("Db state and checkpoint state are not compatible, either clear the db or verify your checkpoint source");
|
|
13
16
|
}
|
|
14
17
|
// Pick the state which is ahead as an anchor to initialize the beacon chain
|
|
15
|
-
let anchorState =
|
|
18
|
+
let anchorState = wsStateBytes;
|
|
16
19
|
let anchorCheckpoint = wsCheckpoint;
|
|
17
20
|
let isCheckpointState = true;
|
|
18
|
-
if (
|
|
19
|
-
anchorState =
|
|
20
|
-
anchorCheckpoint = getCheckpointFromState(
|
|
21
|
+
if (dbState.slot > wsState.slot) {
|
|
22
|
+
anchorState = dbStateBytes;
|
|
23
|
+
anchorCheckpoint = getCheckpointFromState(dbState);
|
|
21
24
|
isCheckpointState = false;
|
|
22
25
|
logger.verbose("Db state is ahead of the provided checkpoint state, using the db state to initialize the beacon chain");
|
|
23
26
|
}
|
|
24
27
|
// Throw error unless user explicitly asked not to, in testnets can happen that wss period is too small
|
|
25
28
|
// that even some epochs of non finalization can cause finalized checkpoint to be out of valid range
|
|
26
|
-
const wssCheck = wrapFnError(() => ensureWithinWeakSubjectivityPeriod(config, anchorState, anchorCheckpoint));
|
|
29
|
+
const wssCheck = wrapFnError(() => ensureWithinWeakSubjectivityPeriod(config, anchorState.state, anchorCheckpoint));
|
|
27
30
|
const isWithinWeakSubjectivityPeriod = wssCheck.err === null;
|
|
28
31
|
if (!isWithinWeakSubjectivityPeriod && !opts.ignoreWeakSubjectivityCheck) {
|
|
29
32
|
throw wssCheck.err;
|
|
30
33
|
}
|
|
31
|
-
|
|
34
|
+
await checkAndPersistAnchorState(config, db, logger, anchorState.state, anchorState.stateBytes, {
|
|
32
35
|
isWithinWeakSubjectivityPeriod,
|
|
33
36
|
isCheckpointState,
|
|
34
37
|
});
|
|
35
38
|
// Return the latest anchorState but still return original wsCheckpoint to validate in backfill
|
|
36
|
-
return { anchorState, wsCheckpoint };
|
|
39
|
+
return { anchorState: anchorState.state, wsCheckpoint };
|
|
37
40
|
}
|
|
38
41
|
/**
|
|
39
42
|
* Initialize a beacon state, picking the strategy based on the `IBeaconArgs`
|
|
@@ -50,8 +53,19 @@ export async function initBeaconState(options, args, chainForkConfig, db, logger
|
|
|
50
53
|
}
|
|
51
54
|
// fetch the latest state stored in the db which will be used in all cases, if it exists, either
|
|
52
55
|
// i) used directly as the anchor state
|
|
53
|
-
// ii) used
|
|
54
|
-
const
|
|
56
|
+
// ii) used to load and verify a weak subjectivity state,
|
|
57
|
+
const lastDbSlot = await db.stateArchive.lastKey();
|
|
58
|
+
const stateBytes = lastDbSlot !== null ? await db.stateArchive.getBinary(lastDbSlot) : null;
|
|
59
|
+
let lastDbState = null;
|
|
60
|
+
let lastDbValidatorsBytes = null;
|
|
61
|
+
let lastDbStateWithBytes = null;
|
|
62
|
+
if (stateBytes) {
|
|
63
|
+
logger.verbose("Found the last archived state", { slot: lastDbSlot, size: formatBytes(stateBytes.length) });
|
|
64
|
+
const { state, validatorsBytes } = loadStateAndValidators(chainForkConfig, stateBytes);
|
|
65
|
+
lastDbState = state;
|
|
66
|
+
lastDbValidatorsBytes = validatorsBytes;
|
|
67
|
+
lastDbStateWithBytes = { state, stateBytes: stateBytes };
|
|
68
|
+
}
|
|
55
69
|
if (lastDbState) {
|
|
56
70
|
const config = createBeaconConfig(chainForkConfig, lastDbState.genesisValidatorsRoot);
|
|
57
71
|
const wssCheck = isWithinWeakSubjectivityPeriod(config, lastDbState, getCheckpointFromState(lastDbState));
|
|
@@ -60,7 +74,7 @@ export async function initBeaconState(options, args, chainForkConfig, db, logger
|
|
|
60
74
|
// Forcing to sync from checkpoint is only recommended if node is taking too long to sync from last db state.
|
|
61
75
|
// It is important to remind the user to remove this flag again unless it is absolutely necessary.
|
|
62
76
|
if (wssCheck) {
|
|
63
|
-
logger.warn(
|
|
77
|
+
logger.warn(`Forced syncing from checkpoint even though db state at slot ${lastDbState.slot} is within weak subjectivity period`);
|
|
64
78
|
logger.warn("Please consider removing --forceCheckpointSync flag unless absolutely necessary");
|
|
65
79
|
}
|
|
66
80
|
}
|
|
@@ -69,24 +83,28 @@ export async function initBeaconState(options, args, chainForkConfig, db, logger
|
|
|
69
83
|
// - if no checkpoint sync args provided, or
|
|
70
84
|
// - the lastDbState is within weak subjectivity period:
|
|
71
85
|
if ((!args.checkpointState && !args.checkpointSyncUrl) || wssCheck) {
|
|
72
|
-
|
|
86
|
+
if (stateBytes === null) {
|
|
87
|
+
// this never happens
|
|
88
|
+
throw Error(`There is no stateBytes for the lastDbState at slot ${lastDbState.slot}`);
|
|
89
|
+
}
|
|
90
|
+
await checkAndPersistAnchorState(config, db, logger, lastDbState, stateBytes, {
|
|
73
91
|
isWithinWeakSubjectivityPeriod: wssCheck,
|
|
74
92
|
isCheckpointState: false,
|
|
75
93
|
});
|
|
76
|
-
return { anchorState };
|
|
94
|
+
return { anchorState: lastDbState };
|
|
77
95
|
}
|
|
78
96
|
}
|
|
79
97
|
}
|
|
80
98
|
// See if we can sync state using checkpoint sync args or else start from genesis
|
|
81
99
|
if (args.checkpointState) {
|
|
82
|
-
return readWSState(
|
|
100
|
+
return readWSState(lastDbStateWithBytes, lastDbValidatorsBytes, {
|
|
83
101
|
checkpointState: args.checkpointState,
|
|
84
102
|
wssCheckpoint: args.wssCheckpoint,
|
|
85
103
|
ignoreWeakSubjectivityCheck: args.ignoreWeakSubjectivityCheck,
|
|
86
104
|
}, chainForkConfig, db, logger);
|
|
87
105
|
}
|
|
88
106
|
else if (args.checkpointSyncUrl) {
|
|
89
|
-
return fetchWSStateFromBeaconApi(
|
|
107
|
+
return fetchWSStateFromBeaconApi(lastDbStateWithBytes, lastDbValidatorsBytes, {
|
|
90
108
|
checkpointSyncUrl: args.checkpointSyncUrl,
|
|
91
109
|
wssCheckpoint: args.wssCheckpoint,
|
|
92
110
|
ignoreWeakSubjectivityCheck: args.ignoreWeakSubjectivityCheck,
|
|
@@ -96,10 +114,10 @@ export async function initBeaconState(options, args, chainForkConfig, db, logger
|
|
|
96
114
|
const genesisStateFile = args.genesisStateFile || getGenesisFileUrl(args.network || defaultNetwork);
|
|
97
115
|
if (genesisStateFile && !args.forceGenesis) {
|
|
98
116
|
const stateBytes = await downloadOrLoadFile(genesisStateFile);
|
|
99
|
-
|
|
117
|
+
const anchorState = getStateTypeFromBytes(chainForkConfig, stateBytes).deserializeToViewDU(stateBytes);
|
|
100
118
|
const config = createBeaconConfig(chainForkConfig, anchorState.genesisValidatorsRoot);
|
|
101
119
|
const wssCheck = isWithinWeakSubjectivityPeriod(config, anchorState, getCheckpointFromState(anchorState));
|
|
102
|
-
|
|
120
|
+
await checkAndPersistAnchorState(config, db, logger, anchorState, stateBytes, {
|
|
103
121
|
isWithinWeakSubjectivityPeriod: wssCheck,
|
|
104
122
|
isCheckpointState: true,
|
|
105
123
|
});
|
|
@@ -112,21 +130,30 @@ export async function initBeaconState(options, args, chainForkConfig, db, logger
|
|
|
112
130
|
}
|
|
113
131
|
}
|
|
114
132
|
}
|
|
115
|
-
async function readWSState(
|
|
133
|
+
async function readWSState(lastDbStateBytes, lastDbValidatorsBytes, wssOpts, chainForkConfig, db, logger) {
|
|
116
134
|
// weak subjectivity sync from a provided state file:
|
|
117
135
|
// if a weak subjectivity checkpoint has been provided, it is used for additional verification
|
|
118
136
|
// otherwise, the state itself is used for verification (not bad, because the trusted state has been explicitly provided)
|
|
119
137
|
const { checkpointState, wssCheckpoint, ignoreWeakSubjectivityCheck } = wssOpts;
|
|
138
|
+
const lastDbState = lastDbStateBytes?.state ?? null;
|
|
120
139
|
const stateBytes = await downloadOrLoadFile(checkpointState);
|
|
121
|
-
|
|
140
|
+
let wsState;
|
|
141
|
+
if (lastDbState && lastDbValidatorsBytes) {
|
|
142
|
+
// use lastDbState to load wsState if possible to share the same state tree
|
|
143
|
+
wsState = loadState(chainForkConfig, lastDbState, stateBytes, lastDbValidatorsBytes).state;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
wsState = getStateTypeFromBytes(chainForkConfig, stateBytes).deserializeToViewDU(stateBytes);
|
|
147
|
+
}
|
|
122
148
|
const config = createBeaconConfig(chainForkConfig, wsState.genesisValidatorsRoot);
|
|
123
|
-
const
|
|
149
|
+
const wsStateBytes = { state: wsState, stateBytes };
|
|
150
|
+
const store = lastDbStateBytes ?? wsStateBytes;
|
|
124
151
|
const checkpoint = wssCheckpoint ? getCheckpointFromArg(wssCheckpoint) : getCheckpointFromState(wsState);
|
|
125
|
-
return initAndVerifyWeakSubjectivityState(config, db, logger, store,
|
|
152
|
+
return initAndVerifyWeakSubjectivityState(config, db, logger, store, wsStateBytes, checkpoint, {
|
|
126
153
|
ignoreWeakSubjectivityCheck,
|
|
127
154
|
});
|
|
128
155
|
}
|
|
129
|
-
async function fetchWSStateFromBeaconApi(
|
|
156
|
+
async function fetchWSStateFromBeaconApi(lastDbStateBytes, lastDbValidatorsBytes, wssOpts, chainForkConfig, db, logger) {
|
|
130
157
|
// weak subjectivity sync from a state that needs to be fetched:
|
|
131
158
|
// if a weak subjectivity checkpoint has been provided, it is used to inform which state to download and used for additional verification
|
|
132
159
|
// otherwise, the 'finalized' state is downloaded and the state itself is used for verification (all trust delegated to the remote beacon node)
|
|
@@ -142,10 +169,14 @@ async function fetchWSStateFromBeaconApi(lastDbState, wssOpts, chainForkConfig,
|
|
|
142
169
|
logger.error("Invalid", { checkpointSyncUrl: wssOpts.checkpointSyncUrl }, e);
|
|
143
170
|
throw e;
|
|
144
171
|
}
|
|
145
|
-
const { wsState, wsCheckpoint } = await fetchWeakSubjectivityState(chainForkConfig, logger, wssOpts
|
|
172
|
+
const { wsState, wsStateBytes, wsCheckpoint } = await fetchWeakSubjectivityState(chainForkConfig, logger, wssOpts, {
|
|
173
|
+
lastDbState: lastDbStateBytes?.state ?? null,
|
|
174
|
+
lastDbValidatorsBytes,
|
|
175
|
+
});
|
|
146
176
|
const config = createBeaconConfig(chainForkConfig, wsState.genesisValidatorsRoot);
|
|
147
|
-
const
|
|
148
|
-
|
|
177
|
+
const wsStateWithBytes = { state: wsState, stateBytes: wsStateBytes };
|
|
178
|
+
const store = lastDbStateBytes ?? wsStateWithBytes;
|
|
179
|
+
return initAndVerifyWeakSubjectivityState(config, db, logger, store, wsStateWithBytes, wsCheckpoint, {
|
|
149
180
|
ignoreWeakSubjectivityCheck: wssOpts.ignoreWeakSubjectivityCheck,
|
|
150
181
|
});
|
|
151
182
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initBeaconState.js","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAgC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"initBeaconState.js","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"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"}
|
package/lib/networks/index.d.ts
CHANGED
|
@@ -37,8 +37,12 @@ export declare function readBootnodes(bootnodesFilePath: string): string[];
|
|
|
37
37
|
export declare function fetchWeakSubjectivityState(config: ChainForkConfig, logger: Logger, { checkpointSyncUrl, wssCheckpoint }: {
|
|
38
38
|
checkpointSyncUrl: string;
|
|
39
39
|
wssCheckpoint?: string;
|
|
40
|
+
}, { lastDbState, lastDbValidatorsBytes, }: {
|
|
41
|
+
lastDbState: BeaconStateAllForks | null;
|
|
42
|
+
lastDbValidatorsBytes: Uint8Array | null;
|
|
40
43
|
}): Promise<{
|
|
41
44
|
wsState: BeaconStateAllForks;
|
|
45
|
+
wsStateBytes: Uint8Array;
|
|
42
46
|
wsCheckpoint: Checkpoint;
|
|
43
47
|
}>;
|
|
44
48
|
export declare function getCheckpointFromArg(checkpointStr: string): Checkpoint;
|
package/lib/networks/index.js
CHANGED
|
@@ -3,9 +3,9 @@ import got from "got";
|
|
|
3
3
|
import { ENR } from "@chainsafe/enr";
|
|
4
4
|
import { SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
5
5
|
import { HttpHeader, MediaType, WireFormat, getClient } from "@lodestar/api";
|
|
6
|
-
import {
|
|
7
|
-
import { fromHex, callFnWhenAwait } from "@lodestar/utils";
|
|
8
|
-
import { getLatestBlockRoot, computeCheckpointEpochAtStateSlot } from "@lodestar/state-transition";
|
|
6
|
+
import { getStateSlotFromBytes } from "@lodestar/beacon-node";
|
|
7
|
+
import { fromHex, callFnWhenAwait, formatBytes } from "@lodestar/utils";
|
|
8
|
+
import { getLatestBlockRoot, computeCheckpointEpochAtStateSlot, loadState, } from "@lodestar/state-transition";
|
|
9
9
|
import { parseBootnodesFile } from "../util/format.js";
|
|
10
10
|
import * as mainnet from "./mainnet.js";
|
|
11
11
|
import * as dev from "./dev.js";
|
|
@@ -107,7 +107,7 @@ export function readBootnodes(bootnodesFilePath) {
|
|
|
107
107
|
/**
|
|
108
108
|
* Fetch weak subjectivity state from a remote beacon node
|
|
109
109
|
*/
|
|
110
|
-
export async function fetchWeakSubjectivityState(config, logger, { checkpointSyncUrl, wssCheckpoint }) {
|
|
110
|
+
export async function fetchWeakSubjectivityState(config, logger, { checkpointSyncUrl, wssCheckpoint }, { lastDbState, lastDbValidatorsBytes, }) {
|
|
111
111
|
try {
|
|
112
112
|
let wsCheckpoint;
|
|
113
113
|
let stateId;
|
|
@@ -130,15 +130,26 @@ export async function fetchWeakSubjectivityState(config, logger, { checkpointSyn
|
|
|
130
130
|
[HttpHeader.Accept]: MediaType.ssz,
|
|
131
131
|
},
|
|
132
132
|
});
|
|
133
|
-
const
|
|
133
|
+
const wsStateBytes = await callFnWhenAwait(getStatePromise, () => logger.info("Download in progress, please wait..."), GET_STATE_LOG_INTERVAL).then((res) => {
|
|
134
134
|
return res.ssz();
|
|
135
135
|
});
|
|
136
|
-
|
|
136
|
+
const wsSlot = getStateSlotFromBytes(wsStateBytes);
|
|
137
|
+
const logData = { stateId, size: formatBytes(wsStateBytes.length) };
|
|
138
|
+
logger.info("Download completed", typeof stateId === "number" ? logData : { ...logData, slot: wsSlot });
|
|
137
139
|
// It should not be required to get fork type from bytes but Checkpointz does not return
|
|
138
140
|
// Eth-Consensus-Version header, see https://github.com/ethpandaops/checkpointz/issues/164
|
|
139
|
-
|
|
141
|
+
let wsState;
|
|
142
|
+
if (lastDbState && lastDbValidatorsBytes) {
|
|
143
|
+
// use lastDbState to load wsState if possible to share the same state tree
|
|
144
|
+
wsState = loadState(config, lastDbState, wsStateBytes, lastDbValidatorsBytes).state;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const stateType = config.getForkTypes(wsSlot).BeaconState;
|
|
148
|
+
wsState = stateType.deserializeToViewDU(wsStateBytes);
|
|
149
|
+
}
|
|
140
150
|
return {
|
|
141
151
|
wsState,
|
|
152
|
+
wsStateBytes,
|
|
142
153
|
wsCheckpoint: wsCheckpoint ?? getCheckpointFromState(wsState),
|
|
143
154
|
};
|
|
144
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/networks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,GAAG,EAAC,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAI5D,OAAO,EAAC,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/networks/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chainsafe/lodestar",
|
|
3
|
-
"version": "1.22.0
|
|
3
|
+
"version": "1.22.0",
|
|
4
4
|
"description": "Command line interface for lodestar",
|
|
5
5
|
"author": "ChainSafe Systems",
|
|
6
6
|
"license": "LGPL-3.0",
|
|
@@ -62,17 +62,17 @@
|
|
|
62
62
|
"@libp2p/crypto": "^4.1.0",
|
|
63
63
|
"@libp2p/peer-id": "^4.1.0",
|
|
64
64
|
"@libp2p/peer-id-factory": "^4.1.0",
|
|
65
|
-
"@lodestar/api": "1.22.0
|
|
66
|
-
"@lodestar/beacon-node": "1.22.0
|
|
67
|
-
"@lodestar/config": "1.22.0
|
|
68
|
-
"@lodestar/db": "1.22.0
|
|
69
|
-
"@lodestar/light-client": "1.22.0
|
|
70
|
-
"@lodestar/logger": "1.22.0
|
|
71
|
-
"@lodestar/params": "1.22.0
|
|
72
|
-
"@lodestar/state-transition": "1.22.0
|
|
73
|
-
"@lodestar/types": "1.22.0
|
|
74
|
-
"@lodestar/utils": "1.22.0
|
|
75
|
-
"@lodestar/validator": "1.22.0
|
|
65
|
+
"@lodestar/api": "^1.22.0",
|
|
66
|
+
"@lodestar/beacon-node": "^1.22.0",
|
|
67
|
+
"@lodestar/config": "^1.22.0",
|
|
68
|
+
"@lodestar/db": "^1.22.0",
|
|
69
|
+
"@lodestar/light-client": "^1.22.0",
|
|
70
|
+
"@lodestar/logger": "^1.22.0",
|
|
71
|
+
"@lodestar/params": "^1.22.0",
|
|
72
|
+
"@lodestar/state-transition": "^1.22.0",
|
|
73
|
+
"@lodestar/types": "^1.22.0",
|
|
74
|
+
"@lodestar/utils": "^1.22.0",
|
|
75
|
+
"@lodestar/validator": "^1.22.0",
|
|
76
76
|
"@multiformats/multiaddr": "^12.1.3",
|
|
77
77
|
"deepmerge": "^4.3.1",
|
|
78
78
|
"ethers": "^6.7.0",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"yargs": "^17.7.1"
|
|
89
89
|
},
|
|
90
90
|
"devDependencies": {
|
|
91
|
-
"@lodestar/test-utils": "1.22.0
|
|
91
|
+
"@lodestar/test-utils": "^1.22.0",
|
|
92
92
|
"@types/debug": "^4.1.7",
|
|
93
93
|
"@types/got": "^9.6.12",
|
|
94
94
|
"@types/inquirer": "^9.0.3",
|
|
@@ -96,5 +96,5 @@
|
|
|
96
96
|
"@types/yargs": "^17.0.24",
|
|
97
97
|
"fastify": "^4.27.0"
|
|
98
98
|
},
|
|
99
|
-
"gitHead": "
|
|
99
|
+
"gitHead": "c26cc63751f0a9f6f802153f002512dc5b8c58e5"
|
|
100
100
|
}
|