mirror of
https://github.com/chirpstack/chirpstack.git
synced 2025-04-17 20:50:14 +00:00
Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
ea0f84b93d | |||
091e3b0f97 | |||
4d000b92e9 | |||
2abc85afa6 | |||
1867140272 | |||
e81e57a020 | |||
709731ab6e | |||
700a7de19f | |||
3466ec47df | |||
bb188949df | |||
f17250c37f | |||
69b3d4a38e |
Cargo.lockDockerfileDockerfile-develMakefile
api
Dockerfile-rust
go/api
grpc-web
api
internal_grpc_web_pb.d.tsinternal_grpc_web_pb.jsinternal_pb.d.tsinternal_pb.jstenant_pb.d.tstenant_pb.js
google/api
package.jsonjs
md/api
proto/api
python
proto/chirpstack-api/api
src
rust
backend
chirpstack
Cargo.toml
src
adr
api
config.rsdownlink
gpstime.rsintegration/loracloud
maccommand
dev_status.rsdevice_mode_ind.rsdevice_time.rslink_check.rsping_slot_info.rsrejoin_param_setup.rsrekey.rsreset.rsrx_param_setup.rsrx_timing_setup.rstx_param_setup.rs
main.rsstorage
api_key.rsapplication.rsdevice.rsdevice_profile.rsdevice_profile_template.rsdevice_queue.rsfields.rsgateway.rsmetrics.rsmulticast.rstenant.rsuser.rs
uplink
lrwn
ui
1152
Cargo.lock
generated
1152
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -15,7 +15,7 @@ RUN cd $PROJECT_PATH/ui && \
|
||||
|
||||
|
||||
# ChirpStack build stage
|
||||
FROM --platform=$BUILDPLATFORM rust:1.62.0-buster AS rust-build
|
||||
FROM --platform=$BUILDPLATFORM rust:1.64.0-buster AS rust-build
|
||||
|
||||
ENV PROJECT_PATH=/chirpstack
|
||||
RUN mkdir -p $PROJECT_PATH
|
||||
@ -32,6 +32,7 @@ RUN apt-get update && \
|
||||
clang \
|
||||
libclang-dev \
|
||||
jq \
|
||||
protobuf-compiler \
|
||||
gcc-arm-linux-gnueabihf \
|
||||
g++-arm-linux-gnueabihf \
|
||||
gcc-aarch64-linux-gnu \
|
||||
|
@ -1,4 +1,4 @@
|
||||
FROM rust:1.62.0-buster
|
||||
FROM rust:1.64.0-buster
|
||||
|
||||
ENV PROJECT_PATH=/chirpstack
|
||||
RUN mkdir -p $PROJECT_PATH
|
||||
@ -22,6 +22,7 @@ RUN apt-get update && \
|
||||
libclang-dev \
|
||||
golang-cfssl \
|
||||
jq \
|
||||
protobuf-compiler \
|
||||
gcc-arm-linux-gnueabihf \
|
||||
g++-arm-linux-gnueabihf \
|
||||
gcc-aarch64-linux-gnu \
|
||||
@ -33,7 +34,7 @@ RUN rustup component add rustfmt clippy
|
||||
RUN rustup target add armv7-unknown-linux-gnueabihf
|
||||
RUN rustup target add aarch64-unknown-linux-gnu
|
||||
|
||||
RUN cargo install diesel_cli --version 2.0.0-rc.1 --no-default-features --features postgres
|
||||
RUN cargo install diesel_cli --version 2.0.0 --no-default-features --features postgres
|
||||
RUN cargo install cargo-deb
|
||||
RUN cargo install cargo-rpm
|
||||
RUN cargo install cargo-bitbake
|
||||
|
2
Makefile
2
Makefile
@ -15,6 +15,8 @@ version:
|
||||
sed -i 's/"version.*/"version": "$(VERSION)",/g' ./api/js/package.json
|
||||
sed -i 's/version.*/version = "$(VERSION)",/g' ./api/python/src/setup.py
|
||||
sed -i 's/^version.*/version = "$(VERSION)"/g' ./api/rust/Cargo.toml
|
||||
cd api && make
|
||||
make build-ui
|
||||
make test
|
||||
git add .
|
||||
git commit -v -m "Bump version to $(VERSION)"
|
||||
|
4
api/Dockerfile-rust
vendored
4
api/Dockerfile-rust
vendored
@ -1,8 +1,8 @@
|
||||
FROM rust:1.56
|
||||
FROM rust:1.64
|
||||
|
||||
ENV PROJECT_PATH=/chirpstack/api
|
||||
RUN apt-get update && \
|
||||
apt-get install -y make cmake git bash && \
|
||||
apt-get install -y make cmake git bash protobuf-compiler && \
|
||||
apt-get clean
|
||||
|
||||
RUN git clone https://github.com/googleapis/googleapis.git /googleapis
|
||||
|
1040
api/go/api/internal.pb.go
vendored
1040
api/go/api/internal.pb.go
vendored
File diff suppressed because it is too large
Load Diff
76
api/go/api/internal_grpc.pb.go
vendored
76
api/go/api/internal_grpc.pb.go
vendored
@ -49,6 +49,10 @@ type InternalServiceClient interface {
|
||||
StreamDeviceFrames(ctx context.Context, in *StreamDeviceFramesRequest, opts ...grpc.CallOption) (InternalService_StreamDeviceFramesClient, error)
|
||||
// Stream events for the given Device EUI.
|
||||
StreamDeviceEvents(ctx context.Context, in *StreamDeviceEventsRequest, opts ...grpc.CallOption) (InternalService_StreamDeviceEventsClient, error)
|
||||
// ListRegions lists the available (configured) regions.
|
||||
ListRegions(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ListRegionsResponse, error)
|
||||
// GetRegion returns the region details for the given region.
|
||||
GetRegion(ctx context.Context, in *GetRegionRequest, opts ...grpc.CallOption) (*GetRegionResponse, error)
|
||||
}
|
||||
|
||||
type internalServiceClient struct {
|
||||
@ -245,6 +249,24 @@ func (x *internalServiceStreamDeviceEventsClient) Recv() (*LogItem, error) {
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func (c *internalServiceClient) ListRegions(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ListRegionsResponse, error) {
|
||||
out := new(ListRegionsResponse)
|
||||
err := c.cc.Invoke(ctx, "/api.InternalService/ListRegions", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *internalServiceClient) GetRegion(ctx context.Context, in *GetRegionRequest, opts ...grpc.CallOption) (*GetRegionResponse, error) {
|
||||
out := new(GetRegionResponse)
|
||||
err := c.cc.Invoke(ctx, "/api.InternalService/GetRegion", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// InternalServiceServer is the server API for InternalService service.
|
||||
// All implementations must embed UnimplementedInternalServiceServer
|
||||
// for forward compatibility
|
||||
@ -275,6 +297,10 @@ type InternalServiceServer interface {
|
||||
StreamDeviceFrames(*StreamDeviceFramesRequest, InternalService_StreamDeviceFramesServer) error
|
||||
// Stream events for the given Device EUI.
|
||||
StreamDeviceEvents(*StreamDeviceEventsRequest, InternalService_StreamDeviceEventsServer) error
|
||||
// ListRegions lists the available (configured) regions.
|
||||
ListRegions(context.Context, *emptypb.Empty) (*ListRegionsResponse, error)
|
||||
// GetRegion returns the region details for the given region.
|
||||
GetRegion(context.Context, *GetRegionRequest) (*GetRegionResponse, error)
|
||||
mustEmbedUnimplementedInternalServiceServer()
|
||||
}
|
||||
|
||||
@ -321,6 +347,12 @@ func (UnimplementedInternalServiceServer) StreamDeviceFrames(*StreamDeviceFrames
|
||||
func (UnimplementedInternalServiceServer) StreamDeviceEvents(*StreamDeviceEventsRequest, InternalService_StreamDeviceEventsServer) error {
|
||||
return status.Errorf(codes.Unimplemented, "method StreamDeviceEvents not implemented")
|
||||
}
|
||||
func (UnimplementedInternalServiceServer) ListRegions(context.Context, *emptypb.Empty) (*ListRegionsResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ListRegions not implemented")
|
||||
}
|
||||
func (UnimplementedInternalServiceServer) GetRegion(context.Context, *GetRegionRequest) (*GetRegionResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method GetRegion not implemented")
|
||||
}
|
||||
func (UnimplementedInternalServiceServer) mustEmbedUnimplementedInternalServiceServer() {}
|
||||
|
||||
// UnsafeInternalServiceServer may be embedded to opt out of forward compatibility for this service.
|
||||
@ -577,6 +609,42 @@ func (x *internalServiceStreamDeviceEventsServer) Send(m *LogItem) error {
|
||||
return x.ServerStream.SendMsg(m)
|
||||
}
|
||||
|
||||
func _InternalService_ListRegions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(emptypb.Empty)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(InternalServiceServer).ListRegions(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/api.InternalService/ListRegions",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(InternalServiceServer).ListRegions(ctx, req.(*emptypb.Empty))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _InternalService_GetRegion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(GetRegionRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(InternalServiceServer).GetRegion(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/api.InternalService/GetRegion",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(InternalServiceServer).GetRegion(ctx, req.(*GetRegionRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// InternalService_ServiceDesc is the grpc.ServiceDesc for InternalService service.
|
||||
// It's only intended for direct use with grpc.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
@ -624,6 +692,14 @@ var InternalService_ServiceDesc = grpc.ServiceDesc{
|
||||
MethodName: "GetGatewaysSummary",
|
||||
Handler: _InternalService_GetGatewaysSummary_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "ListRegions",
|
||||
Handler: _InternalService_ListRegions_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "GetRegion",
|
||||
Handler: _InternalService_GetRegion_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{
|
||||
{
|
||||
|
325
api/go/api/tenant.pb.go
vendored
325
api/go/api/tenant.pb.go
vendored
@ -559,6 +559,9 @@ type ListTenantsRequest struct {
|
||||
Offset uint32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"`
|
||||
// If set, the given string will be used to search on name.
|
||||
Search string `protobuf:"bytes,3,opt,name=search,proto3" json:"search,omitempty"`
|
||||
// If set, filters the result set to the tenants of the user.
|
||||
// Only global API keys are able to filter by this field.
|
||||
UserId string `protobuf:"bytes,4,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
|
||||
}
|
||||
|
||||
func (x *ListTenantsRequest) Reset() {
|
||||
@ -614,6 +617,13 @@ func (x *ListTenantsRequest) GetSearch() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ListTenantsRequest) GetUserId() string {
|
||||
if x != nil {
|
||||
return x.UserId
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type ListTenantsResponse struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
@ -1351,169 +1361,170 @@ var file_api_tenant_proto_rawDesc = []byte{
|
||||
0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
|
||||
0x22, 0x25, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54,
|
||||
0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x73, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a,
|
||||
0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69,
|
||||
0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20,
|
||||
0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73,
|
||||
0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x61,
|
||||
0x72, 0x63, 0x68, 0x22, 0x63, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e,
|
||||
0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f,
|
||||
0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52,
|
||||
0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x72,
|
||||
0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70,
|
||||
0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d,
|
||||
0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xc5, 0x01, 0x0a, 0x0a, 0x54, 0x65, 0x6e,
|
||||
0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e,
|
||||
0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61,
|
||||
0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
|
||||
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a,
|
||||
0x08, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
|
||||
0x07, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x64,
|
||||
0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
|
||||
0x08, 0x52, 0x0d, 0x69, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e,
|
||||
0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x61,
|
||||
0x64, 0x6d, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x47, 0x61,
|
||||
0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d,
|
||||
0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c,
|
||||
0x22, 0xc3, 0x02, 0x0a, 0x12, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c,
|
||||
0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e,
|
||||
0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61,
|
||||
0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
|
||||
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a,
|
||||
0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
|
||||
0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63,
|
||||
0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61,
|
||||
0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
|
||||
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
|
||||
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
|
||||
0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01,
|
||||
0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f,
|
||||
0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41,
|
||||
0x64, 0x6d, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63,
|
||||
0x65, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69,
|
||||
0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x10,
|
||||
0x69, 0x73, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e,
|
||||
0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61,
|
||||
0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x22, 0x48, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x54, 0x65, 0x6e,
|
||||
0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30,
|
||||
0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20,
|
||||
0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74,
|
||||
0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72,
|
||||
0x22, 0x4c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65,
|
||||
0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61,
|
||||
0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e,
|
||||
0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0xbf,
|
||||
0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72,
|
||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61,
|
||||
0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
|
||||
0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a,
|
||||
0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72,
|
||||
0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
|
||||
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
||||
0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61,
|
||||
0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
|
||||
0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
|
||||
0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74,
|
||||
0x22, 0x4b, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74,
|
||||
0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x74,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
|
||||
0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65,
|
||||
0x72, 0x52, 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x22, 0x4f, 0x0a,
|
||||
0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65,
|
||||
0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61,
|
||||
0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e,
|
||||
0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x63,
|
||||
0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72,
|
||||
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61,
|
||||
0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e,
|
||||
0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02,
|
||||
0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f,
|
||||
0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66,
|
||||
0x73, 0x65, 0x74, 0x22, 0x6b, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e,
|
||||
0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f,
|
||||
0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20,
|
||||
0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
|
||||
0x2f, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
|
||||
0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72,
|
||||
0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
|
||||
0x32, 0xa2, 0x08, 0x0a, 0x0d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69,
|
||||
0x63, 0x65, 0x12, 0x56, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x61,
|
||||
0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52,
|
||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65,
|
||||
0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||
0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x22, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f,
|
||||
0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x4f, 0x0a, 0x03, 0x47, 0x65,
|
||||
0x74, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e,
|
||||
0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47,
|
||||
0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
|
||||
0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x5f, 0x0a, 0x06, 0x55,
|
||||
0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61,
|
||||
0x72, 0x63, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04,
|
||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x63, 0x0a, 0x13,
|
||||
0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||
0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75,
|
||||
0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43,
|
||||
0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02,
|
||||
0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e,
|
||||
0x74, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c,
|
||||
0x74, 0x22, 0xc5, 0x01, 0x0a, 0x0a, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72,
|
||||
0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a,
|
||||
0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
|
||||
0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d,
|
||||
0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69,
|
||||
0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61,
|
||||
0x64, 0x6d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x44, 0x65,
|
||||
0x76, 0x69, 0x63, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f,
|
||||
0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x05, 0x20,
|
||||
0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x64,
|
||||
0x6d, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01,
|
||||
0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xc3, 0x02, 0x0a, 0x12, 0x54, 0x65,
|
||||
0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d,
|
||||
0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a,
|
||||
0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
|
||||
0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
|
||||
0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
|
||||
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
|
||||
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
|
||||
0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
|
||||
0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
|
||||
0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05,
|
||||
0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61,
|
||||
0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x06,
|
||||
0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x26, 0x0a,
|
||||
0x0f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e,
|
||||
0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
|
||||
0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x67, 0x61, 0x74, 0x65,
|
||||
0x77, 0x61, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52,
|
||||
0x0e, 0x69, 0x73, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x22,
|
||||
0x48, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e,
|
||||
0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61,
|
||||
0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x74,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x22, 0x4c, 0x0a, 0x14, 0x47, 0x65, 0x74,
|
||||
0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17,
|
||||
0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||
0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0xbf, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||
0x65, 0x12, 0x30, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72,
|
||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e,
|
||||
0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55,
|
||||
0x73, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
|
||||
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
|
||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
|
||||
0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39,
|
||||
0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01,
|
||||
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
|
||||
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x4b, 0x0a, 0x17, 0x55, 0x70, 0x64,
|
||||
0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75,
|
||||
0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
|
||||
0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x74, 0x65, 0x6e, 0x61,
|
||||
0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x22, 0x4f, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
|
||||
0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17,
|
||||
0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||
0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x63, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14,
|
||||
0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c,
|
||||
0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03,
|
||||
0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x6b, 0x0a, 0x17,
|
||||
0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52,
|
||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c,
|
||||
0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x6f,
|
||||
0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75,
|
||||
0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65,
|
||||
0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x32, 0xa2, 0x08, 0x0a, 0x0d, 0x54, 0x65,
|
||||
0x6e, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, 0x0a, 0x06, 0x43,
|
||||
0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61,
|
||||
0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||
0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
|
||||
0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x1a,
|
||||
0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x55, 0x0a, 0x06,
|
||||
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c,
|
||||
0x65, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||
0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13,
|
||||
0x2a, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b,
|
||||
0x69, 0x64, 0x7d, 0x12, 0x4f, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x61, 0x70,
|
||||
0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14,
|
||||
0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e,
|
||||
0x61, 0x6e, 0x74, 0x73, 0x12, 0x73, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12,
|
||||
0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55,
|
||||
0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
|
||||
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
|
||||
0x74, 0x79, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x22, 0x2a, 0x2f, 0x61, 0x70, 0x69,
|
||||
0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
|
||||
0x5f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d,
|
||||
0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x72, 0x0a, 0x07, 0x47, 0x65, 0x74,
|
||||
0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65,
|
||||
0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||
0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55,
|
||||
0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4,
|
||||
0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
|
||||
0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73,
|
||||
0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8f, 0x01,
|
||||
0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61,
|
||||
0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55,
|
||||
0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
|
||||
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
|
||||
0x74, 0x79, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x1a, 0x40, 0x2f, 0x61, 0x70, 0x69,
|
||||
0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
|
||||
0x5f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d,
|
||||
0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75,
|
||||
0x73, 0x65, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12,
|
||||
0x74, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e,
|
||||
0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74,
|
||||
0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
|
||||
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
|
||||
0x70, 0x74, 0x79, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x2a, 0x28, 0x2f, 0x61, 0x70,
|
||||
0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e,
|
||||
0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65,
|
||||
0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x6e, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65,
|
||||
0x72, 0x73, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e,
|
||||
0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||
0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74,
|
||||
0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82,
|
||||
0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61,
|
||||
0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f,
|
||||
0x75, 0x73, 0x65, 0x72, 0x73, 0x42, 0x54, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72,
|
||||
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0d, 0x49, 0x6e, 0x74, 0x65,
|
||||
0x72, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74,
|
||||
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61,
|
||||
0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70,
|
||||
0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x33,
|
||||
0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61,
|
||||
0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93,
|
||||
0x02, 0x11, 0x22, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73,
|
||||
0x3a, 0x01, 0x2a, 0x12, 0x4f, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69,
|
||||
0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e,
|
||||
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02,
|
||||
0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f,
|
||||
0x7b, 0x69, 0x64, 0x7d, 0x12, 0x5f, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x18,
|
||||
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e,
|
||||
0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
|
||||
0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x1a, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x69,
|
||||
0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x55, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12,
|
||||
0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61,
|
||||
0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
|
||||
0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f,
|
||||
0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x4f, 0x0a, 0x04,
|
||||
0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e,
|
||||
0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52,
|
||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12,
|
||||
0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x73, 0x0a,
|
||||
0x07, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41,
|
||||
0x64, 0x64, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x35, 0x82, 0xd3, 0xe4,
|
||||
0x93, 0x02, 0x2f, 0x22, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
|
||||
0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x74,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x3a,
|
||||
0x01, 0x2a, 0x12, 0x72, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e,
|
||||
0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65,
|
||||
0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47,
|
||||
0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70,
|
||||
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x61,
|
||||
0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61,
|
||||
0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73,
|
||||
0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8f, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74,
|
||||
0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61,
|
||||
0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0x82, 0xd3, 0xe4,
|
||||
0x93, 0x02, 0x45, 0x1a, 0x40, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74,
|
||||
0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x74,
|
||||
0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f,
|
||||
0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x75, 0x73, 0x65,
|
||||
0x72, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x74, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65,
|
||||
0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c,
|
||||
0x65, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x30, 0x82, 0xd3,
|
||||
0xe4, 0x93, 0x02, 0x2a, 0x2a, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e,
|
||||
0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75,
|
||||
0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x6e,
|
||||
0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x2e, 0x61, 0x70,
|
||||
0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72,
|
||||
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c,
|
||||
0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65,
|
||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e,
|
||||
0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65,
|
||||
0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x42, 0x54,
|
||||
0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e,
|
||||
0x61, 0x70, 0x69, 0x42, 0x0d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
|
||||
0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72,
|
||||
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34,
|
||||
0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
|
24
api/grpc-web/api/internal_grpc_web_pb.d.ts
vendored
24
api/grpc-web/api/internal_grpc_web_pb.d.ts
vendored
@ -94,6 +94,20 @@ export class InternalServiceClient {
|
||||
metadata?: grpcWeb.Metadata
|
||||
): grpcWeb.ClientReadableStream<api_internal_pb.LogItem>;
|
||||
|
||||
listRegions(
|
||||
request: google_protobuf_empty_pb.Empty,
|
||||
metadata: grpcWeb.Metadata | undefined,
|
||||
callback: (err: grpcWeb.Error,
|
||||
response: api_internal_pb.ListRegionsResponse) => void
|
||||
): grpcWeb.ClientReadableStream<api_internal_pb.ListRegionsResponse>;
|
||||
|
||||
getRegion(
|
||||
request: api_internal_pb.GetRegionRequest,
|
||||
metadata: grpcWeb.Metadata | undefined,
|
||||
callback: (err: grpcWeb.Error,
|
||||
response: api_internal_pb.GetRegionResponse) => void
|
||||
): grpcWeb.ClientReadableStream<api_internal_pb.GetRegionResponse>;
|
||||
|
||||
}
|
||||
|
||||
export class InternalServicePromiseClient {
|
||||
@ -166,5 +180,15 @@ export class InternalServicePromiseClient {
|
||||
metadata?: grpcWeb.Metadata
|
||||
): grpcWeb.ClientReadableStream<api_internal_pb.LogItem>;
|
||||
|
||||
listRegions(
|
||||
request: google_protobuf_empty_pb.Empty,
|
||||
metadata?: grpcWeb.Metadata
|
||||
): Promise<api_internal_pb.ListRegionsResponse>;
|
||||
|
||||
getRegion(
|
||||
request: api_internal_pb.GetRegionRequest,
|
||||
metadata?: grpcWeb.Metadata
|
||||
): Promise<api_internal_pb.GetRegionResponse>;
|
||||
|
||||
}
|
||||
|
||||
|
162
api/grpc-web/api/internal_grpc_web_pb.js
vendored
162
api/grpc-web/api/internal_grpc_web_pb.js
vendored
@ -20,6 +20,8 @@ var google_protobuf_timestamp_pb = require('google-protobuf/google/protobuf/time
|
||||
|
||||
var google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js')
|
||||
|
||||
var common_common_pb = require('../common/common_pb.js')
|
||||
|
||||
var api_user_pb = require('../api/user_pb.js')
|
||||
const proto = {};
|
||||
proto.api = require('./internal_pb.js');
|
||||
@ -1101,5 +1103,165 @@ proto.api.InternalServicePromiseClient.prototype.streamDeviceEvents =
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {!grpc.web.MethodDescriptor<
|
||||
* !proto.google.protobuf.Empty,
|
||||
* !proto.api.ListRegionsResponse>}
|
||||
*/
|
||||
const methodDescriptor_InternalService_ListRegions = new grpc.web.MethodDescriptor(
|
||||
'/api.InternalService/ListRegions',
|
||||
grpc.web.MethodType.UNARY,
|
||||
google_protobuf_empty_pb.Empty,
|
||||
proto.api.ListRegionsResponse,
|
||||
/**
|
||||
* @param {!proto.google.protobuf.Empty} request
|
||||
* @return {!Uint8Array}
|
||||
*/
|
||||
function(request) {
|
||||
return request.serializeBinary();
|
||||
},
|
||||
proto.api.ListRegionsResponse.deserializeBinary
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {!grpc.web.AbstractClientBase.MethodInfo<
|
||||
* !proto.google.protobuf.Empty,
|
||||
* !proto.api.ListRegionsResponse>}
|
||||
*/
|
||||
const methodInfo_InternalService_ListRegions = new grpc.web.AbstractClientBase.MethodInfo(
|
||||
proto.api.ListRegionsResponse,
|
||||
/**
|
||||
* @param {!proto.google.protobuf.Empty} request
|
||||
* @return {!Uint8Array}
|
||||
*/
|
||||
function(request) {
|
||||
return request.serializeBinary();
|
||||
},
|
||||
proto.api.ListRegionsResponse.deserializeBinary
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* @param {!proto.google.protobuf.Empty} request The
|
||||
* request proto
|
||||
* @param {?Object<string, string>} metadata User defined
|
||||
* call metadata
|
||||
* @param {function(?grpc.web.Error, ?proto.api.ListRegionsResponse)}
|
||||
* callback The callback function(error, response)
|
||||
* @return {!grpc.web.ClientReadableStream<!proto.api.ListRegionsResponse>|undefined}
|
||||
* The XHR Node Readable Stream
|
||||
*/
|
||||
proto.api.InternalServiceClient.prototype.listRegions =
|
||||
function(request, metadata, callback) {
|
||||
return this.client_.rpcCall(this.hostname_ +
|
||||
'/api.InternalService/ListRegions',
|
||||
request,
|
||||
metadata || {},
|
||||
methodDescriptor_InternalService_ListRegions,
|
||||
callback);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {!proto.google.protobuf.Empty} request The
|
||||
* request proto
|
||||
* @param {?Object<string, string>} metadata User defined
|
||||
* call metadata
|
||||
* @return {!Promise<!proto.api.ListRegionsResponse>}
|
||||
* Promise that resolves to the response
|
||||
*/
|
||||
proto.api.InternalServicePromiseClient.prototype.listRegions =
|
||||
function(request, metadata) {
|
||||
return this.client_.unaryCall(this.hostname_ +
|
||||
'/api.InternalService/ListRegions',
|
||||
request,
|
||||
metadata || {},
|
||||
methodDescriptor_InternalService_ListRegions);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {!grpc.web.MethodDescriptor<
|
||||
* !proto.api.GetRegionRequest,
|
||||
* !proto.api.GetRegionResponse>}
|
||||
*/
|
||||
const methodDescriptor_InternalService_GetRegion = new grpc.web.MethodDescriptor(
|
||||
'/api.InternalService/GetRegion',
|
||||
grpc.web.MethodType.UNARY,
|
||||
proto.api.GetRegionRequest,
|
||||
proto.api.GetRegionResponse,
|
||||
/**
|
||||
* @param {!proto.api.GetRegionRequest} request
|
||||
* @return {!Uint8Array}
|
||||
*/
|
||||
function(request) {
|
||||
return request.serializeBinary();
|
||||
},
|
||||
proto.api.GetRegionResponse.deserializeBinary
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {!grpc.web.AbstractClientBase.MethodInfo<
|
||||
* !proto.api.GetRegionRequest,
|
||||
* !proto.api.GetRegionResponse>}
|
||||
*/
|
||||
const methodInfo_InternalService_GetRegion = new grpc.web.AbstractClientBase.MethodInfo(
|
||||
proto.api.GetRegionResponse,
|
||||
/**
|
||||
* @param {!proto.api.GetRegionRequest} request
|
||||
* @return {!Uint8Array}
|
||||
*/
|
||||
function(request) {
|
||||
return request.serializeBinary();
|
||||
},
|
||||
proto.api.GetRegionResponse.deserializeBinary
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* @param {!proto.api.GetRegionRequest} request The
|
||||
* request proto
|
||||
* @param {?Object<string, string>} metadata User defined
|
||||
* call metadata
|
||||
* @param {function(?grpc.web.Error, ?proto.api.GetRegionResponse)}
|
||||
* callback The callback function(error, response)
|
||||
* @return {!grpc.web.ClientReadableStream<!proto.api.GetRegionResponse>|undefined}
|
||||
* The XHR Node Readable Stream
|
||||
*/
|
||||
proto.api.InternalServiceClient.prototype.getRegion =
|
||||
function(request, metadata, callback) {
|
||||
return this.client_.rpcCall(this.hostname_ +
|
||||
'/api.InternalService/GetRegion',
|
||||
request,
|
||||
metadata || {},
|
||||
methodDescriptor_InternalService_GetRegion,
|
||||
callback);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {!proto.api.GetRegionRequest} request The
|
||||
* request proto
|
||||
* @param {?Object<string, string>} metadata User defined
|
||||
* call metadata
|
||||
* @return {!Promise<!proto.api.GetRegionResponse>}
|
||||
* Promise that resolves to the response
|
||||
*/
|
||||
proto.api.InternalServicePromiseClient.prototype.getRegion =
|
||||
function(request, metadata) {
|
||||
return this.client_.unaryCall(this.hostname_ +
|
||||
'/api.InternalService/GetRegion',
|
||||
request,
|
||||
metadata || {},
|
||||
methodDescriptor_InternalService_GetRegion);
|
||||
};
|
||||
|
||||
|
||||
module.exports = proto.api;
|
||||
|
||||
|
143
api/grpc-web/api/internal_pb.d.ts
vendored
143
api/grpc-web/api/internal_pb.d.ts
vendored
@ -2,6 +2,7 @@ import * as jspb from 'google-protobuf'
|
||||
|
||||
import * as google_protobuf_timestamp_pb from 'google-protobuf/google/protobuf/timestamp_pb';
|
||||
import * as google_protobuf_empty_pb from 'google-protobuf/google/protobuf/empty_pb';
|
||||
import * as common_common_pb from '../common/common_pb';
|
||||
import * as api_user_pb from '../api/user_pb';
|
||||
|
||||
|
||||
@ -629,3 +630,145 @@ export namespace StreamDeviceEventsRequest {
|
||||
}
|
||||
}
|
||||
|
||||
export class ListRegionsResponse extends jspb.Message {
|
||||
getRegionsList(): Array<RegionListItem>;
|
||||
setRegionsList(value: Array<RegionListItem>): ListRegionsResponse;
|
||||
clearRegionsList(): ListRegionsResponse;
|
||||
addRegions(value?: RegionListItem, index?: number): RegionListItem;
|
||||
|
||||
serializeBinary(): Uint8Array;
|
||||
toObject(includeInstance?: boolean): ListRegionsResponse.AsObject;
|
||||
static toObject(includeInstance: boolean, msg: ListRegionsResponse): ListRegionsResponse.AsObject;
|
||||
static serializeBinaryToWriter(message: ListRegionsResponse, writer: jspb.BinaryWriter): void;
|
||||
static deserializeBinary(bytes: Uint8Array): ListRegionsResponse;
|
||||
static deserializeBinaryFromReader(message: ListRegionsResponse, reader: jspb.BinaryReader): ListRegionsResponse;
|
||||
}
|
||||
|
||||
export namespace ListRegionsResponse {
|
||||
export type AsObject = {
|
||||
regionsList: Array<RegionListItem.AsObject>,
|
||||
}
|
||||
}
|
||||
|
||||
export class RegionListItem extends jspb.Message {
|
||||
getName(): string;
|
||||
setName(value: string): RegionListItem;
|
||||
|
||||
getRegion(): common_common_pb.Region;
|
||||
setRegion(value: common_common_pb.Region): RegionListItem;
|
||||
|
||||
serializeBinary(): Uint8Array;
|
||||
toObject(includeInstance?: boolean): RegionListItem.AsObject;
|
||||
static toObject(includeInstance: boolean, msg: RegionListItem): RegionListItem.AsObject;
|
||||
static serializeBinaryToWriter(message: RegionListItem, writer: jspb.BinaryWriter): void;
|
||||
static deserializeBinary(bytes: Uint8Array): RegionListItem;
|
||||
static deserializeBinaryFromReader(message: RegionListItem, reader: jspb.BinaryReader): RegionListItem;
|
||||
}
|
||||
|
||||
export namespace RegionListItem {
|
||||
export type AsObject = {
|
||||
name: string,
|
||||
region: common_common_pb.Region,
|
||||
}
|
||||
}
|
||||
|
||||
export class GetRegionRequest extends jspb.Message {
|
||||
getName(): string;
|
||||
setName(value: string): GetRegionRequest;
|
||||
|
||||
serializeBinary(): Uint8Array;
|
||||
toObject(includeInstance?: boolean): GetRegionRequest.AsObject;
|
||||
static toObject(includeInstance: boolean, msg: GetRegionRequest): GetRegionRequest.AsObject;
|
||||
static serializeBinaryToWriter(message: GetRegionRequest, writer: jspb.BinaryWriter): void;
|
||||
static deserializeBinary(bytes: Uint8Array): GetRegionRequest;
|
||||
static deserializeBinaryFromReader(message: GetRegionRequest, reader: jspb.BinaryReader): GetRegionRequest;
|
||||
}
|
||||
|
||||
export namespace GetRegionRequest {
|
||||
export type AsObject = {
|
||||
name: string,
|
||||
}
|
||||
}
|
||||
|
||||
export class GetRegionResponse extends jspb.Message {
|
||||
getName(): string;
|
||||
setName(value: string): GetRegionResponse;
|
||||
|
||||
getRegion(): common_common_pb.Region;
|
||||
setRegion(value: common_common_pb.Region): GetRegionResponse;
|
||||
|
||||
getUserInfo(): string;
|
||||
setUserInfo(value: string): GetRegionResponse;
|
||||
|
||||
getUplinkChannelsList(): Array<RegionChannel>;
|
||||
setUplinkChannelsList(value: Array<RegionChannel>): GetRegionResponse;
|
||||
clearUplinkChannelsList(): GetRegionResponse;
|
||||
addUplinkChannels(value?: RegionChannel, index?: number): RegionChannel;
|
||||
|
||||
getRx1Delay(): number;
|
||||
setRx1Delay(value: number): GetRegionResponse;
|
||||
|
||||
getRx1DrOffset(): number;
|
||||
setRx1DrOffset(value: number): GetRegionResponse;
|
||||
|
||||
getRx2Dr(): number;
|
||||
setRx2Dr(value: number): GetRegionResponse;
|
||||
|
||||
getRx2Frequency(): number;
|
||||
setRx2Frequency(value: number): GetRegionResponse;
|
||||
|
||||
getClassBPingSlotDr(): number;
|
||||
setClassBPingSlotDr(value: number): GetRegionResponse;
|
||||
|
||||
getClassBPingSlotFrequency(): number;
|
||||
setClassBPingSlotFrequency(value: number): GetRegionResponse;
|
||||
|
||||
serializeBinary(): Uint8Array;
|
||||
toObject(includeInstance?: boolean): GetRegionResponse.AsObject;
|
||||
static toObject(includeInstance: boolean, msg: GetRegionResponse): GetRegionResponse.AsObject;
|
||||
static serializeBinaryToWriter(message: GetRegionResponse, writer: jspb.BinaryWriter): void;
|
||||
static deserializeBinary(bytes: Uint8Array): GetRegionResponse;
|
||||
static deserializeBinaryFromReader(message: GetRegionResponse, reader: jspb.BinaryReader): GetRegionResponse;
|
||||
}
|
||||
|
||||
export namespace GetRegionResponse {
|
||||
export type AsObject = {
|
||||
name: string,
|
||||
region: common_common_pb.Region,
|
||||
userInfo: string,
|
||||
uplinkChannelsList: Array<RegionChannel.AsObject>,
|
||||
rx1Delay: number,
|
||||
rx1DrOffset: number,
|
||||
rx2Dr: number,
|
||||
rx2Frequency: number,
|
||||
classBPingSlotDr: number,
|
||||
classBPingSlotFrequency: number,
|
||||
}
|
||||
}
|
||||
|
||||
export class RegionChannel extends jspb.Message {
|
||||
getFrequency(): number;
|
||||
setFrequency(value: number): RegionChannel;
|
||||
|
||||
getDrMin(): number;
|
||||
setDrMin(value: number): RegionChannel;
|
||||
|
||||
getDrMax(): number;
|
||||
setDrMax(value: number): RegionChannel;
|
||||
|
||||
serializeBinary(): Uint8Array;
|
||||
toObject(includeInstance?: boolean): RegionChannel.AsObject;
|
||||
static toObject(includeInstance: boolean, msg: RegionChannel): RegionChannel.AsObject;
|
||||
static serializeBinaryToWriter(message: RegionChannel, writer: jspb.BinaryWriter): void;
|
||||
static deserializeBinary(bytes: Uint8Array): RegionChannel;
|
||||
static deserializeBinaryFromReader(message: RegionChannel, reader: jspb.BinaryReader): RegionChannel;
|
||||
}
|
||||
|
||||
export namespace RegionChannel {
|
||||
export type AsObject = {
|
||||
frequency: number,
|
||||
drMin: number,
|
||||
drMax: number,
|
||||
}
|
||||
}
|
||||
|
||||
|
1182
api/grpc-web/api/internal_pb.js
vendored
1182
api/grpc-web/api/internal_pb.js
vendored
File diff suppressed because it is too large
Load Diff
4
api/grpc-web/api/tenant_pb.d.ts
vendored
4
api/grpc-web/api/tenant_pb.d.ts
vendored
@ -233,6 +233,9 @@ export class ListTenantsRequest extends jspb.Message {
|
||||
getSearch(): string;
|
||||
setSearch(value: string): ListTenantsRequest;
|
||||
|
||||
getUserId(): string;
|
||||
setUserId(value: string): ListTenantsRequest;
|
||||
|
||||
serializeBinary(): Uint8Array;
|
||||
toObject(includeInstance?: boolean): ListTenantsRequest.AsObject;
|
||||
static toObject(includeInstance: boolean, msg: ListTenantsRequest): ListTenantsRequest.AsObject;
|
||||
@ -246,6 +249,7 @@ export namespace ListTenantsRequest {
|
||||
limit: number,
|
||||
offset: number,
|
||||
search: string,
|
||||
userId: string,
|
||||
}
|
||||
}
|
||||
|
||||
|
32
api/grpc-web/api/tenant_pb.js
vendored
32
api/grpc-web/api/tenant_pb.js
vendored
@ -2110,7 +2110,8 @@ proto.api.ListTenantsRequest.toObject = function(includeInstance, msg) {
|
||||
var f, obj = {
|
||||
limit: jspb.Message.getFieldWithDefault(msg, 1, 0),
|
||||
offset: jspb.Message.getFieldWithDefault(msg, 2, 0),
|
||||
search: jspb.Message.getFieldWithDefault(msg, 3, "")
|
||||
search: jspb.Message.getFieldWithDefault(msg, 3, ""),
|
||||
userId: jspb.Message.getFieldWithDefault(msg, 4, "")
|
||||
};
|
||||
|
||||
if (includeInstance) {
|
||||
@ -2159,6 +2160,10 @@ proto.api.ListTenantsRequest.deserializeBinaryFromReader = function(msg, reader)
|
||||
var value = /** @type {string} */ (reader.readString());
|
||||
msg.setSearch(value);
|
||||
break;
|
||||
case 4:
|
||||
var value = /** @type {string} */ (reader.readString());
|
||||
msg.setUserId(value);
|
||||
break;
|
||||
default:
|
||||
reader.skipField();
|
||||
break;
|
||||
@ -2209,6 +2214,13 @@ proto.api.ListTenantsRequest.serializeBinaryToWriter = function(message, writer)
|
||||
f
|
||||
);
|
||||
}
|
||||
f = message.getUserId();
|
||||
if (f.length > 0) {
|
||||
writer.writeString(
|
||||
4,
|
||||
f
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -2266,6 +2278,24 @@ proto.api.ListTenantsRequest.prototype.setSearch = function(value) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional string user_id = 4;
|
||||
* @return {string}
|
||||
*/
|
||||
proto.api.ListTenantsRequest.prototype.getUserId = function() {
|
||||
return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {string} value
|
||||
* @return {!proto.api.ListTenantsRequest} returns this
|
||||
*/
|
||||
proto.api.ListTenantsRequest.prototype.setUserId = function(value) {
|
||||
return jspb.Message.setProto3StringField(this, 4, value);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* List of repeated fields within this message type.
|
||||
|
1
api/grpc-web/google/api/billing_pb.d.ts
vendored
1
api/grpc-web/google/api/billing_pb.d.ts
vendored
@ -1,6 +1,5 @@
|
||||
import * as jspb from 'google-protobuf'
|
||||
|
||||
import * as google_api_metric_pb from '../../google/api/metric_pb';
|
||||
|
||||
|
||||
export class Billing extends jspb.Message {
|
||||
|
2
api/grpc-web/google/api/billing_pb.js
vendored
2
api/grpc-web/google/api/billing_pb.js
vendored
@ -15,8 +15,6 @@ var jspb = require('google-protobuf');
|
||||
var goog = jspb;
|
||||
var global = Function('return this')();
|
||||
|
||||
var google_api_metric_pb = require('../../google/api/metric_pb.js');
|
||||
goog.object.extend(proto, google_api_metric_pb);
|
||||
goog.exportSymbol('proto.google.api.Billing', null, global);
|
||||
goog.exportSymbol('proto.google.api.Billing.BillingDestination', null, global);
|
||||
/**
|
||||
|
3
api/grpc-web/google/api/service_pb.d.ts
vendored
3
api/grpc-web/google/api/service_pb.d.ts
vendored
@ -8,18 +8,15 @@ import * as google_api_control_pb from '../../google/api/control_pb';
|
||||
import * as google_api_documentation_pb from '../../google/api/documentation_pb';
|
||||
import * as google_api_endpoint_pb from '../../google/api/endpoint_pb';
|
||||
import * as google_api_http_pb from '../../google/api/http_pb';
|
||||
import * as google_api_label_pb from '../../google/api/label_pb';
|
||||
import * as google_api_log_pb from '../../google/api/log_pb';
|
||||
import * as google_api_logging_pb from '../../google/api/logging_pb';
|
||||
import * as google_api_metric_pb from '../../google/api/metric_pb';
|
||||
import * as google_api_monitored_resource_pb from '../../google/api/monitored_resource_pb';
|
||||
import * as google_api_monitoring_pb from '../../google/api/monitoring_pb';
|
||||
import * as google_api_quota_pb from '../../google/api/quota_pb';
|
||||
import * as google_api_resource_pb from '../../google/api/resource_pb';
|
||||
import * as google_api_source_info_pb from '../../google/api/source_info_pb';
|
||||
import * as google_api_system_parameter_pb from '../../google/api/system_parameter_pb';
|
||||
import * as google_api_usage_pb from '../../google/api/usage_pb';
|
||||
import * as google_protobuf_any_pb from 'google-protobuf/google/protobuf/any_pb';
|
||||
import * as google_protobuf_api_pb from 'google-protobuf/google/protobuf/api_pb';
|
||||
import * as google_protobuf_type_pb from 'google-protobuf/google/protobuf/type_pb';
|
||||
import * as google_protobuf_wrappers_pb from 'google-protobuf/google/protobuf/wrappers_pb';
|
||||
|
6
api/grpc-web/google/api/service_pb.js
vendored
6
api/grpc-web/google/api/service_pb.js
vendored
@ -31,8 +31,6 @@ var google_api_endpoint_pb = require('../../google/api/endpoint_pb.js');
|
||||
goog.object.extend(proto, google_api_endpoint_pb);
|
||||
var google_api_http_pb = require('../../google/api/http_pb.js');
|
||||
goog.object.extend(proto, google_api_http_pb);
|
||||
var google_api_label_pb = require('../../google/api/label_pb.js');
|
||||
goog.object.extend(proto, google_api_label_pb);
|
||||
var google_api_log_pb = require('../../google/api/log_pb.js');
|
||||
goog.object.extend(proto, google_api_log_pb);
|
||||
var google_api_logging_pb = require('../../google/api/logging_pb.js');
|
||||
@ -45,16 +43,12 @@ var google_api_monitoring_pb = require('../../google/api/monitoring_pb.js');
|
||||
goog.object.extend(proto, google_api_monitoring_pb);
|
||||
var google_api_quota_pb = require('../../google/api/quota_pb.js');
|
||||
goog.object.extend(proto, google_api_quota_pb);
|
||||
var google_api_resource_pb = require('../../google/api/resource_pb.js');
|
||||
goog.object.extend(proto, google_api_resource_pb);
|
||||
var google_api_source_info_pb = require('../../google/api/source_info_pb.js');
|
||||
goog.object.extend(proto, google_api_source_info_pb);
|
||||
var google_api_system_parameter_pb = require('../../google/api/system_parameter_pb.js');
|
||||
goog.object.extend(proto, google_api_system_parameter_pb);
|
||||
var google_api_usage_pb = require('../../google/api/usage_pb.js');
|
||||
goog.object.extend(proto, google_api_usage_pb);
|
||||
var google_protobuf_any_pb = require('google-protobuf/google/protobuf/any_pb.js');
|
||||
goog.object.extend(proto, google_protobuf_any_pb);
|
||||
var google_protobuf_api_pb = require('google-protobuf/google/protobuf/api_pb.js');
|
||||
goog.object.extend(proto, google_protobuf_api_pb);
|
||||
var google_protobuf_type_pb = require('google-protobuf/google/protobuf/type_pb.js');
|
||||
|
2
api/grpc-web/package.json
vendored
2
api/grpc-web/package.json
vendored
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@chirpstack/chirpstack-api-grpc-web",
|
||||
"version": "4.0.0",
|
||||
"version": "4.0.1",
|
||||
"description": "Chirpstack gRPC-web API",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
|
10
api/js/api/internal_grpc_pb.d.ts
vendored
10
api/js/api/internal_grpc_pb.d.ts
vendored
@ -21,6 +21,8 @@ interface IInternalServiceService extends grpc.ServiceDefinition<grpc.UntypedSer
|
||||
streamGatewayFrames: grpc.MethodDefinition<api_internal_pb.StreamGatewayFramesRequest, api_internal_pb.LogItem>;
|
||||
streamDeviceFrames: grpc.MethodDefinition<api_internal_pb.StreamDeviceFramesRequest, api_internal_pb.LogItem>;
|
||||
streamDeviceEvents: grpc.MethodDefinition<api_internal_pb.StreamDeviceEventsRequest, api_internal_pb.LogItem>;
|
||||
listRegions: grpc.MethodDefinition<google_protobuf_empty_pb.Empty, api_internal_pb.ListRegionsResponse>;
|
||||
getRegion: grpc.MethodDefinition<api_internal_pb.GetRegionRequest, api_internal_pb.GetRegionResponse>;
|
||||
}
|
||||
|
||||
export const InternalServiceService: IInternalServiceService;
|
||||
@ -39,6 +41,8 @@ export interface IInternalServiceServer extends grpc.UntypedServiceImplementatio
|
||||
streamGatewayFrames: grpc.handleServerStreamingCall<api_internal_pb.StreamGatewayFramesRequest, api_internal_pb.LogItem>;
|
||||
streamDeviceFrames: grpc.handleServerStreamingCall<api_internal_pb.StreamDeviceFramesRequest, api_internal_pb.LogItem>;
|
||||
streamDeviceEvents: grpc.handleServerStreamingCall<api_internal_pb.StreamDeviceEventsRequest, api_internal_pb.LogItem>;
|
||||
listRegions: grpc.handleUnaryCall<google_protobuf_empty_pb.Empty, api_internal_pb.ListRegionsResponse>;
|
||||
getRegion: grpc.handleUnaryCall<api_internal_pb.GetRegionRequest, api_internal_pb.GetRegionResponse>;
|
||||
}
|
||||
|
||||
export class InternalServiceClient extends grpc.Client {
|
||||
@ -79,4 +83,10 @@ export class InternalServiceClient extends grpc.Client {
|
||||
streamDeviceFrames(argument: api_internal_pb.StreamDeviceFramesRequest, metadata?: grpc.Metadata | null, options?: grpc.CallOptions | null): grpc.ClientReadableStream<api_internal_pb.LogItem>;
|
||||
streamDeviceEvents(argument: api_internal_pb.StreamDeviceEventsRequest, metadataOrOptions?: grpc.Metadata | grpc.CallOptions | null): grpc.ClientReadableStream<api_internal_pb.LogItem>;
|
||||
streamDeviceEvents(argument: api_internal_pb.StreamDeviceEventsRequest, metadata?: grpc.Metadata | null, options?: grpc.CallOptions | null): grpc.ClientReadableStream<api_internal_pb.LogItem>;
|
||||
listRegions(argument: google_protobuf_empty_pb.Empty, callback: grpc.requestCallback<api_internal_pb.ListRegionsResponse>): grpc.ClientUnaryCall;
|
||||
listRegions(argument: google_protobuf_empty_pb.Empty, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<api_internal_pb.ListRegionsResponse>): grpc.ClientUnaryCall;
|
||||
listRegions(argument: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<api_internal_pb.ListRegionsResponse>): grpc.ClientUnaryCall;
|
||||
getRegion(argument: api_internal_pb.GetRegionRequest, callback: grpc.requestCallback<api_internal_pb.GetRegionResponse>): grpc.ClientUnaryCall;
|
||||
getRegion(argument: api_internal_pb.GetRegionRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<api_internal_pb.GetRegionResponse>): grpc.ClientUnaryCall;
|
||||
getRegion(argument: api_internal_pb.GetRegionRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<api_internal_pb.GetRegionResponse>): grpc.ClientUnaryCall;
|
||||
}
|
||||
|
58
api/js/api/internal_grpc_pb.js
vendored
58
api/js/api/internal_grpc_pb.js
vendored
@ -5,6 +5,7 @@ var grpc = require('@grpc/grpc-js');
|
||||
var api_internal_pb = require('../api/internal_pb.js');
|
||||
var google_protobuf_timestamp_pb = require('google-protobuf/google/protobuf/timestamp_pb.js');
|
||||
var google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');
|
||||
var common_common_pb = require('../common/common_pb.js');
|
||||
var api_user_pb = require('../api/user_pb.js');
|
||||
|
||||
function serialize_api_CreateApiKeyRequest(arg) {
|
||||
@ -84,6 +85,28 @@ function deserialize_api_GetGatewaysSummaryResponse(buffer_arg) {
|
||||
return api_internal_pb.GetGatewaysSummaryResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
||||
}
|
||||
|
||||
function serialize_api_GetRegionRequest(arg) {
|
||||
if (!(arg instanceof api_internal_pb.GetRegionRequest)) {
|
||||
throw new Error('Expected argument of type api.GetRegionRequest');
|
||||
}
|
||||
return Buffer.from(arg.serializeBinary());
|
||||
}
|
||||
|
||||
function deserialize_api_GetRegionRequest(buffer_arg) {
|
||||
return api_internal_pb.GetRegionRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
||||
}
|
||||
|
||||
function serialize_api_GetRegionResponse(arg) {
|
||||
if (!(arg instanceof api_internal_pb.GetRegionResponse)) {
|
||||
throw new Error('Expected argument of type api.GetRegionResponse');
|
||||
}
|
||||
return Buffer.from(arg.serializeBinary());
|
||||
}
|
||||
|
||||
function deserialize_api_GetRegionResponse(buffer_arg) {
|
||||
return api_internal_pb.GetRegionResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
||||
}
|
||||
|
||||
function serialize_api_GlobalSearchRequest(arg) {
|
||||
if (!(arg instanceof api_internal_pb.GlobalSearchRequest)) {
|
||||
throw new Error('Expected argument of type api.GlobalSearchRequest');
|
||||
@ -128,6 +151,17 @@ function deserialize_api_ListApiKeysResponse(buffer_arg) {
|
||||
return api_internal_pb.ListApiKeysResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
||||
}
|
||||
|
||||
function serialize_api_ListRegionsResponse(arg) {
|
||||
if (!(arg instanceof api_internal_pb.ListRegionsResponse)) {
|
||||
throw new Error('Expected argument of type api.ListRegionsResponse');
|
||||
}
|
||||
return Buffer.from(arg.serializeBinary());
|
||||
}
|
||||
|
||||
function deserialize_api_ListRegionsResponse(buffer_arg) {
|
||||
return api_internal_pb.ListRegionsResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
||||
}
|
||||
|
||||
function serialize_api_LogItem(arg) {
|
||||
if (!(arg instanceof api_internal_pb.LogItem)) {
|
||||
throw new Error('Expected argument of type api.LogItem');
|
||||
@ -408,6 +442,30 @@ streamDeviceEvents: {
|
||||
responseSerialize: serialize_api_LogItem,
|
||||
responseDeserialize: deserialize_api_LogItem,
|
||||
},
|
||||
// ListRegions lists the available (configured) regions.
|
||||
listRegions: {
|
||||
path: '/api.InternalService/ListRegions',
|
||||
requestStream: false,
|
||||
responseStream: false,
|
||||
requestType: google_protobuf_empty_pb.Empty,
|
||||
responseType: api_internal_pb.ListRegionsResponse,
|
||||
requestSerialize: serialize_google_protobuf_Empty,
|
||||
requestDeserialize: deserialize_google_protobuf_Empty,
|
||||
responseSerialize: serialize_api_ListRegionsResponse,
|
||||
responseDeserialize: deserialize_api_ListRegionsResponse,
|
||||
},
|
||||
// GetRegion returns the region details for the given region.
|
||||
getRegion: {
|
||||
path: '/api.InternalService/GetRegion',
|
||||
requestStream: false,
|
||||
responseStream: false,
|
||||
requestType: api_internal_pb.GetRegionRequest,
|
||||
responseType: api_internal_pb.GetRegionResponse,
|
||||
requestSerialize: serialize_api_GetRegionRequest,
|
||||
requestDeserialize: deserialize_api_GetRegionRequest,
|
||||
responseSerialize: serialize_api_GetRegionResponse,
|
||||
responseDeserialize: deserialize_api_GetRegionResponse,
|
||||
},
|
||||
};
|
||||
|
||||
exports.InternalServiceClient = grpc.makeGenericClientConstructor(InternalServiceService);
|
||||
|
153
api/js/api/internal_pb.d.ts
vendored
153
api/js/api/internal_pb.d.ts
vendored
@ -4,6 +4,7 @@
|
||||
import * as jspb from "google-protobuf";
|
||||
import * as google_protobuf_timestamp_pb from "google-protobuf/google/protobuf/timestamp_pb";
|
||||
import * as google_protobuf_empty_pb from "google-protobuf/google/protobuf/empty_pb";
|
||||
import * as common_common_pb from "../common/common_pb";
|
||||
import * as api_user_pb from "../api/user_pb";
|
||||
|
||||
export class ApiKey extends jspb.Message {
|
||||
@ -678,3 +679,155 @@ export namespace StreamDeviceEventsRequest {
|
||||
}
|
||||
}
|
||||
|
||||
export class ListRegionsResponse extends jspb.Message {
|
||||
clearRegionsList(): void;
|
||||
getRegionsList(): Array<RegionListItem>;
|
||||
setRegionsList(value: Array<RegionListItem>): void;
|
||||
addRegions(value?: RegionListItem, index?: number): RegionListItem;
|
||||
|
||||
serializeBinary(): Uint8Array;
|
||||
toObject(includeInstance?: boolean): ListRegionsResponse.AsObject;
|
||||
static toObject(includeInstance: boolean, msg: ListRegionsResponse): ListRegionsResponse.AsObject;
|
||||
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
|
||||
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
|
||||
static serializeBinaryToWriter(message: ListRegionsResponse, writer: jspb.BinaryWriter): void;
|
||||
static deserializeBinary(bytes: Uint8Array): ListRegionsResponse;
|
||||
static deserializeBinaryFromReader(message: ListRegionsResponse, reader: jspb.BinaryReader): ListRegionsResponse;
|
||||
}
|
||||
|
||||
export namespace ListRegionsResponse {
|
||||
export type AsObject = {
|
||||
regionsList: Array<RegionListItem.AsObject>,
|
||||
}
|
||||
}
|
||||
|
||||
export class RegionListItem extends jspb.Message {
|
||||
getName(): string;
|
||||
setName(value: string): void;
|
||||
|
||||
getRegion(): common_common_pb.RegionMap[keyof common_common_pb.RegionMap];
|
||||
setRegion(value: common_common_pb.RegionMap[keyof common_common_pb.RegionMap]): void;
|
||||
|
||||
serializeBinary(): Uint8Array;
|
||||
toObject(includeInstance?: boolean): RegionListItem.AsObject;
|
||||
static toObject(includeInstance: boolean, msg: RegionListItem): RegionListItem.AsObject;
|
||||
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
|
||||
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
|
||||
static serializeBinaryToWriter(message: RegionListItem, writer: jspb.BinaryWriter): void;
|
||||
static deserializeBinary(bytes: Uint8Array): RegionListItem;
|
||||
static deserializeBinaryFromReader(message: RegionListItem, reader: jspb.BinaryReader): RegionListItem;
|
||||
}
|
||||
|
||||
export namespace RegionListItem {
|
||||
export type AsObject = {
|
||||
name: string,
|
||||
region: common_common_pb.RegionMap[keyof common_common_pb.RegionMap],
|
||||
}
|
||||
}
|
||||
|
||||
export class GetRegionRequest extends jspb.Message {
|
||||
getName(): string;
|
||||
setName(value: string): void;
|
||||
|
||||
serializeBinary(): Uint8Array;
|
||||
toObject(includeInstance?: boolean): GetRegionRequest.AsObject;
|
||||
static toObject(includeInstance: boolean, msg: GetRegionRequest): GetRegionRequest.AsObject;
|
||||
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
|
||||
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
|
||||
static serializeBinaryToWriter(message: GetRegionRequest, writer: jspb.BinaryWriter): void;
|
||||
static deserializeBinary(bytes: Uint8Array): GetRegionRequest;
|
||||
static deserializeBinaryFromReader(message: GetRegionRequest, reader: jspb.BinaryReader): GetRegionRequest;
|
||||
}
|
||||
|
||||
export namespace GetRegionRequest {
|
||||
export type AsObject = {
|
||||
name: string,
|
||||
}
|
||||
}
|
||||
|
||||
export class GetRegionResponse extends jspb.Message {
|
||||
getName(): string;
|
||||
setName(value: string): void;
|
||||
|
||||
getRegion(): common_common_pb.RegionMap[keyof common_common_pb.RegionMap];
|
||||
setRegion(value: common_common_pb.RegionMap[keyof common_common_pb.RegionMap]): void;
|
||||
|
||||
getUserInfo(): string;
|
||||
setUserInfo(value: string): void;
|
||||
|
||||
clearUplinkChannelsList(): void;
|
||||
getUplinkChannelsList(): Array<RegionChannel>;
|
||||
setUplinkChannelsList(value: Array<RegionChannel>): void;
|
||||
addUplinkChannels(value?: RegionChannel, index?: number): RegionChannel;
|
||||
|
||||
getRx1Delay(): number;
|
||||
setRx1Delay(value: number): void;
|
||||
|
||||
getRx1DrOffset(): number;
|
||||
setRx1DrOffset(value: number): void;
|
||||
|
||||
getRx2Dr(): number;
|
||||
setRx2Dr(value: number): void;
|
||||
|
||||
getRx2Frequency(): number;
|
||||
setRx2Frequency(value: number): void;
|
||||
|
||||
getClassBPingSlotDr(): number;
|
||||
setClassBPingSlotDr(value: number): void;
|
||||
|
||||
getClassBPingSlotFrequency(): number;
|
||||
setClassBPingSlotFrequency(value: number): void;
|
||||
|
||||
serializeBinary(): Uint8Array;
|
||||
toObject(includeInstance?: boolean): GetRegionResponse.AsObject;
|
||||
static toObject(includeInstance: boolean, msg: GetRegionResponse): GetRegionResponse.AsObject;
|
||||
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
|
||||
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
|
||||
static serializeBinaryToWriter(message: GetRegionResponse, writer: jspb.BinaryWriter): void;
|
||||
static deserializeBinary(bytes: Uint8Array): GetRegionResponse;
|
||||
static deserializeBinaryFromReader(message: GetRegionResponse, reader: jspb.BinaryReader): GetRegionResponse;
|
||||
}
|
||||
|
||||
export namespace GetRegionResponse {
|
||||
export type AsObject = {
|
||||
name: string,
|
||||
region: common_common_pb.RegionMap[keyof common_common_pb.RegionMap],
|
||||
userInfo: string,
|
||||
uplinkChannelsList: Array<RegionChannel.AsObject>,
|
||||
rx1Delay: number,
|
||||
rx1DrOffset: number,
|
||||
rx2Dr: number,
|
||||
rx2Frequency: number,
|
||||
classBPingSlotDr: number,
|
||||
classBPingSlotFrequency: number,
|
||||
}
|
||||
}
|
||||
|
||||
export class RegionChannel extends jspb.Message {
|
||||
getFrequency(): number;
|
||||
setFrequency(value: number): void;
|
||||
|
||||
getDrMin(): number;
|
||||
setDrMin(value: number): void;
|
||||
|
||||
getDrMax(): number;
|
||||
setDrMax(value: number): void;
|
||||
|
||||
serializeBinary(): Uint8Array;
|
||||
toObject(includeInstance?: boolean): RegionChannel.AsObject;
|
||||
static toObject(includeInstance: boolean, msg: RegionChannel): RegionChannel.AsObject;
|
||||
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
|
||||
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
|
||||
static serializeBinaryToWriter(message: RegionChannel, writer: jspb.BinaryWriter): void;
|
||||
static deserializeBinary(bytes: Uint8Array): RegionChannel;
|
||||
static deserializeBinaryFromReader(message: RegionChannel, reader: jspb.BinaryReader): RegionChannel;
|
||||
}
|
||||
|
||||
export namespace RegionChannel {
|
||||
export type AsObject = {
|
||||
frequency: number,
|
||||
drMin: number,
|
||||
drMax: number,
|
||||
}
|
||||
}
|
||||
|
||||
|
1163
api/js/api/internal_pb.js
vendored
1163
api/js/api/internal_pb.js
vendored
File diff suppressed because it is too large
Load Diff
4
api/js/api/tenant_pb.d.ts
vendored
4
api/js/api/tenant_pb.d.ts
vendored
@ -250,6 +250,9 @@ export class ListTenantsRequest extends jspb.Message {
|
||||
getSearch(): string;
|
||||
setSearch(value: string): void;
|
||||
|
||||
getUserId(): string;
|
||||
setUserId(value: string): void;
|
||||
|
||||
serializeBinary(): Uint8Array;
|
||||
toObject(includeInstance?: boolean): ListTenantsRequest.AsObject;
|
||||
static toObject(includeInstance: boolean, msg: ListTenantsRequest): ListTenantsRequest.AsObject;
|
||||
@ -265,6 +268,7 @@ export namespace ListTenantsRequest {
|
||||
limit: number,
|
||||
offset: number,
|
||||
search: string,
|
||||
userId: string,
|
||||
}
|
||||
}
|
||||
|
||||
|
29
api/js/api/tenant_pb.js
vendored
29
api/js/api/tenant_pb.js
vendored
@ -1883,7 +1883,8 @@ proto.api.ListTenantsRequest.toObject = function(includeInstance, msg) {
|
||||
var f, obj = {
|
||||
limit: msg.getLimit(),
|
||||
offset: msg.getOffset(),
|
||||
search: msg.getSearch()
|
||||
search: msg.getSearch(),
|
||||
userId: msg.getUserId()
|
||||
};
|
||||
|
||||
if (includeInstance) {
|
||||
@ -1932,6 +1933,10 @@ proto.api.ListTenantsRequest.deserializeBinaryFromReader = function(msg, reader)
|
||||
var value = /** @type {string} */ (reader.readString());
|
||||
msg.setSearch(value);
|
||||
break;
|
||||
case 4:
|
||||
var value = /** @type {string} */ (reader.readString());
|
||||
msg.setUserId(value);
|
||||
break;
|
||||
default:
|
||||
reader.skipField();
|
||||
break;
|
||||
@ -1991,6 +1996,13 @@ proto.api.ListTenantsRequest.prototype.serializeBinaryToWriter = function (write
|
||||
f
|
||||
);
|
||||
}
|
||||
f = this.getUserId();
|
||||
if (f.length > 0) {
|
||||
writer.writeString(
|
||||
4,
|
||||
f
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -2048,6 +2060,21 @@ proto.api.ListTenantsRequest.prototype.setSearch = function(value) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional string user_id = 4;
|
||||
* @return {string}
|
||||
*/
|
||||
proto.api.ListTenantsRequest.prototype.getUserId = function() {
|
||||
return /** @type {string} */ (jspb.Message.getFieldProto3(this, 4, ""));
|
||||
};
|
||||
|
||||
|
||||
/** @param {string} value */
|
||||
proto.api.ListTenantsRequest.prototype.setUserId = function(value) {
|
||||
jspb.Message.setField(this, 4, value);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generated by JsPbCodeGenerator.
|
||||
|
1
api/js/google/api/billing_pb.d.ts
vendored
1
api/js/google/api/billing_pb.d.ts
vendored
@ -2,7 +2,6 @@
|
||||
// file: google/api/billing.proto
|
||||
|
||||
import * as jspb from "google-protobuf";
|
||||
import * as google_api_metric_pb from "../../google/api/metric_pb";
|
||||
|
||||
export class Billing extends jspb.Message {
|
||||
clearConsumerDestinationsList(): void;
|
||||
|
1
api/js/google/api/billing_pb.js
vendored
1
api/js/google/api/billing_pb.js
vendored
@ -9,7 +9,6 @@ var jspb = require('google-protobuf');
|
||||
var goog = jspb;
|
||||
var global = Function('return this')();
|
||||
|
||||
var google_api_metric_pb = require('../../google/api/metric_pb.js');
|
||||
goog.exportSymbol('proto.google.api.Billing', null, global);
|
||||
goog.exportSymbol('proto.google.api.Billing.BillingDestination', null, global);
|
||||
|
||||
|
3
api/js/google/api/service_pb.d.ts
vendored
3
api/js/google/api/service_pb.d.ts
vendored
@ -10,18 +10,15 @@ import * as google_api_control_pb from "../../google/api/control_pb";
|
||||
import * as google_api_documentation_pb from "../../google/api/documentation_pb";
|
||||
import * as google_api_endpoint_pb from "../../google/api/endpoint_pb";
|
||||
import * as google_api_http_pb from "../../google/api/http_pb";
|
||||
import * as google_api_label_pb from "../../google/api/label_pb";
|
||||
import * as google_api_log_pb from "../../google/api/log_pb";
|
||||
import * as google_api_logging_pb from "../../google/api/logging_pb";
|
||||
import * as google_api_metric_pb from "../../google/api/metric_pb";
|
||||
import * as google_api_monitored_resource_pb from "../../google/api/monitored_resource_pb";
|
||||
import * as google_api_monitoring_pb from "../../google/api/monitoring_pb";
|
||||
import * as google_api_quota_pb from "../../google/api/quota_pb";
|
||||
import * as google_api_resource_pb from "../../google/api/resource_pb";
|
||||
import * as google_api_source_info_pb from "../../google/api/source_info_pb";
|
||||
import * as google_api_system_parameter_pb from "../../google/api/system_parameter_pb";
|
||||
import * as google_api_usage_pb from "../../google/api/usage_pb";
|
||||
import * as google_protobuf_any_pb from "google-protobuf/google/protobuf/any_pb";
|
||||
import * as google_protobuf_api_pb from "google-protobuf/google/protobuf/api_pb";
|
||||
import * as google_protobuf_type_pb from "google-protobuf/google/protobuf/type_pb";
|
||||
import * as google_protobuf_wrappers_pb from "google-protobuf/google/protobuf/wrappers_pb";
|
||||
|
3
api/js/google/api/service_pb.js
vendored
3
api/js/google/api/service_pb.js
vendored
@ -17,18 +17,15 @@ var google_api_control_pb = require('../../google/api/control_pb.js');
|
||||
var google_api_documentation_pb = require('../../google/api/documentation_pb.js');
|
||||
var google_api_endpoint_pb = require('../../google/api/endpoint_pb.js');
|
||||
var google_api_http_pb = require('../../google/api/http_pb.js');
|
||||
var google_api_label_pb = require('../../google/api/label_pb.js');
|
||||
var google_api_log_pb = require('../../google/api/log_pb.js');
|
||||
var google_api_logging_pb = require('../../google/api/logging_pb.js');
|
||||
var google_api_metric_pb = require('../../google/api/metric_pb.js');
|
||||
var google_api_monitored_resource_pb = require('../../google/api/monitored_resource_pb.js');
|
||||
var google_api_monitoring_pb = require('../../google/api/monitoring_pb.js');
|
||||
var google_api_quota_pb = require('../../google/api/quota_pb.js');
|
||||
var google_api_resource_pb = require('../../google/api/resource_pb.js');
|
||||
var google_api_source_info_pb = require('../../google/api/source_info_pb.js');
|
||||
var google_api_system_parameter_pb = require('../../google/api/system_parameter_pb.js');
|
||||
var google_api_usage_pb = require('../../google/api/usage_pb.js');
|
||||
var google_protobuf_any_pb = require('google-protobuf/google/protobuf/any_pb.js');
|
||||
var google_protobuf_api_pb = require('google-protobuf/google/protobuf/api_pb.js');
|
||||
var google_protobuf_type_pb = require('google-protobuf/google/protobuf/type_pb.js');
|
||||
var google_protobuf_wrappers_pb = require('google-protobuf/google/protobuf/wrappers_pb.js');
|
||||
|
2
api/js/package.json
vendored
2
api/js/package.json
vendored
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@chirpstack/chirpstack-api",
|
||||
"version": "4.0.0",
|
||||
"version": "4.0.1",
|
||||
"description": "Chirpstack JS and TS API",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
|
1
api/md/api/api.md
vendored
1
api/md/api/api.md
vendored
@ -3529,6 +3529,7 @@ MulticastGroupService is the service managing multicast-groups.
|
||||
| limit | [uint32](#uint32) | | Max number of tenants to return in the result-set. |
|
||||
| offset | [uint32](#uint32) | | Offset in the result-set (for pagination). |
|
||||
| search | [string](#string) | | If set, the given string will be used to search on name. |
|
||||
| user_id | [string](#string) | | If set, filters the result set to the tenants of the user. Only global API keys are able to filter by this field. |
|
||||
|
||||
|
||||
|
||||
|
68
api/proto/api/internal.proto
vendored
68
api/proto/api/internal.proto
vendored
@ -9,6 +9,7 @@ option java_outer_classname = "InternalProto";
|
||||
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
import "common/common.proto";
|
||||
import "api/user.proto";
|
||||
|
||||
// InternalService is the service providing API endpoints for internal usage.
|
||||
@ -51,6 +52,12 @@ service InternalService {
|
||||
|
||||
// Stream events for the given Device EUI.
|
||||
rpc StreamDeviceEvents(StreamDeviceEventsRequest) returns (stream LogItem) {}
|
||||
|
||||
// ListRegions lists the available (configured) regions.
|
||||
rpc ListRegions(google.protobuf.Empty) returns (ListRegionsResponse) {}
|
||||
|
||||
// GetRegion returns the region details for the given region.
|
||||
rpc GetRegion(GetRegionRequest) returns (GetRegionResponse) {}
|
||||
}
|
||||
|
||||
message ApiKey {
|
||||
@ -298,3 +305,64 @@ message StreamDeviceEventsRequest {
|
||||
// Device EUI.
|
||||
string dev_eui = 1;
|
||||
}
|
||||
|
||||
message ListRegionsResponse {
|
||||
// Configured regions.
|
||||
repeated RegionListItem regions = 1;
|
||||
}
|
||||
|
||||
message RegionListItem {
|
||||
// Name.
|
||||
string name = 1;
|
||||
|
||||
// Region.
|
||||
common.Region region = 2;
|
||||
}
|
||||
|
||||
message GetRegionRequest {
|
||||
// Region name.
|
||||
string name = 1;
|
||||
}
|
||||
|
||||
message GetRegionResponse {
|
||||
// Name.
|
||||
string name = 1;
|
||||
|
||||
// Region.
|
||||
common.Region region = 2;
|
||||
|
||||
// User information.
|
||||
string user_info = 3;
|
||||
|
||||
// Uplink channels.
|
||||
repeated RegionChannel uplink_channels = 4;
|
||||
|
||||
// RX1 delay.
|
||||
uint32 rx1_delay = 5;
|
||||
|
||||
// RX1 data-rate offset.
|
||||
uint32 rx1_dr_offset = 6;
|
||||
|
||||
// RX2 DR.
|
||||
uint32 rx2_dr = 7;
|
||||
|
||||
// RX2 frequency.
|
||||
uint32 rx2_frequency = 8;
|
||||
|
||||
// Class-B ping-slot DR.
|
||||
uint32 class_b_ping_slot_dr = 9;
|
||||
|
||||
// Class-B ping-slot frequency.
|
||||
uint32 class_b_ping_slot_frequency = 10;
|
||||
}
|
||||
|
||||
message RegionChannel {
|
||||
// Frequency (Hz).
|
||||
uint32 frequency = 1;
|
||||
|
||||
// Min DR.
|
||||
uint32 dr_min = 2;
|
||||
|
||||
// Max DR.
|
||||
uint32 dr_max = 3;
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ option java_outer_classname = "InternalProto";
|
||||
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
import "chirpstack-api/common/common.proto";
|
||||
import "chirpstack-api/api/user.proto";
|
||||
|
||||
// InternalService is the service providing API endpoints for internal usage.
|
||||
@ -51,6 +52,12 @@ service InternalService {
|
||||
|
||||
// Stream events for the given Device EUI.
|
||||
rpc StreamDeviceEvents(StreamDeviceEventsRequest) returns (stream LogItem) {}
|
||||
|
||||
// ListRegions lists the available (configured) regions.
|
||||
rpc ListRegions(google.protobuf.Empty) returns (ListRegionsResponse) {}
|
||||
|
||||
// GetRegion returns the region details for the given region.
|
||||
rpc GetRegion(GetRegionRequest) returns (GetRegionResponse) {}
|
||||
}
|
||||
|
||||
message ApiKey {
|
||||
@ -298,3 +305,64 @@ message StreamDeviceEventsRequest {
|
||||
// Device EUI.
|
||||
string dev_eui = 1;
|
||||
}
|
||||
|
||||
message ListRegionsResponse {
|
||||
// Configured regions.
|
||||
repeated RegionListItem regions = 1;
|
||||
}
|
||||
|
||||
message RegionListItem {
|
||||
// Name.
|
||||
string name = 1;
|
||||
|
||||
// Region.
|
||||
common.Region region = 2;
|
||||
}
|
||||
|
||||
message GetRegionRequest {
|
||||
// Region name.
|
||||
string name = 1;
|
||||
}
|
||||
|
||||
message GetRegionResponse {
|
||||
// Name.
|
||||
string name = 1;
|
||||
|
||||
// Region.
|
||||
common.Region region = 2;
|
||||
|
||||
// User information.
|
||||
string user_info = 3;
|
||||
|
||||
// Uplink channels.
|
||||
repeated RegionChannel uplink_channels = 4;
|
||||
|
||||
// RX1 delay.
|
||||
uint32 rx1_delay = 5;
|
||||
|
||||
// RX1 data-rate offset.
|
||||
uint32 rx1_dr_offset = 6;
|
||||
|
||||
// RX2 DR.
|
||||
uint32 rx2_dr = 7;
|
||||
|
||||
// RX2 frequency.
|
||||
uint32 rx2_frequency = 8;
|
||||
|
||||
// Class-B ping-slot DR.
|
||||
uint32 class_b_ping_slot_dr = 9;
|
||||
|
||||
// Class-B ping-slot frequency.
|
||||
uint32 class_b_ping_slot_frequency = 10;
|
||||
}
|
||||
|
||||
message RegionChannel {
|
||||
// Frequency (Hz).
|
||||
uint32 frequency = 1;
|
||||
|
||||
// Min DR.
|
||||
uint32 dr_min = 2;
|
||||
|
||||
// Max DR.
|
||||
uint32 dr_max = 3;
|
||||
}
|
||||
|
165
api/python/src/chirpstack_api/api/internal_pb2.py
vendored
165
api/python/src/chirpstack_api/api/internal_pb2.py
vendored
File diff suppressed because one or more lines are too long
@ -81,6 +81,16 @@ class InternalServiceStub(object):
|
||||
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.StreamDeviceEventsRequest.SerializeToString,
|
||||
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.LogItem.FromString,
|
||||
)
|
||||
self.ListRegions = channel.unary_unary(
|
||||
'/api.InternalService/ListRegions',
|
||||
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
|
||||
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.ListRegionsResponse.FromString,
|
||||
)
|
||||
self.GetRegion = channel.unary_unary(
|
||||
'/api.InternalService/GetRegion',
|
||||
request_serializer=chirpstack__api_dot_api_dot_internal__pb2.GetRegionRequest.SerializeToString,
|
||||
response_deserializer=chirpstack__api_dot_api_dot_internal__pb2.GetRegionResponse.FromString,
|
||||
)
|
||||
|
||||
|
||||
class InternalServiceServicer(object):
|
||||
@ -178,6 +188,20 @@ class InternalServiceServicer(object):
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def ListRegions(self, request, context):
|
||||
"""ListRegions lists the available (configured) regions.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def GetRegion(self, request, context):
|
||||
"""GetRegion returns the region details for the given region.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
|
||||
def add_InternalServiceServicer_to_server(servicer, server):
|
||||
rpc_method_handlers = {
|
||||
@ -246,6 +270,16 @@ def add_InternalServiceServicer_to_server(servicer, server):
|
||||
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.StreamDeviceEventsRequest.FromString,
|
||||
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.LogItem.SerializeToString,
|
||||
),
|
||||
'ListRegions': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.ListRegions,
|
||||
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
|
||||
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.ListRegionsResponse.SerializeToString,
|
||||
),
|
||||
'GetRegion': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.GetRegion,
|
||||
request_deserializer=chirpstack__api_dot_api_dot_internal__pb2.GetRegionRequest.FromString,
|
||||
response_serializer=chirpstack__api_dot_api_dot_internal__pb2.GetRegionResponse.SerializeToString,
|
||||
),
|
||||
}
|
||||
generic_handler = grpc.method_handlers_generic_handler(
|
||||
'api.InternalService', rpc_method_handlers)
|
||||
@ -477,3 +511,37 @@ class InternalService(object):
|
||||
chirpstack__api_dot_api_dot_internal__pb2.LogItem.FromString,
|
||||
options, channel_credentials,
|
||||
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
||||
|
||||
@staticmethod
|
||||
def ListRegions(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(request, target, '/api.InternalService/ListRegions',
|
||||
google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
|
||||
chirpstack__api_dot_api_dot_internal__pb2.ListRegionsResponse.FromString,
|
||||
options, channel_credentials,
|
||||
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
||||
|
||||
@staticmethod
|
||||
def GetRegion(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(request, target, '/api.InternalService/GetRegion',
|
||||
chirpstack__api_dot_api_dot_internal__pb2.GetRegionRequest.SerializeToString,
|
||||
chirpstack__api_dot_api_dot_internal__pb2.GetRegionResponse.FromString,
|
||||
options, channel_credentials,
|
||||
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
||||
|
48
api/python/src/chirpstack_api/api/tenant_pb2.py
vendored
48
api/python/src/chirpstack_api/api/tenant_pb2.py
vendored
File diff suppressed because one or more lines are too long
2
api/python/src/setup.py
vendored
2
api/python/src/setup.py
vendored
@ -18,7 +18,7 @@ CLASSIFIERS = [
|
||||
|
||||
setup(
|
||||
name='chirpstack-api',
|
||||
version = "4.0.0",
|
||||
version = "4.0.1",
|
||||
url='https://github.com/brocaar/chirpstack-api',
|
||||
author='Orne Brocaar',
|
||||
author_email='info@brocaar.com',
|
||||
|
482
api/rust/Cargo.lock
generated
vendored
482
api/rust/Cargo.lock
generated
vendored
File diff suppressed because it is too large
Load Diff
18
api/rust/Cargo.toml
vendored
18
api/rust/Cargo.toml
vendored
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "chirpstack_api"
|
||||
description = "ChirpStack Protobuf / gRPC API definitions."
|
||||
version = "4.0.0"
|
||||
version = "4.0.1"
|
||||
authors = ["Orne Brocaar <info@brocaar.com>"]
|
||||
license = "MIT"
|
||||
homepage = "https://www.chirpstack.io"
|
||||
@ -14,17 +14,17 @@ api = ["tonic/transport", "tonic-build/transport", "tokio"]
|
||||
internal = []
|
||||
|
||||
[dependencies]
|
||||
prost = "0.10"
|
||||
prost-types = "0.10"
|
||||
pbjson = "0.3"
|
||||
pbjson-types = "0.3"
|
||||
prost = "0.11"
|
||||
prost-types = "0.11"
|
||||
pbjson = "0.5"
|
||||
pbjson-types = "0.5"
|
||||
hex = "0.4"
|
||||
rand = "0.8"
|
||||
|
||||
tonic = { version = "0.7", features = ["codegen", "prost"], default-features = false }
|
||||
tokio = { version = "1.17", features = ["macros"], optional = true }
|
||||
tonic = { version = "0.8", features = ["codegen", "prost"], default-features = false }
|
||||
tokio = { version = "1.21", features = ["macros"], optional = true }
|
||||
serde = { version = "1.0" }
|
||||
|
||||
[build-dependencies]
|
||||
tonic-build = { version = "0.7", features = ["prost"], default-features = false }
|
||||
pbjson-build = "0.3"
|
||||
tonic-build = { version = "0.8", features = ["prost"], default-features = false }
|
||||
pbjson-build = "0.5"
|
||||
|
68
api/rust/proto/chirpstack/api/internal.proto
vendored
68
api/rust/proto/chirpstack/api/internal.proto
vendored
@ -9,6 +9,7 @@ option java_outer_classname = "InternalProto";
|
||||
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
import "common/common.proto";
|
||||
import "api/user.proto";
|
||||
|
||||
// InternalService is the service providing API endpoints for internal usage.
|
||||
@ -51,6 +52,12 @@ service InternalService {
|
||||
|
||||
// Stream events for the given Device EUI.
|
||||
rpc StreamDeviceEvents(StreamDeviceEventsRequest) returns (stream LogItem) {}
|
||||
|
||||
// ListRegions lists the available (configured) regions.
|
||||
rpc ListRegions(google.protobuf.Empty) returns (ListRegionsResponse) {}
|
||||
|
||||
// GetRegion returns the region details for the given region.
|
||||
rpc GetRegion(GetRegionRequest) returns (GetRegionResponse) {}
|
||||
}
|
||||
|
||||
message ApiKey {
|
||||
@ -298,3 +305,64 @@ message StreamDeviceEventsRequest {
|
||||
// Device EUI.
|
||||
string dev_eui = 1;
|
||||
}
|
||||
|
||||
message ListRegionsResponse {
|
||||
// Configured regions.
|
||||
repeated RegionListItem regions = 1;
|
||||
}
|
||||
|
||||
message RegionListItem {
|
||||
// Name.
|
||||
string name = 1;
|
||||
|
||||
// Region.
|
||||
common.Region region = 2;
|
||||
}
|
||||
|
||||
message GetRegionRequest {
|
||||
// Region name.
|
||||
string name = 1;
|
||||
}
|
||||
|
||||
message GetRegionResponse {
|
||||
// Name.
|
||||
string name = 1;
|
||||
|
||||
// Region.
|
||||
common.Region region = 2;
|
||||
|
||||
// User information.
|
||||
string user_info = 3;
|
||||
|
||||
// Uplink channels.
|
||||
repeated RegionChannel uplink_channels = 4;
|
||||
|
||||
// RX1 delay.
|
||||
uint32 rx1_delay = 5;
|
||||
|
||||
// RX1 data-rate offset.
|
||||
uint32 rx1_dr_offset = 6;
|
||||
|
||||
// RX2 DR.
|
||||
uint32 rx2_dr = 7;
|
||||
|
||||
// RX2 frequency.
|
||||
uint32 rx2_frequency = 8;
|
||||
|
||||
// Class-B ping-slot DR.
|
||||
uint32 class_b_ping_slot_dr = 9;
|
||||
|
||||
// Class-B ping-slot frequency.
|
||||
uint32 class_b_ping_slot_frequency = 10;
|
||||
}
|
||||
|
||||
message RegionChannel {
|
||||
// Frequency (Hz).
|
||||
uint32 frequency = 1;
|
||||
|
||||
// Min DR.
|
||||
uint32 dr_min = 2;
|
||||
|
||||
// Max DR.
|
||||
uint32 dr_max = 3;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "backend"
|
||||
version = "4.0.0"
|
||||
version = "4.0.1"
|
||||
authors = ["Orne Brocaar <info@brocaar.com>"]
|
||||
edition = "2018"
|
||||
publish = false
|
||||
|
@ -3,7 +3,7 @@ name = "chirpstack"
|
||||
description = "ChirpStack is an open-source LoRaWAN(TM) Network Server"
|
||||
repository = "https://github.com/chirpstack/chirpstack"
|
||||
homepage="https://www.chirpstack.io/"
|
||||
version = "4.0.0"
|
||||
version = "4.0.1"
|
||||
authors = ["Orne Brocaar <info@brocaar.com>"]
|
||||
edition = "2021"
|
||||
publish = false
|
||||
@ -11,28 +11,28 @@ license = "MIT"
|
||||
|
||||
[dependencies]
|
||||
# CLI interface
|
||||
clap = "2.33"
|
||||
clap = "3.2"
|
||||
|
||||
# Configuration
|
||||
serde = { version = "1.0", features = ["derive", "rc"] }
|
||||
serde_yaml = "0.8"
|
||||
serde_yaml = "0.9"
|
||||
serde_json = "1.0"
|
||||
humantime-serde = "1.0"
|
||||
humantime-serde = "1.1"
|
||||
toml = "0.5"
|
||||
handlebars = "4.1"
|
||||
handlebars = "4.3"
|
||||
|
||||
# Database
|
||||
validator = "0.13"
|
||||
diesel = { version = "2.0.0-rc.1", features = [ "chrono", "postgres", "r2d2", "uuid", "serde_json", "numeric" ] }
|
||||
diesel_migrations = { version = "2.0.0-rc.1" }
|
||||
validator = "0.16"
|
||||
diesel = { version = "2.0.0", features = [ "chrono", "postgres", "r2d2", "uuid", "serde_json", "numeric" ] }
|
||||
diesel_migrations = { version = "2.0.0" }
|
||||
r2d2 = "0.8"
|
||||
bigdecimal = "0.3"
|
||||
redis = { version = "0.21", features = ["r2d2", "cluster"] }
|
||||
pq-sys = { version = "0.4.6", features = ["pkg-config"] }
|
||||
pq-sys = { version = "0.4.7", features = ["pkg-config"] }
|
||||
|
||||
# Logging
|
||||
tracing = "0.1"
|
||||
tracing-subscriber = { version = "0.2", features = ["fmt", "ansi"], default-features = true }
|
||||
tracing-subscriber = { version = "0.3", features = ["fmt", "ansi"], default-features = true }
|
||||
|
||||
# ChirpStack API definitions
|
||||
chirpstack_api = { path = "../api/rust", features = ["default", "internal"] }
|
||||
@ -43,28 +43,28 @@ backend = { path = "../backend" }
|
||||
reqwest = { version = "0.11", features = ["json"] }
|
||||
|
||||
# Integrations
|
||||
aws-types = "0.3.0"
|
||||
aws-config = "0.3.0"
|
||||
aws-sdk-sns = "0.3.0"
|
||||
aws-types = "0.49"
|
||||
aws-config = "0.49"
|
||||
aws-sdk-sns = "0.19"
|
||||
hmac = "0.12"
|
||||
sha2 = "0.10"
|
||||
urlencoding = "2.1"
|
||||
geohash = "0.12"
|
||||
gcp_auth = "0.7.2"
|
||||
lapin = "2.1.1"
|
||||
tokio-executor-trait = "2.1.0"
|
||||
tokio-reactor-trait = "1.1.0"
|
||||
rdkafka = { version = "0.28.0", features = ["cmake-build"]}
|
||||
gcp_auth = "0.7"
|
||||
lapin = "2.1"
|
||||
tokio-executor-trait = "2.1"
|
||||
tokio-reactor-trait = "1.1"
|
||||
rdkafka = { version = "0.28", features = ["cmake-build"]}
|
||||
|
||||
# gRPC and Protobuf
|
||||
tonic = "0.7"
|
||||
tonic-web = "0.3"
|
||||
tonic-reflection = "0.4"
|
||||
tokio = { version = "1.17", features = ["macros", "rt-multi-thread"] }
|
||||
tokio-stream = "0.1.8"
|
||||
prost-types = "0.10"
|
||||
prost = "0.10"
|
||||
pbjson-types = "0.3"
|
||||
tonic = "0.8"
|
||||
tonic-web = "0.4"
|
||||
tonic-reflection = "0.5"
|
||||
tokio = { version = "1.21", features = ["macros", "rt-multi-thread"] }
|
||||
tokio-stream = "0.1"
|
||||
prost-types = "0.11"
|
||||
prost = "0.11"
|
||||
pbjson-types = "0.5"
|
||||
|
||||
# gRPC and HTTP multiplexing
|
||||
warp = { version = "0.3", features = ["tls"] }
|
||||
@ -75,37 +75,36 @@ http = "0.2"
|
||||
http-body = "0.4"
|
||||
rust-embed = "6.4"
|
||||
mime_guess = "2.0"
|
||||
tower-http = { version = "0.1", features = ["trace", "auth"] }
|
||||
tower-http = { version = "0.3", features = ["trace", "auth"] }
|
||||
|
||||
# Error handling
|
||||
thiserror = "1.0"
|
||||
anyhow = "1.0"
|
||||
|
||||
# Authentication
|
||||
pbkdf2 = "0.8"
|
||||
pbkdf2 = "0.11"
|
||||
rand_core = { version = "0.6", features = ["std"] }
|
||||
# jsonwebtoken = "8.0"
|
||||
jsonwebtoken = "8.1.0"
|
||||
jsonwebtoken = "8.1"
|
||||
openssl = { version = "0.10", features = ["vendored"] }
|
||||
openidconnect = { version = "2.3.1", features = ["accept-rfc3339-timestamps"] }
|
||||
openidconnect = { version = "2.3", features = ["accept-rfc3339-timestamps"] }
|
||||
|
||||
# MQTT
|
||||
paho-mqtt = { version = "0.11", features = ["vendored-ssl"] }
|
||||
hex = "0.4"
|
||||
|
||||
# Codecs
|
||||
rquickjs = { version = "0.1.6", features = ["bindgen", "loader", "array-buffer", "chrono"] }
|
||||
rquickjs = { version = "0.1", features = ["bindgen", "loader", "array-buffer", "chrono"] }
|
||||
|
||||
# Misc
|
||||
lazy_static = "1.4"
|
||||
uuid = { version = "1.1", features = [ "v4", "serde" ] }
|
||||
chrono = "0.4"
|
||||
async-trait = "0.1"
|
||||
aes = "0.7"
|
||||
aes = "0.8"
|
||||
rand = "0.8"
|
||||
base64 = "0.13"
|
||||
async-recursion = "1.0"
|
||||
regex = "1"
|
||||
regex = "1.6"
|
||||
petgraph = "0.6"
|
||||
prometheus-client = "0.18"
|
||||
pin-project = "1.0"
|
||||
@ -113,7 +112,7 @@ pin-project = "1.0"
|
||||
# Development and testing
|
||||
[dev-dependencies]
|
||||
httpmock = "0.6"
|
||||
bytes = "1.1"
|
||||
bytes = "1.2"
|
||||
|
||||
# Debian packaging.
|
||||
[package.metadata.deb]
|
||||
|
@ -110,7 +110,7 @@ pub struct Request {
|
||||
pub uplink_history: Vec<internal::UplinkAdrHistory>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
pub struct Response {
|
||||
pub dr: u8,
|
||||
pub tx_power_index: u8,
|
||||
|
@ -7,7 +7,7 @@ use jsonwebtoken::{decode, encode, Algorithm, DecodingKey, EncodingKey, Header,
|
||||
use serde::{Deserialize, Serialize};
|
||||
use uuid::Uuid;
|
||||
|
||||
#[derive(Serialize, Deserialize, PartialEq, Debug)]
|
||||
#[derive(Serialize, Deserialize, PartialEq, Eq, Debug)]
|
||||
pub struct AuthClaim {
|
||||
pub aud: String,
|
||||
#[serde(default, skip_serializing_if = "is_default")]
|
||||
|
@ -6,7 +6,7 @@ pub mod claims;
|
||||
pub mod error;
|
||||
pub mod validator;
|
||||
|
||||
#[derive(PartialEq, Debug)]
|
||||
#[derive(PartialEq, Eq, Debug)]
|
||||
pub enum AuthID {
|
||||
None,
|
||||
User(Uuid),
|
||||
|
@ -85,7 +85,7 @@ impl ToStatus for tokio::task::JoinError {
|
||||
}
|
||||
}
|
||||
|
||||
impl ToStatus for prost_types::TimestampOutOfSystemRangeError {
|
||||
impl ToStatus for prost_types::TimestampError {
|
||||
fn status(&self) -> Status {
|
||||
Status::new(Code::Internal, format!("{}", self))
|
||||
}
|
||||
|
@ -19,9 +19,10 @@ use chirpstack_api::api::internal_service_server::InternalService;
|
||||
use super::auth::claims;
|
||||
use super::auth::{validator, AuthID};
|
||||
use super::error::ToStatus;
|
||||
use super::helpers::ToProto;
|
||||
use super::{helpers, oidc};
|
||||
use crate::storage::{api_key, device, error::Error, gateway, redis_key, search, tenant, user};
|
||||
use crate::{config, eventlog, framelog};
|
||||
use crate::{config, eventlog, framelog, region};
|
||||
use lrwn::EUI64;
|
||||
|
||||
pub struct Internal {
|
||||
@ -778,4 +779,76 @@ impl InternalService for Internal {
|
||||
|
||||
Ok(Response::new(drop_receiver))
|
||||
}
|
||||
|
||||
async fn list_regions(
|
||||
&self,
|
||||
request: Request<()>,
|
||||
) -> Result<Response<api::ListRegionsResponse>, Status> {
|
||||
self.validator
|
||||
.validate(request.extensions(), validator::ValidateActiveUser::new())
|
||||
.await?;
|
||||
|
||||
let conf = config::get();
|
||||
|
||||
let mut out: api::ListRegionsResponse = Default::default();
|
||||
|
||||
for region_config in &conf.regions {
|
||||
// Check if region is enabled.
|
||||
if !conf.network.enabled_regions.contains(®ion_config.name) {
|
||||
continue;
|
||||
}
|
||||
|
||||
out.regions.push(api::RegionListItem {
|
||||
name: region_config.name.clone(),
|
||||
region: region_config.common_name.to_proto().into(),
|
||||
});
|
||||
}
|
||||
|
||||
out.regions.sort_by(|a, b| a.name.cmp(&b.name));
|
||||
Ok(Response::new(out))
|
||||
}
|
||||
|
||||
async fn get_region(
|
||||
&self,
|
||||
request: Request<api::GetRegionRequest>,
|
||||
) -> Result<Response<api::GetRegionResponse>, Status> {
|
||||
let req = request.get_ref();
|
||||
self.validator
|
||||
.validate(request.extensions(), validator::ValidateActiveUser::new())
|
||||
.await?;
|
||||
|
||||
let conf = config::get();
|
||||
let reg = region::get(&req.name).map_err(|e| e.status())?;
|
||||
|
||||
let mut out = api::GetRegionResponse {
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
for region_conf in &conf.regions {
|
||||
if req.name == region_conf.name {
|
||||
out.name = region_conf.name.clone();
|
||||
out.region = region_conf.common_name.to_proto().into();
|
||||
out.user_info = region_conf.user_info.clone();
|
||||
out.rx1_delay = region_conf.network.rx1_delay as u32;
|
||||
out.rx1_dr_offset = region_conf.network.rx1_dr_offset as u32;
|
||||
out.rx2_dr = region_conf.network.rx2_dr as u32;
|
||||
out.rx2_frequency = region_conf.network.rx2_frequency as u32;
|
||||
out.class_b_ping_slot_dr = region_conf.network.class_b.ping_slot_dr as u32;
|
||||
out.class_b_ping_slot_frequency = region_conf.network.class_b.ping_slot_frequency;
|
||||
}
|
||||
}
|
||||
|
||||
let enabled_channels = reg.get_enabled_uplink_channel_indices();
|
||||
|
||||
for i in enabled_channels {
|
||||
let ch = reg.get_uplink_channel(i).map_err(|e| e.status())?;
|
||||
out.uplink_channels.push(api::RegionChannel {
|
||||
frequency: ch.frequency,
|
||||
dr_min: ch.min_dr as u32,
|
||||
dr_max: ch.max_dr as u32,
|
||||
});
|
||||
}
|
||||
|
||||
Ok(Response::new(out))
|
||||
}
|
||||
}
|
||||
|
@ -498,6 +498,7 @@ pub struct Kek {
|
||||
pub struct Region {
|
||||
pub name: String,
|
||||
pub common_name: CommonName,
|
||||
pub user_info: String,
|
||||
pub network: RegionNetwork,
|
||||
pub gateway: RegionGateway,
|
||||
}
|
||||
@ -507,6 +508,7 @@ impl Default for Region {
|
||||
Region {
|
||||
name: "eu868".to_string(),
|
||||
common_name: CommonName::EU868,
|
||||
user_info: "".into(),
|
||||
network: RegionNetwork {
|
||||
installation_margin: 10.0,
|
||||
rx1_delay: 1,
|
||||
|
@ -1,5 +1,6 @@
|
||||
use aes::cipher::generic_array::GenericArray;
|
||||
use aes::{Aes128, Block, BlockEncrypt, NewBlockCipher};
|
||||
use aes::cipher::{BlockEncrypt, KeyInit};
|
||||
use aes::{Aes128, Block};
|
||||
use anyhow::Result;
|
||||
use chrono::{DateTime, Duration, Utc};
|
||||
use tracing::info;
|
||||
|
@ -304,7 +304,7 @@ impl Data {
|
||||
device_name: self.device.name.clone(),
|
||||
dev_eui: self.device.dev_eui.to_string(),
|
||||
tags: {
|
||||
let mut tags = (&*self.device_profile.tags).clone();
|
||||
let mut tags = (*self.device_profile.tags).clone();
|
||||
tags.extend((*self.device.tags).clone());
|
||||
tags
|
||||
},
|
||||
|
@ -294,7 +294,7 @@ impl TxAck {
|
||||
let dp = self.device_profile.as_ref().unwrap();
|
||||
let dev = self.device.as_ref().unwrap();
|
||||
|
||||
let mut tags = (&*dp.tags).clone();
|
||||
let mut tags = (*dp.tags).clone();
|
||||
tags.extend((*dev.tags).clone());
|
||||
|
||||
let pl = integration_pb::LogEvent {
|
||||
@ -330,7 +330,7 @@ impl TxAck {
|
||||
let dev = self.device.as_ref().unwrap();
|
||||
let qi = self.device_queue_item.as_ref().unwrap();
|
||||
|
||||
let mut tags = (&*dp.tags).clone();
|
||||
let mut tags = (*dp.tags).clone();
|
||||
tags.extend((*dev.tags).clone());
|
||||
|
||||
let downlink_id = self.downlink_frame.as_ref().unwrap().downlink_id;
|
||||
|
@ -104,7 +104,7 @@ impl ToDateTime for Duration {
|
||||
let mut t = *GPS_EPOCH_TIME + *self;
|
||||
for ls in LEAP_SECONDS_TABLE.iter() {
|
||||
if ls.0 < t {
|
||||
t = t - ls.1;
|
||||
t -= ls.1;
|
||||
}
|
||||
}
|
||||
t
|
||||
|
@ -663,11 +663,12 @@ pub struct LoraDownlink {
|
||||
// PositionSolution implements the Positition Solution object.
|
||||
#[derive(Serialize, Deserialize, Clone)]
|
||||
pub struct PositionSolution {
|
||||
pub ecef: Vec<f64>,
|
||||
pub algorithm_type: Option<String>,
|
||||
pub ecef: Option<Vec<f64>>,
|
||||
pub llh: Vec<f64>,
|
||||
pub capture_time_gps: f64,
|
||||
pub gdop: f64,
|
||||
pub accuracy: f32,
|
||||
pub capture_time_gps: Option<f64>,
|
||||
pub gdop: Option<f64>,
|
||||
pub accuracy: Option<f32>,
|
||||
pub timestamp: f64,
|
||||
}
|
||||
|
||||
|
@ -192,6 +192,9 @@ impl Integration {
|
||||
return Err(anyhow!("{}", resp.error));
|
||||
}
|
||||
|
||||
self.handle_response_integration_event(vars, pl, &resp.result)
|
||||
.await?;
|
||||
|
||||
if self.config.modem_geolocation_services.parse_tlv && resp.result.stream_records.is_some()
|
||||
{
|
||||
self.handle_response_tlv_records(
|
||||
@ -202,9 +205,6 @@ impl Integration {
|
||||
.await?;
|
||||
}
|
||||
|
||||
self.handle_response_integration_event(vars, pl, &resp.result)
|
||||
.await?;
|
||||
|
||||
if let Some(v) = &resp.result.downlink {
|
||||
self.handle_response_downlink(pl, v).await?;
|
||||
}
|
||||
@ -427,7 +427,7 @@ impl Integration {
|
||||
longitude: result.llh[1],
|
||||
altitude: result.llh[2],
|
||||
source: source.into(),
|
||||
accuracy: result.accuracy,
|
||||
accuracy: result.accuracy.unwrap_or_default(),
|
||||
}),
|
||||
};
|
||||
|
||||
|
@ -23,7 +23,7 @@ pub async fn handle(
|
||||
dev: &device::Device,
|
||||
block: &lrwn::MACCommandSet,
|
||||
) -> Result<Option<lrwn::MACCommandSet>> {
|
||||
let mac = (&**block)
|
||||
let mac = (**block)
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("Expected DevStatusAns"))?;
|
||||
if let lrwn::MACCommand::DevStatusAns(pl) = mac {
|
||||
@ -42,7 +42,7 @@ pub async fn handle(
|
||||
)
|
||||
.await?;
|
||||
|
||||
let mut tags = (&*dp.tags).clone();
|
||||
let mut tags = (*dp.tags).clone();
|
||||
tags.clone_from(&*dev.tags);
|
||||
|
||||
let rx_time: DateTime<Utc> =
|
||||
|
@ -6,7 +6,7 @@ pub async fn handle(
|
||||
dev: &device::Device,
|
||||
block: &lrwn::MACCommandSet,
|
||||
) -> Result<Option<lrwn::MACCommandSet>> {
|
||||
let mac = (&**block)
|
||||
let mac = (**block)
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("Expected DeviceModeInd"))?;
|
||||
if let lrwn::MACCommand::DeviceModeInd(pl) = mac {
|
||||
|
@ -13,7 +13,7 @@ pub fn handle(
|
||||
dev: &device::Device,
|
||||
block: &lrwn::MACCommandSet,
|
||||
) -> Result<Option<lrwn::MACCommandSet>> {
|
||||
let _ = (&**block)
|
||||
let _ = (**block)
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("Expected DeviceTimeReq"))?;
|
||||
|
||||
|
@ -11,7 +11,7 @@ pub fn handle(
|
||||
dev: &device::Device,
|
||||
block: &lrwn::MACCommandSet,
|
||||
) -> Result<Option<lrwn::MACCommandSet>> {
|
||||
let _ = (&**block)
|
||||
let _ = (**block)
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("Expected LinkCheckReq"));
|
||||
|
||||
|
@ -9,7 +9,7 @@ pub fn handle(
|
||||
ds: &mut internal::DeviceSession,
|
||||
block: &lrwn::MACCommandSet,
|
||||
) -> Result<Option<lrwn::MACCommandSet>> {
|
||||
let mac = (&**block)
|
||||
let mac = (**block)
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("MACCommandSet is empty"))?;
|
||||
|
||||
|
@ -23,10 +23,10 @@ pub fn handle(
|
||||
return Err(anyhow!("Pending RejoinParamSetupReq expected"));
|
||||
}
|
||||
|
||||
let ans_mac = (&**block)
|
||||
let ans_mac = (**block)
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("MACCommandSet is empty"))?;
|
||||
let req_mac = (&**pending.unwrap())
|
||||
let req_mac = (**pending.unwrap())
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("MACCommandSet is empty"))?;
|
||||
|
||||
|
@ -9,7 +9,7 @@ pub fn handle(
|
||||
dev: &device::Device,
|
||||
block: &lrwn::MACCommandSet,
|
||||
) -> Result<Option<lrwn::MACCommandSet>> {
|
||||
let block_mac = (&**block)
|
||||
let block_mac = (**block)
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("MACCommandSet is empty"))?;
|
||||
|
||||
|
@ -12,7 +12,7 @@ pub fn handle(
|
||||
ds: &mut internal::DeviceSession,
|
||||
block: &lrwn::MACCommandSet,
|
||||
) -> Result<Option<lrwn::MACCommandSet>> {
|
||||
let block_mac = (&**block)
|
||||
let block_mac = (**block)
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("MACCommandSet is empty"))?;
|
||||
let block_pl = if let lrwn::MACCommand::ResetInd(pl) = block_mac {
|
||||
|
@ -27,10 +27,10 @@ pub fn handle(
|
||||
return Err(anyhow!("Expected pending RxParamSetupReq"));
|
||||
}
|
||||
|
||||
let req_mac = (&**pending.unwrap())
|
||||
let req_mac = (**pending.unwrap())
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("MACCommandSet is empty"))?;
|
||||
let ans_mac = (&**block)
|
||||
let ans_mac = (**block)
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("MACCommandSet is empty"))?;
|
||||
|
||||
|
@ -20,7 +20,7 @@ pub fn handle(
|
||||
return Err(anyhow!("Pending RxTimingSetupReq expected"));
|
||||
}
|
||||
|
||||
let req_mac = (&**pending.unwrap())
|
||||
let req_mac = (**pending.unwrap())
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("MACCommandSet is empty"))?;
|
||||
|
||||
|
@ -38,7 +38,7 @@ pub fn handle(
|
||||
return Err(anyhow!("Expected pending TxParamSetupReq"));
|
||||
}
|
||||
|
||||
let req_mac = (&**pending.unwrap())
|
||||
let req_mac = (**pending.unwrap())
|
||||
.first()
|
||||
.ok_or_else(|| anyhow!("MACCommandSet is empty"))?;
|
||||
|
||||
|
@ -51,7 +51,7 @@ async fn main() -> Result<()> {
|
||||
.arg(
|
||||
Arg::with_name("config-dir")
|
||||
.required(true)
|
||||
.short("c")
|
||||
.short('c')
|
||||
.long("config-dir")
|
||||
.value_name("DIR")
|
||||
.multiple(false)
|
||||
@ -79,7 +79,7 @@ async fn main() -> Result<()> {
|
||||
.arg(
|
||||
Arg::with_name("dir")
|
||||
.required(true)
|
||||
.short("d")
|
||||
.short('d')
|
||||
.long("dir")
|
||||
.value_name("DIR")
|
||||
.multiple(false)
|
||||
@ -90,8 +90,8 @@ async fn main() -> Result<()> {
|
||||
)
|
||||
.get_matches();
|
||||
|
||||
let config_dir = matches.value_of_lossy("config-dir").unwrap();
|
||||
config::load(Path::new(config_dir.as_ref()))?;
|
||||
let config_dir = matches.get_one::<String>("config-dir").unwrap();
|
||||
config::load(Path::new(&config_dir))?;
|
||||
|
||||
let conf = config::get();
|
||||
let filter = filter::Targets::new().with_targets(vec![
|
||||
@ -111,16 +111,16 @@ async fn main() -> Result<()> {
|
||||
}
|
||||
|
||||
if let Some(v) = matches.subcommand_matches("print-ds") {
|
||||
let dev_eui = v.value_of_lossy("dev-eui").unwrap();
|
||||
let dev_eui = EUI64::from_str(&dev_eui).unwrap();
|
||||
let dev_eui = v.get_one::<String>("dev-eui").unwrap();
|
||||
let dev_eui = EUI64::from_str(dev_eui).unwrap();
|
||||
|
||||
cmd::print_ds::run(&dev_eui).await.unwrap();
|
||||
process::exit(0);
|
||||
}
|
||||
|
||||
if let Some(v) = matches.subcommand_matches("import-ttn-lorawan-devices") {
|
||||
let dir = v.value_of_lossy("dir").unwrap();
|
||||
cmd::import_ttn_lorawan_devices::run(Path::new(&*dir))
|
||||
let dir = v.get_one::<String>("dir").unwrap();
|
||||
cmd::import_ttn_lorawan_devices::run(Path::new(dir))
|
||||
.await
|
||||
.unwrap();
|
||||
process::exit(0);
|
||||
|
@ -10,7 +10,7 @@ use super::error::Error;
|
||||
use super::schema::api_key;
|
||||
use super::{error, get_db_conn};
|
||||
|
||||
#[derive(Queryable, Insertable, PartialEq, Debug)]
|
||||
#[derive(Queryable, Insertable, PartialEq, Eq, Debug)]
|
||||
#[diesel(table_name = api_key)]
|
||||
pub struct ApiKey {
|
||||
pub id: Uuid,
|
||||
|
@ -19,7 +19,7 @@ use super::error::Error;
|
||||
use super::get_db_conn;
|
||||
use super::schema::{application, application_integration};
|
||||
|
||||
#[derive(Clone, Queryable, Insertable, PartialEq, Debug)]
|
||||
#[derive(Clone, Queryable, Insertable, PartialEq, Eq, Debug)]
|
||||
#[diesel(table_name = application)]
|
||||
pub struct Application {
|
||||
pub id: Uuid,
|
||||
@ -62,7 +62,7 @@ pub struct Filters {
|
||||
pub search: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Queryable, PartialEq, Debug)]
|
||||
#[derive(Queryable, PartialEq, Eq, Debug)]
|
||||
pub struct ApplicationListItem {
|
||||
pub id: Uuid,
|
||||
pub created_at: DateTime<Utc>,
|
||||
@ -134,7 +134,7 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, AsExpression, FromSqlRow, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, AsExpression, FromSqlRow, Serialize, Deserialize)]
|
||||
#[diesel(sql_type = Jsonb)]
|
||||
pub enum IntegrationConfiguration {
|
||||
None,
|
||||
@ -164,14 +164,14 @@ impl serialize::ToSql<Jsonb, Pg> for IntegrationConfiguration {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct HttpConfiguration {
|
||||
pub headers: HashMap<String, String>,
|
||||
pub json: bool,
|
||||
pub event_endpoint_url: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct InfluxDbConfiguration {
|
||||
pub endpoint: String,
|
||||
pub db: String,
|
||||
@ -185,22 +185,22 @@ pub struct InfluxDbConfiguration {
|
||||
pub bucket: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct ThingsBoardConfiguration {
|
||||
pub server: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct MyDevicesConfiguration {
|
||||
pub endpoint: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct LoraCloudConfiguration {
|
||||
pub modem_geolocation_services: LoraCloudModemGeolocationServices,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct LoraCloudModemGeolocationServices {
|
||||
pub token: String,
|
||||
pub modem_enabled: bool,
|
||||
@ -219,7 +219,7 @@ pub struct LoraCloudModemGeolocationServices {
|
||||
pub geolocation_wifi_payload_field: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct GcpPubSubConfiguration {
|
||||
pub encoding: i32,
|
||||
pub credentials_file: String,
|
||||
@ -227,7 +227,7 @@ pub struct GcpPubSubConfiguration {
|
||||
pub topic_name: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct AwsSnsConfiguration {
|
||||
pub encoding: i32,
|
||||
pub region: String,
|
||||
@ -236,26 +236,26 @@ pub struct AwsSnsConfiguration {
|
||||
pub topic_arn: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct AzureServiceBusConfiguration {
|
||||
pub encoding: i32,
|
||||
pub connection_string: String,
|
||||
pub publish_name: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct PilotThingsConfiguration {
|
||||
pub server: String,
|
||||
pub token: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct IftttConfiguration {
|
||||
pub key: String,
|
||||
pub uplink_values: [String; 2], // The first value is reserved for the DevEUI
|
||||
}
|
||||
|
||||
#[derive(Clone, Queryable, Insertable, PartialEq, Debug)]
|
||||
#[derive(Clone, Queryable, Insertable, PartialEq, Eq, Debug)]
|
||||
#[diesel(table_name = application_integration)]
|
||||
pub struct Integration {
|
||||
pub application_id: Uuid,
|
||||
|
@ -82,7 +82,7 @@ impl Default for Device {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Queryable, PartialEq, Debug)]
|
||||
#[derive(Queryable, PartialEq, Eq, Debug)]
|
||||
pub struct DeviceListItem {
|
||||
pub dev_eui: EUI64,
|
||||
pub name: String,
|
||||
@ -104,7 +104,7 @@ pub struct Filters {
|
||||
pub search: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(QueryableByName, PartialEq, Debug)]
|
||||
#[derive(QueryableByName, PartialEq, Eq, Debug)]
|
||||
pub struct DevicesActiveInactive {
|
||||
#[diesel(sql_type = diesel::sql_types::BigInt)]
|
||||
pub never_seen_count: i64,
|
||||
@ -114,7 +114,7 @@ pub struct DevicesActiveInactive {
|
||||
pub inactive_count: i64,
|
||||
}
|
||||
|
||||
#[derive(Queryable, PartialEq, Debug)]
|
||||
#[derive(Queryable, PartialEq, Eq, Debug)]
|
||||
pub struct DevicesDataRate {
|
||||
pub dr: Option<i16>, // as the column is nullable
|
||||
pub count: i64,
|
||||
|
@ -16,7 +16,7 @@ use super::{error, fields, get_db_conn};
|
||||
use crate::codec::Codec;
|
||||
use chirpstack_api::internal;
|
||||
|
||||
#[derive(Clone, Queryable, Insertable, Debug, PartialEq)]
|
||||
#[derive(Clone, Queryable, Insertable, Debug, PartialEq, Eq)]
|
||||
#[diesel(table_name = device_profile)]
|
||||
pub struct DeviceProfile {
|
||||
pub id: Uuid,
|
||||
@ -122,7 +122,7 @@ impl DeviceProfile {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Queryable, PartialEq, Debug)]
|
||||
#[derive(Queryable, PartialEq, Eq, Debug)]
|
||||
pub struct DeviceProfileListItem {
|
||||
pub id: Uuid,
|
||||
pub created_at: DateTime<Utc>,
|
||||
|
@ -15,7 +15,7 @@ use super::schema::device_profile_template;
|
||||
use super::{error, fields, get_db_conn};
|
||||
use crate::codec::Codec;
|
||||
|
||||
#[derive(Clone, Queryable, Insertable, Debug, PartialEq)]
|
||||
#[derive(Clone, Queryable, Insertable, Debug, PartialEq, Eq)]
|
||||
#[diesel(table_name = device_profile_template)]
|
||||
pub struct DeviceProfileTemplate {
|
||||
pub id: String,
|
||||
@ -114,7 +114,7 @@ impl Default for DeviceProfileTemplate {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Queryable, PartialEq, Debug)]
|
||||
#[derive(Queryable, PartialEq, Eq, Debug)]
|
||||
pub struct DeviceProfileTemplateListItem {
|
||||
pub id: String,
|
||||
pub created_at: DateTime<Utc>,
|
||||
|
@ -10,7 +10,7 @@ use super::get_db_conn;
|
||||
use super::schema::device_queue_item;
|
||||
use lrwn::EUI64;
|
||||
|
||||
#[derive(Queryable, Insertable, PartialEq, Debug, Clone)]
|
||||
#[derive(Queryable, Insertable, PartialEq, Eq, Debug, Clone)]
|
||||
#[diesel(table_name = device_queue_item)]
|
||||
pub struct DeviceQueueItem {
|
||||
pub id: Uuid,
|
||||
|
@ -7,7 +7,7 @@ use diesel::sql_types::Jsonb;
|
||||
use diesel::{deserialize, serialize};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, AsExpression, FromSqlRow)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, AsExpression, FromSqlRow)]
|
||||
#[diesel(sql_type = Jsonb)]
|
||||
pub struct KeyValue(HashMap<String, String>);
|
||||
|
||||
@ -51,7 +51,7 @@ impl serialize::ToSql<Jsonb, Pg> for KeyValue {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, AsExpression, FromSqlRow, PartialEq)]
|
||||
#[derive(Debug, Clone, AsExpression, FromSqlRow, PartialEq, Eq)]
|
||||
#[diesel(sql_type = Jsonb)]
|
||||
pub struct Measurements(HashMap<String, Measurement>);
|
||||
|
||||
@ -95,7 +95,7 @@ impl serialize::ToSql<Jsonb, Pg> for Measurements {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
|
||||
pub struct Measurement {
|
||||
pub name: String,
|
||||
pub kind: MeasurementKind,
|
||||
@ -103,7 +103,7 @@ pub struct Measurement {
|
||||
|
||||
#[allow(clippy::upper_case_acronyms)]
|
||||
#[allow(non_camel_case_types)]
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq)]
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum MeasurementKind {
|
||||
// Unknown.
|
||||
UNKNOWN,
|
||||
|
@ -72,7 +72,7 @@ pub struct Filters {
|
||||
pub search: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(QueryableByName, PartialEq, Debug)]
|
||||
#[derive(QueryableByName, PartialEq, Eq, Debug)]
|
||||
pub struct GatewaysActiveInactive {
|
||||
#[diesel(sql_type = diesel::sql_types::BigInt)]
|
||||
pub never_seen_count: i64,
|
||||
|
@ -200,7 +200,7 @@ pub async fn get(
|
||||
while ts.le(&end) {
|
||||
timestamps.push(ts);
|
||||
keys.push(get_key(name, a, ts));
|
||||
ts = ts + ChronoDuration::hours(1);
|
||||
ts += ChronoDuration::hours(1);
|
||||
}
|
||||
}
|
||||
Aggregation::DAY => {
|
||||
|
@ -66,7 +66,7 @@ impl Default for MulticastGroup {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Queryable, PartialEq, Debug)]
|
||||
#[derive(Queryable, PartialEq, Eq, Debug)]
|
||||
pub struct MulticastGroupListItem {
|
||||
pub id: Uuid,
|
||||
pub created_at: DateTime<Utc>,
|
||||
@ -82,7 +82,7 @@ pub struct Filters {
|
||||
pub search: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Queryable, QueryableByName, Insertable, AsChangeset, Debug, PartialEq)]
|
||||
#[derive(Clone, Queryable, QueryableByName, Insertable, AsChangeset, Debug, PartialEq, Eq)]
|
||||
#[diesel(table_name = multicast_group_queue_item)]
|
||||
pub struct MulticastGroupQueueItem {
|
||||
pub id: Uuid,
|
||||
@ -448,11 +448,10 @@ pub async fn enqueue(
|
||||
true => {
|
||||
// Increment with margin as requesting the gateway to send the
|
||||
// downlink 'now' will result in a too late error from the gateway.
|
||||
scheduler_run_after_ts = scheduler_run_after_ts
|
||||
+ Duration::from_std(
|
||||
conf.network.scheduler.multicast_class_c_margin,
|
||||
)
|
||||
.unwrap();
|
||||
scheduler_run_after_ts += Duration::from_std(
|
||||
conf.network.scheduler.multicast_class_c_margin,
|
||||
)
|
||||
.unwrap();
|
||||
Some(scheduler_run_after_ts.to_gps_time().num_milliseconds())
|
||||
}
|
||||
};
|
||||
@ -478,11 +477,10 @@ pub async fn enqueue(
|
||||
|
||||
if !conf.network.scheduler.multicast_class_c_use_gps_time {
|
||||
// Increment timing for each gateway to avoid colissions.
|
||||
scheduler_run_after_ts = scheduler_run_after_ts
|
||||
+ Duration::from_std(
|
||||
conf.network.scheduler.multicast_class_c_margin,
|
||||
)
|
||||
.unwrap();
|
||||
scheduler_run_after_ts += Duration::from_std(
|
||||
conf.network.scheduler.multicast_class_c_margin,
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ use super::error::Error;
|
||||
use super::get_db_conn;
|
||||
use super::schema::{tenant, tenant_user, user};
|
||||
|
||||
#[derive(Queryable, Insertable, PartialEq, Debug, Clone)]
|
||||
#[derive(Queryable, Insertable, PartialEq, Eq, Debug, Clone)]
|
||||
#[diesel(table_name = tenant)]
|
||||
pub struct Tenant {
|
||||
pub id: Uuid,
|
||||
@ -51,7 +51,7 @@ impl Default for Tenant {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Queryable, Insertable, AsChangeset, PartialEq, Debug)]
|
||||
#[derive(Queryable, Insertable, AsChangeset, PartialEq, Eq, Debug)]
|
||||
#[diesel(table_name = tenant_user)]
|
||||
pub struct TenantUser {
|
||||
pub tenant_id: Uuid,
|
||||
@ -79,7 +79,7 @@ impl Default for TenantUser {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Queryable, PartialEq, Debug)]
|
||||
#[derive(Queryable, PartialEq, Eq, Debug)]
|
||||
pub struct TenantUserListItem {
|
||||
pub tenant_id: Uuid,
|
||||
pub user_id: Uuid,
|
||||
|
@ -16,7 +16,7 @@ use super::error::Error;
|
||||
use super::get_db_conn;
|
||||
use super::schema::user;
|
||||
|
||||
#[derive(Queryable, Insertable, PartialEq, Debug, Clone)]
|
||||
#[derive(Queryable, Insertable, PartialEq, Eq, Debug, Clone)]
|
||||
#[diesel(table_name = user)]
|
||||
pub struct User {
|
||||
pub id: Uuid,
|
||||
@ -248,9 +248,10 @@ pub async fn list(limit: i64, offset: i64) -> Result<Vec<User>, Error> {
|
||||
// https://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.md#specification
|
||||
fn hash_password(pw: &str, rounds: u32) -> Result<String, Error> {
|
||||
let salt = SaltString::generate(&mut OsRng);
|
||||
let hash_resp = Pbkdf2.hash_password(
|
||||
let hash_resp = Pbkdf2.hash_password_customized(
|
||||
pw.as_bytes(),
|
||||
Some(Algorithm::Pbkdf2Sha512.ident()),
|
||||
None,
|
||||
pbkdf2::Params {
|
||||
rounds,
|
||||
..Default::default()
|
||||
|
@ -218,7 +218,7 @@ impl Data {
|
||||
let dp = self.device_profile.as_ref().unwrap();
|
||||
let dev = self.device.as_ref().unwrap();
|
||||
|
||||
let mut tags = (&*dp.tags).clone();
|
||||
let mut tags = (*dp.tags).clone();
|
||||
tags.extend((*dev.tags).clone());
|
||||
|
||||
self.device_info = Some(integration_pb::DeviceInfo {
|
||||
@ -807,7 +807,7 @@ impl Data {
|
||||
|
||||
device_queue::delete_item(&qi.id).await?;
|
||||
|
||||
let mut tags = (&*dp.tags).clone();
|
||||
let mut tags = (*dp.tags).clone();
|
||||
tags.extend((*dev.tags).clone());
|
||||
|
||||
integration::ack_event(
|
||||
|
@ -193,7 +193,7 @@ impl JoinRequest {
|
||||
let dp = self.device_profile.as_ref().unwrap();
|
||||
let dev = self.device.as_ref().unwrap();
|
||||
|
||||
let mut tags = (&*dp.tags).clone();
|
||||
let mut tags = (*dp.tags).clone();
|
||||
tags.extend((*dev.tags).clone());
|
||||
|
||||
self.device_info = Some(integration_pb::DeviceInfo {
|
||||
|
@ -171,7 +171,7 @@ impl JoinRequest {
|
||||
let dp = self.device_profile.as_ref().unwrap();
|
||||
let dev = self.device.as_ref().unwrap();
|
||||
|
||||
let mut tags = (&*dp.tags).clone();
|
||||
let mut tags = (*dp.tags).clone();
|
||||
tags.extend((*dev.tags).clone());
|
||||
|
||||
self.device_info = Some(integration_pb::DeviceInfo {
|
||||
|
@ -254,7 +254,7 @@ fn per_modultation_to_per_dr(
|
||||
gw::modulation::Parameters::Lora(v) => {
|
||||
lrwn::region::DataRateModulation::Lora(lrwn::region::LoraDataRate {
|
||||
spreading_factor: v.spreading_factor as u8,
|
||||
bandwidth: v.bandwidth * 1000,
|
||||
bandwidth: v.bandwidth,
|
||||
})
|
||||
}
|
||||
gw::modulation::Parameters::Fsk(v) => {
|
||||
|
@ -3,17 +3,17 @@ name = "lrwn"
|
||||
description = "Library for encoding / decoding LoRaWAN frames."
|
||||
homepage = "https://www.chirpstack.io"
|
||||
license = "MIT"
|
||||
version = "4.0.0"
|
||||
version = "4.0.1"
|
||||
authors = ["Orne Brocaar <info@brocaar.com>"]
|
||||
edition = "2018"
|
||||
repository = "https://github.com/chirpstack/chirpstack"
|
||||
|
||||
[dependencies]
|
||||
hex = "0.4"
|
||||
cmac = "0.6"
|
||||
aes = "0.7"
|
||||
cmac = "0.7"
|
||||
aes = "0.8"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
diesel = { version = "2.0.0-rc.1", features = [ "postgres" ] }
|
||||
diesel = { version = "2.0.0", features = [ "postgres" ] }
|
||||
|
||||
# Error handling
|
||||
thiserror = "1.0"
|
||||
|
@ -1,4 +1,4 @@
|
||||
use aes::cipher::{generic_array::GenericArray, BlockEncrypt, NewBlockCipher};
|
||||
use aes::cipher::{generic_array::GenericArray, BlockEncrypt, KeyInit};
|
||||
use aes::{Aes128, Block};
|
||||
use anyhow::Result;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
use aes::cipher::{generic_array::GenericArray, BlockDecrypt, BlockEncrypt, NewBlockCipher};
|
||||
use aes::cipher::{generic_array::GenericArray, BlockDecrypt, BlockEncrypt};
|
||||
use aes::{Aes128, Block};
|
||||
use anyhow::Result;
|
||||
use cmac::{Cmac, Mac, NewMac};
|
||||
use cmac::{Cmac, Mac};
|
||||
use serde::Serialize;
|
||||
|
||||
use super::aes128::AES128Key;
|
||||
@ -523,6 +523,8 @@ impl PhyPayload {
|
||||
/// For encrypting a join-request response, use the nwk_key, for rejoin-request 0, 1 and 3
|
||||
/// response, use the js_enc_key.
|
||||
pub fn encrypt_join_accept_payload(&mut self, key: &AES128Key) -> Result<()> {
|
||||
use aes::cipher::KeyInit;
|
||||
|
||||
if self.mic.is_none() {
|
||||
return Err(anyhow!("mic must be set first"));
|
||||
}
|
||||
@ -565,6 +567,8 @@ impl PhyPayload {
|
||||
/// For decrypting a join-request response, use the nwk_key, for rejoin-request 0, 1 and 3
|
||||
/// response, use the js_enc_key.
|
||||
pub fn decrypt_join_accept_payload(&mut self, key: &AES128Key) -> Result<()> {
|
||||
use aes::cipher::KeyInit;
|
||||
|
||||
if self.mic.is_none() {
|
||||
return Err(anyhow!("mic must be set first"));
|
||||
}
|
||||
@ -901,6 +905,8 @@ pub fn encrypt_f_opts(
|
||||
f_cnt: u32,
|
||||
data: &[u8],
|
||||
) -> Result<Vec<u8>> {
|
||||
use aes::cipher::KeyInit;
|
||||
|
||||
if data.len() > 15 {
|
||||
return Err(anyhow!("max size of f_opts is 15 bytes"));
|
||||
}
|
||||
@ -945,6 +951,8 @@ pub fn encrypt_frm_payload(
|
||||
f_cnt: u32,
|
||||
data: &[u8],
|
||||
) -> Result<Vec<u8>> {
|
||||
use aes::cipher::KeyInit;
|
||||
|
||||
let mut data = data.to_vec();
|
||||
let data_len = data.len();
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "chirpstack-ui",
|
||||
"version": "4.0.0",
|
||||
"version": "4.0.1",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@ant-design/colors": "^6.0.0",
|
||||
@ -36,6 +36,7 @@
|
||||
"react-dom": "^17.0.2",
|
||||
"react-json-tree": "^0.15.1",
|
||||
"react-leaflet": "^3.2.1",
|
||||
"react-markdown": "^8.0.3",
|
||||
"react-router-dom": "^5.3.1",
|
||||
"react-scripts": "5.0.1",
|
||||
"typescript": "^4.6.4",
|
||||
|
@ -35,6 +35,10 @@ import ListDeviceProfileTemplates from "./views/device-profile-templates/ListDev
|
||||
import EditDeviceProfileTemplate from "./views/device-profile-templates/EditDeviceProfileTemplate";
|
||||
import CreateDeviceProfileTemplate from "./views/device-profile-templates/CreateDeviceProfileTemplate";
|
||||
|
||||
// regions
|
||||
import ListRegions from "./views/regions/ListRegions";
|
||||
import RegionDetails from "./views/regions/RegionDetails";
|
||||
|
||||
// stores
|
||||
import SessionStore from "./stores/SessionStore";
|
||||
|
||||
@ -106,6 +110,9 @@ class App extends Component<IProps, IState> {
|
||||
path="/device-profile-templates/:deviceProfileTemplateId([\w-]+)/edit"
|
||||
component={EditDeviceProfileTemplate}
|
||||
/>
|
||||
|
||||
<Route exact path="/regions" component={ListRegions} />
|
||||
<Route path="/regions/:name(.*)" component={RegionDetails} />
|
||||
</Switch>
|
||||
</Layout.Content>
|
||||
</Layout>
|
||||
|
@ -11,6 +11,7 @@ import {
|
||||
WifiOutlined,
|
||||
ControlOutlined,
|
||||
AppstoreOutlined,
|
||||
CompassOutlined,
|
||||
} from "@ant-design/icons";
|
||||
|
||||
import {
|
||||
@ -123,6 +124,10 @@ class SideMenu extends Component<RouteComponentProps, IState> {
|
||||
this.setState({ selectedKey: "ns-device-profile-templates" });
|
||||
}
|
||||
|
||||
if (/\/regions\/.*/g.exec(path)) {
|
||||
this.setState({ selectedKey: "ns-regions" });
|
||||
}
|
||||
|
||||
// tenant dashboard
|
||||
if (/\/tenants\/[\w-]{36}/g.exec(path)) {
|
||||
this.setState({ selectedKey: "tenant-dashboard" });
|
||||
@ -173,6 +178,16 @@ class SideMenu extends Component<RouteComponentProps, IState> {
|
||||
icon: <ControlOutlined />,
|
||||
label: <Link to="/device-profile-templates">Device-profile templates</Link>,
|
||||
},
|
||||
{ key: "ns-regions", icon: <CompassOutlined />, label: <Link to="/regions">Regions</Link> },
|
||||
],
|
||||
});
|
||||
} else {
|
||||
items.push({
|
||||
key: "ns",
|
||||
label: "Network Server",
|
||||
icon: <CloudOutlined />,
|
||||
children: [
|
||||
{ key: "ns-regions", icon: <CompassOutlined />, label: <Link to="/regions">Regions</Link> },
|
||||
],
|
||||
});
|
||||
}
|
||||
|
@ -21,6 +21,9 @@ import {
|
||||
SettingsResponse,
|
||||
GlobalSearchRequest,
|
||||
GlobalSearchResponse,
|
||||
ListRegionsResponse,
|
||||
GetRegionRequest,
|
||||
GetRegionResponse,
|
||||
} from "@chirpstack/chirpstack-api-grpc-web/api/internal_pb";
|
||||
|
||||
import SessionStore from "./SessionStore";
|
||||
@ -198,6 +201,28 @@ class InternalStore extends EventEmitter {
|
||||
callbackFunc(resp);
|
||||
});
|
||||
};
|
||||
|
||||
listRegions = (callbackFunc: (resp: ListRegionsResponse) => void) => {
|
||||
this.client.listRegions(new google_protobuf_empty_pb.Empty(), SessionStore.getMetadata(), (err, resp) => {
|
||||
if (err !== null) {
|
||||
HandleError(err);
|
||||
return;
|
||||
}
|
||||
|
||||
callbackFunc(resp);
|
||||
});
|
||||
}
|
||||
|
||||
getRegion = (req: GetRegionRequest, callbackFunc: (resp: GetRegionResponse) => void) => {
|
||||
this.client.getRegion(req, SessionStore.getMetadata(), (err, resp) => {
|
||||
if (err !== null) {
|
||||
HandleError(err);
|
||||
return;
|
||||
}
|
||||
|
||||
callbackFunc(resp);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const internalStore = new InternalStore();
|
||||
|
87
ui/src/views/regions/ListRegions.tsx
Normal file
87
ui/src/views/regions/ListRegions.tsx
Normal file
@ -0,0 +1,87 @@
|
||||
import React, { Component } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import { Space, Breadcrumb, PageHeader, Table } from "antd";
|
||||
|
||||
import { Region } from "@chirpstack/chirpstack-api-grpc-web/common/common_pb";
|
||||
import {
|
||||
ListRegionsResponse,
|
||||
RegionListItem,
|
||||
} from "@chirpstack/chirpstack-api-grpc-web/api/internal_pb";
|
||||
|
||||
import { getEnumName } from "../helpers";
|
||||
import InternalStore from "../../stores/InternalStore";
|
||||
|
||||
interface IProps {}
|
||||
|
||||
interface IState {
|
||||
regions?: ListRegionsResponse;
|
||||
}
|
||||
|
||||
|
||||
class ListRegions extends Component<IProps, IState> {
|
||||
constructor(props: IProps) {
|
||||
super(props);
|
||||
|
||||
this.state = {};
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
InternalStore.listRegions((resp: ListRegionsResponse) => {
|
||||
this.setState({
|
||||
regions: resp,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
let items: RegionListItem.AsObject[] = [];
|
||||
|
||||
if (this.state.regions !== undefined) {
|
||||
items = this.state.regions.getRegionsList().map((r, i) => r.toObject());
|
||||
}
|
||||
|
||||
return (
|
||||
<Space direction="vertical" style={{ width: "100%" }} size="large">
|
||||
<PageHeader
|
||||
breadcrumbRender={() => (
|
||||
<Breadcrumb>
|
||||
<Breadcrumb.Item>
|
||||
<span>Network Server</span>
|
||||
</Breadcrumb.Item>
|
||||
<Breadcrumb.Item>
|
||||
<span>Regions</span>
|
||||
</Breadcrumb.Item>
|
||||
</Breadcrumb>
|
||||
)}
|
||||
title="Regions"
|
||||
/>
|
||||
<Table
|
||||
loading={this.state.regions === undefined}
|
||||
pagination={false}
|
||||
dataSource={items}
|
||||
columns={[
|
||||
{
|
||||
title: "Name",
|
||||
dataIndex: "name",
|
||||
key: "name",
|
||||
render: (text, record) => (
|
||||
<Link to={`/regions/${text}`}>{text}</Link>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: "Region",
|
||||
dataIndex: "region",
|
||||
key: "region",
|
||||
render: (text, record) => {
|
||||
return getEnumName(Region, record.region);
|
||||
},
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</Space>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default ListRegions;
|
123
ui/src/views/regions/RegionDetails.tsx
Normal file
123
ui/src/views/regions/RegionDetails.tsx
Normal file
@ -0,0 +1,123 @@
|
||||
import React, { Component } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
import { RouteComponentProps } from "react-router-dom";
|
||||
|
||||
import { Space, Breadcrumb, PageHeader, Card, Row, Col, List, Typography } from "antd";
|
||||
import ReactMarkdown from "react-markdown";
|
||||
|
||||
import { Region } from "@chirpstack/chirpstack-api-grpc-web/common/common_pb";
|
||||
import {
|
||||
GetRegionRequest,
|
||||
GetRegionResponse,
|
||||
} from "@chirpstack/chirpstack-api-grpc-web/api/internal_pb";
|
||||
|
||||
import { getEnumName } from "../helpers";
|
||||
import InternalStore from "../../stores/InternalStore";
|
||||
|
||||
interface MatchParams {
|
||||
name: string;
|
||||
}
|
||||
|
||||
interface IState {
|
||||
region?: GetRegionResponse,
|
||||
}
|
||||
|
||||
interface IProps extends RouteComponentProps<MatchParams> {}
|
||||
|
||||
class RegionDetails extends Component<IProps, IState> {
|
||||
constructor(props: IProps) {
|
||||
super(props);
|
||||
|
||||
this.state = {};
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
let req = new GetRegionRequest();
|
||||
req.setName(this.props.match.params.name);
|
||||
|
||||
InternalStore.getRegion(req, (resp: GetRegionResponse) => {
|
||||
this.setState({
|
||||
region: resp,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
if (this.state.region === undefined) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<Space direction="vertical" style={{ width: "100%" }} size="large">
|
||||
<PageHeader
|
||||
breadcrumbRender={() => (
|
||||
<Breadcrumb>
|
||||
<Breadcrumb.Item>
|
||||
<span>Network Server</span>
|
||||
</Breadcrumb.Item>
|
||||
<Breadcrumb.Item>
|
||||
<span><Link to="/regions">Regions</Link></span>
|
||||
</Breadcrumb.Item>
|
||||
<Breadcrumb.Item>
|
||||
<span>{this.props.match.params.name}</span>
|
||||
</Breadcrumb.Item>
|
||||
</Breadcrumb>
|
||||
)}
|
||||
title={this.props.match.params.name}
|
||||
subTitle={`common-name: ${getEnumName(Region, this.state.region.getRegion())}`}
|
||||
/>
|
||||
{this.state.region.getUserInfo() !== "" && <Card>
|
||||
<ReactMarkdown>
|
||||
{this.state.region.getUserInfo()}
|
||||
</ReactMarkdown>
|
||||
</Card>}
|
||||
<Row gutter={24}>
|
||||
<Col span={12}>
|
||||
<Space direction="vertical" style={{width: "100%"}} size="large">
|
||||
<Card title="Uplink channels">
|
||||
<List
|
||||
itemLayout="horizontal"
|
||||
dataSource={this.state.region.getUplinkChannelsList()}
|
||||
renderItem={item => (
|
||||
<List.Item>
|
||||
<List.Item.Meta
|
||||
title={`${item.getFrequency()} Hz`}
|
||||
description={`Min DR: ${item.getDrMin()}, max DR: ${item.getDrMax()}`}
|
||||
/>
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
</Card>
|
||||
</Space>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Space direction="vertical" style={{width: "100%"}} size="large">
|
||||
<Card title="Downlink">
|
||||
<List
|
||||
dataSource={[
|
||||
["RX1 delay", `${this.state.region.getRx1Delay()} sec`],
|
||||
["RX1 DR offset", this.state.region.getRx1DrOffset()],
|
||||
["RX2 DR", this.state.region.getRx2Dr()],
|
||||
["RX2 frequency", `${this.state.region.getRx2Frequency()} Hz`],
|
||||
]}
|
||||
renderItem={item => <List.Item><Typography.Text strong style={{width: "175px", display: "block", float: "left"}}>{item[0]}:</Typography.Text> {item[1]}</List.Item>}
|
||||
/>
|
||||
</Card>
|
||||
<Card title="Class-B">
|
||||
<List
|
||||
dataSource={[
|
||||
["Ping-slot DR", this.state.region.getClassBPingSlotDr()],
|
||||
["Ping-slot frequency", this.state.region.getClassBPingSlotFrequency() === 0 ? "default frequency or frequency hopping" : `${this.state.region.getClassBPingSlotFrequency()} Hz`],
|
||||
]}
|
||||
renderItem={item => <List.Item><Typography.Text strong style={{width: "175px", display: "block", float: "left"}}>{item[0]}:</Typography.Text> {item[1]}</List.Item>}
|
||||
/>
|
||||
</Card>
|
||||
</Space>
|
||||
</Col>
|
||||
</Row>
|
||||
</Space>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default RegionDetails;
|
526
ui/yarn.lock
526
ui/yarn.lock
@ -1881,7 +1881,7 @@
|
||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||
|
||||
"@chirpstack/chirpstack-api-grpc-web@file:../api/grpc-web":
|
||||
version "4.0.0-rc.4"
|
||||
version "4.0.1"
|
||||
dependencies:
|
||||
"@types/google-protobuf" "^3.15.2"
|
||||
google-protobuf "^3.17.3"
|
||||
@ -2663,6 +2663,13 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/debug@^4.0.0":
|
||||
version "4.1.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82"
|
||||
integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==
|
||||
dependencies:
|
||||
"@types/ms" "*"
|
||||
|
||||
"@types/eslint-scope@^3.7.3":
|
||||
version "3.7.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224"
|
||||
@ -2738,6 +2745,13 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/hast@^2.0.0":
|
||||
version "2.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc"
|
||||
integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==
|
||||
dependencies:
|
||||
"@types/unist" "*"
|
||||
|
||||
"@types/history@*":
|
||||
version "4.7.8"
|
||||
resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934"
|
||||
@ -2821,11 +2835,28 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.177.tgz#f70c0d19c30fab101cad46b52be60363c43c4578"
|
||||
integrity sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==
|
||||
|
||||
"@types/mdast@^3.0.0":
|
||||
version "3.0.10"
|
||||
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
|
||||
integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==
|
||||
dependencies:
|
||||
"@types/unist" "*"
|
||||
|
||||
"@types/mdurl@^1.0.0":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9"
|
||||
integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==
|
||||
|
||||
"@types/mime@^1":
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
|
||||
integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
|
||||
|
||||
"@types/ms@*":
|
||||
version "0.7.31"
|
||||
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
|
||||
integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
|
||||
|
||||
"@types/node@*":
|
||||
version "14.14.31"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055"
|
||||
@ -2851,6 +2882,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
|
||||
integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
|
||||
|
||||
"@types/prop-types@^15.0.0":
|
||||
version "15.7.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
|
||||
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
|
||||
|
||||
"@types/prop-types@^15.7.4":
|
||||
version "15.7.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
|
||||
@ -2960,6 +2996,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756"
|
||||
integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==
|
||||
|
||||
"@types/unist@*", "@types/unist@^2.0.0":
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d"
|
||||
integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
|
||||
|
||||
"@types/ws@^8.5.1":
|
||||
version "8.5.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d"
|
||||
@ -3752,6 +3793,11 @@ babel-preset-react-app@^10.0.1:
|
||||
babel-plugin-macros "^3.1.0"
|
||||
babel-plugin-transform-react-remove-prop-types "^0.4.24"
|
||||
|
||||
bail@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d"
|
||||
integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==
|
||||
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||
@ -4015,6 +4061,11 @@ char-regex@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e"
|
||||
integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==
|
||||
|
||||
character-entities@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22"
|
||||
integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
|
||||
|
||||
charcodes@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4"
|
||||
@ -4174,6 +4225,11 @@ combined-stream@^1.0.8:
|
||||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
comma-separated-tokens@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz#d4c25abb679b7751c880be623c1179780fe1dd98"
|
||||
integrity sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==
|
||||
|
||||
commander@^2.20.0:
|
||||
version "2.20.3"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||
@ -4600,7 +4656,7 @@ debug@2.6.9, debug@^2.6.0, debug@^2.6.9:
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@4, debug@^4.3.2:
|
||||
debug@4, debug@^4.0.0, debug@^4.3.2:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
||||
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
||||
@ -4626,6 +4682,13 @@ decimal.js@^10.2.1:
|
||||
resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783"
|
||||
integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==
|
||||
|
||||
decode-named-character-reference@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e"
|
||||
integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==
|
||||
dependencies:
|
||||
character-entities "^2.0.0"
|
||||
|
||||
decode-uri-component@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
||||
@ -4685,6 +4748,11 @@ depd@~1.1.2:
|
||||
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
|
||||
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
|
||||
|
||||
dequal@^2.0.0:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
|
||||
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
|
||||
|
||||
destroy@1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
|
||||
@ -4732,6 +4800,11 @@ diff-sequences@^27.5.1:
|
||||
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327"
|
||||
integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==
|
||||
|
||||
diff@^5.0.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40"
|
||||
integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==
|
||||
|
||||
dir-glob@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
|
||||
@ -5413,6 +5486,11 @@ express@^4.17.3:
|
||||
utils-merge "1.0.1"
|
||||
vary "~1.1.2"
|
||||
|
||||
extend@^3.0.0:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
|
||||
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
|
||||
|
||||
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
@ -5850,6 +5928,11 @@ has@^1.0.3:
|
||||
dependencies:
|
||||
function-bind "^1.1.1"
|
||||
|
||||
hast-util-whitespace@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c"
|
||||
integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==
|
||||
|
||||
he@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
||||
@ -6123,6 +6206,11 @@ ini@^1.3.5:
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
||||
|
||||
inline-style-parser@0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
|
||||
integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
|
||||
|
||||
internal-slot@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
|
||||
@ -6174,6 +6262,11 @@ is-boolean-object@^1.1.0:
|
||||
call-bind "^1.0.2"
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-buffer@^2.0.0:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
|
||||
integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
|
||||
|
||||
is-callable@^1.1.4, is-callable@^1.2.2:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e"
|
||||
@ -6279,6 +6372,11 @@ is-plain-obj@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7"
|
||||
integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==
|
||||
|
||||
is-plain-obj@^4.0.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0"
|
||||
integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
|
||||
|
||||
is-potential-custom-element-name@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
|
||||
@ -7086,6 +7184,11 @@ kleur@^3.0.3:
|
||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
||||
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
||||
|
||||
kleur@^4.0.3:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"
|
||||
integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
|
||||
|
||||
klona@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
|
||||
@ -7280,6 +7383,55 @@ makeerror@1.0.x:
|
||||
dependencies:
|
||||
tmpl "1.0.x"
|
||||
|
||||
mdast-util-definitions@^5.0.0:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz#2c1d684b28e53f84938bb06317944bee8efa79db"
|
||||
integrity sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==
|
||||
dependencies:
|
||||
"@types/mdast" "^3.0.0"
|
||||
"@types/unist" "^2.0.0"
|
||||
unist-util-visit "^4.0.0"
|
||||
|
||||
mdast-util-from-markdown@^1.0.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268"
|
||||
integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==
|
||||
dependencies:
|
||||
"@types/mdast" "^3.0.0"
|
||||
"@types/unist" "^2.0.0"
|
||||
decode-named-character-reference "^1.0.0"
|
||||
mdast-util-to-string "^3.1.0"
|
||||
micromark "^3.0.0"
|
||||
micromark-util-decode-numeric-character-reference "^1.0.0"
|
||||
micromark-util-decode-string "^1.0.0"
|
||||
micromark-util-normalize-identifier "^1.0.0"
|
||||
micromark-util-symbol "^1.0.0"
|
||||
micromark-util-types "^1.0.0"
|
||||
unist-util-stringify-position "^3.0.0"
|
||||
uvu "^0.5.0"
|
||||
|
||||
mdast-util-to-hast@^12.1.0:
|
||||
version "12.2.2"
|
||||
resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.2.2.tgz#2bd8cf985a67c90c181eadcfdd8d31b8798ed9a1"
|
||||
integrity sha512-lVkUttV9wqmdXFtEBXKcepvU/zfwbhjbkM5rxrquLW55dS1DfOrnAXCk5mg1be1sfY/WfMmayGy1NsbK1GLCYQ==
|
||||
dependencies:
|
||||
"@types/hast" "^2.0.0"
|
||||
"@types/mdast" "^3.0.0"
|
||||
"@types/mdurl" "^1.0.0"
|
||||
mdast-util-definitions "^5.0.0"
|
||||
mdurl "^1.0.0"
|
||||
micromark-util-sanitize-uri "^1.0.0"
|
||||
trim-lines "^3.0.0"
|
||||
unist-builder "^3.0.0"
|
||||
unist-util-generated "^2.0.0"
|
||||
unist-util-position "^4.0.0"
|
||||
unist-util-visit "^4.0.0"
|
||||
|
||||
mdast-util-to-string@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9"
|
||||
integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==
|
||||
|
||||
mdn-data@2.0.14:
|
||||
version "2.0.14"
|
||||
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
|
||||
@ -7290,6 +7442,11 @@ mdn-data@2.0.4:
|
||||
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
|
||||
integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
|
||||
|
||||
mdurl@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
|
||||
integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
|
||||
|
||||
media-typer@0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
|
||||
@ -7327,6 +7484,201 @@ methods@~1.1.2:
|
||||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
||||
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
|
||||
|
||||
micromark-core-commonmark@^1.0.1:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad"
|
||||
integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==
|
||||
dependencies:
|
||||
decode-named-character-reference "^1.0.0"
|
||||
micromark-factory-destination "^1.0.0"
|
||||
micromark-factory-label "^1.0.0"
|
||||
micromark-factory-space "^1.0.0"
|
||||
micromark-factory-title "^1.0.0"
|
||||
micromark-factory-whitespace "^1.0.0"
|
||||
micromark-util-character "^1.0.0"
|
||||
micromark-util-chunked "^1.0.0"
|
||||
micromark-util-classify-character "^1.0.0"
|
||||
micromark-util-html-tag-name "^1.0.0"
|
||||
micromark-util-normalize-identifier "^1.0.0"
|
||||
micromark-util-resolve-all "^1.0.0"
|
||||
micromark-util-subtokenize "^1.0.0"
|
||||
micromark-util-symbol "^1.0.0"
|
||||
micromark-util-types "^1.0.1"
|
||||
uvu "^0.5.0"
|
||||
|
||||
micromark-factory-destination@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e"
|
||||
integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==
|
||||
dependencies:
|
||||
micromark-util-character "^1.0.0"
|
||||
micromark-util-symbol "^1.0.0"
|
||||
micromark-util-types "^1.0.0"
|
||||
|
||||
micromark-factory-label@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137"
|
||||
integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==
|
||||
dependencies:
|
||||
micromark-util-character "^1.0.0"
|
||||
micromark-util-symbol "^1.0.0"
|
||||
micromark-util-types "^1.0.0"
|
||||
uvu "^0.5.0"
|
||||
|
||||
micromark-factory-space@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633"
|
||||
integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==
|
||||
dependencies:
|
||||
micromark-util-character "^1.0.0"
|
||||
micromark-util-types "^1.0.0"
|
||||
|
||||
micromark-factory-title@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f"
|
||||
integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==
|
||||
dependencies:
|
||||
micromark-factory-space "^1.0.0"
|
||||
micromark-util-character "^1.0.0"
|
||||
micromark-util-symbol "^1.0.0"
|
||||
micromark-util-types "^1.0.0"
|
||||
uvu "^0.5.0"
|
||||
|
||||
micromark-factory-whitespace@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c"
|
||||
integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==
|
||||
dependencies:
|
||||
micromark-factory-space "^1.0.0"
|
||||
micromark-util-character "^1.0.0"
|
||||
micromark-util-symbol "^1.0.0"
|
||||
micromark-util-types "^1.0.0"
|
||||
|
||||
micromark-util-character@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86"
|
||||
integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==
|
||||
dependencies:
|
||||
micromark-util-symbol "^1.0.0"
|
||||
micromark-util-types "^1.0.0"
|
||||
|
||||
micromark-util-chunked@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06"
|
||||
integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==
|
||||
dependencies:
|
||||
micromark-util-symbol "^1.0.0"
|
||||
|
||||
micromark-util-classify-character@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20"
|
||||
integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==
|
||||
dependencies:
|
||||
micromark-util-character "^1.0.0"
|
||||
micromark-util-symbol "^1.0.0"
|
||||
micromark-util-types "^1.0.0"
|
||||
|
||||
micromark-util-combine-extensions@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5"
|
||||
integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==
|
||||
dependencies:
|
||||
micromark-util-chunked "^1.0.0"
|
||||
micromark-util-types "^1.0.0"
|
||||
|
||||
micromark-util-decode-numeric-character-reference@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946"
|
||||
integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==
|
||||
dependencies:
|
||||
micromark-util-symbol "^1.0.0"
|
||||
|
||||
micromark-util-decode-string@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02"
|
||||
integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==
|
||||
dependencies:
|
||||
decode-named-character-reference "^1.0.0"
|
||||
micromark-util-character "^1.0.0"
|
||||
micromark-util-decode-numeric-character-reference "^1.0.0"
|
||||
micromark-util-symbol "^1.0.0"
|
||||
|
||||
micromark-util-encode@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383"
|
||||
integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==
|
||||
|
||||
micromark-util-html-tag-name@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz#eb227118befd51f48858e879b7a419fc0df20497"
|
||||
integrity sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==
|
||||
|
||||
micromark-util-normalize-identifier@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828"
|
||||
integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==
|
||||
dependencies:
|
||||
micromark-util-symbol "^1.0.0"
|
||||
|
||||
micromark-util-resolve-all@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88"
|
||||
integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==
|
||||
dependencies:
|
||||
micromark-util-types "^1.0.0"
|
||||
|
||||
micromark-util-sanitize-uri@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz#27dc875397cd15102274c6c6da5585d34d4f12b2"
|
||||
integrity sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==
|
||||
dependencies:
|
||||
micromark-util-character "^1.0.0"
|
||||
micromark-util-encode "^1.0.0"
|
||||
micromark-util-symbol "^1.0.0"
|
||||
|
||||
micromark-util-subtokenize@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105"
|
||||
integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==
|
||||
dependencies:
|
||||
micromark-util-chunked "^1.0.0"
|
||||
micromark-util-symbol "^1.0.0"
|
||||
micromark-util-types "^1.0.0"
|
||||
uvu "^0.5.0"
|
||||
|
||||
micromark-util-symbol@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e"
|
||||
integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==
|
||||
|
||||
micromark-util-types@^1.0.0, micromark-util-types@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20"
|
||||
integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==
|
||||
|
||||
micromark@^3.0.0:
|
||||
version "3.0.10"
|
||||
resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c"
|
||||
integrity sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==
|
||||
dependencies:
|
||||
"@types/debug" "^4.0.0"
|
||||
debug "^4.0.0"
|
||||
decode-named-character-reference "^1.0.0"
|
||||
micromark-core-commonmark "^1.0.1"
|
||||
micromark-factory-space "^1.0.0"
|
||||
micromark-util-character "^1.0.0"
|
||||
micromark-util-chunked "^1.0.0"
|
||||
micromark-util-combine-extensions "^1.0.0"
|
||||
micromark-util-decode-numeric-character-reference "^1.0.0"
|
||||
micromark-util-encode "^1.0.0"
|
||||
micromark-util-normalize-identifier "^1.0.0"
|
||||
micromark-util-resolve-all "^1.0.0"
|
||||
micromark-util-sanitize-uri "^1.0.0"
|
||||
micromark-util-subtokenize "^1.0.0"
|
||||
micromark-util-symbol "^1.0.0"
|
||||
micromark-util-types "^1.0.1"
|
||||
uvu "^0.5.0"
|
||||
|
||||
micromatch@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
|
||||
@ -7440,6 +7792,11 @@ moment@^2.24.0, moment@^2.29.2:
|
||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108"
|
||||
integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
|
||||
|
||||
mri@^1.1.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b"
|
||||
integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
|
||||
|
||||
ms@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||
@ -8541,7 +8898,7 @@ prompts@^2.4.2:
|
||||
kleur "^3.0.3"
|
||||
sisteransi "^1.0.5"
|
||||
|
||||
prop-types@^15.6.2, prop-types@^15.8.1:
|
||||
prop-types@^15.0.0, prop-types@^15.6.2, prop-types@^15.8.1:
|
||||
version "15.8.1"
|
||||
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
|
||||
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
|
||||
@ -8559,6 +8916,11 @@ prop-types@^15.7.2:
|
||||
object-assign "^4.1.1"
|
||||
react-is "^16.8.1"
|
||||
|
||||
property-information@^6.0.0:
|
||||
version "6.1.1"
|
||||
resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22"
|
||||
integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==
|
||||
|
||||
proxy-addr@~2.0.7:
|
||||
version "2.0.7"
|
||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
|
||||
@ -9168,6 +9530,27 @@ react-leaflet@^3.2.1:
|
||||
dependencies:
|
||||
"@react-leaflet/core" "^1.1.0"
|
||||
|
||||
react-markdown@^8.0.3:
|
||||
version "8.0.3"
|
||||
resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-8.0.3.tgz#e8aba0d2f5a1b2124d476ee1fff9448a2f57e4b3"
|
||||
integrity sha512-We36SfqaKoVNpN1QqsZwWSv/OZt5J15LNgTLWynwAN5b265hrQrsjMtlRNwUvS+YyR3yDM8HpTNc4pK9H/Gc0A==
|
||||
dependencies:
|
||||
"@types/hast" "^2.0.0"
|
||||
"@types/prop-types" "^15.0.0"
|
||||
"@types/unist" "^2.0.0"
|
||||
comma-separated-tokens "^2.0.0"
|
||||
hast-util-whitespace "^2.0.0"
|
||||
prop-types "^15.0.0"
|
||||
property-information "^6.0.0"
|
||||
react-is "^18.0.0"
|
||||
remark-parse "^10.0.0"
|
||||
remark-rehype "^10.0.0"
|
||||
space-separated-tokens "^2.0.0"
|
||||
style-to-object "^0.3.0"
|
||||
unified "^10.0.0"
|
||||
unist-util-visit "^4.0.0"
|
||||
vfile "^5.0.0"
|
||||
|
||||
react-refresh@^0.11.0:
|
||||
version "0.11.0"
|
||||
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046"
|
||||
@ -9424,6 +9807,25 @@ relateurl@^0.2.7:
|
||||
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
|
||||
integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
|
||||
|
||||
remark-parse@^10.0.0:
|
||||
version "10.0.1"
|
||||
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775"
|
||||
integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==
|
||||
dependencies:
|
||||
"@types/mdast" "^3.0.0"
|
||||
mdast-util-from-markdown "^1.0.0"
|
||||
unified "^10.0.0"
|
||||
|
||||
remark-rehype@^10.0.0:
|
||||
version "10.1.0"
|
||||
resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279"
|
||||
integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==
|
||||
dependencies:
|
||||
"@types/hast" "^2.0.0"
|
||||
"@types/mdast" "^3.0.0"
|
||||
mdast-util-to-hast "^12.1.0"
|
||||
unified "^10.0.0"
|
||||
|
||||
renderkid@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a"
|
||||
@ -9559,6 +9961,13 @@ run-parallel@^1.1.9:
|
||||
dependencies:
|
||||
queue-microtask "^1.2.2"
|
||||
|
||||
sade@^1.7.3:
|
||||
version "1.8.1"
|
||||
resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701"
|
||||
integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==
|
||||
dependencies:
|
||||
mri "^1.1.0"
|
||||
|
||||
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||
@ -9901,6 +10310,11 @@ sourcemap-codec@^1.4.4:
|
||||
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
|
||||
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
|
||||
|
||||
space-separated-tokens@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b"
|
||||
integrity sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==
|
||||
|
||||
spdy-transport@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
|
||||
@ -10118,6 +10532,13 @@ style-loader@^3.3.1:
|
||||
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575"
|
||||
integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==
|
||||
|
||||
style-to-object@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46"
|
||||
integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==
|
||||
dependencies:
|
||||
inline-style-parser "0.1.1"
|
||||
|
||||
stylehacks@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520"
|
||||
@ -10374,6 +10795,16 @@ tr46@^2.1.0:
|
||||
dependencies:
|
||||
punycode "^2.1.1"
|
||||
|
||||
trim-lines@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338"
|
||||
integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==
|
||||
|
||||
trough@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876"
|
||||
integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==
|
||||
|
||||
tryer@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
|
||||
@ -10516,6 +10947,19 @@ unicode-property-aliases-ecmascript@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
|
||||
integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==
|
||||
|
||||
unified@^10.0.0:
|
||||
version "10.1.2"
|
||||
resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df"
|
||||
integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==
|
||||
dependencies:
|
||||
"@types/unist" "^2.0.0"
|
||||
bail "^2.0.0"
|
||||
extend "^3.0.0"
|
||||
is-buffer "^2.0.0"
|
||||
is-plain-obj "^4.0.0"
|
||||
trough "^2.0.0"
|
||||
vfile "^5.0.0"
|
||||
|
||||
uniq@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
|
||||
@ -10528,6 +10972,54 @@ unique-string@^2.0.0:
|
||||
dependencies:
|
||||
crypto-random-string "^2.0.0"
|
||||
|
||||
unist-builder@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-3.0.0.tgz#728baca4767c0e784e1e64bb44b5a5a753021a04"
|
||||
integrity sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==
|
||||
dependencies:
|
||||
"@types/unist" "^2.0.0"
|
||||
|
||||
unist-util-generated@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz#86fafb77eb6ce9bfa6b663c3f5ad4f8e56a60113"
|
||||
integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==
|
||||
|
||||
unist-util-is@^5.0.0:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236"
|
||||
integrity sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==
|
||||
|
||||
unist-util-position@^4.0.0:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.3.tgz#5290547b014f6222dff95c48d5c3c13a88fadd07"
|
||||
integrity sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==
|
||||
dependencies:
|
||||
"@types/unist" "^2.0.0"
|
||||
|
||||
unist-util-stringify-position@^3.0.0:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz#5c6aa07c90b1deffd9153be170dce628a869a447"
|
||||
integrity sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==
|
||||
dependencies:
|
||||
"@types/unist" "^2.0.0"
|
||||
|
||||
unist-util-visit-parents@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz#868f353e6fce6bf8fa875b251b0f4fec3be709bb"
|
||||
integrity sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==
|
||||
dependencies:
|
||||
"@types/unist" "^2.0.0"
|
||||
unist-util-is "^5.0.0"
|
||||
|
||||
unist-util-visit@^4.0.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.1.tgz#1c4842d70bd3df6cc545276f5164f933390a9aad"
|
||||
integrity sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==
|
||||
dependencies:
|
||||
"@types/unist" "^2.0.0"
|
||||
unist-util-is "^5.0.0"
|
||||
unist-util-visit-parents "^5.1.1"
|
||||
|
||||
universalify@^0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
|
||||
@ -10590,6 +11082,16 @@ uuid@^3.4.0:
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||
|
||||
uvu@^0.5.0:
|
||||
version "0.5.6"
|
||||
resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df"
|
||||
integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==
|
||||
dependencies:
|
||||
dequal "^2.0.0"
|
||||
diff "^5.0.0"
|
||||
kleur "^4.0.3"
|
||||
sade "^1.7.3"
|
||||
|
||||
v8-compile-cache@^2.0.3:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
|
||||
@ -10614,6 +11116,24 @@ vary@~1.1.2:
|
||||
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
||||
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
|
||||
|
||||
vfile-message@^3.0.0:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.2.tgz#a2908f64d9e557315ec9d7ea3a910f658ac05f7d"
|
||||
integrity sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==
|
||||
dependencies:
|
||||
"@types/unist" "^2.0.0"
|
||||
unist-util-stringify-position "^3.0.0"
|
||||
|
||||
vfile@^5.0.0:
|
||||
version "5.3.5"
|
||||
resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.5.tgz#ec2e206b1414f561c85b7972bb1eeda8ab47ee61"
|
||||
integrity sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==
|
||||
dependencies:
|
||||
"@types/unist" "^2.0.0"
|
||||
is-buffer "^2.0.0"
|
||||
unist-util-stringify-position "^3.0.0"
|
||||
vfile-message "^3.0.0"
|
||||
|
||||
w3c-hr-time@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
|
||||
|
Reference in New Issue
Block a user