mirror of https://github.com/vacp2p/wakurtosis.git
Refactor (#18)
* Modified configuration files and added example of list of topics into general configuration * Refactored main.star into different star files * Deleted unnecesary files from previous module * Moved and changed .star files * Moved config files * Added parser and small topology as file * Updated README.md * Modified imports to have them in a more clean structure. * Removed unnecessary information in topology files * Number of Test messages and delay between message added as variable * Updated README.md
This commit is contained in:
parent
8c7ca9a827
commit
fb3dc3c38f
62
README.md
62
README.md
|
@ -3,29 +3,65 @@ Wakurtosis
|
|||
|
||||
Starting version for Waku network simulations (https://github.com/waku-org/pm/issues/2)
|
||||
|
||||
Kurtosis: https://docs.kurtosis.com/
|
||||
More info about Kurtosis: https://docs.kurtosis.com/
|
||||
|
||||
### How to use:
|
||||
|
||||
#### Before using this repository make sure that:
|
||||
#### Before using this repository note that:
|
||||
|
||||
- **You are using Kurtosis version 0.62.0**. This is important, as they are working on it and changes can be huge depending on different versions. You can find all Kurtosis versions [here](https://github.com/kurtosis-tech/kurtosis-cli-release-artifacts/releases).
|
||||
- The topology that will be instantiated is defined in `kurtosis-module/starlark/waku_test_topology.json`. This topology is created with https://github.com/logos-co/Waku-topology-test
|
||||
- Each node will need its own configuration file in `kurtosis-module/starlark/config_files/waku_X.toml` being `waku_X` the same name that is defined in the topology.
|
||||
- The topology files that will be used by default are defined in `config/network_topology/`. This topology is created with https://github.com/logos-co/Waku-topology-test
|
||||
- Each node will need its own configuration file in `config/waku_config_files/waku_X.toml` being `waku_X` the same name that is defined in the topology.
|
||||
- Only `kurtosis` and `docker` are needed to run this.
|
||||
|
||||
If you want to use the same configuration for every node, you can use:
|
||||
#### How to run
|
||||
|
||||
`kurtosis run --enclave-id wakurtosis . '{"same_toml_configuration": true}'`
|
||||
If you want to run it with default arguments, if you are in the root of this repository, you can simply run:
|
||||
|
||||
This will use the file `kurtosis-module/starlark/config_files/waku_general.toml` for every node.
|
||||
`kurtosis run .`
|
||||
|
||||
In order to access to Prometheus or Graphana, run:
|
||||
There are arguments that can be modified:
|
||||
- _same_toml_configuration_: boolean. Default: **true**. If **true**, the some `.toml` file will be applied to every Waku node. If **false*, every node will use its own `.toml` file.
|
||||
- _topology_file_: string. Default: **waku_test_topology_small.json**. If defines the network topology that will be created.
|
||||
|
||||
`kurtosis enclave inspect wakurtosis'`
|
||||
Example modifying arguments:
|
||||
|
||||
`kurtosis run . '{"same_toml_configuration": false, "topology_file": "waku_test_topology_big.json"}'`
|
||||
|
||||
The enclaves that will be created have randon names, that can be checked with:
|
||||
|
||||
`kurtosis enclave ls`
|
||||
|
||||
You can set up a pre-defined enclave name, for example:
|
||||
|
||||
`kurtosis run --enclave-id wakurtosis .`
|
||||
|
||||
Note that, if you try to run the same kurtosis module again, you will have clashes. You can clean previous enclaves with:
|
||||
|
||||
`kurtosis clean -a`
|
||||
|
||||
|
||||
#### What will happen
|
||||
|
||||
Kurtosis will automatically add one Waku node as container inside the enclave. The way that nodes are interconnected is given by the topology.
|
||||
The configuration of each node is given by the configuration files. Services are being instantiated SEQUENTIALLY. After each node is set up,
|
||||
there are 5 seconds (defined in `system_variables`) of waiting time for that node to be ready, and then the ID is requested and saved.
|
||||
|
||||
Once all nodes are ready, prometheus and grafana will be set up and connected to all waku nodes.
|
||||
|
||||
All nodes are then interconnected.
|
||||
|
||||
A predefined number of test messages with specific delay (defined in `system_variables`) are sent by every node to the same topic.
|
||||
|
||||
Peers from one node are requested, just for testing.
|
||||
|
||||
|
||||
#### Check Prometheus+Grafana
|
||||
|
||||
In order to know how to access to Prometheus or Grafana, run:
|
||||
|
||||
`kurtosis enclave inspect <enclave-name>`
|
||||
|
||||
With this, you will be able to see the ports exposed to your local machine.
|
||||
|
||||
Note that if you decide to set the `--enclave-id`, you may need to run `kurtosis clean -a` before re-run the same enclave again, to not have problems with ports and volumes that are already mounter under that enclave.
|
||||
This will not happen if `--enclave-id` is not used, but then if you want to inspect it, while the enclave is being created you should check the id with `kurtosis enclave ls`, since the enclave id will not be shown until the process is finished.
|
||||
|
||||
Please, any improvements/bugs that you see, create an issue, and we will work on it.
|
||||
Please, any improvements/bugs that you see, create an issue, and we will work on it.
|
||||
|
|
100
kurtosis-module/starlark/waku_test_topology.json → config/network_topology/waku_test_topology_big.json
Executable file → Normal file
100
kurtosis-module/starlark/waku_test_topology.json → config/network_topology/waku_test_topology_big.json
Executable file → Normal file
|
@ -1,7 +1,5 @@
|
|||
{
|
||||
"waku_0": {
|
||||
"ports_shift": 0,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_23",
|
||||
"waku_39",
|
||||
|
@ -10,8 +8,6 @@
|
|||
]
|
||||
},
|
||||
"waku_1": {
|
||||
"ports_shift": 1,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_9",
|
||||
"waku_42",
|
||||
|
@ -21,8 +17,6 @@
|
|||
]
|
||||
},
|
||||
"waku_2": {
|
||||
"ports_shift": 2,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_38",
|
||||
"waku_4",
|
||||
|
@ -34,8 +28,6 @@
|
|||
]
|
||||
},
|
||||
"waku_3": {
|
||||
"ports_shift": 3,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_2",
|
||||
"waku_44",
|
||||
|
@ -46,8 +38,6 @@
|
|||
]
|
||||
},
|
||||
"waku_4": {
|
||||
"ports_shift": 4,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_2",
|
||||
"waku_33",
|
||||
|
@ -60,16 +50,12 @@
|
|||
]
|
||||
},
|
||||
"waku_5": {
|
||||
"ports_shift": 5,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_47",
|
||||
"waku_40"
|
||||
]
|
||||
},
|
||||
"waku_6": {
|
||||
"ports_shift": 6,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_13",
|
||||
"waku_21",
|
||||
|
@ -77,8 +63,6 @@
|
|||
]
|
||||
},
|
||||
"waku_7": {
|
||||
"ports_shift": 7,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_1",
|
||||
"waku_18",
|
||||
|
@ -87,15 +71,11 @@
|
|||
]
|
||||
},
|
||||
"waku_8": {
|
||||
"ports_shift": 8,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_37"
|
||||
]
|
||||
},
|
||||
"waku_9": {
|
||||
"ports_shift": 9,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_1",
|
||||
"waku_27",
|
||||
|
@ -104,8 +84,6 @@
|
|||
]
|
||||
},
|
||||
"waku_10": {
|
||||
"ports_shift": 10,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_32",
|
||||
"waku_46",
|
||||
|
@ -115,15 +93,11 @@
|
|||
]
|
||||
},
|
||||
"waku_11": {
|
||||
"ports_shift": 11,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_35"
|
||||
]
|
||||
},
|
||||
"waku_12": {
|
||||
"ports_shift": 12,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_4",
|
||||
"waku_30",
|
||||
|
@ -135,8 +109,6 @@
|
|||
]
|
||||
},
|
||||
"waku_13": {
|
||||
"ports_shift": 13,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_6",
|
||||
"waku_22",
|
||||
|
@ -144,8 +116,6 @@
|
|||
]
|
||||
},
|
||||
"waku_14": {
|
||||
"ports_shift": 14,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_39",
|
||||
"waku_29",
|
||||
|
@ -157,16 +127,12 @@
|
|||
]
|
||||
},
|
||||
"waku_15": {
|
||||
"ports_shift": 15,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_14",
|
||||
"waku_26"
|
||||
]
|
||||
},
|
||||
"waku_16": {
|
||||
"ports_shift": 16,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_7",
|
||||
"waku_10",
|
||||
|
@ -176,15 +142,11 @@
|
|||
]
|
||||
},
|
||||
"waku_17": {
|
||||
"ports_shift": 17,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_22"
|
||||
]
|
||||
},
|
||||
"waku_18": {
|
||||
"ports_shift": 18,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_7",
|
||||
"waku_35",
|
||||
|
@ -194,8 +156,6 @@
|
|||
]
|
||||
},
|
||||
"waku_19": {
|
||||
"ports_shift": 19,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_2",
|
||||
"waku_4",
|
||||
|
@ -207,16 +167,12 @@
|
|||
]
|
||||
},
|
||||
"waku_20": {
|
||||
"ports_shift": 20,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_3",
|
||||
"waku_23"
|
||||
]
|
||||
},
|
||||
"waku_21": {
|
||||
"ports_shift": 21,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_0",
|
||||
"waku_3",
|
||||
|
@ -228,8 +184,6 @@
|
|||
]
|
||||
},
|
||||
"waku_22": {
|
||||
"ports_shift": 22,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_12",
|
||||
"waku_13",
|
||||
|
@ -243,8 +197,6 @@
|
|||
]
|
||||
},
|
||||
"waku_23": {
|
||||
"ports_shift": 23,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_0",
|
||||
"waku_2",
|
||||
|
@ -255,8 +207,6 @@
|
|||
]
|
||||
},
|
||||
"waku_24": {
|
||||
"ports_shift": 24,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_33",
|
||||
"waku_44",
|
||||
|
@ -264,16 +214,12 @@
|
|||
]
|
||||
},
|
||||
"waku_25": {
|
||||
"ports_shift": 25,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_3",
|
||||
"waku_48"
|
||||
]
|
||||
},
|
||||
"waku_26": {
|
||||
"ports_shift": 26,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_4",
|
||||
"waku_12",
|
||||
|
@ -285,8 +231,6 @@
|
|||
]
|
||||
},
|
||||
"waku_27": {
|
||||
"ports_shift": 27,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_9",
|
||||
"waku_12",
|
||||
|
@ -296,8 +240,6 @@
|
|||
]
|
||||
},
|
||||
"waku_28": {
|
||||
"ports_shift": 28,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_19",
|
||||
"waku_29",
|
||||
|
@ -306,8 +248,6 @@
|
|||
]
|
||||
},
|
||||
"waku_29": {
|
||||
"ports_shift": 29,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_1",
|
||||
"waku_4",
|
||||
|
@ -319,8 +259,6 @@
|
|||
]
|
||||
},
|
||||
"waku_30": {
|
||||
"ports_shift": 30,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_7",
|
||||
"waku_12",
|
||||
|
@ -331,24 +269,18 @@
|
|||
]
|
||||
},
|
||||
"waku_31": {
|
||||
"ports_shift": 31,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_46",
|
||||
"waku_38"
|
||||
]
|
||||
},
|
||||
"waku_32": {
|
||||
"ports_shift": 32,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_10",
|
||||
"waku_23"
|
||||
]
|
||||
},
|
||||
"waku_33": {
|
||||
"ports_shift": 33,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_4",
|
||||
"waku_23",
|
||||
|
@ -356,8 +288,6 @@
|
|||
]
|
||||
},
|
||||
"waku_34": {
|
||||
"ports_shift": 34,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_9",
|
||||
"waku_22",
|
||||
|
@ -366,16 +296,12 @@
|
|||
]
|
||||
},
|
||||
"waku_35": {
|
||||
"ports_shift": 35,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_11",
|
||||
"waku_18"
|
||||
]
|
||||
},
|
||||
"waku_36": {
|
||||
"ports_shift": 36,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_12",
|
||||
"waku_18",
|
||||
|
@ -385,8 +311,6 @@
|
|||
]
|
||||
},
|
||||
"waku_37": {
|
||||
"ports_shift": 37,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_4",
|
||||
"waku_8",
|
||||
|
@ -395,8 +319,6 @@
|
|||
]
|
||||
},
|
||||
"waku_38": {
|
||||
"ports_shift": 38,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_2",
|
||||
"waku_4",
|
||||
|
@ -409,8 +331,6 @@
|
|||
]
|
||||
},
|
||||
"waku_39": {
|
||||
"ports_shift": 39,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_0",
|
||||
"waku_14",
|
||||
|
@ -420,8 +340,6 @@
|
|||
]
|
||||
},
|
||||
"waku_40": {
|
||||
"ports_shift": 40,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_2",
|
||||
"waku_5",
|
||||
|
@ -431,15 +349,11 @@
|
|||
]
|
||||
},
|
||||
"waku_41": {
|
||||
"ports_shift": 41,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_10"
|
||||
]
|
||||
},
|
||||
"waku_42": {
|
||||
"ports_shift": 42,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_1",
|
||||
"waku_3",
|
||||
|
@ -449,8 +363,6 @@
|
|||
]
|
||||
},
|
||||
"waku_43": {
|
||||
"ports_shift": 43,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_0",
|
||||
"waku_14",
|
||||
|
@ -459,8 +371,6 @@
|
|||
]
|
||||
},
|
||||
"waku_44": {
|
||||
"ports_shift": 44,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_3",
|
||||
"waku_14",
|
||||
|
@ -470,8 +380,6 @@
|
|||
]
|
||||
},
|
||||
"waku_45": {
|
||||
"ports_shift": 45,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_19",
|
||||
"waku_28",
|
||||
|
@ -480,8 +388,6 @@
|
|||
]
|
||||
},
|
||||
"waku_46": {
|
||||
"ports_shift": 46,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_1",
|
||||
"waku_10",
|
||||
|
@ -489,8 +395,6 @@
|
|||
]
|
||||
},
|
||||
"waku_47": {
|
||||
"ports_shift": 47,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_5",
|
||||
"waku_30",
|
||||
|
@ -498,8 +402,6 @@
|
|||
]
|
||||
},
|
||||
"waku_48": {
|
||||
"ports_shift": 48,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_14",
|
||||
"waku_18",
|
||||
|
@ -510,8 +412,6 @@
|
|||
]
|
||||
},
|
||||
"waku_49": {
|
||||
"ports_shift": 49,
|
||||
"topics": "test",
|
||||
"static_nodes": [
|
||||
"waku_2",
|
||||
"waku_34"
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"waku_0": {
|
||||
"static_nodes": [
|
||||
"waku_1"
|
||||
]
|
||||
},
|
||||
"waku_1": {
|
||||
"static_nodes": [
|
||||
"waku_0"
|
||||
]
|
||||
},
|
||||
"waku_2": {
|
||||
"static_nodes": [
|
||||
"waku_0",
|
||||
"waku_1"
|
||||
]
|
||||
}
|
||||
}
|
0
kurtosis-module/starlark/config_files/waku_general.toml → config/waku_config_files/waku_0.toml
Executable file → Normal file
0
kurtosis-module/starlark/config_files/waku_general.toml → config/waku_config_files/waku_0.toml
Executable file → Normal file
|
@ -0,0 +1,4 @@
|
|||
topics="test"
|
||||
rpc-admin=true
|
||||
keep-alive=true
|
||||
metrics-server=true
|
|
@ -0,0 +1,4 @@
|
|||
topics="test test2"
|
||||
rpc-admin=true
|
||||
keep-alive=true
|
||||
metrics-server=true
|
|
@ -1,44 +0,0 @@
|
|||
# ============================ Base ============================
|
||||
FROM alpine:3.15 AS base
|
||||
|
||||
# Unfortunately Alpine packages are updated in-place, and old versions are discarded so there's no way to use older versions and pin the NodeJS version
|
||||
RUN apk add --no-cache nodejs-current
|
||||
WORKDIR /build
|
||||
|
||||
COPY package.json .
|
||||
COPY yarn.lock .
|
||||
|
||||
# ============================ Build ============================
|
||||
FROM base AS build
|
||||
|
||||
RUN apk add --no-cache yarn
|
||||
|
||||
# Install production packages
|
||||
RUN yarn install --frozen-lockfile --production=true
|
||||
|
||||
# Use node-prune to further reduce unnecessary files: https://github.com/tj/node-prune
|
||||
RUN curl -sf https://gobinaries.com/tj/node-prune | sh
|
||||
|
||||
# Set aside these production dependencies for use later
|
||||
RUN cp -R node_modules prod_node_modules
|
||||
|
||||
# Now install ALL node_modules, including 'devDependencies'
|
||||
RUN yarn install --frozen-lockfile
|
||||
|
||||
COPY . .
|
||||
|
||||
# Run tests & compile
|
||||
RUN yarn build
|
||||
|
||||
#
|
||||
# ============================ Run ============================
|
||||
FROM base AS run
|
||||
WORKDIR /run
|
||||
|
||||
# copy production node_modules
|
||||
COPY --from=build /build/prod_node_modules ./node_modules
|
||||
# copy app sources
|
||||
COPY --from=build /build/build ./build
|
||||
|
||||
CMD node build/main.js
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
import { EnclaveContext } from "kurtosis-sdk";
|
||||
import { Result, ok, err } from "neverthrow";
|
||||
import * as log from "loglevel";
|
||||
import { ExecutableKurtosisModule } from "kurtosis-module-api-lib";
|
||||
|
||||
const TIPS_REPOSITORY: string[] = [
|
||||
"Everything not saved will be lost.",
|
||||
"Don't pet a burning dog.",
|
||||
"Even a broken clock is right twice a day.",
|
||||
"If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?",
|
||||
"Never fall in love with a tennis player. Love means nothing to them.",
|
||||
"If you ever get caught sleeping on the job, slowly raise your head and say 'In Jesus' name, Amen'",
|
||||
"Never trust in an electrician with no eyebrows",
|
||||
"If you sleep until lunch time, you can save the breakfast money.",
|
||||
];
|
||||
|
||||
// Parameters that the execute command accepts, serialized as JSON
|
||||
interface ExecuteParams {
|
||||
iWantATip: boolean;
|
||||
}
|
||||
|
||||
// Result that the execute command returns, serialized as JSON
|
||||
class ExecuteResult {
|
||||
readonly tip: string
|
||||
|
||||
constructor(tip: string) {
|
||||
this.tip = tip;
|
||||
}
|
||||
}
|
||||
|
||||
export class ExampleExecutableKurtosisModule implements ExecutableKurtosisModule {
|
||||
constructor() {}
|
||||
|
||||
async execute(networkCtx: EnclaveContext, serializedParams: string): Promise<Result<string, Error>> {
|
||||
log.info(`Received serialized execute params:\n${serializedParams}`);
|
||||
let params: ExecuteParams;
|
||||
try {
|
||||
params = JSON.parse(serializedParams)
|
||||
} catch (e: any) {
|
||||
// Sadly, we have to do this because there's no great way to enforce the caught thing being an error
|
||||
// See: https://stackoverflow.com/questions/30469261/checking-for-typeof-error-in-js
|
||||
if (e && e.stack && e.message) {
|
||||
return err(e as Error);
|
||||
}
|
||||
return err(new Error("Parsing params string '" + serializedParams + "' threw an exception, but " +
|
||||
"it's not an Error so we can't report any more information than this"));
|
||||
}
|
||||
|
||||
const resultObj: ExecuteResult = new ExecuteResult(
|
||||
ExampleExecutableKurtosisModule.getRandomTip(params.iWantATip)
|
||||
);
|
||||
|
||||
let stringResult;
|
||||
try {
|
||||
stringResult = JSON.stringify(resultObj);
|
||||
} catch (e: any) {
|
||||
// Sadly, we have to do this because there's no great way to enforce the caught thing being an error
|
||||
// See: https://stackoverflow.com/questions/30469261/checking-for-typeof-error-in-js
|
||||
if (e && e.stack && e.message) {
|
||||
return err(e as Error);
|
||||
}
|
||||
return err(new Error("Serializing the Kurtosis module result threw an exception, but " +
|
||||
"it's not an Error so we can't report any more information than this"));
|
||||
}
|
||||
|
||||
log.info("Execution successful")
|
||||
return ok(stringResult);
|
||||
}
|
||||
|
||||
private static getRandomTip(shouldGiveAdvice: boolean): string {
|
||||
let tip: string;
|
||||
if (shouldGiveAdvice) {
|
||||
// This gives a random number between [0, length)
|
||||
tip = TIPS_REPOSITORY[Math.floor(Math.random() * TIPS_REPOSITORY.length)];
|
||||
} else {
|
||||
tip = "The module won't enlighten you today."
|
||||
}
|
||||
return tip
|
||||
}
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
import { Result, err, ok } from 'neverthrow';
|
||||
import * as log from 'loglevel';
|
||||
import { ExampleExecutableKurtosisModule } from './example_executable_kurtosis_module';
|
||||
import { ExecutableKurtosisModule, KurtosisModuleConfigurator } from 'kurtosis-module-api-lib';
|
||||
|
||||
const DEFAULT_LOG_LEVEL: string = "info";
|
||||
|
||||
// Parameters that the module accepts when loaded, serializeda as JSON
|
||||
interface LoadModuleParams {
|
||||
logLevel: string;
|
||||
}
|
||||
|
||||
type LoglevelAcceptableLevelStrs = log.LogLevelDesc
|
||||
|
||||
export class ExampleExecutableKurtosisModuleConfigurator implements KurtosisModuleConfigurator {
|
||||
public parseParamsAndCreateExecutableModule(serializedCustomParamsStr: string): Result<ExecutableKurtosisModule, Error> {
|
||||
let args: LoadModuleParams;
|
||||
try {
|
||||
args = JSON.parse(serializedCustomParamsStr);
|
||||
} catch (e: any) {
|
||||
// Sadly, we have to do this because there's no great way to enforce the caught thing being an error
|
||||
// See: https://stackoverflow.com/questions/30469261/checking-for-typeof-error-in-js
|
||||
if (e && e.stack && e.message) {
|
||||
return err(e as Error);
|
||||
}
|
||||
return err(new Error("Parsing params string '" + serializedCustomParamsStr + "' threw an exception, but " +
|
||||
"it's not an Error so we can't report any more information than this"));
|
||||
}
|
||||
|
||||
const setLogLevelResult: Result<null, Error> = ExampleExecutableKurtosisModuleConfigurator.setLogLevel(args.logLevel)
|
||||
if (setLogLevelResult.isErr()) {
|
||||
console.log("Error in setting the log level")
|
||||
return err(setLogLevelResult.error);
|
||||
}
|
||||
|
||||
const module: ExampleExecutableKurtosisModule = new ExampleExecutableKurtosisModule();
|
||||
return ok(module);
|
||||
}
|
||||
|
||||
private static setLogLevel(logLevelStr: string): Result<null, Error> {
|
||||
let logLevelDescStr: string = logLevelStr;
|
||||
if (logLevelStr === null || logLevelStr === undefined || logLevelStr === "") {
|
||||
logLevelDescStr = DEFAULT_LOG_LEVEL;
|
||||
}
|
||||
const logLevelDesc: log.LogLevelDesc = logLevelDescStr as log.LogLevelDesc
|
||||
log.setLevel(logLevelDesc);
|
||||
return ok(null);
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
import { ExampleExecutableKurtosisModuleConfigurator } from "./impl/example_executable_kurtosis_module_configurator";
|
||||
import * as log from "loglevel";
|
||||
import { KurtosisModuleConfigurator, KurtosisModuleExecutor } from "kurtosis-module-api-lib";
|
||||
|
||||
const SUCCESS_EXIT_CODE: number = 0;
|
||||
const FAILURE_EXIT_CODE: number = 1;
|
||||
|
||||
// >>>>>>>>>>>>>>>>>>> REPLACE WITH YOUR OWN CONFIGURATOR <<<<<<<<<<<<<<<<<<<<<<<<
|
||||
const configurator: KurtosisModuleConfigurator = new ExampleExecutableKurtosisModuleConfigurator();
|
||||
// >>>>>>>>>>>>>>>>>>> REPLACE WITH YOUR OWN CONFIGURATOR <<<<<<<<<<<<<<<<<<<<<<<<
|
||||
|
||||
const executor: KurtosisModuleExecutor = new KurtosisModuleExecutor(configurator)
|
||||
executor.run().then(runModuleResult => {
|
||||
let exitCode: number = SUCCESS_EXIT_CODE;
|
||||
if (runModuleResult.isErr()) {
|
||||
console.log("A non-exception error occurred running the Kurtosis module executor:");
|
||||
console.log(runModuleResult.error);
|
||||
exitCode = FAILURE_EXIT_CODE;
|
||||
}
|
||||
process.exit(exitCode);
|
||||
}).catch(reason => {
|
||||
console.log("An uncaught exception occurred running the Kurtosis module executor:");
|
||||
console.log(reason);
|
||||
process.exit(FAILURE_EXIT_CODE);
|
||||
});
|
|
@ -1,3 +0,0 @@
|
|||
topics="test"
|
||||
rpc-admin=true
|
||||
keep-alive=true
|
|
@ -1,3 +0,0 @@
|
|||
topics="test"
|
||||
rpc-admin=true
|
||||
keep-alive=true
|
|
@ -1 +0,0 @@
|
|||
// TODO add tests here
|
379
main.star
379
main.star
|
@ -1,372 +1,31 @@
|
|||
# Waku Configuration
|
||||
WAKU_IMAGE = "statusteam/nim-waku:deploy-status-prod"
|
||||
WAKU_RPC_PORT_ID = "rpc"
|
||||
WAKU_TCP_PORT = 8545
|
||||
WAKU_LIBP2P_PORT_ID = "libp2p"
|
||||
WAKU_LIBP2P_PORT = 60000
|
||||
|
||||
WAKU_SETUP_WAIT_TIME = "5"
|
||||
|
||||
# Prometheus Configuration
|
||||
PROMETHEUS_IMAGE = "prom/prometheus:latest"
|
||||
PROMETHEUS_PORT_ID = "prometheus"
|
||||
PROMETHEUS_TCP_PORT = 8008
|
||||
PROMETHEUS_CONFIGURATION_PATH = "github.com/logos-co/wakurtosis/prometheus.yml"
|
||||
|
||||
# Grafana Configuration
|
||||
GRAFANA_IMAGE = "grafana/grafana:latest"
|
||||
GRAFANA_CONFIGURATION_PATH = "github.com/logos-co/wakurtosis/monitoring/configuration/config/"
|
||||
GRAFANA_CUSTOMIZATION_PATH = "github.com/logos-co/wakurtosis/monitoring/configuration/customizations/"
|
||||
GRAFANA_DASHBOARD_PATH = "github.com/logos-co/wakurtosis/monitoring/configuration/dashboards/"
|
||||
|
||||
GRAFANA_PORT_ID = "grafana"
|
||||
GRAFANA_TCP_PORT = 3000
|
||||
|
||||
# Waku RPC methods
|
||||
POST_RELAY_MESSAGE = "post_waku_v2_relay_v1_message"
|
||||
GET_WAKU_INFO_METHOD = "get_waku_v2_debug_v1_info"
|
||||
CONNECT_TO_PEER_METHOD = "post_waku_v2_admin_v1_peers"
|
||||
GET_PEERS_METHOD = "get_waku_v2_admin_v1_peers"
|
||||
|
||||
GENERAL_TOML_CONFIGURATION_PATH = "github.com/logos-co/wakurtosis/kurtosis-module/starlark/config_files/waku_general.toml"
|
||||
GENERAL_TOML_CONFIGURATION_NAME = "waku_general.toml"
|
||||
|
||||
|
||||
def create_waku_id(other_node_info):
|
||||
ip = other_node_info["service"].ip_address
|
||||
port = other_node_info["service"].ports[WAKU_LIBP2P_PORT_ID].number
|
||||
node_id = other_node_info["id"]
|
||||
|
||||
return '"/ip4/' + str(ip) + '/tcp/' + str(port) + '/p2p/' + node_id + '"'
|
||||
|
||||
|
||||
def merge_peer_ids(peer_ids):
|
||||
return "[" + ",".join(peer_ids) + "]"
|
||||
|
||||
|
||||
def connect_wakunode_to_peers(service_id, port_id, peer_ids):
|
||||
method = CONNECT_TO_PEER_METHOD
|
||||
|
||||
params = merge_peer_ids(peer_ids)
|
||||
|
||||
print(params)
|
||||
|
||||
response = send_json_rpc(service_id, port_id, method, params)
|
||||
|
||||
print(response)
|
||||
|
||||
|
||||
def send_waku_message(service_id, topic):
|
||||
topic = topic
|
||||
waku_message = '{"payload": "0x1a2b3c4d5e6f", "timestamp": 1626813243}'
|
||||
params = '"' + topic + '"' + ", " + waku_message
|
||||
response = send_json_rpc(service_id, WAKU_RPC_PORT_ID, POST_RELAY_MESSAGE, params)
|
||||
print(response)
|
||||
|
||||
|
||||
def send_json_rpc(service_id, port_id, method, params, extract={}):
|
||||
recipe = struct(
|
||||
service_id=service_id,
|
||||
port_id=port_id,
|
||||
endpoint="",
|
||||
method="POST",
|
||||
content_type="application/json",
|
||||
body='{ "jsonrpc": "2.0", "method": "' + method + '", "params": [' + params + '], "id": 1}',
|
||||
extract=extract
|
||||
)
|
||||
|
||||
response = request(recipe=recipe)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def get_wakunode_id(service_id, port_id):
|
||||
extract = {"waku_id": '.result.listenAddresses | .[0] | split("/") | .[-1]'}
|
||||
|
||||
response = send_json_rpc(service_id, port_id, GET_WAKU_INFO_METHOD, "", extract)
|
||||
|
||||
print(response)
|
||||
|
||||
return response["extract.waku_id"]
|
||||
|
||||
|
||||
def get_toml_configuration_artifact(wakunode_name, same_toml_configuration):
|
||||
if same_toml_configuration:
|
||||
artifact_id = upload_files(
|
||||
src=GENERAL_TOML_CONFIGURATION_PATH
|
||||
)
|
||||
file_name = GENERAL_TOML_CONFIGURATION_NAME
|
||||
else:
|
||||
artifact_id = upload_files(
|
||||
src="github.com/logos-co/wakurtosis/kurtosis-module/starlark/config_files/" + wakunode_name + ".toml"
|
||||
)
|
||||
file_name = wakunode_name + ".toml"
|
||||
|
||||
return artifact_id, file_name
|
||||
|
||||
|
||||
def instantiate_waku_nodes(waku_topology, same_toml_configuration):
|
||||
services = {}
|
||||
|
||||
# Get up all waku nodes
|
||||
for wakunode_name in waku_topology.keys():
|
||||
CONFIG_LOCATION = "/tmp" # todo maybe not good idea to use /tmp
|
||||
|
||||
artifact_id, configuration_file = get_toml_configuration_artifact(wakunode_name, same_toml_configuration)
|
||||
|
||||
print("configuration file is " + configuration_file)
|
||||
|
||||
waku_service = add_service(
|
||||
service_id=wakunode_name,
|
||||
config=struct(
|
||||
image=WAKU_IMAGE,
|
||||
ports={
|
||||
WAKU_RPC_PORT_ID: PortSpec(number=WAKU_TCP_PORT, transport_protocol="TCP"),
|
||||
PROMETHEUS_PORT_ID: PortSpec(number=PROMETHEUS_TCP_PORT, transport_protocol="TCP"),
|
||||
WAKU_LIBP2P_PORT_ID: PortSpec(number=WAKU_LIBP2P_PORT,
|
||||
transport_protocol="TCP"),
|
||||
},
|
||||
files={
|
||||
CONFIG_LOCATION: artifact_id
|
||||
},
|
||||
entrypoint=[
|
||||
"/usr/bin/wakunode", "--rpc-address=0.0.0.0",
|
||||
"--metrics-server-address=0.0.0.0"
|
||||
],
|
||||
cmd=[
|
||||
"--topics=" + waku_topology[wakunode_name]["topics"],
|
||||
"--metrics-server=True",
|
||||
"--config-file=" + CONFIG_LOCATION + "/" + configuration_file
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
waku_info = {}
|
||||
exec_recipe = struct(
|
||||
service_id=wakunode_name,
|
||||
command=["sleep", WAKU_SETUP_WAIT_TIME]
|
||||
)
|
||||
exec(exec_recipe)
|
||||
id = get_wakunode_id(wakunode_name, WAKU_RPC_PORT_ID)
|
||||
waku_info["id"] = id
|
||||
waku_info["service"] = waku_service
|
||||
|
||||
services[wakunode_name] = waku_info
|
||||
|
||||
return services
|
||||
|
||||
|
||||
def ask_connected_nodes(topology):
|
||||
for wakunode_name in topology.keys():
|
||||
|
||||
response = send_json_rpc(wakunode_name, WAKU_RPC_PORT_ID, GET_PEERS_METHOD, "")
|
||||
|
||||
# result = extract(response.body, '.result.listenAddresses | .[0] | split("/") | .[-1]')
|
||||
print(response)
|
||||
|
||||
def interconnect_waku_nodes(topology_information, services):
|
||||
# Interconnect them
|
||||
for wakunode_name in topology_information.keys():
|
||||
peers = topology_information[wakunode_name]["static_nodes"]
|
||||
|
||||
peer_ids = []
|
||||
for peer in peers:
|
||||
# Get all Ids
|
||||
peer_id = create_waku_id(services[peer])
|
||||
peer_ids.append(peer_id)
|
||||
|
||||
connect_wakunode_to_peers(wakunode_name, WAKU_RPC_PORT_ID, peer_ids)
|
||||
|
||||
|
||||
def send_test_messages(topology_information):
|
||||
for wakunode_name in topology_information.keys():
|
||||
# send message in topic
|
||||
for i in range(50):
|
||||
exec_recipe = struct(
|
||||
service_id=wakunode_name,
|
||||
command=["sleep", "0.5"]
|
||||
)
|
||||
exec(exec_recipe)
|
||||
send_waku_message(wakunode_name, "test")
|
||||
|
||||
|
||||
def generate_template_data(services):
|
||||
template_data = {}
|
||||
node_data = []
|
||||
for wakunode_name in services.keys():
|
||||
node_data.append(
|
||||
'"' + services[wakunode_name]["service"].ip_address + ":" + str(services[wakunode_name]["service"].ports[
|
||||
PROMETHEUS_PORT_ID].number) + '"')
|
||||
|
||||
data_as_string = ",".join(node_data)
|
||||
test = "[" + data_as_string + "]"
|
||||
|
||||
template_data["targets"] = test
|
||||
|
||||
return template_data
|
||||
|
||||
|
||||
def create_prometheus_targets(services):
|
||||
# get ip and ports of all nodes
|
||||
template_data = generate_template_data(services)
|
||||
|
||||
# template
|
||||
template = """
|
||||
[
|
||||
{
|
||||
"labels": {
|
||||
"job":
|
||||
"wakurtosis"
|
||||
},
|
||||
"targets" : {{.targets}}
|
||||
}
|
||||
]
|
||||
"""
|
||||
|
||||
artifact_id = render_templates(
|
||||
config={
|
||||
"targets.json": struct(
|
||||
template=template,
|
||||
data=template_data,
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
return artifact_id
|
||||
|
||||
|
||||
def set_up_prometheus(services):
|
||||
# Create targets.json
|
||||
targets_artifact_id = create_prometheus_targets(services)
|
||||
|
||||
# Set up prometheus
|
||||
CONFIG_LOCATION = "/test"
|
||||
CONFIG_LOCATION2 = "/tmp"
|
||||
artifact_id = upload_files(
|
||||
src=PROMETHEUS_CONFIGURATION_PATH
|
||||
)
|
||||
|
||||
prometheus_service = add_service(
|
||||
service_id="prometheus",
|
||||
config=struct(
|
||||
image=PROMETHEUS_IMAGE,
|
||||
ports={
|
||||
PROMETHEUS_PORT_ID: PortSpec(number=9090, transport_protocol="TCP")
|
||||
},
|
||||
files={
|
||||
CONFIG_LOCATION: artifact_id,
|
||||
CONFIG_LOCATION2: targets_artifact_id
|
||||
},
|
||||
cmd=[
|
||||
"--config.file=" + CONFIG_LOCATION + "/prometheus.yml"
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
return prometheus_service
|
||||
|
||||
|
||||
def set_up_graphana(prometheus_service):
|
||||
# Set up grafana
|
||||
CONFIGURATION_GRAFANA = "/etc/grafana/"
|
||||
DASHBOARDS_GRAFANA = "/var/lib/grafana/dashboards/"
|
||||
CUSTOMIZATION_GRAFANA = "/usr/share/grafana/"
|
||||
|
||||
config_id = upload_files(
|
||||
src=GRAFANA_CONFIGURATION_PATH
|
||||
)
|
||||
customization_id = upload_files(
|
||||
src=GRAFANA_CUSTOMIZATION_PATH
|
||||
)
|
||||
dashboard_id = upload_files(
|
||||
src=GRAFANA_DASHBOARD_PATH
|
||||
)
|
||||
|
||||
prometheus_url = prometheus_service.ip_address + ":" + str(prometheus_service.ports[PROMETHEUS_PORT_ID].number)
|
||||
prometheus_info = {"prometheus_url": prometheus_url}
|
||||
|
||||
# template
|
||||
template = """
|
||||
apiVersion: 1
|
||||
datasources:
|
||||
- name: Prometheus
|
||||
type: prometheus
|
||||
access: proxy
|
||||
org_id: 1
|
||||
url: http://{{.prometheus_url}}
|
||||
is_default: true
|
||||
version: 1
|
||||
editable: true
|
||||
"""
|
||||
|
||||
artifact_id = render_templates(
|
||||
config={
|
||||
"datasources.yaml": struct(
|
||||
template=template,
|
||||
data=prometheus_info,
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
grafana_service = add_service(
|
||||
service_id="grafana",
|
||||
config=struct(
|
||||
image=GRAFANA_IMAGE,
|
||||
ports={
|
||||
GRAFANA_PORT_ID: PortSpec(number=GRAFANA_TCP_PORT, transport_protocol="TCP")
|
||||
},
|
||||
files={
|
||||
CONFIGURATION_GRAFANA: config_id,
|
||||
# customization_id: CUSTOMIZATION_GRAFANA,
|
||||
DASHBOARDS_GRAFANA: dashboard_id,
|
||||
"/etc/grafana/provisioning/datasources/": artifact_id
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
return grafana_service
|
||||
# System Imports
|
||||
system_variables = import_module("github.com/logos-co/wakurtosis/src/system_variables.star")
|
||||
|
||||
# Module Imports
|
||||
waku = import_module(system_variables.WAKU_MODULE)
|
||||
prometheus = import_module(system_variables.PROMETHEUS_MODULE)
|
||||
grafana = import_module(system_variables.GRAFANA_MODULE)
|
||||
parser = import_module(system_variables.ARGUMENT_PARSER_MODULE)
|
||||
|
||||
|
||||
def run(args):
|
||||
waku_topology = read_file(src="github.com/logos-co/wakurtosis/kurtosis-module/starlark/waku_test_topology.json")
|
||||
args = parser.apply_default_to_input_args(args)
|
||||
|
||||
same_toml_configuration = args.same_toml_configuration
|
||||
waku_topology = read_file(src=system_variables.TOPOLOGIES_LOCATION + args.topology_file)
|
||||
|
||||
waku_topology = json.decode(waku_topology)
|
||||
|
||||
# decoded = {
|
||||
# "waku_0": {
|
||||
# "ports_shift": 0,
|
||||
# "topics": "test",
|
||||
# "static_nodes": [
|
||||
# "waku_1",
|
||||
# ]
|
||||
# },
|
||||
# "waku_1": {
|
||||
# "ports_shift": 1,
|
||||
# "topics": "test",
|
||||
# "static_nodes": [
|
||||
# "waku_0"
|
||||
# ]
|
||||
# },
|
||||
# "waku_2": {
|
||||
# "ports_shift": 1,
|
||||
# "topics": "test",
|
||||
# "static_nodes": [
|
||||
# "waku_0",
|
||||
# "waku_1"
|
||||
# ]
|
||||
# }
|
||||
# }
|
||||
|
||||
services = instantiate_waku_nodes(waku_topology, same_toml_configuration)
|
||||
# Set up nodes
|
||||
services = waku.instantiate_waku_nodes(waku_topology, same_toml_configuration)
|
||||
|
||||
# Set up prometheus + graphana
|
||||
prometheus_service = set_up_prometheus(services)
|
||||
set_up_graphana(prometheus_service)
|
||||
prometheus_service = prometheus.set_up_prometheus(services)
|
||||
grafana_service = grafana.set_up_graphana(prometheus_service)
|
||||
|
||||
interconnect_waku_nodes(waku_topology, services)
|
||||
waku.interconnect_waku_nodes(waku_topology, services)
|
||||
|
||||
send_test_messages(waku_topology)
|
||||
|
||||
ask_connected_nodes(waku_topology)
|
||||
waku.send_test_messages(waku_topology, system_variables.NUMBER_TEST_MESSAGES,
|
||||
system_variables.DELAY_BETWEEN_TEST_MESSAGE)
|
||||
|
||||
waku.get_waku_peers(waku_topology.keys()[1])
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
global:
|
||||
scrape_interval: 15s
|
||||
|
||||
scrape_configs:
|
||||
- job_name: 'prometheus'
|
||||
scrape_interval: 5s
|
||||
static_configs:
|
||||
- targets: ['localhost:9090']
|
||||
- job_name: 'warkurtosis'
|
||||
scrape_interval: 1s
|
||||
file_sd_configs:
|
||||
- files:
|
||||
- '/tmp/targets.json'
|
21
package.json
21
package.json
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
"scripts": {
|
||||
"build": "ts-mocha -p tsconfig.json 'kurtosis-module/test/**/*.ts' && tsc"
|
||||
},
|
||||
"files": [
|
||||
"build"
|
||||
],
|
||||
"dependencies": {
|
||||
"kurtosis-module-api-lib": "0.23.0",
|
||||
"kurtosis-sdk": "0.49.6",
|
||||
"loglevel": "^1.7.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/chai": "^4.2.21",
|
||||
"@types/mocha": "^9.0.0",
|
||||
"chai": "^4.3.4",
|
||||
"mocha": "^9.1.0",
|
||||
"ts-mocha": "^9.0.2",
|
||||
"typescript": "^4.3.5"
|
||||
}
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail # Bash "strict mode"
|
||||
script_dirpath="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
root_dirpath="$(dirname "${script_dirpath}")"
|
||||
|
||||
# ==================================================================================================
|
||||
# Constants
|
||||
# ==================================================================================================
|
||||
IMAGE_NAME="kurtosis_module_test"
|
||||
MODULE_DIRNAME="kurtosis-module"
|
||||
|
||||
# =============================================================================
|
||||
# Main Code
|
||||
# =============================================================================
|
||||
# Checks if dockerignore file is in the root path
|
||||
if ! [ -f "${root_dirpath}"/.dockerignore ]; then
|
||||
echo "Error: No .dockerignore file found in language root '${root_dirpath}'; this is required so Docker caching is enabled and your Kurtosis module builds remain quick" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build Docker image
|
||||
dockerfile_filepath="${root_dirpath}/${MODULE_DIRNAME}/Dockerfile"
|
||||
echo "Building Kurtosis module into a Docker image named '${IMAGE_NAME}'..."
|
||||
if ! docker build -t "${IMAGE_NAME}" -f "${dockerfile_filepath}" "${root_dirpath}"; then
|
||||
echo "Error: Docker build of the Kurtosis module failed" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Successfully built Docker image '${IMAGE_NAME}' containing the Kurtosis module"
|
|
@ -0,0 +1,15 @@
|
|||
# System Imports
|
||||
system_variables = import_module("github.com/logos-co/wakurtosis/src/system_variables.star")
|
||||
|
||||
|
||||
def apply_default_to_input_args(input_args):
|
||||
same_config = system_variables.SAME_TOML_CONFIGURATION
|
||||
topology_file = system_variables.DEFAULT_TOPOLOGY_FILE
|
||||
|
||||
if hasattr(input_args, system_variables.SAME_TOML_CONFIGURATION_NAME):
|
||||
same_config = input_args.same_toml_configuration
|
||||
|
||||
if hasattr(input_args, system_variables.TOPOLOGY_FILE_NAME):
|
||||
topology_file = input_args.topology
|
||||
|
||||
return struct(same_toml_configuration=same_config, topology_file=topology_file)
|
|
@ -0,0 +1,34 @@
|
|||
# System Imports
|
||||
system_variables = import_module("github.com/logos-co/wakurtosis/src/system_variables.star")
|
||||
|
||||
|
||||
def get_toml_configuration_artifact(wakunode_name, same_toml_configuration):
|
||||
if same_toml_configuration:
|
||||
artifact_id = upload_files(
|
||||
src=system_variables.GENERAL_TOML_CONFIGURATION_PATH
|
||||
)
|
||||
file_name = system_variables.GENERAL_TOML_CONFIGURATION_NAME
|
||||
else:
|
||||
artifact_id = upload_files(
|
||||
src="github.com/logos-co/wakurtosis/config/waku_config_files/" + wakunode_name + ".toml"
|
||||
)
|
||||
file_name = wakunode_name + ".toml"
|
||||
|
||||
return artifact_id, file_name
|
||||
|
||||
|
||||
def generate_template_data(services):
|
||||
template_data = {}
|
||||
node_data = []
|
||||
for wakunode_name in services.keys():
|
||||
node_data.append(
|
||||
'"' + services[wakunode_name]["service_info"].ip_address + ":" + str(
|
||||
services[wakunode_name]["service_info"].ports[
|
||||
system_variables.PROMETHEUS_PORT_ID].number) + '"')
|
||||
|
||||
data_as_string = ",".join(node_data)
|
||||
test = "[" + data_as_string + "]"
|
||||
|
||||
template_data["targets"] = test
|
||||
|
||||
return template_data
|
|
@ -0,0 +1,65 @@
|
|||
# System Imports
|
||||
system_variables = import_module("github.com/logos-co/wakurtosis/src/system_variables.star")
|
||||
|
||||
|
||||
def set_up_graphana(prometheus_service):
|
||||
# Set up grafana
|
||||
CONFIGURATION_GRAFANA = "/etc/grafana/"
|
||||
DASHBOARDS_GRAFANA = "/var/lib/grafana/dashboards/"
|
||||
CUSTOMIZATION_GRAFANA = "/usr/share/grafana/"
|
||||
|
||||
config_id = upload_files(
|
||||
src=system_variables.GRAFANA_CONFIGURATION_PATH
|
||||
)
|
||||
customization_id = upload_files(
|
||||
src=system_variables.GRAFANA_CUSTOMIZATION_PATH
|
||||
)
|
||||
dashboard_id = upload_files(
|
||||
src=system_variables.GRAFANA_DASHBOARD_PATH
|
||||
)
|
||||
|
||||
prometheus_url = prometheus_service.ip_address + ":" + str(
|
||||
prometheus_service.ports[system_variables.PROMETHEUS_PORT_ID].number)
|
||||
prometheus_info = {"prometheus_url": prometheus_url}
|
||||
|
||||
# template
|
||||
template = """
|
||||
apiVersion: 1
|
||||
datasources:
|
||||
- name: Prometheus
|
||||
type: prometheus
|
||||
access: proxy
|
||||
org_id: 1
|
||||
url: http://{{.prometheus_url}}
|
||||
is_default: true
|
||||
version: 1
|
||||
editable: true
|
||||
"""
|
||||
|
||||
artifact_id = render_templates(
|
||||
config={
|
||||
"datasources.yaml": struct(
|
||||
template=template,
|
||||
data=prometheus_info,
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
grafana_service = add_service(
|
||||
service_id="grafana",
|
||||
config=struct(
|
||||
image=system_variables.GRAFANA_IMAGE,
|
||||
ports={
|
||||
system_variables.GRAFANA_PORT_ID: PortSpec(number=system_variables.GRAFANA_TCP_PORT,
|
||||
transport_protocol="TCP")
|
||||
},
|
||||
files={
|
||||
CONFIGURATION_GRAFANA: config_id,
|
||||
# customization_id: CUSTOMIZATION_GRAFANA,
|
||||
DASHBOARDS_GRAFANA: dashboard_id,
|
||||
"/etc/grafana/provisioning/datasources/": artifact_id
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
return grafana_service
|
|
@ -0,0 +1,65 @@
|
|||
# System Imports
|
||||
system_variables = import_module("github.com/logos-co/wakurtosis/src/system_variables.star")
|
||||
|
||||
# Module Imports
|
||||
files = import_module(system_variables.FILE_HELPERS_MODULE)
|
||||
|
||||
|
||||
def set_up_prometheus(services):
|
||||
# Create targets.json
|
||||
targets_artifact_id = create_prometheus_targets(services)
|
||||
|
||||
# Set up prometheus
|
||||
CONFIG_LOCATION = "/test"
|
||||
CONFIG_LOCATION2 = "/tmp"
|
||||
artifact_id = upload_files(
|
||||
src=system_variables.PROMETHEUS_CONFIGURATION_PATH
|
||||
)
|
||||
|
||||
prometheus_service = add_service(
|
||||
service_id="prometheus",
|
||||
config=struct(
|
||||
image=system_variables.PROMETHEUS_IMAGE,
|
||||
ports={
|
||||
system_variables.PROMETHEUS_PORT_ID: PortSpec(number=9090, transport_protocol="TCP")
|
||||
},
|
||||
files={
|
||||
CONFIG_LOCATION: artifact_id,
|
||||
CONFIG_LOCATION2: targets_artifact_id
|
||||
},
|
||||
cmd=[
|
||||
"--config.file=" + CONFIG_LOCATION + "/prometheus.yml"
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
return prometheus_service
|
||||
|
||||
|
||||
def create_prometheus_targets(services):
|
||||
# get ip and ports of all nodes
|
||||
template_data = files.generate_template_data(services)
|
||||
|
||||
# template
|
||||
template = """
|
||||
[
|
||||
{
|
||||
"labels": {
|
||||
"job":
|
||||
"wakurtosis"
|
||||
},
|
||||
"targets" : {{.targets}}
|
||||
}
|
||||
]
|
||||
"""
|
||||
|
||||
artifact_id = render_templates(
|
||||
config={
|
||||
"targets.json": struct(
|
||||
template=template,
|
||||
data=template_data,
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
return artifact_id
|
|
@ -0,0 +1,52 @@
|
|||
# Waku Configuration
|
||||
WAKU_IMAGE = "statusteam/nim-waku:019f357d"
|
||||
WAKU_RPC_PORT_ID = "rpc"
|
||||
WAKU_TCP_PORT = 8545
|
||||
WAKU_LIBP2P_PORT_ID = "libp2p"
|
||||
WAKU_LIBP2P_PORT = 60000
|
||||
WAKU_SETUP_WAIT_TIME = "5"
|
||||
|
||||
WAKU_CONFIG_FILE_LOCATION = "/waku/configuration_file"
|
||||
WAKU_ENTRYPOINT = ["/usr/bin/wakunode", "--rpc-address=0.0.0.0", "--metrics-server-address=0.0.0.0"]
|
||||
|
||||
# Prometheus Configuration
|
||||
PROMETHEUS_IMAGE = "prom/prometheus:latest"
|
||||
PROMETHEUS_PORT_ID = "prometheus"
|
||||
PROMETHEUS_TCP_PORT = 8008
|
||||
PROMETHEUS_CONFIGURATION_PATH = "github.com/logos-co/wakurtosis/monitoring/prometheus.yml"
|
||||
|
||||
# Grafana Configuration
|
||||
GRAFANA_IMAGE = "grafana/grafana:latest"
|
||||
GRAFANA_CONFIGURATION_PATH = "github.com/logos-co/wakurtosis/monitoring/configuration/config/"
|
||||
GRAFANA_CUSTOMIZATION_PATH = "github.com/logos-co/wakurtosis/monitoring/configuration/customizations/"
|
||||
GRAFANA_DASHBOARD_PATH = "github.com/logos-co/wakurtosis/monitoring/configuration/dashboards/"
|
||||
|
||||
GRAFANA_PORT_ID = "grafana"
|
||||
GRAFANA_TCP_PORT = 3000
|
||||
|
||||
# Waku RPC methods
|
||||
POST_RELAY_MESSAGE = "post_waku_v2_relay_v1_message"
|
||||
GET_WAKU_INFO_METHOD = "get_waku_v2_debug_v1_info"
|
||||
CONNECT_TO_PEER_METHOD = "post_waku_v2_admin_v1_peers"
|
||||
GET_PEERS_METHOD = "get_waku_v2_admin_v1_peers"
|
||||
|
||||
GENERAL_TOML_CONFIGURATION_PATH = "github.com/logos-co/wakurtosis/config/waku_config_files/waku_general.toml"
|
||||
GENERAL_TOML_CONFIGURATION_NAME = "waku_general.toml"
|
||||
|
||||
# Import locations
|
||||
WAKU_MODULE = "github.com/logos-co/wakurtosis/src/waku_methods.star"
|
||||
PROMETHEUS_MODULE = "github.com/logos-co/wakurtosis/src/prometheus.star"
|
||||
GRAFANA_MODULE = "github.com/logos-co/wakurtosis/src/grafana.star"
|
||||
ARGUMENT_PARSER_MODULE = "github.com/logos-co/wakurtosis/src/arguments_parser.star"
|
||||
FILE_HELPERS_MODULE = "github.com/logos-co/wakurtosis/src/file_helpers.star"
|
||||
|
||||
# Default main starlark arguments
|
||||
SAME_TOML_CONFIGURATION_NAME = "same_toml_configuration"
|
||||
SAME_TOML_CONFIGURATION = True
|
||||
|
||||
TOPOLOGY_FILE_NAME = "topology"
|
||||
TOPOLOGIES_LOCATION = "github.com/logos-co/wakurtosis/config/network_topology/"
|
||||
DEFAULT_TOPOLOGY_FILE = "waku_test_topology_small.json"
|
||||
|
||||
NUMBER_TEST_MESSAGES = 50
|
||||
DELAY_BETWEEN_TEST_MESSAGE = "0.5"
|
|
@ -0,0 +1,168 @@
|
|||
# System Imports
|
||||
system_variables = import_module("github.com/logos-co/wakurtosis/src/system_variables.star")
|
||||
|
||||
# Module Imports
|
||||
files = import_module(system_variables.FILE_HELPERS_MODULE)
|
||||
|
||||
def send_waku_json_rpc(service_id, port_id, method, params, extract={}):
|
||||
recipe = struct(
|
||||
service_id=service_id,
|
||||
port_id=port_id,
|
||||
endpoint="",
|
||||
method="POST",
|
||||
content_type="application/json",
|
||||
body='{ "jsonrpc": "2.0", "method": "' + method + '", "params": [' + params + '], "id": 1}',
|
||||
extract=extract
|
||||
)
|
||||
|
||||
response = request(recipe=recipe)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def create_waku_id(waku_service_information):
|
||||
waku_service = waku_service_information["service_info"]
|
||||
|
||||
ip = waku_service.ip_address
|
||||
port = waku_service.ports[system_variables.WAKU_LIBP2P_PORT_ID].number
|
||||
waku_node_id = waku_service_information["id"]
|
||||
|
||||
return '"/ip4/' + str(ip) + '/tcp/' + str(port) + '/p2p/' + waku_node_id + '"'
|
||||
|
||||
|
||||
def _merge_peer_ids(peer_ids):
|
||||
return "[" + ",".join(peer_ids) + "]"
|
||||
|
||||
|
||||
def connect_wakunode_to_peers(service_id, port_id, peer_ids):
|
||||
method = system_variables.CONNECT_TO_PEER_METHOD
|
||||
params = _merge_peer_ids(peer_ids)
|
||||
|
||||
response = send_waku_json_rpc(service_id, port_id, method, params)
|
||||
|
||||
print(response)
|
||||
|
||||
|
||||
def post_waku_v2_relay_v1_message(service_id, topic):
|
||||
waku_message = '{"payload": "0x1a2b3c4d5e6f", "timestamp": 1626813243}'
|
||||
params = '"' + topic + '"' + ", " + waku_message
|
||||
|
||||
response = send_waku_json_rpc(service_id, system_variables.WAKU_RPC_PORT_ID, system_variables.POST_RELAY_MESSAGE, params)
|
||||
|
||||
print(response)
|
||||
|
||||
|
||||
def get_wakunode_id(service_id, port_id):
|
||||
extract = {"waku_id": '.result.listenAddresses | .[0] | split("/") | .[-1]'}
|
||||
|
||||
response = send_waku_json_rpc(service_id, port_id, system_variables.GET_WAKU_INFO_METHOD, "", extract)
|
||||
|
||||
return response["extract.waku_id"]
|
||||
|
||||
|
||||
def add_waku_service(wakunode_name, use_general_configuration):
|
||||
artifact_id, configuration_file = files.get_toml_configuration_artifact(wakunode_name, use_general_configuration)
|
||||
|
||||
print("Configuration being used file is " + configuration_file)
|
||||
|
||||
waku_service = add_service(
|
||||
service_id=wakunode_name,
|
||||
config=struct(
|
||||
image=system_variables.WAKU_IMAGE,
|
||||
ports={
|
||||
system_variables.WAKU_RPC_PORT_ID: PortSpec(number=system_variables.WAKU_TCP_PORT,
|
||||
transport_protocol="TCP"),
|
||||
system_variables.PROMETHEUS_PORT_ID: PortSpec(number=system_variables.PROMETHEUS_TCP_PORT,
|
||||
transport_protocol="TCP"),
|
||||
system_variables.WAKU_LIBP2P_PORT_ID: PortSpec(number=system_variables.WAKU_LIBP2P_PORT,
|
||||
transport_protocol="TCP"),
|
||||
},
|
||||
files={
|
||||
system_variables.WAKU_CONFIG_FILE_LOCATION: artifact_id
|
||||
},
|
||||
entrypoint=system_variables.WAKU_ENTRYPOINT,
|
||||
cmd=[
|
||||
"--config-file=" + system_variables.WAKU_CONFIG_FILE_LOCATION + "/" + configuration_file
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
return waku_service
|
||||
|
||||
|
||||
def make_service_wait(service_id, time):
|
||||
exec_recipe = struct(
|
||||
service_id=service_id,
|
||||
command=["sleep", time]
|
||||
)
|
||||
exec(exec_recipe)
|
||||
|
||||
|
||||
def add_waku_service_information(services, waku_service_id, waku_service):
|
||||
"""
|
||||
As we will need to access for the service information later, the structure is the following:
|
||||
|
||||
services = {
|
||||
"waku_0": {
|
||||
"id" : id of the node, as string,
|
||||
"service_info": Kurtosis service struct, that has
|
||||
"ip": ip of the node,
|
||||
"ports": Kurtosis PortSpec, that you can access with their respective identifier
|
||||
},
|
||||
"waku_1": {...}
|
||||
}
|
||||
|
||||
Example:
|
||||
|
||||
node_id = services["waku_0"]["id"]
|
||||
node_ip = services["waku_0"]["service_info"].ip_address
|
||||
rpc_node_number = services["waku_0"]["service_info"].ports["your_rpc_identifier"].number
|
||||
rpc_node_protocol = services["waku_0"]["service_info"].ports["your_rpc_identifier"].protocol
|
||||
"""
|
||||
waku_info = {}
|
||||
|
||||
waku_node_id = get_wakunode_id(waku_service_id, system_variables.WAKU_RPC_PORT_ID)
|
||||
|
||||
waku_info["id"] = waku_node_id
|
||||
waku_info["service_info"] = waku_service
|
||||
|
||||
services[waku_service_id] = waku_info
|
||||
|
||||
|
||||
def instantiate_waku_nodes(network_topology, use_general_configuration):
|
||||
waku_services_information = {}
|
||||
|
||||
# Get up all waku nodes
|
||||
for waku_service_id in network_topology.keys():
|
||||
waku_service = add_waku_service(waku_service_id, use_general_configuration)
|
||||
|
||||
make_service_wait(waku_service_id, system_variables.WAKU_SETUP_WAIT_TIME)
|
||||
add_waku_service_information(waku_services_information, waku_service_id, waku_service)
|
||||
|
||||
return waku_services_information
|
||||
|
||||
|
||||
def get_waku_peers(waku_service_id):
|
||||
response = send_waku_json_rpc(waku_service_id, system_variables.WAKU_RPC_PORT_ID,
|
||||
system_variables.GET_PEERS_METHOD, "")
|
||||
|
||||
print(response)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def send_test_messages(topology_information, number_of_messages, time_between_message):
|
||||
for wakunode_name in topology_information.keys():
|
||||
for i in range(number_of_messages):
|
||||
make_service_wait(wakunode_name, time_between_message) # todo check if this stops wakunode
|
||||
post_waku_v2_relay_v1_message(wakunode_name, "test")
|
||||
|
||||
|
||||
def interconnect_waku_nodes(topology_information, services):
|
||||
# Interconnect them
|
||||
for waku_service_id in topology_information.keys():
|
||||
peers = topology_information[waku_service_id]["static_nodes"]
|
||||
|
||||
peer_ids = [create_waku_id(services[peer]) for peer in peers]
|
||||
|
||||
connect_wakunode_to_peers(waku_service_id, system_variables.WAKU_RPC_PORT_ID, peer_ids)
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"outDir": "build",
|
||||
"downlevelIteration": true,
|
||||
"strict": true
|
||||
},
|
||||
"include": [
|
||||
"kurtosis-module/**/*"
|
||||
]
|
||||
}
|
985
yarn.lock
985
yarn.lock
|
@ -1,985 +0,0 @@
|
|||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@grpc/grpc-js@^1.4.4":
|
||||
version "1.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.4.4.tgz#59336f13d77bc446bbdf2161564a32639288dc5b"
|
||||
integrity sha512-a6222b7Dl6fIlMgzVl7e+NiRoLiZFbpcwvBH2Oli56Bn7W4/3Ld+86hK4ffPn5rx2DlDidmIcvIJiOQXyhv9gA==
|
||||
dependencies:
|
||||
"@grpc/proto-loader" "^0.6.4"
|
||||
"@types/node" ">=12.12.47"
|
||||
|
||||
"@grpc/proto-loader@^0.6.4":
|
||||
version "0.6.7"
|
||||
resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.7.tgz#e62a202f4cf5897bdd0e244dec1dbc80d84bdfa1"
|
||||
integrity sha512-QzTPIyJxU0u+r2qGe8VMl3j/W2ryhEvBv7hc42OjYfthSj370fUrb7na65rG6w3YLZS/fb8p89iTBobfWGDgdw==
|
||||
dependencies:
|
||||
"@types/long" "^4.0.1"
|
||||
lodash.camelcase "^4.3.0"
|
||||
long "^4.0.0"
|
||||
protobufjs "^6.10.0"
|
||||
yargs "^16.1.1"
|
||||
|
||||
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
|
||||
integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78=
|
||||
|
||||
"@protobufjs/base64@^1.1.2":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
|
||||
integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
|
||||
|
||||
"@protobufjs/codegen@^2.0.4":
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
|
||||
integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
|
||||
|
||||
"@protobufjs/eventemitter@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
|
||||
integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A=
|
||||
|
||||
"@protobufjs/fetch@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
|
||||
integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=
|
||||
dependencies:
|
||||
"@protobufjs/aspromise" "^1.1.1"
|
||||
"@protobufjs/inquire" "^1.1.0"
|
||||
|
||||
"@protobufjs/float@^1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
|
||||
integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=
|
||||
|
||||
"@protobufjs/inquire@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
|
||||
integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=
|
||||
|
||||
"@protobufjs/path@^1.1.2":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
|
||||
integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=
|
||||
|
||||
"@protobufjs/pool@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
|
||||
integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=
|
||||
|
||||
"@protobufjs/utf8@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
|
||||
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
|
||||
|
||||
"@types/chai@^4.2.21":
|
||||
version "4.2.21"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.21.tgz#9f35a5643129df132cf3b5c1ec64046ea1af0650"
|
||||
integrity "sha1-nzWlZDEp3xMs87XB7GQEbqGvBlA= sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg=="
|
||||
|
||||
"@types/google-protobuf@^3.15.5":
|
||||
version "3.15.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.5.tgz#644b2be0f5613b1f822c70c73c6b0e0b5b5fa2ad"
|
||||
integrity "sha1-ZEsr4PVhOx+CLHDHPGsOC1tfoq0= sha512-6bgv24B+A2bo9AfzReeg5StdiijKzwwnRflA8RLd1V4Yv995LeTmo0z69/MPbBDFSiZWdZHQygLo/ccXhMEDgw=="
|
||||
|
||||
"@types/json5@^0.0.29":
|
||||
version "0.0.29"
|
||||
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
|
||||
integrity "sha1-7ihweulOEdK4J7y+UnC86n8+ce4= sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
|
||||
|
||||
"@types/long@^4.0.1":
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9"
|
||||
integrity "sha1-RZxl+hhn2v5qjzIsTFFpVmPMVek= sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
|
||||
|
||||
"@types/mocha@^9.0.0":
|
||||
version "9.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.0.0.tgz#3205bcd15ada9bc681ac20bef64e9e6df88fd297"
|
||||
integrity "sha1-MgW80Vram8aBrCC+9k6ebfiP0pc= sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA=="
|
||||
|
||||
"@types/node@>=12.12.47", "@types/node@>=13.7.0":
|
||||
version "16.11.11"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.11.tgz#6ea7342dfb379ea1210835bada87b3c512120234"
|
||||
integrity sha512-KB0sixD67CeecHC33MYn+eYARkqTheIRNuu97y2XMjR7Wu3XibO1vaY6VBV6O/a89SPI81cEUIYT87UqUWlZNw==
|
||||
|
||||
"@types/path-browserify@^1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/path-browserify/-/path-browserify-1.0.0.tgz#294ec6e88b6b0d340a3897b7120e5b393f16690e"
|
||||
integrity sha512-XMCcyhSvxcch8b7rZAtFAaierBYdeHXVvg2iYnxOV0MCQHmPuRRmGZPFDRzPayxcGiiSL1Te9UIO+f3cuj0tfw==
|
||||
|
||||
"@types/semver@^7.3.9":
|
||||
version "7.3.12"
|
||||
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.12.tgz#920447fdd78d76b19de0438b7f60df3c4a80bf1c"
|
||||
integrity sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==
|
||||
|
||||
"@ungap/promise-all-settled@1.1.2":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
|
||||
integrity "sha1-qlgEJxHW4ydd033Fl+XTHowpCkQ= sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q=="
|
||||
|
||||
ansi-colors@4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
|
||||
integrity "sha1-y7muJWv3UK8eqzRPIpqif+lLo0g= sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA=="
|
||||
|
||||
ansi-regex@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
|
||||
integrity "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= sha512-wFUFA5bg5dviipbQQ32yOQhl6gcJaJXiHE7dvR8VYPG97+J/GNC5FKGepKdEDUFeXRzDxPF1X/Btc8L+v7oqIQ=="
|
||||
|
||||
ansi-regex@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
|
||||
integrity "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U= sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
|
||||
|
||||
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
|
||||
integrity "sha1-7dgDYornHATIWuegkG7a00tkiTc= sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
|
||||
dependencies:
|
||||
color-convert "^2.0.1"
|
||||
|
||||
anymatch@~3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
|
||||
integrity "sha1-wFV8CWrzLxBhmPT04qODU343hxY= sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg=="
|
||||
dependencies:
|
||||
normalize-path "^3.0.0"
|
||||
picomatch "^2.0.4"
|
||||
|
||||
argparse@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
|
||||
integrity "sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg= sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
|
||||
|
||||
arrify@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
|
||||
integrity "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA=="
|
||||
|
||||
assertion-error@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
|
||||
integrity "sha1-5gtrDo8wG9l+U3UhW9pAbIURjAs= sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw=="
|
||||
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||
integrity "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4= sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
|
||||
binary-extensions@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
|
||||
integrity "sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0= sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||
integrity "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0= sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
||||
braces@~3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
||||
integrity "sha1-NFThpGLujVmeI23zNs2epPiv4Qc= sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A=="
|
||||
dependencies:
|
||||
fill-range "^7.0.1"
|
||||
|
||||
browser-or-node@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/browser-or-node/-/browser-or-node-2.0.0.tgz#808ea90282a670931cdc0ea98166538a50dd0d89"
|
||||
integrity sha512-3Lrks/Okgof+/cRguUNG+qRXSeq79SO3hY4QrXJayJofwJwHiGC0qi99uDjsfTwULUFSr1OGVsBkdIkygKjTUA==
|
||||
|
||||
browser-stdout@1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
|
||||
integrity "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA= sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw=="
|
||||
|
||||
buffer-from@^1.0.0, buffer-from@^1.1.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
|
||||
integrity "sha1-KxRqb9cugLT1XSVfNe1Zo6mkG9U= sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
|
||||
|
||||
camelcase@^6.0.0:
|
||||
version "6.2.0"
|
||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
|
||||
integrity "sha1-kkr4gcnVJaydh/QNlk5c6pgqGAk= sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg=="
|
||||
|
||||
chai@^4.3.4:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49"
|
||||
integrity "sha1-tV5lWzHh6scJm+TAjCGWT84ubEk= sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA=="
|
||||
dependencies:
|
||||
assertion-error "^1.1.0"
|
||||
check-error "^1.0.2"
|
||||
deep-eql "^3.0.1"
|
||||
get-func-name "^2.0.0"
|
||||
pathval "^1.1.1"
|
||||
type-detect "^4.0.5"
|
||||
|
||||
chalk@^4.1.0:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
|
||||
integrity "sha1-qsTit3NKdAhnrrFr8CqtVWoeegE= sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
|
||||
dependencies:
|
||||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
check-error@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
|
||||
integrity "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA=="
|
||||
|
||||
chokidar@3.5.2:
|
||||
version "3.5.2"
|
||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
|
||||
integrity "sha1-26OXb8rbAW9m/TZQIdkWANAcHnU= sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ=="
|
||||
dependencies:
|
||||
anymatch "~3.1.2"
|
||||
braces "~3.0.2"
|
||||
glob-parent "~5.1.2"
|
||||
is-binary-path "~2.1.0"
|
||||
is-glob "~4.0.1"
|
||||
normalize-path "~3.0.0"
|
||||
readdirp "~3.6.0"
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
chownr@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
|
||||
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
|
||||
|
||||
cliui@^7.0.2:
|
||||
version "7.0.4"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
|
||||
integrity "sha1-oCZe5lVHb8gHrqnfPfjfd4OAi08= sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="
|
||||
dependencies:
|
||||
string-width "^4.2.0"
|
||||
strip-ansi "^6.0.0"
|
||||
wrap-ansi "^7.0.0"
|
||||
|
||||
color-convert@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
|
||||
integrity "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM= sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
|
||||
dependencies:
|
||||
color-name "~1.1.4"
|
||||
|
||||
color-name@~1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||
integrity "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
integrity "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
|
||||
|
||||
debug@4.3.1:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
|
||||
integrity "sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4= sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ=="
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
decamelize@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837"
|
||||
integrity "sha1-qkcte/Zg6xXzSU79UxyrfypwmDc= sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ=="
|
||||
|
||||
deep-eql@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
|
||||
integrity "sha1-38lARACtHI/gI+faHfHBR8S0RN8= sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw=="
|
||||
dependencies:
|
||||
type-detect "^4.0.0"
|
||||
|
||||
diff@5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
|
||||
integrity "sha1-ftatdthZ0DB4fsNYVfWx2vMdhSs= sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w=="
|
||||
|
||||
diff@^3.1.0:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
|
||||
integrity "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI= sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA=="
|
||||
|
||||
emoji-regex@^8.0.0:
|
||||
version "8.0.0"
|
||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
|
||||
integrity "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc= sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
||||
|
||||
escalade@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
|
||||
integrity "sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA= sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
|
||||
|
||||
escape-string-regexp@4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
|
||||
integrity "sha1-FLqDpdNz49MR5a/KKc9b+tllvzQ= sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
|
||||
|
||||
fill-range@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
|
||||
integrity "sha1-GRmmp8df44ssfHflGYU12prN2kA= sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ=="
|
||||
dependencies:
|
||||
to-regex-range "^5.0.1"
|
||||
|
||||
find-up@5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
|
||||
integrity "sha1-TJKBnstwg1YeT0okCoa+UZj1Nvw= sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="
|
||||
dependencies:
|
||||
locate-path "^6.0.0"
|
||||
path-exists "^4.0.0"
|
||||
|
||||
flat@^5.0.2:
|
||||
version "5.0.2"
|
||||
resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
|
||||
integrity "sha1-jKb+MyBp/6nTJMMnGYxZglnOskE= sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="
|
||||
|
||||
fs-minipass@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
|
||||
integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
|
||||
dependencies:
|
||||
minipass "^3.0.0"
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
integrity "sha1-FQStJSMVjKpA20onh8sBQRmU6k8= sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
|
||||
|
||||
fsevents@~2.3.2:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
|
||||
integrity "sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro= sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="
|
||||
|
||||
get-caller-file@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
||||
integrity "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34= sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
|
||||
|
||||
get-func-name@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
|
||||
integrity "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig=="
|
||||
|
||||
glob-parent@~5.1.2:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
||||
integrity "sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ= sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
|
||||
dependencies:
|
||||
is-glob "^4.0.1"
|
||||
|
||||
glob@7.1.7:
|
||||
version "7.1.7"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
|
||||
integrity "sha1-Oxk+kjPwHULQs/eClLvutBj5SpA= sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ=="
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^3.0.4"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
google-protobuf@^3.17.3:
|
||||
version "3.21.0"
|
||||
resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.21.0.tgz#8dfa3fca16218618d373d414d3c1139e28034d6e"
|
||||
integrity sha512-byR7MBTK4tZ5PZEb+u5ZTzpt4SfrTxv5682MjPlHN16XeqgZE2/8HOIWeiXe8JKnT9OVbtBGhbq8mtvkK8cd5g==
|
||||
|
||||
growl@1.10.5:
|
||||
version "1.10.5"
|
||||
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
|
||||
integrity "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4= sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA=="
|
||||
|
||||
grpc-web@^1.3.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/grpc-web/-/grpc-web-1.3.1.tgz#6d8affe75a103790b7ad570824e765a1d6a418e4"
|
||||
integrity sha512-VxyYEAGsatecAFY3xieRDzsuhm92yQBsJD7fd5Z3MY150hZWPwkrUWetzJ0QK5W0uym4+VedPQrei38wk0eIjQ==
|
||||
|
||||
has-flag@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
|
||||
integrity "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s= sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
|
||||
|
||||
he@1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
||||
integrity "sha1-hK5l+n6vsWX922FWauFLrwVmTw8= sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
integrity "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="
|
||||
dependencies:
|
||||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
||||
inherits@2:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
|
||||
is-binary-path@~2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
|
||||
integrity "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk= sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="
|
||||
dependencies:
|
||||
binary-extensions "^2.0.0"
|
||||
|
||||
is-extglob@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
|
||||
integrity "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
|
||||
|
||||
is-fullwidth-code-point@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
|
||||
integrity "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w=="
|
||||
|
||||
is-fullwidth-code-point@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
|
||||
integrity "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0= sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
||||
|
||||
is-glob@^4.0.1, is-glob@~4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
|
||||
integrity "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw= sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg=="
|
||||
dependencies:
|
||||
is-extglob "^2.1.1"
|
||||
|
||||
is-number@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
||||
integrity "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss= sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
|
||||
|
||||
is-plain-obj@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
|
||||
integrity "sha1-ReQuN/zPH0Dajl927iFRWEDAkoc= sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="
|
||||
|
||||
is-unicode-supported@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
|
||||
integrity "sha1-PybHaoCVk7Ur+i7LVxDtJ3m1Iqc= sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="
|
||||
|
||||
isexe@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
integrity "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
|
||||
|
||||
js-yaml@4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
|
||||
integrity "sha1-wftl+PUBeQHN0slRhkuhhFihBgI= sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="
|
||||
dependencies:
|
||||
argparse "^2.0.1"
|
||||
|
||||
json5@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
|
||||
integrity "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4= sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow=="
|
||||
dependencies:
|
||||
minimist "^1.2.0"
|
||||
|
||||
kurtosis-module-api-lib@0.23.0:
|
||||
version "0.23.0"
|
||||
resolved "https://registry.yarnpkg.com/kurtosis-module-api-lib/-/kurtosis-module-api-lib-0.23.0.tgz#3865d4e0d6dc2b782a94ec3b6bcef24c24568482"
|
||||
integrity sha512-9PwLrgRPHZhODQmSihnxQJe/glhG+0aEprNI3Su5e3eDjgK2SCvcFlzonm6qL16a0eBx/03eWZHHvtAK//9VEQ==
|
||||
dependencies:
|
||||
kurtosis-sdk "0.49.6"
|
||||
loglevel "^1.7.1"
|
||||
minimal-grpc-server "0.6.0"
|
||||
neverthrow "^4.2.2"
|
||||
|
||||
kurtosis-sdk@0.49.6:
|
||||
version "0.49.6"
|
||||
resolved "https://registry.yarnpkg.com/kurtosis-sdk/-/kurtosis-sdk-0.49.6.tgz#f79dc27c2ccdd8df968f19ade805160ca103c79c"
|
||||
integrity sha512-ZBhE9KsjbjU3q8dQUUpwCB2uSqTfsttT2uYi2YHRXgRm/n8PVNR40M8/RnASE0OXNU45Bt3Ep8iyewtPn8pgoQ==
|
||||
dependencies:
|
||||
"@grpc/grpc-js" "^1.4.4"
|
||||
"@types/google-protobuf" "^3.15.5"
|
||||
"@types/path-browserify" "^1.0.0"
|
||||
"@types/semver" "^7.3.9"
|
||||
browser-or-node "^2.0.0"
|
||||
google-protobuf "^3.17.3"
|
||||
grpc-web "^1.3.0"
|
||||
loglevel "^1.7.1"
|
||||
neverthrow "^4.2.2"
|
||||
path-browserify "^1.0.1"
|
||||
semver "^7.3.5"
|
||||
tar "^6.1.11"
|
||||
|
||||
locate-path@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
|
||||
integrity "sha1-VTIeswn+u8WcSAHZMackUqaB0oY= sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="
|
||||
dependencies:
|
||||
p-locate "^5.0.0"
|
||||
|
||||
lodash.camelcase@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
|
||||
integrity "sha1-soqmKIorn8ZRA1x3EfZathkDMaY= sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
|
||||
|
||||
log-symbols@4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
|
||||
integrity "sha1-P727lbRoOsn8eFER55LlWNSr1QM= sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="
|
||||
dependencies:
|
||||
chalk "^4.1.0"
|
||||
is-unicode-supported "^0.1.0"
|
||||
|
||||
loglevel@^1.7.1:
|
||||
version "1.7.1"
|
||||
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
|
||||
integrity "sha1-AF/eL15uRwaPk1/yhXPhJe9y8Zc= sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw=="
|
||||
|
||||
long@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
|
||||
integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
|
||||
|
||||
lru-cache@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
|
||||
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
make-error@^1.1.1:
|
||||
version "1.3.6"
|
||||
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
|
||||
integrity "sha1-LrLjfqm2fEiR9oShOUeZr0hM96I= sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
|
||||
|
||||
minimal-grpc-server@0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/minimal-grpc-server/-/minimal-grpc-server-0.6.0.tgz#d0f03db957ad066f74e3d9f910654037f7d71dbe"
|
||||
integrity sha512-1EL4cJbyW/h9dfzQ9g6eNhkl7/O6Yz6HOfMZHcYnH0NUIRSfXHpPj27FpeX4Mwdcp2Qi5yDCtBllmt4D//19PQ==
|
||||
dependencies:
|
||||
"@grpc/grpc-js" "^1.4.4"
|
||||
loglevel "^1.7.1"
|
||||
neverthrow "^4.2.2"
|
||||
|
||||
minimatch@3.0.4, minimatch@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||
integrity "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM= sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimist@^1.2.0, minimist@^1.2.5:
|
||||
version "1.2.5"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
||||
integrity "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI= sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
||||
|
||||
minipass@^3.0.0:
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae"
|
||||
integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
minizlib@^2.1.1:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
|
||||
integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
|
||||
dependencies:
|
||||
minipass "^3.0.0"
|
||||
yallist "^4.0.0"
|
||||
|
||||
mkdirp@^0.5.1:
|
||||
version "0.5.5"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
|
||||
integrity "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8= sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ=="
|
||||
dependencies:
|
||||
minimist "^1.2.5"
|
||||
|
||||
mkdirp@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
||||
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
||||
|
||||
mocha@^9.1.0:
|
||||
version "9.1.0"
|
||||
resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.0.tgz#0a7aa6fc4f59d1015d4e11747d9104b752553c67"
|
||||
integrity "sha1-Cnqm/E9Z0QFdThF0fZEEt1JVPGc= sha512-Kjg/XxYOFFUi0h/FwMOeb6RoroiZ+P1yOfya6NK7h3dNhahrJx1r2XIT3ge4ZQvJM86mdjNA+W5phqRQh7DwCg=="
|
||||
dependencies:
|
||||
"@ungap/promise-all-settled" "1.1.2"
|
||||
ansi-colors "4.1.1"
|
||||
browser-stdout "1.3.1"
|
||||
chokidar "3.5.2"
|
||||
debug "4.3.1"
|
||||
diff "5.0.0"
|
||||
escape-string-regexp "4.0.0"
|
||||
find-up "5.0.0"
|
||||
glob "7.1.7"
|
||||
growl "1.10.5"
|
||||
he "1.2.0"
|
||||
js-yaml "4.1.0"
|
||||
log-symbols "4.1.0"
|
||||
minimatch "3.0.4"
|
||||
ms "2.1.3"
|
||||
nanoid "3.1.23"
|
||||
serialize-javascript "6.0.0"
|
||||
strip-json-comments "3.1.1"
|
||||
supports-color "8.1.1"
|
||||
which "2.0.2"
|
||||
wide-align "1.1.3"
|
||||
workerpool "6.1.5"
|
||||
yargs "16.2.0"
|
||||
yargs-parser "20.2.4"
|
||||
yargs-unparser "2.0.0"
|
||||
|
||||
ms@2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
||||
integrity "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk= sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
|
||||
ms@2.1.3:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||
integrity "sha1-V0yBOM4dK1hh8LRFedut1gxmFbI= sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||
|
||||
nanoid@3.1.23:
|
||||
version "3.1.23"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81"
|
||||
integrity "sha1-90QIbOfCvEfuCoRyV01ceOQYOoE= sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw=="
|
||||
|
||||
neverthrow@^4.2.2:
|
||||
version "4.2.2"
|
||||
resolved "https://registry.yarnpkg.com/neverthrow/-/neverthrow-4.2.2.tgz#cf333a8ab37398bc0c7a0349b9ea3c67de0ff880"
|
||||
integrity "sha1-zzM6irNzmLwMegNJueo8Z94P+IA= sha512-zmJ1Oo368VlI7Fp2p+uD3ekkEEYzHr4ZlTE/4vfjA+TPtstftvJ3meIS2EReKy604wVXb+N+8XtwN98Mc1jJsA=="
|
||||
|
||||
normalize-path@^3.0.0, normalize-path@~3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
||||
integrity "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU= sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
|
||||
|
||||
once@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
integrity "sha1-WDsap3WWHUsROsF9nFC6753Xa9E= sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="
|
||||
dependencies:
|
||||
wrappy "1"
|
||||
|
||||
p-limit@^3.0.2:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
|
||||
integrity "sha1-4drMvnjQ0TiMoYxk/qOOPlfjcGs= sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="
|
||||
dependencies:
|
||||
yocto-queue "^0.1.0"
|
||||
|
||||
p-locate@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
|
||||
integrity "sha1-g8gxXGeFAF470CGDlBHJ4RDm2DQ= sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="
|
||||
dependencies:
|
||||
p-limit "^3.0.2"
|
||||
|
||||
path-browserify@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
|
||||
integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
|
||||
|
||||
path-exists@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
|
||||
integrity "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM= sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
|
||||
|
||||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
integrity "sha1-F0uSaHNVNP+8es5r9TpanhtcX18= sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
|
||||
|
||||
pathval@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
|
||||
integrity "sha1-hTTnenfOesWiUS6iHg/bj89sPY0= sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ=="
|
||||
|
||||
picomatch@^2.0.4, picomatch@^2.2.1:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
|
||||
integrity "sha1-8fBh3o9qS/AiiS4tEoI0+5gwKXI= sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw=="
|
||||
|
||||
protobufjs@^6.10.0:
|
||||
version "6.11.2"
|
||||
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b"
|
||||
integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==
|
||||
dependencies:
|
||||
"@protobufjs/aspromise" "^1.1.2"
|
||||
"@protobufjs/base64" "^1.1.2"
|
||||
"@protobufjs/codegen" "^2.0.4"
|
||||
"@protobufjs/eventemitter" "^1.1.0"
|
||||
"@protobufjs/fetch" "^1.1.0"
|
||||
"@protobufjs/float" "^1.0.2"
|
||||
"@protobufjs/inquire" "^1.1.0"
|
||||
"@protobufjs/path" "^1.1.2"
|
||||
"@protobufjs/pool" "^1.1.0"
|
||||
"@protobufjs/utf8" "^1.1.0"
|
||||
"@types/long" "^4.0.1"
|
||||
"@types/node" ">=13.7.0"
|
||||
long "^4.0.0"
|
||||
|
||||
randombytes@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
|
||||
integrity "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo= sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="
|
||||
dependencies:
|
||||
safe-buffer "^5.1.0"
|
||||
|
||||
readdirp@~3.6.0:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
|
||||
integrity "sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc= sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="
|
||||
dependencies:
|
||||
picomatch "^2.2.1"
|
||||
|
||||
require-directory@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
||||
integrity "sha1-jGStX9MNqxyXbiNE/+f3kqam30I= sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
|
||||
|
||||
safe-buffer@^5.1.0:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
||||
integrity "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY= sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
||||
|
||||
semver@^7.3.5:
|
||||
version "7.3.7"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
|
||||
integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
serialize-javascript@6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
|
||||
integrity "sha1-765diPRdeSQUHai1w6en5mP+/rg= sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag=="
|
||||
dependencies:
|
||||
randombytes "^2.1.0"
|
||||
|
||||
source-map-support@^0.5.6:
|
||||
version "0.5.19"
|
||||
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
|
||||
integrity "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE= sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw=="
|
||||
dependencies:
|
||||
buffer-from "^1.0.0"
|
||||
source-map "^0.6.0"
|
||||
|
||||
source-map@^0.6.0:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
integrity "sha1-dHIq8y6WFOnCh6jQu95IteLxomM= sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
||||
|
||||
"string-width@^1.0.2 || 2":
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
|
||||
integrity "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4= sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw=="
|
||||
dependencies:
|
||||
is-fullwidth-code-point "^2.0.0"
|
||||
strip-ansi "^4.0.0"
|
||||
|
||||
string-width@^4.1.0, string-width@^4.2.0:
|
||||
version "4.2.2"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5"
|
||||
integrity "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU= sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA=="
|
||||
dependencies:
|
||||
emoji-regex "^8.0.0"
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
strip-ansi@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
|
||||
integrity "sha1-qEeQIusaw2iocTibY1JixQXuNo8= sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow=="
|
||||
dependencies:
|
||||
ansi-regex "^3.0.0"
|
||||
|
||||
strip-ansi@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
|
||||
integrity "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI= sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w=="
|
||||
dependencies:
|
||||
ansi-regex "^5.0.0"
|
||||
|
||||
strip-bom@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
|
||||
integrity "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="
|
||||
|
||||
strip-json-comments@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
|
||||
integrity "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY= sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
|
||||
|
||||
supports-color@8.1.1:
|
||||
version "8.1.1"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
|
||||
integrity "sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw= sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="
|
||||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
supports-color@^7.1.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
|
||||
integrity "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo= sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
|
||||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
tar@^6.1.11:
|
||||
version "6.1.11"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
|
||||
integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
|
||||
dependencies:
|
||||
chownr "^2.0.0"
|
||||
fs-minipass "^2.0.0"
|
||||
minipass "^3.0.0"
|
||||
minizlib "^2.1.1"
|
||||
mkdirp "^1.0.3"
|
||||
yallist "^4.0.0"
|
||||
|
||||
to-regex-range@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
|
||||
integrity "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ= sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="
|
||||
dependencies:
|
||||
is-number "^7.0.0"
|
||||
|
||||
ts-mocha@^9.0.2:
|
||||
version "9.0.2"
|
||||
resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-9.0.2.tgz#c1ef0248874d04a0f26dd9bd8d88e617a8d82ab1"
|
||||
integrity sha512-WyQjvnzwrrubl0JT7EC1yWmNpcsU3fOuBFfdps30zbmFBgKniSaSOyZMZx+Wq7kytUs5CY+pEbSYEbGfIKnXTw==
|
||||
dependencies:
|
||||
ts-node "7.0.1"
|
||||
optionalDependencies:
|
||||
tsconfig-paths "^3.5.0"
|
||||
|
||||
ts-node@7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf"
|
||||
integrity "sha1-lWLcLR5tJI0kvFX3c+P2FDN9m68= sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw=="
|
||||
dependencies:
|
||||
arrify "^1.0.0"
|
||||
buffer-from "^1.1.0"
|
||||
diff "^3.1.0"
|
||||
make-error "^1.1.1"
|
||||
minimist "^1.2.0"
|
||||
mkdirp "^0.5.1"
|
||||
source-map-support "^0.5.6"
|
||||
yn "^2.0.0"
|
||||
|
||||
tsconfig-paths@^3.5.0:
|
||||
version "3.11.0"
|
||||
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36"
|
||||
integrity "sha1-lUwf6XPaYznHjgawPOLkiBC2XzY= sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA=="
|
||||
dependencies:
|
||||
"@types/json5" "^0.0.29"
|
||||
json5 "^1.0.1"
|
||||
minimist "^1.2.0"
|
||||
strip-bom "^3.0.0"
|
||||
|
||||
type-detect@^4.0.0, type-detect@^4.0.5:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
|
||||
integrity "sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw= sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="
|
||||
|
||||
typescript@^4.3.5:
|
||||
version "4.3.5"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4"
|
||||
integrity "sha1-TRw3zBbok5c8RaBohrcRMjTxGfQ= sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA=="
|
||||
|
||||
which@2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
|
||||
integrity "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE= sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
wide-align@1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
|
||||
integrity "sha1-rgdOa9wMFKQx6ATmJFScYzsABFc= sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA=="
|
||||
dependencies:
|
||||
string-width "^1.0.2 || 2"
|
||||
|
||||
workerpool@6.1.5:
|
||||
version "6.1.5"
|
||||
resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581"
|
||||
integrity "sha1-D3zwdrYhX9fh2pA/9vIt3RiGtYE= sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw=="
|
||||
|
||||
wrap-ansi@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||
integrity "sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM= sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="
|
||||
dependencies:
|
||||
ansi-styles "^4.0.0"
|
||||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
integrity "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
||||
|
||||
y18n@^5.0.5:
|
||||
version "5.0.8"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
|
||||
integrity "sha1-f0k00PfKjFb5UxSTndzS3ZHOHVU= sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
|
||||
|
||||
yallist@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
|
||||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
||||
|
||||
yargs-parser@20.2.4:
|
||||
version "20.2.4"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
|
||||
integrity "sha1-tCiQ8UVmeW+Fro46JSkNIF8VSlQ= sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA=="
|
||||
|
||||
yargs-parser@^20.2.2:
|
||||
version "20.2.9"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
|
||||
integrity "sha1-LrfcOwKJcY/ClfNidThFxBoMlO4= sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
|
||||
|
||||
yargs-unparser@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
|
||||
integrity "sha1-8TH5ImkRrl2a04xDL+gJNmwjJes= sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA=="
|
||||
dependencies:
|
||||
camelcase "^6.0.0"
|
||||
decamelize "^4.0.0"
|
||||
flat "^5.0.2"
|
||||
is-plain-obj "^2.1.0"
|
||||
|
||||
yargs@16.2.0, yargs@^16.1.1:
|
||||
version "16.2.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
|
||||
integrity "sha1-HIK/D2tqZur85+8w43b0mhJHf2Y= sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="
|
||||
dependencies:
|
||||
cliui "^7.0.2"
|
||||
escalade "^3.1.1"
|
||||
get-caller-file "^2.0.5"
|
||||
require-directory "^2.1.1"
|
||||
string-width "^4.2.0"
|
||||
y18n "^5.0.5"
|
||||
yargs-parser "^20.2.2"
|
||||
|
||||
yn@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"
|
||||
integrity "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo= sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ=="
|
||||
|
||||
yocto-queue@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
integrity "sha1-ApTrPe4FAo0x7hpfosVWpqrxChs= sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
|
Loading…
Reference in New Issue