Commit 064c03af authored by smartcontracts's avatar smartcontracts Committed by GitHub

fix[message-relayer]: remove spreadsheet mode (#998)

* fix[message-relayer]: remove spreadsheet mode

* chore: add changeset
parent 5e3c5d1c
---
'@eth-optimism/message-relayer': patch
---
Removes spreadsheet mode from the message relayer
{ {
"name": "@eth-optimism/message-relayer", "name": "@eth-optimism/message-relayer",
"version": "0.1.3", "version": "0.1.3",
"private": true,
"description": "[Optimism] Cross Domain Message Relayer service", "description": "[Optimism] Cross Domain Message Relayer service",
"main": "dist/index", "main": "dist/index",
"types": "dist/index", "types": "dist/index",
...@@ -36,7 +35,6 @@ ...@@ -36,7 +35,6 @@
"bcfg": "^0.1.6", "bcfg": "^0.1.6",
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
"ethers": "^5.1.0", "ethers": "^5.1.0",
"google-spreadsheet": "^3.1.15",
"merkletreejs": "^0.2.18", "merkletreejs": "^0.2.18",
"rlp": "^2.2.6" "rlp": "^2.2.6"
}, },
......
import { Wallet, providers } from 'ethers' import { Wallet, providers } from 'ethers'
import { MessageRelayerService } from '../service' import { MessageRelayerService } from '../service'
import { Bcfg } from '@eth-optimism/core-utils' import { Bcfg } from '@eth-optimism/core-utils'
import SpreadSheet from '../spreadsheet'
import * as dotenv from 'dotenv' import * as dotenv from 'dotenv'
import Config from 'bcfg' import Config from 'bcfg'
...@@ -49,18 +48,6 @@ const main = async () => { ...@@ -49,18 +48,6 @@ const main = async () => {
parseInt(env.FROM_L2_TRANSACTION_INDEX, 10) || 0 parseInt(env.FROM_L2_TRANSACTION_INDEX, 10) || 0
) )
// Spreadsheet configuration
const SPREADSHEET_MODE = config.bool(
'spreadsheet-mode',
!!env.SPREADSHEET_MODE || false
)
const SHEET_ID = config.str('sheet-id', env.SHEET_ID)
const CLIENT_EMAIL = config.str('client-email', env.CLIENT_EMAIL)
const CLIENT_PRIVATE_KEY = config.str(
'client-private-key',
env.CLIENT_PRIVATE_KEY
)
if (!ADDRESS_MANAGER_ADDRESS) { if (!ADDRESS_MANAGER_ADDRESS) {
throw new Error('Must pass ADDRESS_MANAGER_ADDRESS') throw new Error('Must pass ADDRESS_MANAGER_ADDRESS')
} }
...@@ -84,22 +71,6 @@ const main = async () => { ...@@ -84,22 +71,6 @@ const main = async () => {
throw new Error('Must pass one of L1_WALLET_KEY or MNEMONIC') throw new Error('Must pass one of L1_WALLET_KEY or MNEMONIC')
} }
let spreadsheet = null
if (SPREADSHEET_MODE) {
if (!SHEET_ID) {
throw new Error('Must pass SHEET_ID')
}
if (!CLIENT_EMAIL) {
throw new Error('Must pass CLIENT_EMAIL')
}
if (!CLIENT_PRIVATE_KEY) {
throw new Error('Must pass CLIENT_PRIVATE_KEY')
}
const privateKey = CLIENT_PRIVATE_KEY.replace(/\\n/g, '\n')
spreadsheet = new SpreadSheet(SHEET_ID)
await spreadsheet.init(CLIENT_EMAIL, privateKey)
}
const service = new MessageRelayerService({ const service = new MessageRelayerService({
l1RpcProvider: l1Provider, l1RpcProvider: l1Provider,
l2RpcProvider: l2Provider, l2RpcProvider: l2Provider,
...@@ -111,8 +82,6 @@ const main = async () => { ...@@ -111,8 +82,6 @@ const main = async () => {
l2BlockOffset: L2_BLOCK_OFFSET, l2BlockOffset: L2_BLOCK_OFFSET,
l1StartOffset: L1_START_OFFSET, l1StartOffset: L1_START_OFFSET,
getLogsInterval: GET_LOGS_INTERVAL, getLogsInterval: GET_LOGS_INTERVAL,
spreadsheetMode: !!SPREADSHEET_MODE,
spreadsheet,
}) })
await service.start() await service.start()
......
...@@ -6,7 +6,6 @@ import { MerkleTree } from 'merkletreejs' ...@@ -6,7 +6,6 @@ import { MerkleTree } from 'merkletreejs'
/* Imports: Internal */ /* Imports: Internal */
import { fromHexString, sleep } from '@eth-optimism/core-utils' import { fromHexString, sleep } from '@eth-optimism/core-utils'
import { BaseService } from '@eth-optimism/common-ts' import { BaseService } from '@eth-optimism/common-ts'
import SpreadSheet from './spreadsheet'
import { loadContract, loadContractFromManager } from '@eth-optimism/contracts' import { loadContract, loadContractFromManager } from '@eth-optimism/contracts'
import { StateRootBatchHeader, SentMessage, SentMessageProof } from './types' import { StateRootBatchHeader, SentMessage, SentMessageProof } from './types'
...@@ -41,10 +40,6 @@ interface MessageRelayerOptions { ...@@ -41,10 +40,6 @@ interface MessageRelayerOptions {
// Number of blocks within each getLogs query - max is 2000 // Number of blocks within each getLogs query - max is 2000
getLogsInterval?: number getLogsInterval?: number
// Append txs to a spreadsheet instead of submitting transactions
spreadsheetMode?: boolean
spreadsheet?: SpreadSheet
} }
const optionSettings = { const optionSettings = {
...@@ -54,7 +49,6 @@ const optionSettings = { ...@@ -54,7 +49,6 @@ const optionSettings = {
l2BlockOffset: { default: 1 }, l2BlockOffset: { default: 1 },
l1StartOffset: { default: 0 }, l1StartOffset: { default: 0 },
getLogsInterval: { default: 2000 }, getLogsInterval: { default: 2000 },
spreadsheetMode: { default: false },
} }
export class MessageRelayerService extends BaseService<MessageRelayerOptions> { export class MessageRelayerService extends BaseService<MessageRelayerOptions> {
...@@ -62,9 +56,6 @@ export class MessageRelayerService extends BaseService<MessageRelayerOptions> { ...@@ -62,9 +56,6 @@ export class MessageRelayerService extends BaseService<MessageRelayerOptions> {
super('Message_Relayer', options, optionSettings) super('Message_Relayer', options, optionSettings)
} }
protected spreadsheetMode: boolean
protected spreadsheet: SpreadSheet
private state: { private state: {
lastFinalizedTxHeight: number lastFinalizedTxHeight: number
nextUnfinalizedTxHeight: number nextUnfinalizedTxHeight: number
...@@ -84,7 +75,6 @@ export class MessageRelayerService extends BaseService<MessageRelayerOptions> { ...@@ -84,7 +75,6 @@ export class MessageRelayerService extends BaseService<MessageRelayerOptions> {
pollingInterval: this.options.pollingInterval, pollingInterval: this.options.pollingInterval,
l2BlockOffset: this.options.l2BlockOffset, l2BlockOffset: this.options.l2BlockOffset,
getLogsInterval: this.options.getLogsInterval, getLogsInterval: this.options.getLogsInterval,
spreadSheetMode: this.options.spreadsheetMode,
}) })
// Need to improve this, sorry. // Need to improve this, sorry.
this.state = {} as any this.state = {} as any
...@@ -141,10 +131,6 @@ export class MessageRelayerService extends BaseService<MessageRelayerOptions> { ...@@ -141,10 +131,6 @@ export class MessageRelayerService extends BaseService<MessageRelayerOptions> {
this.logger.info('Connected to all contracts.') this.logger.info('Connected to all contracts.')
if (this.options.spreadsheetMode) {
this.logger.info('Running in spreadsheet mode')
}
this.state.lastQueriedL1Block = this.options.l1StartOffset this.state.lastQueriedL1Block = this.options.l1StartOffset
this.state.eventCache = [] this.state.eventCache = []
...@@ -494,67 +480,12 @@ export class MessageRelayerService extends BaseService<MessageRelayerOptions> { ...@@ -494,67 +480,12 @@ export class MessageRelayerService extends BaseService<MessageRelayerOptions> {
message: SentMessage, message: SentMessage,
proof: SentMessageProof proof: SentMessageProof
): Promise<void> { ): Promise<void> {
if (this.options.spreadsheetMode) { try {
try { this.logger.info('Dry-run, checking to make sure proof would succeed...')
await this.options.spreadsheet.addRow({
target: message.target,
sender: message.sender,
message: message.message,
messageNonce: message.messageNonce.toString(),
encodedMessage: message.encodedMessage,
encodedMessageHash: message.encodedMessageHash,
parentTransactionIndex: message.parentTransactionIndex,
parentTransactionHash: message.parentTransactionIndex,
stateRoot: proof.stateRoot,
batchIndex: proof.stateRootBatchHeader.batchIndex.toString(),
batchRoot: proof.stateRootBatchHeader.batchRoot,
batchSize: proof.stateRootBatchHeader.batchSize.toString(),
prevTotalElements: proof.stateRootBatchHeader.prevTotalElements.toString(),
extraData: proof.stateRootBatchHeader.extraData,
index: proof.stateRootProof.index,
siblings: proof.stateRootProof.siblings.join(','),
stateTrieWitness: proof.stateTrieWitness.toString('hex'),
storageTrieWitness: proof.storageTrieWitness.toString('hex'),
})
this.logger.info('Submitted relay message to spreadsheet')
} catch (e) {
this.logger.error('Cannot submit message to spreadsheet')
this.logger.error(e.message)
}
} else {
try {
this.logger.info(
'Dry-run, checking to make sure proof would succeed...'
)
await this.state.OVM_L1CrossDomainMessenger.connect(
this.options.l1Wallet
).callStatic.relayMessage(
message.target,
message.sender,
message.message,
message.messageNonce,
proof,
{
gasLimit: this.options.relayGasLimit,
}
)
this.logger.info( await this.state.OVM_L1CrossDomainMessenger.connect(
'Proof should succeed. Submitting for real this time...'
)
} catch (err) {
this.logger.error('Proof would fail, skipping', {
message: err.toString(),
stack: err.stack,
code: err.code,
})
return
}
const result = await this.state.OVM_L1CrossDomainMessenger.connect(
this.options.l1Wallet this.options.l1Wallet
).relayMessage( ).callStatic.relayMessage(
message.target, message.target,
message.sender, message.sender,
message.message, message.message,
...@@ -565,29 +496,51 @@ export class MessageRelayerService extends BaseService<MessageRelayerOptions> { ...@@ -565,29 +496,51 @@ export class MessageRelayerService extends BaseService<MessageRelayerOptions> {
} }
) )
this.logger.info('Relay message transaction sent', { this.logger.info('Proof should succeed. Submitting for real this time...')
transactionHash: result, } catch (err) {
this.logger.error('Proof would fail, skipping', {
message: err.toString(),
stack: err.stack,
code: err.code,
}) })
return
}
try { const result = await this.state.OVM_L1CrossDomainMessenger.connect(
const receipt = await result.wait() this.options.l1Wallet
).relayMessage(
this.logger.info('Relay message included in block', { message.target,
transactionHash: receipt.transactionHash, message.sender,
blockNumber: receipt.blockNumber, message.message,
gasUsed: receipt.gasUsed.toString(), message.messageNonce,
confirmations: receipt.confirmations, proof,
status: receipt.status, {
}) gasLimit: this.options.relayGasLimit,
} catch (err) {
this.logger.error('Real relay attempt failed, skipping.', {
message: err.toString(),
stack: err.stack,
code: err.code,
})
return
} }
this.logger.info('Message successfully relayed to Layer 1!') )
this.logger.info('Relay message transaction sent', {
transactionHash: result,
})
try {
const receipt = await result.wait()
this.logger.info('Relay message included in block', {
transactionHash: receipt.transactionHash,
blockNumber: receipt.blockNumber,
gasUsed: receipt.gasUsed.toString(),
confirmations: receipt.confirmations,
status: receipt.status,
})
} catch (err) {
this.logger.error('Real relay attempt failed, skipping.', {
message: err.toString(),
stack: err.stack,
code: err.code,
})
return
} }
this.logger.info('Message successfully relayed to Layer 1!')
} }
} }
import { GoogleSpreadsheet } from 'google-spreadsheet'
export default class SpreadSheet {
public doc
public sheet
constructor(id) {
this.doc = new GoogleSpreadsheet(id)
this.sheet = null
}
async init(email, privateKey) {
await this.doc.useServiceAccountAuth({
client_email: email,
private_key: privateKey,
})
await this.doc.loadInfo()
this.sheet = this.doc.sheetsByIndex[0]
}
async addRow(row) {
return this.sheet.addRow(row)
}
}
...@@ -2960,7 +2960,7 @@ arrify@^1.0.0, arrify@^1.0.1: ...@@ -2960,7 +2960,7 @@ arrify@^1.0.0, arrify@^1.0.1:
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
arrify@^2.0.0, arrify@^2.0.1: arrify@^2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
...@@ -3608,7 +3608,7 @@ base-x@^3.0.2, base-x@^3.0.8: ...@@ -3608,7 +3608,7 @@ base-x@^3.0.2, base-x@^3.0.8:
dependencies: dependencies:
safe-buffer "^5.0.1" safe-buffer "^5.0.1"
base64-js@^1.3.0, base64-js@^1.3.1: base64-js@^1.3.1:
version "1.5.1" version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
...@@ -3901,11 +3901,6 @@ bsert@~0.0.10: ...@@ -3901,11 +3901,6 @@ bsert@~0.0.10:
resolved "https://registry.yarnpkg.com/bsert/-/bsert-0.0.10.tgz#231ac82873a1418c6ade301ab5cd9ae385895597" resolved "https://registry.yarnpkg.com/bsert/-/bsert-0.0.10.tgz#231ac82873a1418c6ade301ab5cd9ae385895597"
integrity sha512-NHNwlac+WPy4t2LoNh8pXk8uaIGH3NSaIUbTTRXGpE2WEbq0te/tDykYHkFK57YKLPjv/aGHmbqvnGeVWDz57Q== integrity sha512-NHNwlac+WPy4t2LoNh8pXk8uaIGH3NSaIUbTTRXGpE2WEbq0te/tDykYHkFK57YKLPjv/aGHmbqvnGeVWDz57Q==
buffer-equal-constant-time@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=
buffer-from@^1.0.0, buffer-from@^1.1.0: buffer-from@^1.0.0, buffer-from@^1.1.0:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
...@@ -5241,13 +5236,6 @@ ecc-jsbn@~0.1.1: ...@@ -5241,13 +5236,6 @@ ecc-jsbn@~0.1.1:
jsbn "~0.1.0" jsbn "~0.1.0"
safer-buffer "^2.1.0" safer-buffer "^2.1.0"
ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11:
version "1.0.11"
resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
dependencies:
safe-buffer "^5.0.1"
ee-first@1.1.1: ee-first@1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
...@@ -6213,7 +6201,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: ...@@ -6213,7 +6201,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
assign-symbols "^1.0.0" assign-symbols "^1.0.0"
is-extendable "^1.0.1" is-extendable "^1.0.1"
extend@^3.0.2, extend@~3.0.2: extend@~3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
...@@ -6305,11 +6293,6 @@ fast-safe-stringify@^2.0.7: ...@@ -6305,11 +6293,6 @@ fast-safe-stringify@^2.0.7:
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743"
integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==
fast-text-encoding@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53"
integrity sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==
fastq@^1.6.0: fastq@^1.6.0:
version "1.11.0" version "1.11.0"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858"
...@@ -6707,25 +6690,6 @@ gauge@~2.7.3: ...@@ -6707,25 +6690,6 @@ gauge@~2.7.3:
strip-ansi "^3.0.1" strip-ansi "^3.0.1"
wide-align "^1.1.0" wide-align "^1.1.0"
gaxios@^4.0.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.2.0.tgz#33bdc4fc241fc33b8915a4b8c07cfb368b932e46"
integrity sha512-Ms7fNifGv0XVU+6eIyL9LB7RVESeML9+cMvkwGS70xyD6w2Z80wl6RiqiJ9k1KFlJCUTQqFFc8tXmPQfSKUe8g==
dependencies:
abort-controller "^3.0.0"
extend "^3.0.2"
https-proxy-agent "^5.0.0"
is-stream "^2.0.0"
node-fetch "^2.3.0"
gcp-metadata@^4.2.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.2.1.tgz#31849fbcf9025ef34c2297c32a89a1e7e9f2cd62"
integrity sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw==
dependencies:
gaxios "^4.0.0"
json-bigint "^1.0.0"
get-caller-file@^1.0.1: get-caller-file@^1.0.1:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
...@@ -6978,37 +6942,6 @@ globby@^11.0.0, globby@^11.0.2: ...@@ -6978,37 +6942,6 @@ globby@^11.0.0, globby@^11.0.2:
merge2 "^1.3.0" merge2 "^1.3.0"
slash "^3.0.0" slash "^3.0.0"
google-auth-library@^6.1.3:
version "6.1.6"
resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-6.1.6.tgz#deacdcdb883d9ed6bac78bb5d79a078877fdf572"
integrity sha512-Q+ZjUEvLQj/lrVHF/IQwRo6p3s8Nc44Zk/DALsN+ac3T4HY/g/3rrufkgtl+nZ1TW7DNAw5cTChdVp4apUXVgQ==
dependencies:
arrify "^2.0.0"
base64-js "^1.3.0"
ecdsa-sig-formatter "^1.0.11"
fast-text-encoding "^1.0.0"
gaxios "^4.0.0"
gcp-metadata "^4.2.0"
gtoken "^5.0.4"
jws "^4.0.0"
lru-cache "^6.0.0"
google-p12-pem@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.0.3.tgz#673ac3a75d3903a87f05878f3c75e06fc151669e"
integrity sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==
dependencies:
node-forge "^0.10.0"
google-spreadsheet@^3.1.15:
version "3.1.15"
resolved "https://registry.yarnpkg.com/google-spreadsheet/-/google-spreadsheet-3.1.15.tgz#e7a86f750d8166faaa3e16929561baceb807bf5a"
integrity sha512-S5477f3Gf3Mz6AXgCw7dbaYnzu5aHou1AX4sDqrGboQWnAytkxqJGKQiXN+zzRTTcYzSTJCe0g7KqCPZO9xiOw==
dependencies:
axios "^0.21.1"
google-auth-library "^6.1.3"
lodash "^4.17.20"
got@9.6.0: got@9.6.0:
version "9.6.0" version "9.6.0"
resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
...@@ -7061,15 +6994,6 @@ growl@1.10.5: ...@@ -7061,15 +6994,6 @@ growl@1.10.5:
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
gtoken@^5.0.4:
version "5.2.1"
resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.2.1.tgz#4dae1fea17270f457954b4a45234bba5fc796d16"
integrity sha512-OY0BfPKe3QnMsY9MzTHTSKn+Vl2l1CcLe6BwDEQj00mbbkl5nyQ/7EUREstg4fQNZ8iYE7br4JJ7TdKeDOPWmw==
dependencies:
gaxios "^4.0.0"
google-p12-pem "^3.0.3"
jws "^4.0.0"
handlebars@^4.0.1, handlebars@^4.7.6: handlebars@^4.0.1, handlebars@^4.7.6:
version "4.7.7" version "4.7.7"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
...@@ -8114,13 +8038,6 @@ jsesc@~0.5.0: ...@@ -8114,13 +8038,6 @@ jsesc@~0.5.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
json-bigint@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1"
integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==
dependencies:
bignumber.js "^9.0.0"
json-buffer@3.0.0: json-buffer@3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
...@@ -8254,23 +8171,6 @@ just-extend@^4.0.2: ...@@ -8254,23 +8171,6 @@ just-extend@^4.0.2:
resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744"
integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==
jwa@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc"
integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==
dependencies:
buffer-equal-constant-time "1.0.1"
ecdsa-sig-formatter "1.0.11"
safe-buffer "^5.0.1"
jws@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4"
integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==
dependencies:
jwa "^2.0.0"
safe-buffer "^5.0.1"
keccak@3.0.1, keccak@^3.0.0: keccak@3.0.1, keccak@^3.0.0:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff"
...@@ -9745,7 +9645,7 @@ node-fetch@2.1.2: ...@@ -9745,7 +9645,7 @@ node-fetch@2.1.2:
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5"
integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=
node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1: node-fetch@^2.6.0, node-fetch@^2.6.1:
version "2.6.1" version "2.6.1"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
...@@ -9758,11 +9658,6 @@ node-fetch@~1.7.1: ...@@ -9758,11 +9658,6 @@ node-fetch@~1.7.1:
encoding "^0.1.11" encoding "^0.1.11"
is-stream "^1.0.1" is-stream "^1.0.1"
node-forge@^0.10.0:
version "0.10.0"
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
node-gyp-build@^4.2.0: node-gyp-build@^4.2.0:
version "4.2.3" version "4.2.3"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment